【笔记】Web容器解析漏洞
前言
针对于文件上传漏洞的Web容器解析漏洞
本文仅用于网络信息防御学习
Apache解析漏洞
- 出现的版本:低版本
- 利用:上传文件为
<filename>.php.xxx
时,Apache会按照PHP文件执行- 原理:Apache解析文件是否为PHP文件时,会按照从后向前搜索
.php
关键字,如果出现.php
关键字,则认为是PHP文件
- 原理:Apache解析文件是否为PHP文件时,会按照从后向前搜索
- 利用:上传文件为
IIS解析漏洞
- 出现的版本:IIS 6.0
- 利用:上传文件为
<filename>.asp;<filename>.jpg
时,IIS会按照ASP文件执行 - 利用:上传文件为有层级的文件
<filename>.asp/<filename>.jpg
时,IIS会按照ASP文件执行
- 利用:上传文件为
PHP CGI 解析漏洞
- 出现的版本:IIS 7.0+PHP/IIS 7.5+PHP/Nginx+PHP
- 利用:上传文件为
<filename>.png/.php
时,IIS会按照PHP文件执行
- 利用:上传文件为
IIS防御
- 在
Internet信息服务(IIS)管理器
中,选择服务器->选择处理程序映射
- 选择PHP的CGI->
编辑
请求限制
映射
->勾选仅当请求映射至以下内容时才调用处理程序
->确定
PHP防御
- 修改配置文件中754行的
cgi.fix_pathinfo
改为0
php/php.ini
1 | cgi.fix_pathinfo=0 |
Nginx空字节漏洞
原理类似于00截断
利用:上传文件为
<filename>.png%00.php
时,Nginx会按照PHP文件执行
Nginx文件名逻辑漏洞
漏洞编号:CVE-2013-4547
原理类似于00截断
利用:上传文件
<filename>.png ..php
,用Burp抓包,在Repeater模块
中,使用Hex十六进制显示请求,将文件名中倒数第二个.
(2e)改为空字符(00),此时Nginx会按照PHP文件执行