文件读取漏洞
1、漏洞简介
任意文件读取是属于文件操作漏洞的一种,一般任意文件读取漏洞可以读取配置信息甚至系统重要文件。严重的话,就可能导致SSRF,进而漫游至内网。
代码执行,文件读取,命令执行的函数都有哪些
代码执行:eval,pregreplace+/e,assert,calluserfunc,calluserfuncarray,create_function
命令执行:
system(), exec(), shellexec(), passthru() ,pcntlexec(), popen(),proc_open()
文件读取:
filegetcontents(),highlightfile(),fopen(),read file(),fread(),fgetss(), fgets(),parseinifile(),showsource(),file()等
2、漏洞成因
存在读取文件的函数。如:readfile()、file_get_contents()、fopen()、fread()、fgets()、fpassthru()
读取文件的路径用户可控,且未校验或校验不严。如:…/…/…/字符
输出了文件内容
例如服务端文件读取代码如下:
<?php
$filename=$_GET['f'];
echo file_get_contents($filename);
?>我们在前端使用../../../拼凑读取文件的绝对路径,读取/etc/passwd文件


3、漏洞利用
任意文件读取漏洞挖掘:
任意文件读取利用总结:
任意文件读取常见参数名:
任意文件读取常用敏感文件路径:
4、漏洞修复
净化数据:对用户传过来的文件名参数进行统一编码,对文件类型进行白名单控制,对包含恶意字符或者空字符的参数进行拒绝。
过滤 . 点,使用户在url中不能回溯上级目录
正则严格判断用户输入的参数
php.ini配置open_basedir限定文件访问范围
Last updated
Was this helpful?