【漏洞】文件解析漏洞
前言
文件解析漏洞学习笔记
漏洞原理
- Web中间件解析机制存在漏洞,导致将普通文件当作脚本代码解析执行
- 通常配合文件上传功能,上传包含木马的文件
Nginx + PHP
Nginx 路径解析漏洞
- 漏洞编号:CVE‑2013‑4547
- 受影响版本
- 0.8.41 <= Nginx <= 1.4.3
- 1.5.0 <= Nginx <= 1.5.6
- 利用:上传文件为
<file_name>.png,访问路径为<file_name>.png/.php,Nginx会将文件交给PHP解析执行
PHP‑CGI cgi.fix_pathinfo 解析漏洞
- 适用环境:Nginx + PHP‑CGI
- 利用:上传图片马
<file_name>.png,访问<file_name>.png/.php,被当作PHP脚本执行 - 防御:修改
php.ini配置
1 | cgi.fix_pathinfo=0 |
Apache + PHP
换行绕过符漏洞
- 漏洞编号:CVE-2017-15715
- 受影响版本
- 2.4.0 <= Apache <= 2.4.29
- 原理:Apache解析文件名时会忽略末尾换行符
%0a - 利用:上传文件为
<file_name>.php%0a,实际保存为<file_name>.php,访问即可执行PHP
.htaccess 配置不当解析漏洞
- 原理:通过
.htaccess配置强制指定后缀文件由 PHP 处理器解析 - 利用:先上传
.htaccess,再上传图片马<file_name>.png,访问即可执行PHP
1 | <FileMatch "*.png"> |
未知后缀解析漏洞
- 原理:Apache从右向左依次识别后缀,识别到合法脚本后缀即执行
- 利用:上传文件为
<file_name>.php.xxx,会被当作PHP文件执行
IIS 6.0
分号解析漏洞
- 原理:IIS 6.0 解析文件名时,将
;视为文件名结束符 - 利用:上传文件为
<file_name>.asp;.jpg,IIS只识别.asp并执行
目录解析漏洞
- 原理:IIS 6.0 中,若目录后缀为 .asp/.asa/.cer,目录内所有文件均会被当作ASP执行
- 利用:创建名为
.asp的文件夹,内部上传图片马,访问即可getshell
防御
- 在
Internet信息服务(IIS)管理器中,选择服务器->选择处理程序映射

- 选择PHP的CGI->
编辑

请求限制

映射->勾选仅当请求映射至以下内容时才调用处理程序->确定

PHP
00截断漏洞
- 受影响版本
- PHP < 5.3.4
- 原理:C语言底层将
0x00视为字符串结束符,后端截断文件名 - 利用:上传
<file_name>.php%00.jpg,实际保存为<file_name>.php