>백엔드 개발 >PHP 튜토리얼 >PHP Utility Belt 远程代码执行漏洞的验证与分析

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

WBOY
WBOY원래의
2016-06-20 12:31:381212검색

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搭建完之后的运行情况。

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

exploit/multi/http/php_utility_belt_rce

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

随后设置payload

接下来设置相应的选项

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

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

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

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

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

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

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

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.