共计 2179 个字符,预计需要花费 6 分钟才能阅读完成。
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 反对多个平台,请依据您的平台或者需要下载相应的版本