参考:Apache/IIS/Nginx中间件解析漏洞_分别说出iis、apache、nginx解析漏洞原理-CSDN博客
一、apache
1、Apache HTTPD 换行解析漏洞
Apache HTTPD是一款HTTP服务器,它可以通过mod_php来运行PHP网页。
其2.4.0~2.4.29版本中存在一个解析漏洞。
在解析PHP时,1.php\x0A将被按照PHP后缀进行解析(修改16进制编码为0a),导致绕过一些服务器的安全策略。
2、Apache HTTPD 多后缀解析漏洞
Apache HTTPD 支持一个文件拥有多个后缀,并为不同后缀执行不同的指令,对于Apache来说,它认为一个文件可以有多个后缀,就像:test.txt.png.jpg,但是放在windows大多数操作系统眼里,它认为最后一个"."后的"jpg"为后缀,Apache解析文件的规则是从右到左开始判断,如果后缀名为Apache不认识不可解析的文件时,则再往左判断,比如/test.php.owf.rar,".owf"和".rar"这种后缀的Apache不可直接解析,Apache就会把/test.php.owf.rar解析成它所认知的,也就是php文件
漏洞形式:www.xxx.com/test.php.pzzzp
其余配置文件导致漏洞(运维人员修改或版本未升级)
(1)如果在apache的conf里有这样一行配置Addhandler php5-script.php,这时只需文件名里面包含.php即使文件名为test2.php.jpg也会以php来执行
(2)如果在apache的conf里有这样一行配置AddType application/x-httpd-php.jpg,即使扩展名为jpg,一样以php方法执行
下面不是解析漏洞但是也一起写上了
3、Apache SSI 远程命令执行漏洞
在测试任意文件上传漏洞的时候,目标服务端可能不允许上传php后缀的文件。如果目标服务器开启了SSI与CGI支持,我们可以上传一个shtml文件,并利用
中间这个id就是执行任意命令的地方,将这个内容保存到.shtml然后访问就是执行了这个命令的结果
4、Apache HTTP 路径穿越漏洞------CVE-2021-41773
在其2.4.49版本中,引入了一个路径穿越漏洞,满足下面两个条件的Apache服务器将会受到影响:
- 版本等于2.4.49
- 穿越的目录允许被访问(默认情况下是不允许的)
攻击者利用这个漏洞,可以读取位于Apache服务器Web目录以外的其他文件,或者读取Web目录中的脚本文件源码,或者在开启了cgi或cgid的服务器上执行任意命令
5、Apache HTTP 路径穿越漏洞------CVE-2021-42013
Apache HTTP 服务器项目旨在为包括 UNIX 和 Windows 在内的现代操作系统开发和维护开源 HTTP 服务器。
CVE-2021-42013 是一个漏洞,由 CVE-2021-41773 修复不完整导致,攻击者可以使用路径遍历攻击将 URL 映射到类别名指令配置的目录之外的文件。
此漏洞影响 Apache HTTP Server 2.4.49 和 2.4.50,而不是早期版本。
服务端开启了cgi或cgid这两个mod的情况下,这个路径穿越漏洞将可以执行任意命令:
6、Apache HTTP SSRF漏洞------CVE-2021-40438
Apache HTTP Server是Apache基金会开源的一款流行的HTTP服务器。在其2.4.48及以前的版本中,mod_proxy模块存在一处逻辑错误导致攻击者可以控制反向代理服务器的地址,进而导致SSRF漏洞。
二、IIS
1、目录解析(6.0)
解析漏洞只能解析asp文件,而不能解析aspx文件
原理:服务器会默认把asp,asa目录下的文件都解析成asp文件
例如创建一个文件夹,将文件夹重命名为1.asp,那么在此文件夹内创建一个一句话木马,会被当成asp解析,假设攻击者可以控制上传文件夹路径,即可拿shell
2、文件解析
原理:服务器默认不解析;后面的内容,因此xx.asp;.jsp会解析成asp文件
解析文件类型(IIS6.0 默认的可执行文件除了asp)
xxx.asa
xxx.cer
xxx.cdx
3、7/7.5解析漏洞
IIS7/7.5在Fast-CGI运行模式下,在一个文件路径(/xx.jpg)后面加上/xx.php会将/xx.jpg/xx.php 解析为 php 文件(url访问路径)。
三、nginx
nginx默认是以CGI的方式支持PHP解析的,普遍的做法是在Nginx配置文件中通过正则匹配设置SCRIPT_FILENAME。当访问www.xxx.com/phpinfo.jpg/1.php这个链接时,$fastcgi_script_name会被设置为"phpinfo.jpg/1.php",然后构造SCRIPT_FILENAME传递给PHP CGI,但是PHP为什么会接受这样的参数,并且将phpinfo.jpg作为PHP文件解析呢?这就要说到fix_pathinfo选项了,如果开起这个选项(该值默认为1,表示开启)
漏洞主要形式
www.xxx.com/Upload/image/1.jpg/1.php
www.xxx.com/Upload/image/1.jpg .php
www.xxx.com/Upload/image/1.jpg/ \1.php(CVE-2013-4547)
或上传一个名字为test.jpg,内容如下:
');?>
然后访问/test.jpg/.php,在这个目录下就会生成一句话木马shell.php
和iis的7.5版本的漏洞相似