【笔记】文件解析漏洞
前言
文件解析漏洞学习笔记
漏洞原理
- 中间件缺陷,导致将普通文件当作代码解析
- 通常配合文件上传功能上传包含木马的文件
Nginx + PHP
Nginx文件解析漏洞
- 漏洞编号:CVE-2013-4547
- 出现的版本
- 0.8.41 ~ 1.4.3
- 1.5.0 ~ 1.5.7
- 利用:上传文件为
<file_name>.png时,通过<file_name>.png/.php访问图片时,Nginx会按照PHP文件执行
Apache
Apache文件解析漏洞
- 漏洞编号:CVE-2017-15715
- 出现的版本
- 2.4.0~2.4.29
- 原理:00截断
- 利用:上传文件
<file_name>.php,请求发送前用Burp抓包,在Repeater模块中,使用Hex十六进制显示请求,将文件名末尾空格(20)改为空字符(0a),上传成功后访问<file_name>.php%0a即可
Apache未知后缀解析漏洞
- 出现的版本:低版本
- 原理:配置文件
.htaccess配置不当导致
1 | AddHeader application/x-httpd-php .php |
- 利用:上传文件为
<file_name>.php.xxx时,Apache会按照PHP文件执行 - 原理:Apache解析文件是否为PHP文件时,会按照从后向前搜索
.php关键字,如果出现.php关键字,则认为是PHP文件
IIS
IIS文件解析漏洞
- 出现的版本
- 6.x
- 7.x
- 利用:上传文件为
<file_name>.asp;<file_name>.jpg时,IIS会按照ASP文件执行 - 利用:上传文件为有层级的文件
<file_name>.asp/<file_name>.jpg时,IIS会按照ASP文件执行
PHP CGI
- 出现的版本
- IIS 7.0 + PHP
- Nginx + PHP
- 利用:上传文件为
<file_name>.png/.php时,IIS会按照PHP文件执行
IIS 7.0 + PHP防御
- 在
Internet信息服务(IIS)管理器中,选择服务器->选择处理程序映射

- 选择PHP的CGI->
编辑

请求限制

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

PHP防御
- 修改配置文件中754行的
cgi.fix_pathinfo改为0
1 | cgi.fix_pathinfo=0 |