PHP代码审计-文件读取漏洞容易被忽略的点!

文摘   2024-05-20 11:39   北京  


得现在师傅们如果针对文件读取/下载漏洞的挖掘,黑盒情况下就是找可以下载文件,读取文件的功能点,进行抓包,替换"filename",使用../../或者绝对路径来定位想要读取的文件。

白盒情况下就是全局搜索读取文件的几个函数,之后判断所要读取的文件参数是否可控等等等.....
我先描述一下文件读取的几个函数和用法,再来给大家分享一下容易被忽略的点。

file_get_contents()
file_get_contents() 函数用于读取整个文件为一个字符串,并返回该字符串。以下是 file_get_contents() 函数的基本用法:

$fileContent = file_get_contents('path/to/file.txt');echo $fileContent;上述代码将读取指定路径下的文件 "file.txt" 的内容,并将内容存储在变量 $fileContent 中。然后使用 echo 语句将文件内容输出到浏览器。

fread()
file_get_contents() 函数用于读取整个文件为一个字符串,并返回该字符串。以下是 file_get_contents() 函数的基本用法:

$handle = fopen('path/to/file.txt', 'r');$data = fread($handle, 1024);fclose($handle);echo $data;在上面的示例中,首先使用 fopen() 函数打开了一个文件 "file.txt",并传递了 'r' 参数,表示以只读模式打开文件。然后使用 fread() 函数读取文件内容,并将读取的数据存储在变量 $data 中。最后使用 fclose() 函数关闭文件句柄。


readfile()
readfile() 函数用于读取文件内容并输出到浏览器或保存到文件。以下是 readfile() 函数的基本用法:

readfile('path/to/file.txt');上述代码将直接输出指定路径下的文件 "file.txt" 的内容到浏览器。


fgets()
fgets() 函数用于从打开的文件中逐行读取数据。以下是 fgets() 函数的基本用法:

$handle = fopen('path/to/file.txt', 'r');if ($handle) {    while (($line = fgets($handle)) !== false) {        echo $line;    }    fclose($handle);}在上述示例中,首先使用 fopen() 函数以只读方式打开文件 "file.txt" 并返回文件句柄 $handle。然后通过 while 循环和 fgets() 函数逐行读取文件内容,直到文件末尾。每次 fgets() 调用都会将文件指针移动到下一行,并返回当前行的内容(包括换行符)。最后使用 fclose() 函数关闭文件句柄。


file()
file() 函数可以用于将整个文件读取为数组,每一行作为数组的一个元素。以下是 file() 函数的基本用法:

$lines = file('path/to/file.txt');
foreach ($lines as $line) { echo $line;}在上述示例中,file() 函数会将文件 "file.txt" 的内容读取到数组 $lines 中。每一行文本都作为数组的一个元素。然后可以使用 foreach 循环遍历数组,并将每行内容输出。

其实还有一个小功能点可以去读取文件,我放一张图师傅们就懂了。这是一个互联网已经公开的漏洞,但是这个读取的点很奇特,所以拿出来给大家看一下。

是的没错,这个漏洞的成因,就是通过curl功能点实现了文件读取功能。
大部分师傅碰到curl,基本都当成和wget类似的下载的功能点,其实curl也可以进行文件读取。

curl file:///etc/passwd  即可读取文件

要注意的是,这个可不是PHP的伪协议,在 curl 命令中,file:///etc/passwd 表示要获取本地文件系统上 /etc/passwd 文件的内容,并将其输出到标准输出。这里的 file:// 是 curl 支持的一种协议,用于读取本地文件。类似地,curl 还支持许多其他协议,如 HTTP、FTP 等。

所以这个漏洞的payload大家肯定也弄得出来

    $poi =  input('post.poi');  //post获取poi的值    $url = trim($poi); //对输入的poi的值去空    $info = curl_init(); //开启一个curl命令









注:如有侵权请后台联系进行删除

觉得内容不错,请点一下"赞"和"在看"





点击上方公众号
关注我们








往期精彩

Armitage|MSF图形界面神器

原创|Searchall3.5.9敏感信息搜索工具

快看!渗透测试工具库!







1、公众号后台回复:搜索大法,获取searchall工具下载链接。

2、公众号后台回复:靶场,获取靶场工具网盘下载链接。

3、公众号后台回复:webshell,获取webshell下载链接。

4、公众号后台回复:验证码,获取验证码工具下载链接。

5.公众号后台回复:应急响应,获取应急响应网盘下载链接。

6.公众号后台回复:CS,获取CS渗透工具包网盘下载链接。

7.公众号点菜单栏"工具合集",后台回复""即可获取!


嗨嗨安全
提供网络安全资料与工具,分享攻防实战经验和思路。
 最新文章