漏洞产生原因:
1.有读取文件的函数;
2.读取文件的路径用户可控;
3.输出文件内容;
4.存在下载文件的功能;
漏洞危害:
1.读取敏感文件,如/etc/passwd;
2.读取服务器和系统配置信息;
3.下载数据库配置信息;
谷歌语法:
inurl:“readfile.php?file=”
inurl:“download.php?file=”
inurl:“read.php?filename=”
inurl:“down.php?file=”
常见绕过方式:
1.双URL编码
点%u002
斜线%u2215
反斜线%u2216
2.16位Unioncode编码
点%u002
斜线%u2215
反斜线%u2216
3.超长utf-8 Unioncode编码
点%c0%2e、%e0%40%ae、%c0ae等
斜线%c0%af、%e%80af、%c0%2f等
反斜线%c0%5c、%c0%80%5c等
4.用一个序列替换另一个序列
…//
…V
…/
…\
修复方案:
1.过滤 ../ 等危险字符
2.文件下载时,判断输入路径
3.php.ini配置open_basedir限定文件访问范围