Django JSONField/HStoreField SQL注入漏洞(CVE-2019-14234)
Django在2019年8月1日發布了一個安全更新,修復了在JSONField、HStoreField兩個模型字段中存在的SQL注入漏洞。
參考鏈接:
- https://www.djangoproject.com/weblog/2019/aug/01/security-releases/
- https://www.leavesongs.com/PENETRATION/django-jsonfield-cve-2019-14234.html
該漏洞需要開發者使用了JSONField/HStoreField,且用戶可控queryset查詢時的鍵名,在鍵名的位置注入SQL語句。Django自帶的后臺應用Django-Admin中就存在這樣的寫法,我們可以直接借助它來復現漏洞。
漏洞環境
執行如下命令編譯及啟動一個存在漏洞的Django 2.2.3:
docker-compose build
docker-compose up -d
環境啟動后,訪問http://your-ip:8000即可看到Django默認首頁。
漏洞復現
首先登陸后臺http://your-ip:8000/admin/,用戶名密碼為admin、a123123123。
登陸后臺后,進入模型Collection的管理頁面http://your-ip:8000/admin/vuln/collection/:
[
]
然后在GET參數中構造detail__a'b=123提交,其中detail是模型Collection中的JSONField:
http://your-ip:8000/admin/vuln/collection/?detail__a%27b=123
可見,單引號已注入成功,SQL語句報錯:
[
]
Vulhub 文檔
推薦文章: