freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

Scalpel:解构API复杂参数Fuzz的「手术刀」
星阑科技 2022-11-08 11:49:19 366545
所属地 北京

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接口 # API安全
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 星阑科技 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
星阑科技 LV.7
北京星阑科技有限公司
  • 257 文章数
  • 45 关注者
API用户行为分析监测
2023-10-24
API NEWS | 第三方API安全性最佳实践
2023-10-18
第三方API安全性最佳实践
2023-10-18
文章目录