vulhub Nginx文件解析漏洞復現——利用文件上傳漏洞上傳惡意后門


vulhub Nginx文件解析漏洞復現
該漏洞與Nginx、php版本無關,屬於用戶配置不當造成的解析漏洞。
1、由於nginx.conf的錯誤配置導致 nginx把以".php"結尾的文件交給fastcgi處理,為此可以構造http://172.168.30.190/uploadfiles/hacker.png/XXXX.php ,其中hacker.png是我們上傳的包含PHP代碼的圖片文件。

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

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

注:限制fpm允許解析的腳本擴展名。此設置可以預防web服務器配置的錯誤。應當限制fpm僅僅解析.php擴展名,阻止惡意用戶使用其他擴展名運行php代碼。默認值:.php

環境

漏洞環境使用vulhub和ubuntu搭建

# 下載vulhub $ sudo git clone https://github.com/vulhub/vulhub.git # 啟動環境 $ cd vulhub/nginx/nginx_parsing_vulnerability $ sudo docker-compose build $ sudo docker-compose up -d # 查看nginx是否開啟 $ sudo netstat -tunlp | grep 80 

訪問http://IP/,看到這個頁面表示漏洞環境搭建成功

漏洞復現

我們找到一張圖片,使用notepad++打開,添加php代碼

上傳文件,顯示上傳文件的文件路徑

訪問圖片url,圖片正常顯示

http://IP/uploadfiles/26ba7cbd4f7f38baad96e78b861378c8.png

使用payload,看到我們寫入圖片的php代碼已被執行

http://IP/uploadfiles/26ba7cbd4f7f38baad96e78b861378c8.png/.php


免責聲明!

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



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