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

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 脚本执行