Scalpel简介Scalpel是一款自动化Web/API破绽Fuzz引擎,该工具采纳被动扫描的形式,通过流量中解析Web/API参数构造,对参数编码进行自动识别与解码,并基于树结构灵便管制注入位点,让破绽Fuzz向量可能应答简单的编码与数据结构,实现深度破绽开掘。具体技术原理可参考KCon 2022议题:《自动化API破绽Fuzz实战》目前咱们的Fuzz引擎端已打包为一个小工具,内置100+破绽POC,供大家试用:https://github.com/StarCrossP...深度参数注入原理随着Web利用复杂度的晋升与API接口的宽泛应用,在HTTP利用破绽Fuzz过程中,传统的「Form表单明文传参的模式」曾经逐步变为「简单、嵌套编码的参数传递」。在此状况下,间接对参数内容进行注入或替换,无奈深刻底层的破绽触发点。破绽Fuzz过程中须要对这些「构造体、编码」进行抽离,找到真正的注入点位,方可进行自动化破绽测试。

Scalpel领有一个弱小的数据解析和变异算法,它能够将常见的数据格式(json, xml, form等)解析为树结构,而后依据poc中的规定,对树进行变异,包含对叶子节点和树结构的变异。变异实现之后,将树结构还原为原始的数据格式。Scalpel主体构造分为被动代理、Fuzz向量生成与验证、后果输入三个阶段:

破绽检测局部,采纳解析算法,深度解析流量申请中的参数,通过POC中设定的注入点和变异形式生成测试申请,发送申请之后,再通过POC中的验证规定进行胜利性判断,最终输入Fuzz后果。以上面这个JSON申请包为例,解析算法会将其转换为左边所示的树结构,无论其嵌套的档次有多深,解析算法会将其中的所有键值对都解析为一个树结构。而后能够对树中的叶子节点进行变异,也能够对树的整体构造上进行变异。在树上进行变异之后,将树依照原始的数据格式再还原回去,填充到申请报文中,造成变异的申请报文之后再发送进来。

在原始参数构造解析之后,咱们能够基于树结构来设定咱们的测试向量注入形式:对节点的变异形式有:按数据类型注入payload注入通用型payload畸形数据替换类型转换

对树结构的变异形式有:替换object类型构造插入节点删除节点

Scapel性能介绍Scalpel扫描器反对以下破绽检测或者开掘场景:1、检测指标已知平安的破绽,包含CVE破绽,热门框架、组件、中间件安全漏洞。2、通用安全漏洞,包含但不限于SQL注入、XSS破绽、文件上传、命令执行、文件读取等。3、未知0day破绽或者平安问题同时反对多个参数地位的变异,包含:path、query、header、body等局部,具体能够参考Scalpel破绽POC编写指南

案例1:CVE-2022-1388F5 BIG-IP API Unauthenticated RCE破绽的检测简略理解下破绽,具体能够参考之前剖析文章,咱们要实现RCE,须要结构如下非凡的申请:1、拜访门路为/mgmt/tm/util/bash 2、Host为localhost或者127.0.0.1时,绕过验证赋予用户身份3、Connection头加上X-F5-Auth-Token4、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/StarCrossP...目前已反对100+常见破绽Fuzz向量与POC,继续保护中。

Scalpel反对多个平台,请依据您的平台或者需要下载相应的版本