0x00 漏洞描述
PhpStudy软件是国内的一款免费的PHP调试环境的程序集成包,通过集成Apache、PHP、MySQL、phpMyAdmin、ZendOptimizer多款软件一次性安装,无需配置即可直接安装使用,具有PHP环境调试和PHP开发功能,在国内有着近百万PHP语言学习者、开发者用户。
近日,使用广泛的PHPStudy环境集成程序包被公告疑似遭遇黑客攻击,程序包自带PHP的php_xmlrpc.dll
模块隐藏有后门,经确认phpStudy2016、phpStudy2018的部分版本有后门。
phpStudy_2016.11.03
phpphp-5.2.17extphp_xmlrpc.dll
phpphp-5.4.45extphp_xmlrpc.dll
phpStudy_2018.02.11
PHPTutorialphpphp-5.2.17extphp_xmlrpc.dll
PHPTutorialphpphp-5.4.45extphp_xmlrpc.dll
以phpStudy_2016.11.03
版本为例
用户可以通过 phpStudy路径下 php 文件夹全局搜索文件名php_xmlrpc.dll
内包含 @eval(%s('%s'))
关键字
亦可以通过以下Python脚本进行检测:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
__author__='安识科技安全服务团队'
__date__='2019/09/23'
import sys
import os
import re
def check_file(filename):
backdoor="@eval(%s('%s'))" # 后门特征
lines = 0
presence = False #默认为无
if filename.endswith('.dll'): # 筛选dll文件
with open(filename, "r", encoding='utf-8', errors='ignore') as backdoors:
for line in backdoors:
if backdoor in line:
presence = True
break
lines += 1
return presence, lines
def Check_Vul(PHPStudy_DIR):
# 检查目录
for dirs,note, filenames in os.walk(PHPStudy_DIR):
for filename in filenames:
Check_File = os.path.join(dirs, filename)
check_res, Row = check_file(Check_File)
if check_res:
print("发现后门 {0} 关键字在第: {1}行".format(Check_File, Row))
pass
if __name__ == '__main__':
if len(sys.argv) != 2:
print("Instructions:[PHPStudy安装目录]")
sys.exit(1)
else:
Check_Vul(sys.argv[1])
下载phpStudy_2016.11.03.zip
版本安装压缩包。安装到Windwos系统随后启动PHPStudy即可。
默认加载php-5.4.45版本,该版本存在后门,然后打开本地域名localhost。
很多小伙伴执行命令后状态码会出现错误 408 Requests TimeOut 。
经过验证代码已经执行。所以内容页面是否回显不重要。那我们如何判断是否执行成功呢?
可以使用 DNSlog 接收平台 执行ping 、curl
等命令再检查DNslog 是否存在请求。
如果存在即判断漏洞存在
编写代码思路就是这么多。快来生态插件社区提交插件吧!
删除问题版本phpstudy
植入后门版本分别为phpStudy_2016.11.03、phpStudy_2018.02.11,如果是通过其它非官方下载站下载的该版本,请自行使用以上方法检查并删除其中的存在问题的版本。
在官方网站下载phpstudy
目前PhpStudy官方已发布最新版本PhpStudy v8.0,请访问官方链接更新到最新软件:
https://www.xp.cn/