Nginx越界讀取緩存漏洞(CVE-2017-7529)

Nginx在反向代理站點的時候,通常會將一些文件進行緩存,特別是靜態文件。緩存的部分存儲在文件中,每個緩存文件包括“文件頭”+“HTTP返回包頭”+“HTTP返回包體”。如果二次請求命中了該緩存文件,則Nginx會直接將該文件中的“HTTP返回包體”返回給用戶。如果我的請求中包含Range頭,Nginx將會根據我指定的start和end位置,返回指定長度的內容。而如果我構造了兩個負的位置,如(-600, -9223372036854774591),將可能讀取到負位置的數據。如果這次請求又命中了緩存文件,則可能就可以讀取到緩存文件中位於“HTTP返回包體”前的“文件頭”、“HTTP返回包頭”等內容。

漏洞影響

該漏洞影響所有 0.5.6 - 1.13.2版本內默認配置模塊的Nginx只需要開啓緩存攻擊者即可發送惡意請求進行遠程攻擊造成信息泄露。當Nginx服務器使用代理緩存的情況下攻擊者通過利用該漏洞可以拿到服務器的後端真實IP或其他敏感信息。
通過我們的分析判定該漏洞利用難度低可以歸屬於low-hanging-fruit的漏洞在真實網絡攻擊中也有一定利用價值。

影響版本
Nginx version 0.5.6 - 1.13.2

修復版本
Nginx version 1.13.3, 1.12.1

檢查和利用

下載腳本:
https://github.com/vulhub/vulhub/tree/master/nginx/CVE-2017-7529
運行:

python CVE-2017-7529_PoC.py http://192.168.1.15:8080

檢測到漏洞以及成功利用:
在這裏插入圖片描述
參考鏈接:
https://github.com/vulhub/vulhub/tree/master/nginx/CVE-2017-7529
https://github.com/en0f/CVE-2017-7529_PoC
在這裏插入圖片描述

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