phpstudy_2016-2018_rce 漏洞复现
漏洞描述
攻击者可以利用该漏洞执行PHP 命令,也可以称作 phpStudy 后门 。RCE(Remote Command|Code Execute)
Phpstudy软件是国内的一款免费的PHP调试环境的程序集成包,通过集成Apache、PHP、MySQL、phpMyAdmin等多款软件一次性安装,无需配置即可直接安装使用,一键搭建。 其中2016、2018版本的phpstudy存在被黑客恶意篡改后形成的RCE漏洞。该漏洞可以直接远程执行系统命令。
影响版本
phpStudy 2016和2018两个版本
后门代码存在于\ext\php_xmlrpc.dll模块中
phpStudy2016 查看
- \phpStudy\php\php-5.2.17\ext\php_xmlrpc.dll
- \phpStudy\php\php-5.4.45\ext\php_xmlrpc.dll
phpStudy2018查看
- \phpStudy\PHPTutorial\php\php-5.4.45\ext\php_xmlrpc.dll
- \phpStudy\PHPTutorial\PHP\PHP-5.2.17\ext\php_xmlrpc.dll
漏洞分析
网上某位大佬的
通过 IDA分析xmlrpc.dll发现,被植入危险函数eval()。
xmlrpc.dll中的初始化函数request_startup_func被篡改:当发起HTTP请求的数据包中包含“Accept-Encoding”字段时,就会进入黑客自定义的攻击流程。
当Accept-Encoding字段的信息为“compress,gzip”时,触发系统收集功能。
当Accept-Encoding字段的信息为“gzip,deflate”时,再进一步判断Accept-Charset字段,只有当Accept-Charset字段为一些特定字符时才会触发漏洞。
漏洞复现
环境搭建
安装phpstudy2016或者phpstudy2018,需要把PHP版本换成5.2.17或5.4.45版本
查看是否漏洞验证
- \phpStudy\php\php-5.2.17\ext\php_xmlrpc.dll
- \phpStudy\php\php-5.4.45\ext\php_xmlrpc.dll
- phpStudy2018查看
- \phpStudy\PHPTutorial\php\php-5.4.45\ext\php_xmlrpc.dll
- \phpStudy\PHPTutorial\PHP\PHP-5.2.17\ext\php_xmlrpc.dll
打开你phpstudy对应的文件查找@eval,文件存在@eval(%s(‘%s’))证明漏洞存在
漏洞利用
code1:手工利用
使用burp抓包
添加请求头Accept-Charset
值是想要执行的php代码system('whoami');
代码需要进行base64编码
1 | Accept-Charset: c3lzdGVtKCd3aG9hbWknKTs= |
需要将Accept-Encoding: gzip, deflate
修改为Accept-Encoding: gzip,deflate
就是把中间的空格删掉(具体原因可以看上面大佬的漏洞分析)
重放请求包
code2:POC脚本
1 | # phpStudy_2016-2018_RCE_POC.py |
修复建议
下载:phpxmlrpc.rar 解压 复制文件
php\php-5.2.17\ext\php_xmlrpc.dll
php\php-5.4.45\ext\php_xmlrpc.dll
覆盖原路径文件即可。
复现环境所需安装包以及工具
1 | 链接:https://pan.baidu.com/s/1D3UNrg9xUNri8oiVEnsSdw?pwd=uuxq |