Nginx 解析漏洞復現


一、漏洞描述

該漏洞與nginx、php版本無關,屬於用戶配置不當造成的解析漏洞

二、漏洞原理

1、由於nginx.conf的如下配置導致nginx把以’.php’結尾的文件交給fastcgi處理,為此可以構造http://ip/uploadfiles/test.png/.php (url結尾不一定是‘.php’,任何服務器端不存在的php文件均可,比如’a.php’),其中test.png是我們上傳的包含PHP代碼的照片文件。

2、但是fastcgi在處理’.php’文件時發現文件並不存在,這時php.ini配置文件中cgi.fix_pathinfo=1 發揮作用,這項配置用於修復路徑,如果當前路徑不存在則采用上層路徑。為此這里交由fastcgi處理的文件就變成了’/test.png’。

3、最重要的一點是php-fpm.conf中的security.limit_extensions配置項限制了fastcgi解析文件的類型(即指定什么類型的文件當做代碼解析),此項設置為空的時候才允許fastcgi將’.png’等文件當做代碼解析。

三、漏洞復現

1、進入vulhub-master的nginx/nginx_parsing_vulnerability目錄下
2、docker啟動環境

dcoker-compose up -d

3、瀏覽器訪問192.168.2.147

4、在“010editor”上修改圖片hex數據

也可以修改burp提交的數據

5、訪問http://192.168.2.147uploadfiles/c2f650ad06f7754d7afd1c6a3e4a5ee8.jpg/.php

如圖,成功解析圖片中的php代碼,說明系統存在nginx解析漏洞

四、漏洞修復

1、修改限制FPM執行解析的擴展名

2、重新啟動docker環境

3、驗證漏洞已經修復

五、漏洞影響范圍

1、 將php.ini文件中的cgi.fix_pathinfo的值設置為0,這樣php再解析1.php/1.jpg這樣的目錄時,只要1.jpg不存在就會顯示404頁面

2、 php-fpm.conf中的security.limit_extensions后面的值設置為.php

參考鏈接

https://www.cnblogs.com/yuzly/p/11208742.html

聲明

嚴禁讀者利用以上介紹知識點對網站進行非法操作 , 本文僅用於技術交流和學習 , 如果您利用文章中介紹的知識對他人造成損失 , 后果由您自行承擔 , 如果您不能同意該約定 , 請您務必不要閱讀該文章 , 感謝您的配合 !


免責聲明!

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



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