*本文作者:freebuf01,本文属 FreeBuf 原创奖励计划,未经许可禁止转载。
在项目实施过程中,任意文件读取漏洞虽说不多,但也能不定期的发现一个。于是在这把自己了解的,做一个小小的总结(好记性不如烂笔头,本编部分案列截图取自wooyun)。通常利用任意文件读取漏洞读取源码,配合代码审计(比如查看文件上传过滤代码,加以绕过),读取配置文件(不仅仅局限于数据库配置,还有网络配置文件等),如果权限足够,还可读取shadow、历史记录等文件,从而收集密码,这些都对后期权限获取有很大帮助。
1、查找任意文件读取漏洞,首先要留意filename、download、inputfile这类的文件名,还可以留意path、name、filename、url、src等参数,不仅是GET类型,POST也同样存在,下图是未进行任何过滤
2、服务器或者容器的配置问题,引起的任意文件读取漏洞。
3、绕过java安全模式(没碰到过)。
4、服务器自身漏洞问题如glassfish
5、配合其他手法,如通过xxe、ssrf调用file协议读取文件,结合文件包含漏洞、sql注入(如load_file)等
6、javascript文件嵌套调用处,也可能存在
7、实际项目实施过程中,肯定会遇到各种过滤的,比如过滤扩展名,从而防止读取(.jsp、.php、.aspx等源码文件),过滤文件名如passwd、web.config,可以通过大小写或者url编码等绕过
8、部分系统可能使用白名单,对文件扩展名进行限制,可使用截断进行绕过
9、部分系统会过滤“../”,替换为空,可使用“…/./”绕过(灵活运用),有些是过滤“..”(没找到图)
*本文作者:freebuf01,本文属 FreeBuf 原创奖励计划,未经许可禁止转载。