文件类漏洞总结, 文件包含, 文件上传, 文件下载

文件类漏洞总结

一, 文件包含

1. 文件包含绕过

实际环境中不是都是像$_GET['file']; incude $file 这样直接把变量传入包含函数的。
在很多时候包含的变量文件不是完全可控的,比如下面这段代码指定了前缀和后缀:

<?php
$file = S_GET['filename'];
include '/opt/lampp/htdocs/security/' . $file . '/test/test.php';
?>
  1. 目录穿越绕过指定前缀,构造 file =…/…/./etc/passwd

  2. 编码绕过前缀: ../ 的编码为: %2e%2e%2f..\ 的编码为: %2e%2e%5

  3. 二次编码绕过前缀: ../ 的二次编码为: %252e%252e%252f, 的二次编码为: %252e%252e%255C

  4. 对于远程包含,使用 ? 号绕过后缀,此时后缀将变成参数的一部分.

    前端提交: http://xxx/xxx/read.php?filename=http://xxx/xxx/mm.php
    后端包含: http://xxx/xxx/mm.php/test/test.php, 由于后端添加了后缀, 导致路径错误
    "?"绕过 : http://xxx/xxx/read.php?filename=http://xxx/xxx/mm.php?

  5. %00截断后缀,只适用于PHP5.3以前的版本

  6. 使用伪协议 phar:// 构造一个与后缀同路径的压缩包,比如此时 file = phar://test.zip

2. 文件包含防御

(1) 配置open_basedir,只允许包含某个目录下的内容
(2) 不允许文件包含让用户可控,直接写在代码中
(3) 尽量包含一个确定的文件,而不是一个变量或参数值
(4) 检测用户输入参数,确保路径可控
(5) 过滤各种./../ 或经过编码的 %2e%2E
(6) 不使用远程包含,关闭 allow_url_include (默认关闭)
(7) 如果需要使用,则限定域名或路径
(8) 使用白名单,只要不在白名单列表中的内容,则验证不通过

二, 文件上传

1. 文件上传绕过:
1. 前端绕过
2. 类型MIME绕过
3. 黑名单绕过
4. 大小写绕过
5. 双写绕过
6. 空格绕过
7. 点绕过
8. 点空格点绕过
9. 图片马
2. 文件上传防御:

(1) 前后端一起校验,校验后缀名,校验MIME类型
(2) 后缀名的校验必须全部转换成小写进行处理
(3) 使用白名单,不是白名单的一律禁止.
(4) 去除文件名后续的各种符号,如空格
(5) 针对图片文件,使用二次渲染或压缩技术处理图片,并另存
(6) 对文件名进行重命名,则先命名再移动,避免条件竞争
(7) 将上传文件所在目录的权限设置为不可执行

三, 文件下载

1. 文件下载绕过:
参考文件包含绕过.
2. 文件下载防御:

(1)过滤特殊字符"."(点),使用户在url中不能回溯上级目录
(2)正则严格判断用户输入参数的格式
(3)php.ini配置open_basedir限定文件访问范围
(4)将文件路径保存于数据库中,通过 file?id=3 的数据库序号id方式下载文件, 而不是通过具体的文件名.

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
HTTP协议中的任意文件上传漏洞是指攻击者可以通过构造恶意的文件上传请求,绕过服务器的文件上传验证机制,成功向服务器上传恶意文件,进而实施攻击。 这漏洞的存在主要是由于服务器端对于上传文件的合法性验证不严格或存在漏洞所导致的。攻击者可以通过修改上传请求的Header或请求参数等方式绕过服务器端的文件上传验证,上传任意文件,如恶意脚本文件、后门文件等。 任意文件上传漏洞可能导致以下危害: 1. 执行恶意代码:攻击者可以上传包含恶意代码的可执行文件,通过执行恶意代码控制服务器,实施各种攻击行为。 2. 窃取敏感信息:攻击者可以上传用于窃取用户敏感信息的木马文件,如键盘记录器、密码获取器等,从而获取用户的账号、密码等敏感信息。 3. 传播恶意文件:攻击者可以上传恶意文件,通过链接或钓鱼等方式,向用户传播恶意代码,导致用户的个人隐私泄露、资金损失等。 4. 网站篡改:攻击者上传恶意文件,修改服务器端的配置文件或网页文件,改变网站内容、链接等,破坏网站的正常运行。 为了防止任意文件上传漏洞的出现,开发人员需要加强对于上传文件的合法性验证。具体的防护措施包括: 1. 对上传文件进行型、大小等基本验证。通过限制上传文件型和大小,防止上传恶意文件。 2. 对上传文件进行重命名和路径转换。通过将上传文件重命名并转换存储路径,避免攻击者直接访问上传文件。 3. 对上传文件进行杀毒检测。通过使用杀毒软件对上传文件进行扫描,防止上传带有病毒的文件。 4. 针对不同的文件型进行不同的验证。对于图片文件、文本文件等可信的文件型,可以进行较少的验证,而对于可执行文件、脚本文件等危险的文件型,需要进行更加严格的验证。 综上所述,任意文件上传漏洞是一种常见的安全漏洞,攻击者可以通过上传恶意文件,实施各种攻击行为。为了防止此漏洞的出现,开发人员需要加强对于上传文件的验证和过滤,确保服务器的安全性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值