PHP漏洞在白盒审计中的技巧(3)——PHP动态函数执行
💡
原文中文,约9900字,阅读约需24分钟。
📝
内容提要
文章讨论了多种动态函数调用漏洞及其修复方案,包括直接调用、回调函数和类方法动态调用。通过示例代码展示了攻击原理和恶意Payload,并提供了白名单和类型限制等防御措施,强调了代码审计和输入验证的重要性,以防止远程代码执行(RCE)漏洞。
🎯
关键要点
- 文章讨论了多种动态函数调用漏洞及其修复方案。
- 直接动态函数调用漏洞允许攻击者通过控制参数执行系统命令。
- 修复方案包括使用白名单限制允许调用的函数。
- call_user_func() 回调风险漏洞可导致任意文件删除。
- 修复方案是限制回调类型为闭包或类方法。
- 类方法动态调用漏洞可通过参数调用敏感类,导致RCE。
- 修复方案是升级至安全版本并增加路由过滤。
- create_function() 代码注入漏洞可实现RCE,建议使用匿名函数替代。
- array_map() 函数滥用漏洞允许攻击者对数组元素执行命令。
- 修复方案是校验回调是否为用户定义的安全函数。
- __call魔术方法滥用漏洞可通过动态执行攻击,需增加方法存在性检查。
- 动态函数执行漏洞防御矩阵提供了多层级防御方案。
- 漏洞检测与审计技巧包括静态代码扫描和动态Fuzz测试。
- CVE-2021-3129漏洞影响Laravel,攻击者可通过Phar反序列化实现RCE。
- CVE-2018-7600漏洞影响Drupal,攻击者可通过注入恶意参数实现任意代码执行。
- CVE-2016-10033漏洞影响PHPMailer,攻击者可通过注入参数控制mail()函数执行任意代码。
- MailPoet插件存在RCE漏洞,攻击者可通过目录遍历和文件包含执行任意PHP代码。
- 文章强调了代码审计和输入验证的重要性,以防止RCE漏洞。
➡️