### 了解过哪些中间件解析漏洞 **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 脚本执行