转载

PHP Utility Belt 远程代码执行漏洞的验证与分析

PHP Utility Belt是一款为PHP程序开发人员使用的一套工具集,可以用来测试正则表达式并且观察与preg_match和preg_match_all函数的匹配,观察preg_replate函数的结果;获得包含两个单词两个数字一个大写字母和一个符号的随机密码;序列化与反序列化;测试mktime和strtotime时间戳的日期格式或者一个数字型时间戳;在主页外运行任意PHP代码。

由于它能够执行任意的PHP代码,因此只能在测试环境下使用,绝不能产品环境下运行。

此漏洞的漏洞编号为EDB-ID:39554

源代码下载地址为: https://github.com/mboynes/php-utility-belt

搭建实验环境,其中靶机的IP地址为192.168.248.129,攻击机的IP地址为192.168.248.128

下图为PHP Utility Belt搭建完之后的运行情况。

PHP Utility Belt 远程代码执行漏洞的验证与分析

针对此漏洞metasploit已经给出了一个漏洞利用代码,路径为

exploit/multi/http/php_utility_belt_rce

在攻击机上运行此攻击脚本

PHP Utility Belt 远程代码执行漏洞的验证与分析

随后设置payload

PHP Utility Belt 远程代码执行漏洞的验证与分析

接下来设置相应的选项

PHP Utility Belt 远程代码执行漏洞的验证与分析

最后执行exploit命令,开始攻击

PHP Utility Belt 远程代码执行漏洞的验证与分析

可见得到了meterpreter的shell,说明攻击是成功的。

对整个过程抓数据包,如下

PHP Utility Belt 远程代码执行漏洞的验证与分析

其中POST传递的参数为名为code,所有的攻击代码都在这个变量中,接下来看一下漏洞所在的文件ajax.php,问题出在第10行至第15行这部分代码段

PHP Utility Belt 远程代码执行漏洞的验证与分析

可见程序先判断code参数是否设置,如果已经被设置的话,直接放到了eval函数中执行,eval函数的作用是把输入参数的内容作为php代码执行,而在上述代码中并没有对用户所传入的内容进行过滤,也就是说攻击者在code中给出的值只要符合php代码的语法规范就会被无条件执行,这是一个典型的eval注入。

上述代码如果在测试环境下,可以方便程序员的工作,但是放在产品环境下就很危险。

* navyofficer 投递,转载请注明来自FreeBuf黑客与极客(FreeBuf.COM)

原文  http://www.freebuf.com/articles/web/99176.html
正文到此结束
Loading...