PHP漏洞在白盒审计中的技巧(4)——PHP伪协议利用
内容提要
本文探讨了PHP伪协议的多种攻击方式,包括利用php://filter、php://input、data://、zip://和phar://协议进行代码执行和文件包含攻击。同时,文章提供了防御策略,如输入过滤、禁用危险配置和代码加固,以防止这些漏洞的利用。
关键要点
-
PHP伪协议攻击方式包括php://filter、php://input、data://、zip://和phar://协议。
-
php://filter可用于读取敏感文件源码,通过Base64编码绕过文件包含。
-
php://input可执行任意代码,通过POST请求注入PHP代码。
-
data://协议可直接执行Base64编码的PHP代码,若allow_url_include开启则直接执行。
-
zip://和phar://协议可利用上传恶意文件进行攻击,需注意文件内容校验。
-
防御策略包括输入过滤、禁用危险配置和代码加固,避免动态包含用户输入。
-
多层过滤器链可绕过关键字过滤,利用组合过滤器实现攻击。
-
glob://协议可遍历目录结构,帮助攻击者发现敏感文件。
-
特殊场景下,ogg://协议可触发反序列化攻击,需禁用非常用扩展。
-
WAF可通过编码转换绕过,需注意UTF-16编码的攻击方式。
-
PHAR文件可通过远程URL包含触发,需确保allow_url_include开启。
延伸解读
PHP伪协议攻击的多样性
本文详细介绍了多种PHP伪协议的攻击方式,包括php://filter、php://input等。这些协议的灵活性使得攻击者可以通过不同的手段实现代码执行和文件包含攻击,开发者在编写代码时需特别注意这些潜在的安全隐患。
防御策略的重要性
文章中提到的防御策略,如输入过滤和禁用危险配置,强调了在开发过程中实施安全措施的必要性。尤其是动态包含用户输入的代码,必须谨慎处理,以防止攻击者利用这些漏洞进行攻击。
编码绕过的风险
攻击者可以利用编码转换技术绕过WAF等安全防护措施,例如通过UTF-16编码来隐藏恶意代码。这提醒开发者在安全防护中,不仅要关注常规的过滤,还需考虑更复杂的编码方式可能带来的风险。
延伸问答
PHP伪协议攻击有哪些常见方式?
常见的PHP伪协议攻击方式包括php://filter、php://input、data://、zip://和phar://协议。
如何利用php://filter协议进行攻击?
可以通过构造URL利用php://filter的Base64编码过滤器,绕过文件包含直接读取敏感文件源码。
php://input协议的攻击原理是什么?
通过php://input协议,可以在POST请求体中注入PHP代码,从而执行任意代码。
如何防御PHP伪协议的攻击?
防御策略包括输入过滤、禁用危险配置和代码加固,避免动态包含用户输入。
zip://和phar://协议的攻击方式有什么区别?
zip://协议利用上传恶意ZIP文件进行攻击,而phar://协议则通过反序列化恶意PHAR文件触发攻击。
在PHP中,如何避免动态包含用户输入?
可以通过使用固定包含逻辑,避免使用动态包含用户输入的方式来提高安全性。