Scalpel:解构API复杂参数Fuzz的「手术刀」

一颗小胡椒2022-11-22 10:41:54

Scalpel 简介

Scalpel是一款自动化Web/API漏洞Fuzz引擎,该工具采用被动扫描的方式,通过流量中解析Web/API参数结构,对参数编码进行自动识别与解码,并基于树结构灵活控制注入位点,让漏洞Fuzz向量能够应对复杂的编码与数据结构,实现深度漏洞挖掘。

深度参数注入原理

随着Web应用复杂度的提升与API接口的广泛使用,在HTTP应用漏洞Fuzz过程中,传统的「Form表单明文传参的模式」已经逐渐变为「复杂、嵌套编码的参数传递」。在此情况下,直接对参数内容进行注入或替换,无法深入底层的漏洞触发点。

漏洞Fuzz过程中需要对这些「结构体、编码」进行抽离,找到真正的注入点位,方可进行自动化漏洞测试。

Scalpel拥有一个强大的数据解析和变异算法,它可以将常见的数据格式(json, xml, form等)解析为树结构,然后根据poc中的规则,对树进行变异,包括对叶子节点和树结构的变异。变异完成之后,将树结构还原为原始的数据格式。

Scalpel主体结构分为被动代理、Fuzz向量生成与验证、结果输出三个阶段:

漏洞检测部分,采用解析算法,深度解析流量请求中的参数,通过POC中设定的注入点和变异方式生成测试请求,发送请求之后,再通过POC中的验证规则进行成功性判断,最终输出Fuzz结果。

以下面这个JSON请求包为例,解析算法会将其转换为右边所示的树结构,无论其嵌套的层次有多深,解析算法会将其中的所有键值对都解析为一个树结构。然后可以对树中的叶子节点进行变异,也可以对树的整体结构上进行变异。在树上进行变异之后,将树按照原始的数据格式再还原回去,填充到请求报文中,形成变异的请求报文之后再发送出去。

在原始参数结构解析之后,我们可以基于树结构来设定我们的测试向量注入方式:

对节点的变异方式有:

1. 按数据类型注入payload

2. 注入通用型payload

3. 畸形数据替换

4. 类型转换

对树结构的变异方式有:

1. 替换object类型结构

2. 插入节点

3. 删除节点

Scapel 功能介绍

Scalpel扫描器支持以下漏洞检测或者挖掘场景:

1、检测目标已知安全的漏洞,包括CVE漏洞,热门框架、组件、中间件安全漏洞。

2、通用安全漏洞,包括但不限于SQL注入、XSS漏洞、文件上传、命令执行、文件读取等。

3、未知0day漏洞或者安全问题

同时支持多个参数位置的变异,包括:path、query、header、body等部分,具体可以参考Scalpel

漏洞POC编写指南(https://github.com/StarCrossPortal/scalpel/wiki/POC%E7%BC%96%E5%86%99%E6%8C%87%E5%8D%97)

案例1:CVE-2022-1388F5 BIG-IP APIUnauthenticated RCE漏洞的检测

简单了解下漏洞,具体可以参考之前分析文章【技术干货】F5 BIG-IP API Unauthenticated RCE(CVE-2022-1388)分析),我们要实现RCE,需要构造如下特殊的请求:

1、访问路径为/mgmt/tm/util/bash

2、Host为localhost或者127.0.0.1时,绕过验证赋予用户身份

3、Connection头加上X-F5-Auth-Token

4、body部分添加json形式的执行命令

为了检测到CVE-2022-1388漏洞是否存在,我们需要在发送构造的特殊请求后,识别响应中是否进行了命令执行。了解到整个检测的步骤后,开始编写漏洞POC

一一对应,在URL部分变异,变异方式为替换,变异值为/mgmt/tm/util/bash

在Host部分变异,变异方式为替换,变异值为localhost

对Heder部分的变异,变异方式为替换,变异值为Keep-Alive,X-F5-Auth-Token

对body部分的变异,变异方式为替换,变异值为我们需要执行的命令,这里执行id命令。

最后对响应的匹配,使用正则识别id命令之后的结果。

在编辑好漏洞POC之后,运行扫描器进行检查。

在被动扫描的过程,实际获取到的数据包如下:

如果存在漏洞,将会以html文件的形式记录存在漏洞的信息,查看此次扫描结果。

成功扫描出CVE-2022-1388F5 BIG-IP API Unauthenticated RCE漏洞,漏洞的请求也变异无误,最后的响应中也是执行了id命令。

案例二:利用Scalpel工具挖掘多个0day漏洞

Scalpel工具使用较为灵活,通过对检测目标变异响应的check,可以发现检测目标中未知的安全问题。

