2019.9.20日有团队爆出非官网的一些下载站中的phpstudy版本存在后门文件,疑似遭遇供应链攻击,程序包自带PHP的php_xmlrpc.dll模块隐藏有后门。经过分析除了有反向连接木马之外,还可以正向执行任意php代码。
php\php-5.2.17\ext\php_xmlrpc.dll
php\php-5.4.45\ext\php_xmlrpc.dll
PHPTutorial\php\php-5.2.17\ext\php_xmlrpc.dll
PHPTutorial\php\php-5.4.45\ext\php_xmlrpc.dll
使用notepad++打开对应的dll文件,搜索@eval,可查看到相关字符串。
使用IDA找到可以字符串,双击再按x找到交叉引用的位置。
//v42为缓冲区等于@eval(gzuncompress(‘,27h,’v42′,27h,’)); 实际是实现字符串拼接功能
通过找eval关键词可发现多处存在,第一处spprintf(&v42, 0, aSEvalSS, v36,aGzuncompress, v42);第二处spprintf(&v41, 0, aEvalSS, aGzuncompress,v41);
恶意代码存在变量v41、v42里,在此处往上回溯该变量,发现对该变量进行了处理。
1.从1000D028 到1000D66C的代码解密:
解密后的脚本
2.1000D66C到1000E5C4的代码解密
解密后的脚本
鉴于C2服务器已经失活,看不懂效果,但有一个远程代码执行的功能可以演示,来源于zend_eval_string(v40, 0, &byte_10012884, a3);// 后门代码执行。
运行带有漏洞的版本的phpstudy
构造如下exp
system(“net user”);经base64编码后为c3lzdGVtKCJuZXQgdXNlciIpOw==,直接构造该请求,需要两个换行,不然会一直处于等待的状态,没有响应。依据逻辑还需要注意的是Accept-Encoding字段值必须为gzip,deflate,才能去判断是否存在Accept-Charset字段,接着取该字段的值,base64解码后执行,造成了远程代码执行,执行了system(“net user”);
执行后成功显示了net user命令的结果。
https://www.freebuf.com/articles/others-articles/215406.html
https://www.cnblogs.com/17bdw/p/11580409.html
E
N
D
关
于
我
们
Tide安全团队正式成立于2019年1月,是新潮信息旗下以互联网攻防技术研究为目标的安全团队,团队致力于分享高质量原创文章、开源安全工具、交流安全技术,研究方向覆盖网络攻防、系统安全、Web安全、移动终端、安全开发、物联网/工控安全/AI安全等多个领域。
团队作为“省级等保关键技术实验室”先后与哈工大、齐鲁银行、聊城大学、交通学院等多个高校名企建立联合技术实验室,近三年来在网络安全技术方面开展研发项目60余项,获得各类自主知识产权30余项,省市级科技项目立项20余项,研究成果应用于产品核心技术研究、国家重点科技项目攻关、专业安全服务等。对安全感兴趣的小伙伴可以加入或关注我们。
我知道你在看哟