Files
Sec-Interview/_book/Chapter6/6-17.md
T
2025-11-08 21:00:06 +08:00

31 lines
2.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
### 了解过哪些中间件解析漏洞
**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 脚本执行