了解过哪些中间件解析漏洞
1. Apache 解析漏洞
Apache 的解析漏洞多与其 .htaccess
配置文件有关。如果攻击者可以上传一个 .htaccess
文件到某个目录下,就可以通过修改配置来改变文件解析规则
- 多后缀解析:Apache 会从文件名的右侧向左开始解析,直到遇到一个已知的可执行后缀
- 文件名:
shell.php.jpg
- 漏洞原理:如果 Apache 的配置文件中没有对
.jpg
后缀进行处理,它会继续向左解析,直到遇到.php
,然后将其当作 PHP 脚本执行
- 文件名:
.htaccess
文件覆盖:- 攻击者上传一个
.htaccess
文件,内容为AddHandler php5-script .jpg
- 然后上传一个名为
shell.jpg
的文件,其中包含 PHP 代码 - Apache 看到
.htaccess
文件后,会将所有.jpg
文件都当作 PHP 脚本来执行,从而导致代码执行
- 攻击者上传一个
2. Nginx 解析漏洞 (Nginx + PHP-FPM)
这是最著名的解析漏洞之一,尤其是在 Nginx 0.8.x 到 1.4.x 的版本中,配置不当极易引发
- 漏洞原理:当 Nginx 遇到一个以
/
结尾的 URL 请求(例如http://example.com/shell.jpg/
),且该路径对应一个文件时,它会认为这是一个目录,并尝试找到目录下的默认文件(如index.php
)。如果找不到,它会继续将请求发送给 PHP-FPM 处理。PHP-FPM 在处理时,会认为这是一个 PHP 文件,并执行其中的代码 - 更严重的版本:攻击者上传
shell.jpg
,然后访问http://example.com/shell.jpg/evil.php
。Nginx 会认为/evil.php
需要被 PHP 处理,于是将整个shell.jpg
文件发送给 PHP-FPM。PHP-FPM 在执行时会忽略.jpg
部分,只执行文件中的 PHP 代码
3. IIS 解析漏洞
IIS 早期版本(特别是 IIS 6.0)存在多个经典解析漏洞
- 分号解析漏洞:IIS 遇到
*.asp;.jpg
这类文件名时,会忽略分号之后的内容,将其当作*.asp
文件来处理- 文件名:
shell.asp;.jpg
- 漏洞原理:攻击者可以上传这个文件,IIS 会将其当作 ASP 脚本执行
- 文件名:
- 目录解析漏洞:IIS 6.0 会将含有
*.asp
、*.asa
等可执行后缀的文件夹中的所有文件都当作可执行脚本- 操作:攻击者创建一个名为
shell.asp
的目录,然后在该目录中上传一个名为image.jpg
的文件 - 漏洞原理:访问
http://example.com/shell.asp/image.jpg
时,IIS 会将image.jpg
当作 ASP 脚本执行
- 操作:攻击者创建一个名为