小白学安全-KunLun-M静态白盒扫描工具

一、KunLun-M简介

        KunLun-M是一个完全开源的静态白盒扫描工具,支持PHP、JavaScript的语义扫描,基础安全、组件安全扫描,Chrome Ext\Solidity的基础扫描。开源地址:https://github.com/LoRexxar/Kunlun-M

        Cobra是一款源代码安全审计工具,支持检测多种开发语言源代码中的大部分显著的安全问题和漏洞。 GitHub - FeeiCN/Cobra: Source Code Security Audit (源代码安全审计)

        Cobra-W是从Cobra2.0发展而来的分支,将工具重心从尽可能的发现威胁转变为提高发现漏洞的准确率以及精度。 https://github.com/LoRexxar/Kunlun-M/tree/cobra-w    

        Kunlun-Mirror是从Cobra-W2.0发展而来,在经历了痛苦的维护改进原工具之后,昆仑镜将工具的发展重心放在安全研究员的使用上,将会围绕工具化使用不断改进使用体验。

       目前工具主要支持php、javascript的语义分析,以及chrome ext, solidity的基础扫描.    

       KunLun-M(昆仑镜)已进入弱维护阶段,如果有bug或者明显的问题会更新,但不会再更新新功能,主要是我认为Kunlun-M的架构拖累了后续的发展方向,仅在PHP扫描中以当前的架构已经几乎做到极限了,后续可能会有新的工具?也可能没有?敬请期待~

        请使用python3.6+运行该工具,已停止维护python2.7环境    

二、特点

与其他代码审计相比:

  • 静态分析,环境依赖小。

  • 语义分析,对漏洞有效性判断程度更深。

  • 多种语言支持。

  • 开源python实现,更易于二次开发。

与Cobra相比:

  • 深度重写AST,大幅度减少漏洞误报率。

  • 底层api重写,支持windows、linux等多平台。

  • 多层语义解析、函数回溯,secret机制,新增多种机制应用于语义分析。

  • 新增javascript语义分析,用于扫描包含js相关代码。

与Cobra-W相比(todo):

  • 深度优化AST分析流程,使其更符合QL的概念,便于下一阶段的优化。

  • 深度优化辅助审计的流程,使其更符合人类安全研究员审计辅助的习惯。

  • 深度重构代码结构,使其更符合可拓展,可优化的开源理念。

三、安装

3.1 源码安装

    3.1.1 下载源代码

D:\opt>git clone https://github.com/LoRexxar/Kunlun-M.git
Cloning into 'Kunlun-M'...
remote: Enumerating objects: 12076, done.
remote: Counting objects: 100% (1175/1175), done.
remote: Compressing objects: 100% (398/398), done.
remote: Total 12076 (delta 819), reused 1106 (delta 777), pack-reused 10901
% (12076/12076), 16.14 MiB | 53.00 KiB/s
Receiving objects: 100% (12076/12076), 16.16 MiB | 37.00 KiB/s, done.
Resolving deltas: 100% (4295/4295), done.

    3.1.2 安装依赖

cd Kunlun_M
pip3 install -r requirements.txt 
#使用清华源
pip3 install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/

    3.1.3 配置文件迁移

#linux系统
cp Kunlun_M/settings.py.bak Kunlun_M/settings.py
#windows系统
copy Kunlun_M\settings.py.bak Kunlun_M\settings.py

     3.1.4 初始化数据库,默认采用sqlite作为数据库

python kunlun.py init initialize
#注意不能用python3 kunlun.py init initialize

3.1.5 加载规则进数据库

注意:每次修改规则文件都需要加载

python kunlun.py config load

  3.2  docker安装

sudo docker build -t kunlun-m -f ./docker/Dockerfile .

四、使用方法

 4.1 命令行模式

 4.1.1  使用scan模式扫描各类源代码

