文件包含漏洞

文件包含漏洞

1.漏洞点

大多数PHP网站,具有和漏洞相关的文件包含函数以及文件包含函数中存在动态变量,且用户能够控制该变量,这些网站可能存在文件包含漏洞。

2.漏洞利用

常见的文件包含漏洞的形式为 <?php include("inc/" . $_GET['file']); ?>

同目录包含 file=.htaccess

目录遍历 ?file=../../../../../../../../../var/lib/locate.db

日志注入 ?file=../../../../../../../../../var/log/apache/error.log

利用 /proc/self/environ其中日志可以使用SSH日志或者Web日志等多种日志来源测试

3.如何绕过防御

# 00字符截断(PHP<5.3.4)
条件是magic_quotes_gpc打开,而且php版本小于5.3.4。
../etc/passwd%00
	
# 超长字符截断
	利用"./"的方式即可构造出超长目录字符串,除了incldue()等4个函数之外,PHP中能够对文件进行操作的函数都有可能出现漏洞。虽然大多数情况下不能执行PHP代码,但能够读取敏感文件带来的后果也是比较严重的。例如: fopen()、fread()
	
# 特殊字符绕过
	某些情况下,读文件支持使用Shell通配符,如 ? * 等
	url中 使用 ? # 可能会影响include包含的结果
	某些情况下,unicode编码不同但是字形相近的字符有同一个效果
	还有一些共通的绕过手法如双写、大小写等等
	可以使用问号、#号、%20绕过
	
# 伪协议绕过
	php://input,说明:用来接收POST数据。我们能够通过input把我们的语句输入上去然后执行。
	data://,这是一种数据流封装器,data:URI schema(URL schema可以是很多形式)
	file://,用于访问本地文件系统,通常用来读取本地文件的且不受allow_url_fopen与allow_url_include的影响。

4.文件包含漏洞修复

# 过滤危险字符
	过滤点、反斜杠等特殊字符或使用str_replace等方法过滤掉危险字符
	
# 设置白名单
	动态包含文件设置白名单,不读取非白名单的文件

# 关闭危险配置
	关闭远程文件包含的配置选项allow_url_include = Off
	
# open_basedir
	PHP 中使用 open_basedir 配置限制访问在指定的区域,防止目录遍历。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值