了解过哪些中间件解析漏洞

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 脚本执行
Copyright © 版权信息 all right reserved,powered by Gitbook该文件修订时间: 2025-09-25 03:13:19

results matching ""

    No results matching ""