python kunlun.py scan -t ./tests/vulnerabilities/
D:\opt\Kunlun-M>python kunlun.py scan -t ./tests/vulnerabilities/
D:\opt\Kunlun-M
[15:30:35] [INIT] start Scan Task...
[15:30:35] [INIT] set logging level: 10
[15:30:35] [INIT] ScanTask for vulnerabilities has been executed.
[15:30:35] [INIT] whether rescan Task vulnerabilities?(Y/N) (Default N)
[15:30:44] TaskID: 2
[15:30:44] [INIT] New Log file ScanTask_2.log .
[15:30:44] [INIT] Vendor Vuls Scan Status: True
[15:30:44] [INIT][IGNORE] New ignore regex \.crx_files
[15:30:44] [INIT][IGNORE] New ignore regex [\/\\]vendor[\/\\]
[15:30:44] [INIT][IGNORE] New ignore regex [\/\\]\.idea[\/\\]
[15:30:44] [INIT][IGNORE] New ignore regex [\/\\]static[\/\\]
[15:30:44] [PARSE-ARGS] Target Mode: folder
[15:30:44] [PARSE-ARGS] Output Mode: stream
[15:30:44] [CLI] Target Mode: folder
[15:30:44] [PARSE-ARGS] target directory: ./tests/vulnerabilities/
[15:30:44] [CLI] Target : D:\opt\Kunlun-M\tests\vulnerabilities/
[15:30:44] [PICKUP] D:\opt\Kunlun-M\tests\vulnerabilities/
[15:30:44] [PICKUP] [FILES] |--v.p12
[15:30:44] [PICKUP] [FILES] |--v.php
[15:30:44] [PICKUP] [FILES] |--v_parser.php

