您好,登錄后才能下訂單哦!
怎么進行CVE-2020-7471漏洞復現及淺析,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。
2020年2月3日,Django 官方發布安全通告公布了一個通過StringAgg(分隔符)實現利用的潛在SQL注入漏洞(CVE-2020-7471)。攻擊者可通過構造分隔符傳遞給聚合函數contrib.postgres.aggregates.StringAgg,從而繞過轉義符號(\)并注入惡意SQL語句。
受影響版本:
·Django 1.11.x < 1.11.28
·Django 2.2.x < 2.2.10
·Django 3.0.x < 3.0.3
不受影響產品版本:
·Django 1.11.28
·Django 2.2.10
·Django 3.0.3
1、kali下安裝受影響的django版本 pip3 install Django==3.0.2
2、安裝postgres 數據庫
apt-get install postgresql-11
3、 創建測試數據庫
/etc/init.d/postgresql start 開啟數據庫
Postgresql 已啟動
連接數據庫,修改密碼為123456,并建立數據庫test
4、下載poc:
git clone :https://github.com/Saferman/CVE-2020-7471.git
5、修改/root/CVE-2020-7471/sqlvul_project/settings.py
6、初始化測試數據庫test中的表
7、查看數據庫是沒數據的
8、運行poc
python3 CVE-2020-7471.py
9、再次查看數據庫,數據插入成功
initdb函數:給管理器添加初始測試數據
query函數:進行模糊測試,找出當delimiter 的值為哪些字符時,會讓程序運行出現錯誤(即使用哪些字符可能會干擾SQL語句的執行(將delimiter 輸入的字符帶入了SQL語句,破壞原有語句))
query_with_evil()函數:進行注入點證明測試時,payload前后兩個不同的賦值,是為了得到兩個不同的結果,前一個使用正確的分隔符-,后一個是使用同樣的分隔符-,但是后面帶有SQL語句:
')AS"mydefinedname"FROM"vul_app_info"GROUPBY"vul_app_info"."gender" LIMIT 1 OFFSET 1 –
數據庫進行查詢時,使得整個查詢語句變為了:
SELECT"vul_app_info"."gender",STRING_AGG("vul_app_info"."name",'-') AS"mydefinedname"FROM"vul_app_info"GROUPBY"vul_app_info"."gender"LIMIT 1 OFFSET 1 –
這里的payload =‘-\’) AS … LIMIT 1 OFFSET 1 –‘中的\’,反斜杠的作用只是在payload字符串賦值時轉義單引號,payload中的-’,使得STRING_AGG(“vul_app_info”.“name”, ‘-’)右括號閉合了,導致了后面的SQL語句的執行。
看完上述內容,你們掌握怎么進行CVE-2020-7471漏洞復現及淺析的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。