文件读取漏洞专题(二)

任意文件读取漏洞非常基础而又常见,攻击者可以由此收集到大量敏感信息

该专题将对文件读取漏洞的知识进行一些汇总,偶尔会有相关例题解析

文件读取-php(续)

上一篇文章提到了利用php的wrapper读取文件,接下来介绍一下关于php文件读取的技巧

00截断和目录穿越

以下面一道题为例

[WeChall]Training: PHP LFI*

题目简单明了,要求include到solution.php,但是这里出现了问题:filename的前后都是不可控的,路径前面加上了page/,后面又以.html结尾。

page/我们可以简单地用../来返回上一级目录,那又怎么解决后缀的问题呢?

而ascii中0作为特殊字符保留,表示字符串结束,所以我们在文件名后加%00即可造成截断

payload: ?file=../../solution.php%00

一些其他协议

zip和phar协议有时可以用于在遇到文件上传功能时进行文件包含来执行php代码

文件读取-Java

java的一些模块有时未对传入路径作安全限制或限制不严,导致可以读取到一些敏感文件

同时也可能有XXE导致的文件读取

文件读取-Python

作为面向对象的语言,python搭建web应用时的“风格”和php不同,用户和web应用交换往往包含对服务器资源文件的请求,容易出现非预期的读取文件情况