-------------------------------------------------------------------------
[15:30:47] [Chain] Vul 20
[15:30:47] [SCAN] ending
-------------------------------------------------------------------------
[15:30:47] [SCAN] Trigger Vulnerabilities (20)
+----+-------+-------------------------+-------------+----------+-------------------------+-------------------+------------------------------------------+-----------------------------+
| #  | CVI   | Rule(ID/Name)           | Lang/CVE-id | Level    | Target-File:Line-Number | Commit(Author)    | Source Code Content                      | Analysis                    |
+----+-------+-------------------------+-------------+----------+-------------------------+-------------------+------------------------------------------+-----------------------------+
| 1  | 1000  | Reflected XSS           | php         | medium   | v.php:58                | LoRexxar/wufeifei | print("Hello " . $cmd)                   | Function-param-controllable |
| 2  | 1000  | Reflected XSS           | php         | medium   | v_parser.php:7          | LoRexxar/wufeifei | print(system(trim('ls'.$_GET['test'])))  | Function-param-controllable |
| 3  | 10002 | Reflected XSS           | php         | medium   | v.php:10                | LoRexxar          | echo($callback . ";                      | Function-param-controllable |
| 4  | 10002 | Reflected XSS           | php         | medium   | v.php:55                | LoRexxar          | echo get_headers($url,1);                | Function-param-controllable |
| 5  | 10002 | Reflected XSS           | php         | medium   | v.php:58                | LoRexxar          | print("Hello " . $cmd);                  | Function-param-controllable |
| 6  | 10002 | Reflected XSS           | php         | medium   | v.php:121               | LoRexxar          | echo "a".$a;                             | Function-param-controllable |
| 7  | 10002 | Reflected XSS           | php         | medium   | v_parser.php:7          | LoRexxar          | print(system(trim('ls'.$_GET['test']))); | Function-param-controllable |
| 8  | 1001  | SSRF                    | php         | medium   | v.php:44                | LoRexxar/wufeifei | curl($cmd)                               | Vustomize-Match             |
| 9  | 1002  | SSRF                    | php         | medium   | v.php:50                | LoRexxar/wufeifei | file_get_contents($url)                  | Function-param-controllable |
| 10 | 1004  | SQLI                    | php         | high     | v.php:77                | LoRexxar/wufeifei | "select name from users where id =$id";  | Vustomize-Match             |
| 11 | 1007  | RFI                     | php         | high     | v.php:81                | LoRexxar/wufeifei | require_once($cmd)                       | Function-param-controllable |
| 12 | 1008  | Xml injection           | php         | medium   | v.php:101               | LoRexxar/wufeifei | simplexml_load_string($xml)              | Function-param-controllable |
| 13 | 1009  | RCE                     | php         | critical | v.php:19                | LoRexxar/wufeifei | eval($cmd)                               | Function-param-controllable |
| 14 | 1011  | RCE                     | php         | critical | v.php:20                | LoRexxar/wufeifei | system('ls' + $cmd)                      | Function-param-controllable |
| 15 | 1011  | RCE                     | php         | critical | v_parser.php:7          | LoRexxar/wufeifei | system(trim('ls'.$_GET['test'])))        | Function-param-controllable |
| 16 | 1012  | Information Disclosure  | php         | low      | v.php:84                | LoRexxar/wufeifei | highlight_file($cmd)                     | Function-param-controllable |
| 17 | 1013  | URL Redirector Abuse    | php         | low      | v.php:94                | LoRexxar/wufeifei | header("Location: ".$url)                | Function-param-controllable |
| 18 | 1014  | variable shadowing      | php         | high     | v.php:12                | LoRexxar/wufeifei | extract($cmd)                            | Function-param-controllable |
| 19 | 1015  | unserialize vulerablity | php         | medium   | v.php:98                | LoRexxar/wufeifei | unserialize($test)                       | Function-param-controllable |
| 20 | 5001  | 硬编码密码              | base        | low      | v.php                   | LoRexxar          | password = $_POST['                      | Regex-only-match            |
+----+-------+-------------------------+-------------+----------+-------------------------+-------------------+------------------------------------------+-----------------------------+
[15:30:47] [MainThread] New evil Function list by NewCore:
+---+-------------+-----------------+------------------+
| # | NewFunction | OriginFunction  | Related Rules id |
+---+-------------+-----------------+------------------+
| 1 | curl        | ['curl_setopt'] | 1001             |
| 2 | curl        | ['curl_setopt'] | 1001             |
+---+-------------+-----------------+------------------+
[15:30:47] [EXPORT] No filename given, save into default path(result/).
[15:30:47] [EXPORT] Scan result exported successfully: D:\opt\Kunlun-M\result\vulnerabilities.csv
[15:30:47] [INIT] Done! Consume Time:11.81710433959961s

4.1.2 使用config模式加载本地的rule/tamper

python kunlun.py config load         # 加载rule进数据库
python kunlun.py config recover      # 将数据库中的rule恢复到文件
python kunlun.py config loadtamper   # 加载tamper进数据库
python kunlun.py config retamper     # 将数据库中的tamper恢复到文件

    使用show模式查看目前的所有rule/tamper

python kunlun.py show rule           # 展示所有的rule
python kunlun.py show rule -k php    # 展示所有php的rule
python kunlun.py show tamper         # 展示所有的tamper

4.2 web页面模式

    KunLun-M Dashbroad,并且允许通过apitoken来访问api获取数据,默认9999端口。

4.2.1 启动命令

python .\kunlun.py web -p 9999
 [16:09:51] Start KunLun-M Web in Port: 9999
Watching for file changes with StatReloader
November 09, 2023 - 16:09:51
Django version 4.2.7, using settings 'Kunlun_M.settings'
Starting development server at http://127.0.0.1:9999/
Quit the server with CTRL-BREAK.

4.2.2 浏览器访问http://127.0.0.1:9999/

4.2.3 注册账号

4.2.4 功能界面

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/125405.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

板刷codeforces 1000分

练习 1.Problem - 1A - Codeforces AC代码: #include <bits/stdc.h> #define endl \n #define int long long using namespace std; int n,m,a; void solve() {cin>>n>>m>>a;cout<<(n/a(n%a!0))*(m/a(m%a!0))<<endl; } signed main() {…

两数相加 js

道阻且长&#xff0c;行而不辍&#xff0c;未来可期 两数相加 给你两个 非空 的链表&#xff0c;表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的&#xff0c;并且每个节点只能存储 一位 数字。 请你将两个数相加&#xff0c;并以相同形式返回一个表示和的链表。 …

ElementUI的Dialog弹窗实现拖拽移动功能

实现ElementUI的Dialog弹窗可以拖拽移动 实现步骤&#xff1a; 1.创建自定义指令 在utils文件夹下新建文件夹 utils/directive/el-dragDialog/index.js import drag from ./dragconst install function(Vue) {Vue.directive(el-drag-dialog, drag) }if (window.Vue) {windo…

操作系统·进程管理

2.1 前趋图和程序执行 2.1.1 前趋图 前趋图是一个有向无循环图&#xff0c;记为DAG&#xff0c;可用于描述程序/进程之间执行的前后关系&#xff0c;无循环关系可实现顺序执行。 2.1.2 程序的顺序执行 在计算机系统中只有一个程序在运行&#xff0c;这个程序独占系统中所有资…

【面试经典150 | 】颠倒二进制位

文章目录 写在前面Tag题目来源题目解读解题思路方法一&#xff1a;逐位颠倒方法二&#xff1a;分治 写在最后 写在前面 本专栏专注于分析与讲解【面试经典150】算法&#xff0c;两到三天更新一篇文章&#xff0c;欢迎催更…… 专栏内容以分析题目为主&#xff0c;并附带一些对于…

判断sparse matrix是否是对称矩阵

参考&#xff1a; https://stackoverflow.com/questions/48798893/error-in-checking-symmetric-sparse-matrix import scipy.sparse as sp import numpy as np np.random.seed(1)a sp.random(5, 5, density0.5)a结果如下 sym_err a - a.T sym_check_res np.all(np.abs(s…

汉诺塔 --- 递归回溯算法练习一

目录 1. 什么叫汉诺塔 2. 分析算法原理 2.1. 当盘子的数量为1 2.2. 当盘子的数量为2 2.3. 当盘子的数量为3时 3. 编写代码 3.1. 挖掘重复子问题 3.2. 只关心某一个子问题如何处理 3.3. 递归的结束条件 3.4. 代码的编写 4. 递归展开图分析 1. 什么叫汉诺塔 力扣上的原…

iOS代码混淆----自动

先大致解释一下“编译"、"反编译": 编译&#xff1a;就是把千千万万行字符串(也叫代码&#xff0c;或者源文件)&#xff0c;变成010101010101(机器码&#xff0c;也叫目标代码) 编译过程&#xff1a;预处理-编译-汇编-链接 我的脚本运行在预处理阶段。 反编…

【自动控制原理】时域分析法:稳定性分析(稳)、误差分析和计算(准)

文章目录 第3章 时域分析法3.1 基本概念3.2~4 一阶、二阶、高阶系统的时间响应及动态性能3.6 稳定性分析——稳3.6.1. 稳定性的定义3.6.2 稳定性的条件3.6.3 劳斯稳定判据首列出现0&#xff0c;但该行不全为0首列出现0&#xff0c;且该行全为0 3.5 误差分析和计算——准3.5.1稳…

栈的顺序存储实现(C语言)(数据结构与算法)

栈的顺序存储实现通常使用数组来完成。实现方法包括定义一个固定大小的数组&#xff0c;以及一个指向栈顶的指针。当元素入栈时&#xff0c;指针加一并将元素存储在相应位置&#xff1b;当元素出栈时&#xff0c;指针减一并返回相应位置的元素。 1. 顺序栈定义 #define MaxSi…

YOLOv5-6.1源码详解之损失函数loss.py

目录 1 目标检测结果精确度的度量 2 YOLOv5-6.1损失函数 2.1 classification类别损失 2.2 confidence置信度损失 2.3 localization定位损失 3 YOLOv5-6.1损失函数loss.py代码解析 3.1 class ComputeLoss 3.1.1 __init__ 3.1.2 build_targets 3.1.3 _call__ 3.2 smo…

docker 1.13存储路径修改

由于老版本docker还没有data-root配置&#xff0c;特记录一下老版本修改配置。 新版本配置修改参考&#xff1a;https://blog.csdn.net/tootsy_you/article/details/126933702 修改步骤 编辑docker.service服务文件 vim /usr/lib/systemd/system/docker.service在EXStart添加…

leaflet:个性化配置,利用Leaflet-Geoman绘制多种图形(136)

第136个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+leaflet中个性化配置,利用Leaflet-Geoman绘制多种图形。 灵活地配置Leaflet-Geoman的属性,可以产生各种美妙的绘图效果。 直接复制下面的 vue+leaflet源代码,操作2分钟即可运行实现效果 文章目录 示例效果配置方…

vue下使用Echarts5绘制基础图表

项目使用Vue3加Echarts5绘制的基本图表&#xff0c;图表自适应浏览器窗口大小 先上图&#xff0c;大屏小屏都可完美展示&#xff0c;纯属练手 一 先上图 1.任意缩放窗口的大小 2.平板 3.电脑 4.饼图 5.折线图 二 后上代码 <script lang"ts"> import {d…

苹果Ios系统app应用程序开发者如何获取IPA文件签名证书时需要注意什么?

今天呢想和大家介绍介绍苹果App开发者如何获取IPA文件签名证书的步骤和注意事项。对于苹果应用程序开发者而言&#xff0c;获取IPA文件签名证书是发布应用程序至App Store的重要步骤之一。签名证书能够确保应用程序的安全性和可信度&#xff0c;并使其能够在设备上正确运行。 …

uboot 和 内存地址

前言 在使用 uboot 升级的时候&#xff0c;有个疑问&#xff1a; 通过 tftp 下载的 bin 文件&#xff0c;我该暂存在哪段内存空间&#xff1f;换句话说&#xff0c;哪段内存空间可供我存放临时数据&#xff1f; 带着这个疑问&#xff0c;开启今天的 uboot 和 内存地址 研究之旅…

【2023】COMAP美赛数模中的大型语言模型LLM和生成式人工智能工具的使用

COMAP比赛中的大型语言模型和生成式人工智能工具的使用 写在最前面GitHub Copilot工具 说明局限性 团队指南引文和引用说明人工智能使用报告 英文原版 Use of Large Language Models and Generative AI Tools in COMAP ContestslimitationsGuidance for teamsCitation and Refe…

基于SpringBoot+Vue的体育馆管理系统

基于SpringBootVue的体育馆管理系统的设计与实现~ 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringBootMyBatisVue工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 主页 器材详情 登录界面 管理员界面 摘要 SpringBootVue的体育馆管理系统是…

【OpenCV实现图像:用OpenCV图像处理技巧之白平衡算法】

文章目录 概要加载样例图像统计数据分析White Patch Algorithm小结 概要 白平衡技术在摄影和图像处理中扮演着至关重要的角色。在不同的光照条件下&#xff0c;相机可能无法准确地捕捉到物体的真实颜色&#xff0c;导致图像呈现出暗淡、色调不自然或者褪色的效果。为了解决这个…

【经验模态分解】3.EMD模态分解算法设计与准备工作

/*** poject 经验模态分解及其衍生算法的研究及其在语音信号处理中的应用* file EMD模态分解算法设计与准备工作* author jUicE_g2R(qq:3406291309)* * language MATLAB* EDA Base on matlabR2022b* editor Obsidian&#xff08;黑曜石笔记软…