0x00 前言
如饥似渴的学习ing。
0x01 文件包含漏洞概述
本地文件包含是指只能包含本机文件的文件包含漏洞,大多出现在模块加载、模板加载和cache调用这些地方。
1.远程文件包含
可以包含远程文件的包含漏洞,远程文件包含需要设置allow_url_include=On.
2.文件包含截断
大多数的文件包含漏洞都是需要阶段你的,正常程序里面包含的文件diamante一般是include<…>
2.1 截断
使用%00截断
2.2 利用多个英文.和/来截断
不收GPC的限制。PHP 5.3 修复
0x02 文件读取漏洞
1.挖掘经验
1.1 黑盒
先黑盒看看功能点对应的文件,再去读文件。
1.2 白盒
- file_get_contents()
- highlight_file()
- fopen()
- readfile()
- fread()
- fgetss()
- fgets()
- parse_ini_file()
- show_source()
- file()
使用php://filter来读取文件
0x03 文件上海窜漏洞
1.挖掘经验
1.1 白盒
- move_uploaded_file()
1.1.1 未过滤或本地过滤
1.1.2 黑名单扩展名过滤
1.1.3 文件头 content-type验证绕过
0x04 文件删除漏洞
1.挖掘经验
1.1黑盒
查看可不可以删除某个文件。
1.2 白盒
- unlink()
0x05 文件操作漏洞防范
1. 通用文件操作防御
1.1 漏洞利用点
- 由越权操作引起的可以操作未授权操作的文件
- 要操作更多文件需要跳转目录
- 大多都是直接在请求中传入文件名。
1.2 防御
- 对权限的管理,未授权用户在未授权的情况下不能进行查看和删除等操作。
- 将文件名路径id等以md5的形式进行存储在数据库中。
- 避免目录跳转
2.文件上传漏洞防范
- 白名单方式加过滤文件扩展名,使用in_array或者三等于来对比扩展名。
- 保存上传的文件时重命名文件。