小白学安全-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 功能界面

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

箭头函数 跟匿名函数this的指向问题

var id 10; function foo() {// 创建时 this->windowthis.id 20; // 等价于 window.id 20let c () > {console.log("id1:", this.id); // 创建时父级 创建时 this->window};let d function () {console.log("id2:", this.id); // 执行时本…

计算机毕业设计 基于SpringBoot的私人西服定制系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ 🍅文末获取源码联系🍅 👇🏻 精…

Spring Cloud LoadBalancer 负载均衡策略与缓存机制

目录 1. 什么是 LoadBalancer ? 2. 负载均衡策略的分类 2.1 常见的负载均衡策略 3. 为什么要学习 Spring Cloud Balancer ? 4. Spring Cloud LoadBalancer 内置的两种负载均衡策略 4.1 轮询负载均衡策略(默认的) 4.2 随机负…

限流式保护器在养老院火灾预防中的应用

安科瑞 华楠 【摘要】老年人是一个庞大特殊的社会群体。随着我国人口的老龄化,老年人口数量断上升。涉及老年人的火灾越来越多,本文从养老院火灾的案例、成因、预防措施等方面对此类火灾进行了深入的探讨。 【关键词】老年公寓;火灾预防&…

Vue 将响应式数据转为普通对象

toRaw:将一个 reactive 生成的响应式数据转为普通对象。 toRaw 适用于:获取响应式数据对应的普通对象,对这个普通对象所有的操作,都不会引起页面的更新。 markRaw:标记一个对象,使其永远不会再成为响应式…

WebDAV之π-Disk派盘 + PassStore

大家常用的qq,手机微信,新浪微博等。假如各个网址都设成同样的帐号和登陆密码,一旦某一帐户泄漏了,别的平台上的账户密码都有被撞库攻击的风险。在不一样的站点设定不一样的高韧性登陆密码才算是最安全可靠的确保,殊不知这般繁多的帐户密码是难以记得的。因而,有着一款安…

ChatGPT如何管理对话历史?

问题 由于现在开始大量使用ChatGPT对话功能,认识到他在提供启发方面具有一定价值。比如昨天我问他关于一个微习惯的想法,回答的内容还是很实在,而且能够通过他的表达理解自己的问题涉及到的领域是什么。 此外,ChatGPT能够总结对话…

系统的讲解 - PHP 接口签名验证

概览 工作中,我们时刻都会和接口打交道,有的是调取他人的接口,有的是为他人提供接口,在这过程中肯定都离不开签名验证。 在设计签名验证的时候,一定要满足以下几点: 可变性:每次的签名必须是不…

创建一个自定义关卡资源(二)

接上一篇文章,做加载 再做加载之前,提一下 关于上一篇文章中的扩展编辑器,会有点小问题,会有重置的现象,现在有点忙,暂时不研究。 如果研究的话,我会出一篇(三) 否则就没…

Docker快速搭建Drupal内容管理系统并远程访问

🎬 鸽芷咕:个人主页 🔥个人专栏:《Linux深造日志》《C干货基地》 ⛺️生活的理想,就是为了理想的生活! 文章目录 前言1. Docker安装Drupal2. 本地局域网访问3 . Linux 安装cpolar4. 配置Drupal公网访问地址5. 公网远程访问Drupal…

【广州华锐互动】3D全景虚拟旅游在文旅行业的应用场景

随着科技的不断发展,3D全景虚拟旅游正在成为一种新兴的旅游体验方式,它可以帮助旅游者更加深入地了解旅游信息,提升旅游体验。下面我们将详细介绍3D全景虚拟旅游可以应用于哪些场景。 一、旅游规划 3D全景虚拟旅游可以帮助旅游者更加直观地进…

中睿天下受邀参加2023电力数字化大会并荣获“闪电杯”大赛三等奖

11月1日至2日,中国电力发展促进会、国家电网有限公司信息通信分公司、国家电网有限公司大数据中心、国家电投集团数字科技有限公司在京联合举办2023电力数字化大会。 大会以“数智赋能新型电力系统”为主题,邀请院士、企业领导、专家学者,探讨…

基于RK3568的内部定时器应用示例

1. 内部定时器介绍 内核定时器是内核用来控制在未来某个时间点(基于jiffies)调度执行某个函数的一种机制,其实现位于kernel/linux/timer.h和kernel/timer.c 文件中。 被调度的函数肯定是异步执行的,它类似于一种“软件中断”&am…

ci-cd的流程

1、项目在gitlab上,从gitlab上使用git插件获取源码,构建成war包,所以使用tomcat作为运行环境 发布 :使用maven插件发布,使用ssh连接。

TSINGSEE视频智能分析系统AI算法针对遛狗不拴绳行为的监管方案

一、背景与需求 近期,一则恶犬咬伤女童的新闻上了热搜,因为狗主人没有给狗拴绳,导致小区内一女童被大型犬撕咬,女童全身多处咬伤,已入院治疗。该新闻曝出后立刻引发社会关注。遛狗不拴绳行为也再一次引发热议。因为狗主…

Linux环境下安装人大金仓数据库

人大金仓产品简介 金仓数据库管理系统[简称:KingbaseES]是北京人大金仓信息技术股份有限公司(简称人大金仓)自主研发的、具有自主知识产权的商用关系型数据库管理系统(DBMS)。该产品面向事务处理类应用,兼顾各类数据分…

浅谈前端出现率高的设计模式

目录 六大原则: 23 种设计模式分为“创建型”、“行为型”和“结构型” 前端九种设计模式 一、创建型 1.构造器模式:抽象了对象实例的变与不变(变的是属性值,不变的是属性名) 2. 工厂模式:为创建一组相关或相互依赖的对象提…

scss 实用教程

变量 $ 定义变量 $link-color: blue;变量名可以与css中的属性名和选择器名称相同 使用变量 a {color: $link_color; }$highlight-border: 1px solid $link_color;中划线和下划线相互兼容,即中划线声明的变量可以使用下划线的方式引用,反之亦然。 $li…

CentOS7 安装Jenkins 2.414.3 详细教程

目录 1、前提条件硬件软件-java11安装 2、安装jenkins3、启动jenkins配置用户和用户组配置JAVA_HOME 4、配置Jenkins一直处于启动状态5、测试Jenkins是否可以访问以及配置6、访问Jenkins系统 1、前提条件 硬件 内存 4G ; 硬盘 20G 软件-java11安装 上传文件jdk-11.0.21_lin…

SUSE 12双网卡绑定

原创作者:运维工程师 谢晋 SUSE 12双网卡绑定 客户环境及需求网卡绑定 客户环境及需求 客户一台物理机安装了SUSE 12的操作系统,需要将ETH5和ETH7双网卡聚合为一块虚拟网卡,以保证一块网卡故障不会影响系统正常运行。 网卡绑定 输入命令c…