在2019年5月,PHP官方宣布停止对PHP 5.2的维护,但是我们仍然可以在一些地方看到PHP 5.2版本在使用。然而,由于该版本存在许多漏洞和安全性问题,攻击者可以利用这些漏洞绕过安全机制。
下面详细介绍几种常见的PHP 5.2.17 bypass EXP:
file_get_contents()函数绕过:$data = $_GET['url'];if (strpos($data, "http://") === 0 || strpos($data, "https://") === 0) {echo file_get_contents($data);}
这段代码逻辑上看上去是可靠的,但是在PHP 5.2.17中,攻击者可以通过一些特殊的输入来绕过安全性检查。例如,当data参数值为“http://127.0.0.1/phpinfo.php”。这是因为在PHP 5.2.17之前,file_get_contents()函数不允许从本地文件系统之外读取文件,但在该版本下,该限制被删除,攻击者可以自由访问文件系统和敏感信息。
LD_PRELOAD bypass:$url = $_GET['url'];exec("/usr/bin/wget -O /tmp/1.txt {$url}");$data = file_get_contents("/tmp/1.txt");
这段代码检查了URL是否以“http://”或“https://”开头,但他仍然面临被攻击的风险。攻击者可以使用LD_PRELOAD来劫持exec启动的wget程序,以达到绕过访问控制的目的。
上述实例仅是PHP 5.2.17 bypass EXP中的极少数,并非详尽无遗,但希望给予开发人员们一些帮助,了解和充分理解这些漏洞的危害和对策。同时,也提醒用户们及时升级PHP版本或采取其他措施保护服务器的安全。