G.O.S.S.I.P 阅读推荐 2023-12-04 掌管web应用程序生死的Atropos

admin 2023年12月5日01:14:35评论25 views字数 2034阅读6分46秒阅读模式

Atropos是希腊神话中的命运三女神之一,掌管死亡,负责切断生命之线,英语单词atrophy(萎缩,停止发育)就源自Atropos。学完今天的英语单词,我们就要进入到今天的阅读推荐,去看一下USENIX Security 2024年的提前批录取论文之Atropos: Effective Fuzzing of Web Applications for Server-Side Vulnerabilities

G.O.S.S.I.P 阅读推荐 2023-12-04 掌管web应用程序生死的Atropos

在这个万物皆可fuzz的时代,越来越多的安全研究论文在不同方向上都给自己套上了“fuzzing”的帽子,比如今天这篇论文,作者就提出了针对web应用程序(论文主要关注基于PHP的服务器端web应用程序)的模糊测试技术。特别地,作者提出的测试方案——Atropos是一套野心雄心勃勃的方案,一口气覆盖了大部分典型的web漏洞:

  • SQL注入

  • 文件包含远程代码执行

  • 远程命令执行

  • 反序列漏洞 (PHP Object Injection)

  • 服务器请求伪造 (SSRF)

  • 任意文件读写

  • 文件上传漏洞

可我们知道,web应用程序的规模通常很大,考虑到web应用程序的特殊性,web应用程序的复杂接口、状态以及对高度结构化输入的要求都使得传统的模糊测试方法效率低下,传统的模糊测试方法也并不适用。Atropos是怎么去解决已有的问题呢?

Atropos是一种基于快照(snapshot-based)和反馈驱动(feedback-guided)的模糊测试方法,专门针对基于PHP的web应用程序。作者考虑了对web应用程序开展模糊测试所面临一些主要挑战。首先,去调用web应用程序提供的接口并不像调用一个本地应用程序那么简单,直接给一个字节流就好了,往往需要进行一系列的构造(嘿嘿我curl有话要说),特别是要考虑一些关键的key-value输入;其次,当前的web应用程序一般都工作在有状态(state)的模式下,也就是说,会根据特定的状态(例如用户是否登录),在特定的会话(session)中执行相关的操作,而这些前端状态往往是和后端服务器的状态关联的,想要去为服务器后端构建并保持特定的状态,这进一步增加了模糊测试的难度。而且作者自己还给自己加码,要检测上面提到的8种典型问题。为了实现这么复杂的目标,相应地,Atropos也引入了许多复杂的设计。

G.O.S.S.I.P 阅读推荐 2023-12-04 掌管web应用程序生死的Atropos

上图展示了Atropos的工作流程,对传统的web应用程序运行环境进行了大刀阔斧的改动,主要的改动包括:

  1. Atropos修改了PHP解释器(interpreter),对与字符串比较和正则表达式相关的函数进行插桩,这样可以去监控web应用程序的动态执行过程中的一些key、value的比较。例如上图中,在随机输入abc=xyz键值对之后,解释器发现web应用想要找的key是page,那么就可以在下一次输入变异中提供这个key,而继续分析发现web应用程序进行了value的检查(例如是否和login相等),那么再下一次输入变异中就可以生成page=login这种键值对,从而大大提升了变异的有效性(当然有一些细节比如password hash是很难搞定的,作者认为这个也“不影响大局”)。

  2. Atropos还修改整个运行环境,基于作者在USENIX Security 2021论文中提出的Nyx框架,可以非常高效地记录运行过程中的快照并进行重放(replay),这样就解决了需要在特定的状态下(包括PHP解释器状态,文件系统状态,数据库状态)反复进行测试的痛点和难点。

Atropos还有一些其他的优化手段,例如使用FastCGI直接和PHP解释器通信,以此替代HTTP请求,提高效率。而为了判定是否存在上面提到的8种漏洞,作者也对这些漏洞的特点(以及它们出错的特定状态)进行了总结,这样Atropos就可以通过判断PHP解释器中是否有警告或者错误产生,结合输出,判断漏洞是否存在(参考下表)

G.O.S.S.I.P 阅读推荐 2023-12-04 掌管web应用程序生死的Atropos

在实验中,作者用了三个web应用程序漏洞测试套件来进行评估:

G.O.S.S.I.P 阅读推荐 2023-12-04 掌管web应用程序生死的Atropos

作者将Atropos和四个静态代码分析工具(如下),两个漏洞扫描工具(ZED ATTACK PROXY也就是ZAP、WAPITI)以及三个fuzzer(Witcher、Wfuzz和CEFUZZ)进行了横向对比,测试结果(Table 1)表明Atropos遥遥领先!

G.O.S.S.I.P 阅读推荐 2023-12-04 掌管web应用程序生死的Atropos

G.O.S.S.I.P 阅读推荐 2023-12-04 掌管web应用程序生死的Atropos

除了用测试套件来评估,作者还对56个真实世界中的web应用程序进行了测试,发现了大量的安全问题!!

G.O.S.S.I.P 阅读推荐 2023-12-04 掌管web应用程序生死的Atropos

从下表也可以看出,在对真实世界的web应用程序进行漏洞检测中,Atropos依然是遥遥领先!!!

G.O.S.S.I.P 阅读推荐 2023-12-04 掌管web应用程序生死的Atropos


论文:https://www.usenix.org/system/files/sec23winter-prepub-167-guler.pdf
测试数据:https://github.com/cispa-syssec/atropos-legacy


原文始发于微信公众号(安全研究GoSSIP):G.O.S.S.I.P 阅读推荐 2023-12-04 掌管web应用程序生死的Atropos

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年12月5日01:14:35
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   G.O.S.S.I.P 阅读推荐 2023-12-04 掌管web应用程序生死的Atroposhttp://cn-sec.com/archives/2268607.html

发表评论

匿名网友 填写信息