用Domato通过Fuzzing对PHP进行漏洞挖掘研究
为了清楚和简洁起见,下面引用的代码已精炼为最简单的形式。实际用于Fuzzing测试的完整版本可以在此处找到。
https://github.com/Rewzilla/domatophp
最近,我一直在对PHP解释器进行Fuzzing,我探索了许多工具和技术(AFL,LibFuzzer,甚至是自定义的Fuzzing引擎),但是最近我决定尝试Domato。对于那些不知道的人,Domato是基于语法的DOMFuzzer,旨在从复杂的代码库中挖掘复杂的bug。它最初是为浏览器而设计的,但是我认为我可以将其用于Fuzzing PHP解释器。
https://github.com/googleprojectzero/domato
0x01 分析上下文语法
为了使用Domato,必须首先使用上下文无关的语法来描述语言,CFG只是一组定义语言构造方式的规则。例如,如果我们的语言由以下形式的句子组成:
这些变量中的每一个都可以采用几种形式,例如:
那么上下文无关文法可能看起来像...
然后Domato使用上下文无关文法生成符合语言规则的随机组合。
可以想象,通过将每个规则分解为更多子规则,我们可以开始定义更复杂的语言,而不仅仅是简单的搜索/替换。实际上,Domato还提供了一些内置函数,用于限制递归并生成基本类型(int,char,string等)。
例如,以下Domato语法,该语法生成伪代码...
将其送入Domato会产生以下结果...
这非常适合Fuzzing解释器,因为每个样本都是不同的,并且仍然保证其在语法上是有效的!
0x02 列举Attack Surface
然后,下一步就是将PHP语言描述为CFG。如果有兴趣查看完整的CFG,请下载PHP源代码,然后查看Zend/zend_language_parser.y。
但是,我对Fuzzing特定的代码模式更感兴趣。因此,我实现了CFG,使其仅使用“Fuzzing”参数生成对内置函数和类方法的调用。为此,我们需要一个函数,方法及其参数的列表。
有两种获取此数据的方法。最简单的方法是使用PHP的内置Reflection类来遍历所有已定义的函数和类,从而构建一个列表。
以下代码对所有内部PHP函数进行了演示...
这会产生类似如下代码:
但是,此问题在于此列表不包含类型信息。ReflectionParameter类包含一个getType方法,但是对于大多数函数而言,它目前似乎不起作用。:(也许这是一个bug?很难说。无论如何,拥有类型信息将使我们的Fuzzing工作变得更加有效,因此值得花时间去寻找另一种获取该数据的方法。
https://www.php.net/manual/en/reflectionparameter.gettype.php
为了解析出我们需要的东西,PHP的文档通常相当不错,可以在此处将其作为单个压缩的HTML文档下载。经过数小时的辛苦编写正则表达式后,我能够将其解析为可用的函数,方法和参数类型列表。我将其留给读者练习,但是最终产品(以CFG形式)看起来像这样……
https://www.php.net/distributions/manual/php_manual_en.html.gz
0x03 设置Domato
为了使Domato使用我们的语法,我们还需要定义一些基本组件,例如:
经过大量的调整和调整后,我的配置最终看起来像这样……
我们还需要定义一个语法将被应用到的模板。该模板将设置环境,实例化以后可能使用的所有对象,然后运行每条线程。我的模板看起来像这样...
最后一步是复制和修改Domato的generator.py文件。我发现只需进行以下更改就足够了...
·第55和62行:将根元素更改为“
· 第78行:引用我自己的“ template.php”
· 第83行:在“ php.txt”中引用我自己的语法
·第134行:将输出名称和扩展名更改为“
然后,应该能够生成有效的Fuzzing输入!
0x04 开始Fuzz
现在我们要处理的数据非常多,我们需要以一种最大化检测任何类型的内存损坏的机会的方式构建PHP。为此,我强烈建议使用LLVM AddressSanitizer(ASAN),它将检测任何无效的内存访问,即使它不会立即导致崩溃。
https://github.com/google/sanitizers/wiki/AddressSanitizer
用ASAN编译PHP,下载最新版本的源代码在这里,并运行以下命令...
https://www.php.net/downloads
在Fuzzer运行之前,尝试消除不必要地阻碍该过程的任何条件也是一个好主意。例如,像大多数语言一样,PHP具有一个sleep()函数,该函数接受一个整数参数,并仅等待几秒后才能继续。用较大的值(例如INT_MAX)调用此函数将迅速占用较大的簇。
还有一些函数可能会导致进程合法地“崩溃”,例如posix_kill()或posix_setrlimit()。我们可能希望从测试语料库中删除这些内容,以减少误报的数量。
最后,由于PHP文档中列出的许多函数和类实际上在核心安装中不可用(而是从扩展中提供),因此我们不妨从资料集中删除其中的一些函数和类,以避免浪费时间调用不存在的代码。
最后,经过一番试验,我确定了以下清单...
尽管一台机器既可以单独生成样本,但我还是选择了一小组来加快处理速度。我使用了在Intel NUC上运行的 Proxmox 和10个 DebianVM,其工作如下:
·节点0:样本生成,托管NFS共享。
·节点1-8:Fuzzing节点,从NFS共享中提取样本进行测试。
·节点9:“分类”节点:根据崩溃指标对崩溃样本进行分类。
我创建了简单的原始shell脚本以在每个脚本上运行以执行这些职责,这些脚本可以在上面链接的github repo中找到。
0x05 分析Crashs
几分钟内,该Fuzzer就生成了多个崩溃样本,一夜之间就生成了2,000多个。
通过根据崩溃的指令地址对崩溃进行分类,我能够确定所有2,000个崩溃都是3个错误造成的。其中,有2个显然无法利用(两个都是由于堆栈耗尽导致的OOM错误),但是最后一个似乎是UAF!这是最小化的崩溃示例...
此错误已在bug#79029中得到修复,应该包含在下一个版本中。在接下来的几篇文章中,我将讨论将其根本原因,实现任意代码执行的过程,以及在此过程中发现的一个巧妙的shellcode技巧。
https://bugs.php.net/bug.php?id=79029
推荐系统
微软Win11原版22H2下载_Win11GHOST 免 激活密钥 22H2正式版64位免费下载
语言:中文版系统大小:5.13GB系统类型:Win11微软Win11原版22H2下载_Win11GHOST 免 激活密钥 22H2正式版64位免费下载系统在家用办公上跑分表现都是非常优秀,完美的兼容各种硬件和软件,运行环境安全可靠稳定。Win11 64位 Office办公版(免费)优化 1、保留 Edge浏览器。 2、隐藏“操作中心”托盘图标。 3、保留常用组件(微软商店,计算器,图片查看器等)。 5、关闭天气资讯。
Win11 21H2 官方正式版下载_Win11 21H2最新系统免激活下载
语言:中文版系统大小:4.75GB系统类型:Win11Ghost Win11 21H2是微软在系统方面技术积累雄厚深耕多年,Ghost Win11 21H2系统在家用办公上跑分表现都是非常优秀,完美的兼容各种硬件和软件,运行环境安全可靠稳定。Ghost Win11 21H2是微软最新发布的KB5019961补丁升级而来的最新版的21H2系统,以Windows 11 21H2 22000 1219 专业版为基础进行优化,保持原汁原味,系统流畅稳定,保留常用组件
windows11中文版镜像 微软win11正式版简体中文GHOST ISO镜像64位系统下载
语言:中文版系统大小:5.31GB系统类型:Win11windows11中文版镜像 微软win11正式版简体中文GHOST ISO镜像64位系统下载,微软win11发布快大半年了,其中做了很多次补丁和修复一些BUG,比之前的版本有一些功能上的调整,目前已经升级到最新版本的镜像系统,并且优化了自动激活,永久使用。windows11中文版镜像国内镜像下载地址微软windows11正式版镜像 介绍:1、对函数算法进行了一定程度的简化和优化
微软windows11正式版GHOST ISO镜像 win11下载 国内最新版渠道下载
语言:中文版系统大小:5.31GB系统类型:Win11微软windows11正式版GHOST ISO镜像 win11下载 国内最新版渠道下载,微软2022年正式推出了win11系统,很多人迫不及待的要体验,本站提供了最新版的微软Windows11正式版系统下载,微软windows11正式版镜像 是一款功能超级强大的装机系统,是微软方面全新推出的装机系统,这款系统可以通过pe直接的完成安装,对此系统感兴趣,想要使用的用户们就快来下载
微软windows11系统下载 微软原版 Ghost win11 X64 正式版ISO镜像文件
语言:中文版系统大小:0MB系统类型:Win11微软Ghost win11 正式版镜像文件是一款由微软方面推出的优秀全新装机系统,这款系统的新功能非常多,用户们能够在这里体验到最富有人性化的设计等,且全新的柔软界面,看起来非常的舒服~微软Ghost win11 正式版镜像文件介绍:1、与各种硬件设备兼容。 更好地完成用户安装并有效地使用。2、稳定使用蓝屏,系统不再兼容,更能享受无缝的系统服务。3、为
雨林木风Windows11专业版 Ghost Win11官方正式版 (22H2) 系统下载
语言:中文版系统大小:4.75GB系统类型:雨林木风Windows11专业版 Ghost Win11官方正式版 (22H2) 系统下载在系统方面技术积累雄厚深耕多年,打造了国内重装系统行业的雨林木风品牌,其系统口碑得到许多人认可,积累了广大的用户群体,雨林木风是一款稳定流畅的系统,一直以来都以用户为中心,是由雨林木风团队推出的Windows11国内镜像版,基于国内用户的习惯,做了系统性能的优化,采用了新的系统
雨林木风win7旗舰版系统下载 win7 32位旗舰版 GHOST 免激活镜像ISO
语言:中文版系统大小:5.91GB系统类型:Win7雨林木风win7旗舰版系统下载 win7 32位旗舰版 GHOST 免激活镜像ISO在系统方面技术积累雄厚深耕多年,加固了系统安全策略,雨林木风win7旗舰版系统在家用办公上跑分表现都是非常优秀,完美的兼容各种硬件和软件,运行环境安全可靠稳定。win7 32位旗舰装机版 v2019 05能够帮助用户们进行系统的一键安装、快速装机等,系统中的内容全面,能够为广大用户
番茄花园Ghost Win7 x64 SP1稳定装机版2022年7月(64位) 高速下载
语言:中文版系统大小:3.91GB系统类型:Win7欢迎使用 番茄花园 Ghost Win7 x64 SP1 2022.07 极速装机版 专业装机版具有更安全、更稳定、更人性化等特点。集成最常用的装机软件,集成最全面的硬件驱动,精心挑选的系统维护工具,加上独有人性化的设计。是电脑城、个人、公司快速装机之首选!拥有此系统
相关文章
- 《网络安全审查办法》要点解读
- 伪造的 jQuery Migrate 插件生成恶意文件感染 WordPress 网站
- 罗技G502鼠标驱动如何设置灵敏度和宏?
- u盘有写保护怎么办 u盘有写保护解决方法【详解】
- 四招让你的电脑裸奔也不会中毒
- 中小企业安全领域正日益成为有吸引力的细分市场
- 你还敢开车吗?黑客三分钟攻破你的私家车
- 安装win10系统后开始菜单、音量、网络、任务栏左键打不开解决办法
- 研究发现FlyTrap恶意软件破坏了数千个Facebook账户
- 电脑故障开机无显示
- Win10网上邻居在哪? Win10桌面显示网上邻居网络图方法
- 卧室变鬼屋,售货机变“提款机”,XPwn 破解秀告诉你“城里黑客”的新玩法
- DMARC:企业邮件信息泄漏应对之道
- ECShop 注射漏洞分析
- 使用Speakeasy Emulation Framework快速分析恶意程序
- 解决win10以太网显示正在识别网络怎么解决
- 管理微软帐户中的各项隐私项
- 盘点历史上那些令人闻风丧胆的DDoS攻击事件
热门系统
- 1华硕笔记本&台式机专用系统 GhostWin7 32位正式旗舰版2018年8月(32位)ISO镜像下载
- 2深度技术 Windows 10 x86 企业版 电脑城装机版2018年10月(32位) ISO镜像免费下载
- 3电脑公司 装机专用系统Windows10 x86喜迎国庆 企业版2020年10月(32位) ISO镜像快速下载
- 4雨林木风 Ghost Win7 SP1 装机版 2020年4月(32位) 提供下载
- 5深度技术 Windows 10 x86 企业版 六一节 电脑城装机版 版本1903 2022年6月(32位) ISO镜像免费下载
- 6深度技术 Windows 10 x64 企业版 电脑城装机版2021年1月(64位) 高速下载
- 7新萝卜家园电脑城专用系统 Windows10 x64 企业版2019年10月(64位) ISO镜像免费下载
- 8新萝卜家园 GhostWin7 SP1 最新电脑城极速装机版2018年8月(32位)ISO镜像下载
- 9电脑公司Ghost Win8.1 x32 精选纯净版2022年5月(免激活) ISO镜像高速下载
- 10新萝卜家园Ghost Win8.1 X32 最新纯净版2018年05(自动激活) ISO镜像免费下载
热门文章
常用系统
- 1电脑公司 GhostXpSp3 电脑城装机版 2022年3月 ISO镜像高速下载
- 2电脑公司 装机专用系统Windows10 x86新春特别 企业版2020年2月(32位) ISO镜像快速下载
- 3雨林木风Ghost Win7 x64 SP1 极速装机版2020年7月(64位) 高速下载
- 4深度技术 GHOSTXPSP3 电脑城万能装机版 2018年.10 最新版ISO镜像下载
- 5新萝卜家园Ghost Win8.1 X64位 纯净版2022年7月(自动激活) ISO镜像高费下载
- 6新萝卜家园 Ghost XP SP3系统 电脑城极速纯净版 2021年3月 ISO镜像高速下载
- 7惠普笔记本&台式机专用系统 GhostWin7 32位旗舰版2018年5月(32位) 提供下载
- 8深度技术 Windows 10 x86 企业版 新春特别 电脑城装机版 版本1903 2022年2月(32位) ISO镜像免费下载
- 9番茄花园Ghost Win8.1 (X32) 新春特别 纯净版2021年2月(免激活) ISO镜像免费下载
- 10笔记本&台式机专用系统 GhostWin7 32位旗舰版装机版2018年8月(32位)ISO镜像下载