文章目录
-
- 一、实验目的:
- 二、实验环境:
- 三、防御说明:
- 四、防御措施:
-
- 1.?设置白名单:
- 2.?过滤危险字符:
- 3.?设置文件目录(配置php.ini):
- 4.?关闭危险配置(配置php.ini):
- 五、防御总结:
一、实验目的:
1、通过本次学习,掌握文件包含的过滤验证方式。二、实验环境:
2、学习在修复文件包含漏洞的方法。
靶?机: windows10虚拟机:三、防御说明:192.168.100.150
????phpstudy2018_Apache
集成环境
文件包含漏洞防御:四、防御措施: 1.?设置白名单:
??在PHP开发中文件包含漏洞常出现在Incbude/Require
系列语言结构上,由于需要包含的文件是可以被用户设置的
,从而导致包含任意文件及代码执行。通常在开发中需要设置白名单
、过滤危险字符
、设置文件目录
、关闭危险配置
等操作来避免漏洞的发生。
代码在进行文件包含时,如果文件名可以确定,可以设置白名单对传入的参数进行比较。验证源码示例:
2.?过滤危险字符:
??由于验证源码示例:Incbude/Require
可以对PHP Wrapper
形式的地址进行包含执行(需要配置php.ini
), 在Linux环境中可以通过"../../
"的形式进行目录绕过,所以需要判断文件名称是否为合法的PHP文件。
$pattern= "#^[a-z][a-z0-9+.]*:?//#i";
if(substr($filename,-4)=='.php' && strpos($filename,"..")===false&&!preg_match($pattern, $filename)){
include "$file";
}
3.?设置文件目录(配置php.ini):
??PHP配置文件中有open_basedir
选项可以设置用户需要执行的文件目录,如果设置目录的话,PHP仅仅在该目录内搜索文件。
文章图片
4.?关闭危险配置(配置php.ini):
??PHP配置中的allow_url_include
选项如果打开,PHP会通过Include/Require
进行远程文件包含,由于远程文件的不可信任性及不确定性,在开发中禁止打开此选项,PHP默认是关闭的
。
文章图片
五、防御总结:
【渗透测试|【文件包含漏洞】——文件包含漏洞防御】??任意文件包含漏洞的主要出现在能够解析处理脚本文件的函数上,没有对输入的变量进行过滤,导致任意文件包含,进而导致恶意代码执行。在开发处理这类功能函数上,一定要遵循编程规范; 在代码核心处,对变量进行过滤限制, 设置文件路径或者白名单,避免执行任意文件包含。
??最后,总结一下任意文件包含漏洞的防御方式。任意文件包含漏洞的主要出现在能够解析处理脚本文件的函数上,没有对输入的变量进行过滤,导致任意文件包含,进而导致恶意代码执行。在开发处理这类功能函数上,一定要遵循编程规范:在代码核心处,对变量进行过滤限制,设置文件路径或者白名单,避免执行任意文件包含。
推荐阅读
- 渗透测试|【文件上传绕过】——后端检测_MIME-TYPE检测漏洞
- 渗透测试|【文件上传绕过】——后端检测_内容检测图片马绕过
- 渗透测试(PenTest)基础指南
- 渗透测试|Linux提权
- 网络安全|网络安全——信息隐藏-使用隐写术来防止敏感数据被盗用
- 白帽子讲Web安全|【白帽子讲Web安全】第一章 我的安全世界观
- 漏洞复现|内网渗透模拟演练(使用sqlmap对内网mssql提权与反弹shell)
- 渗透测试|windows反弹shell复现
- 内网渗透|【内网渗透】openssl反弹流量加密shell