例如为发现某些API接口是否存在账号密码的泄露,可以在check部分利用正则表达式匹配具体的泄露数据。

为发现目标是否存在文件读取漏洞,可以在多个变异位置插入或者替换payload

为发现SQL注入漏洞,可以在query、Heder、body中的参数插入' and 1=1类似的payload

星阑实验室成员利用如上的类似通用检测规则,挖掘多个0day漏洞,已提交给CNVD国家信息安全共享平台并被收录。

同时发现某Apache开源项目的CVE漏洞,报告被该团队接受并正在修复,尚未披露。

工具地址

GitHub地址下载地址:https://github.com/StarCrossPortal/scalpel

目前已支持100+常见漏洞Fuzz向量与POC,持续维护中。

Scalpel支持多个平台,请根据您的平台或者需求下载相应的版本。

api漏洞挖掘
本作品采用《CC 协议》,转载必须注明作者和本文链接
最后对响应的匹配,使用正则识别id命令之后的结果。成功扫描出CVE-2022-1388F5 BIG-IP API Unauthenticated RCE漏洞漏洞的请求也变异无误,最后的响应中也是执行了id命令。案例二:利用Scalpel工具挖掘多个0day漏洞Scalpel工具使用较为灵活,通过对检测目标变异响应的check,可以发现检测目标中未知的安全问题。同时发现某Apache开源项目的CVE漏洞,报告被该团队接受并正在修复,尚未披露。
当前,高危漏洞依旧是网络安全防护的最大威胁之一。专项漏洞检测内置大量漏洞PoC验证脚本。同时客户可依据业务场景编写符合自身需求的PoC验证脚本,有效提升漏洞检测水平。作为国内首家成立的网络安全企业,天融信始终以捍卫国家网络空间安全为己任,积极投身网络安全建设,在漏洞挖掘、分析、排查、修复等方面有丰富的实战经验与积累。
7月6日,瑞数信息正式发布《2022 Bots自动化威胁报告》,从Bots威胁场景、发展态势、攻击特征等多个方面进行深度分析,剖析多个行业的Bots自动化攻击案例,并对2022年Bots自动化威胁发展趋势做出了最新研判。
Web 应用通常用于对外提供服务,由于具有开放性的特点,逐渐成为网络攻击的重要对象,而漏洞利用是实现 Web 攻击的主要技术途径。越权漏洞作为一种常见的高危安全漏洞,被开 放 Web 应 用 安 全 项 目(Open Web Application Security Project,OWASP) 列 入 10 个 最 关 键Web 应用程序安全漏洞列表。结合近几年披露的与越权相关的 Web 应用通
漏洞挖掘是指对应用程序中未知漏洞的探索,通过综合应用各种技术和工具,尽可能地找出其中的潜在漏洞。cookie的key为RememberMe,并对相关信息进行序列化,先使用aes加密,然后再使用base64编码处理形成的。在网上关于Shiro反序列化的介绍很多,我这里就只简单介绍一下,详情各位可以看下大神们对其源码的分析。
漏洞挖掘工具—afrog
2023-03-20 10:20:07
-t http://example.com -o result.html2、扫描多个目标 afrog -T urls.txt -o result.html例如:urls.txthttp://example.comhttp://test.comhttp://github.com3、测试单个 PoC 文件 afrog?-t http://example.com -P ./testing/poc-test.yaml -o result.html4、测试多个 PoC 文件 afrog?
对于公益SRC来说,想要冲榜就不能在一个站上浪费大量时间,公益SRC对洞的质量要求不高,所以只要 花时间,还是可以上榜的。在对某站点进行测试SQL注入的时候,先通过一些方式测试是否可能存在漏洞,然后可以直接sqlmap一把梭,也可以手工测试,然后提交漏洞。任意注册算是低危漏洞,不过也有两分。不管是进行SRC漏洞挖掘,还是做项目进行渗透测试,又或者是打红蓝对抗,一定要做好信息收集。
Activity漏洞挖掘详解
2021-10-18 16:22:12
2Activity漏洞初步介绍1.Activity基本介绍在学习Activity的漏洞挖掘之前,我们先对Activity的基本运行原理有一个初步的认识。
最近在学习Android APP客户端漏洞挖掘过程中,对Android APP端漏洞挖掘做了一个基本的梳理总结本节主要是在介绍Android APP漏洞挖掘过程中,使用常见的Android漏洞挖掘工具的安装和使用办法,帮助Android漏洞挖掘人员提供便利。本文里面一部分的介绍采摘与网络博客,大家可以点击对应的网址进行查看。
一颗小胡椒
暂无描述