济南网站优化分析,关键词搜索爱站,拼车网站的建设雨实现,网站后台html5模板文件类漏洞总结
一, 文件包含
1. 文件包含绕过
实际环境中不是都是像$_GET[file]; incude $file 这样直接把变量传入包含函数的。 在很多时候包含的变量文件不是完全可控的#xff0c;比如下面这段代码指定了前缀和后缀:
?php
$file S_GET[filename];
include /opt/…文件类漏洞总结
一, 文件包含
1. 文件包含绕过
实际环境中不是都是像$_GET[file]; incude $file 这样直接把变量传入包含函数的。 在很多时候包含的变量文件不是完全可控的比如下面这段代码指定了前缀和后缀:
?php
$file S_GET[filename];
include /opt/lampp/htdocs/security/ . $file . /test/test.php;
?目录穿越绕过指定前缀构造 file …/…/./etc/passwd 编码绕过前缀: ../ 的编码为: %2e%2e%2f..\ 的编码为: %2e%2e%5 二次编码绕过前缀: ../ 的二次编码为: %252e%252e%252f 的二次编码为: %252e%252e%255C 对于远程包含使用 ? 号绕过后缀此时后缀将变成参数的一部分. 前端提交: http://xxx/xxx/read.php?filenamehttp://xxx/xxx/mm.php 后端包含: http://xxx/xxx/mm.php/test/test.php, 由于后端添加了后缀, 导致路径错误 ?绕过 : http://xxx/xxx/read.php?filenamehttp://xxx/xxx/mm.php? %00截断后缀只适用于PHP5.3以前的版本 使用伪协议 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?id3 的数据库序号id方式下载文件, 而不是通过具体的文件名.