文件的操作漏洞都有哪些??
什么是 目录穿越 ??
目录穿越(Directory Traversal)攻击是黑客能够在Web应用程序所在的根目录以外的文件夹上,任意地存取被限制的文件夹、执行命令或查找数据。目录穿越攻击,也有人称为Path Traversal攻击
目录穿越 ------ 漏洞危害
攻击者可以使用目录穿越攻击来查找、执行或存取Web应用程序所在的根目录以外的文件夹。如果目录穿越攻击成功,黑客就可以执行破坏性的命令来攻击网站
目录穿越 --- 代码案例
如果应用程序使用用户可控制的数据,以危险的方式访问位于应用服务器或其它后端文件系统的文件或目录,就会出现路径遍历
写一个代码
1.php
if(isset($_GET['file'])){
readfile("file/" . $_GET['file']);
}
在同级目录下,创建一个file 文件夹 和 2.txt
file文件夹里1.txt 写 穿越1
2.txt 是 穿越2
开启 phpstudy , 去访问1.php
我们开头设置的是,访问file文件夹,下的内容
传递file参数,去 访问 1.txt xxx?file=1.txt
现在做目录穿越 去访问同级目录下的 2.txt
xxxx?file=../2.txt
绕过方式
对参数进行,URL编码
.(点) ---> %2e 反斜杠 和 正斜杠
16位的unicode编码
进行两次URL编码
进行超长UTF-8 Unicode 编码
点->%c0%2e %e0$40%ae %cOae
反斜杠->%cOaf %e0%80af %c0%af
正斜杠->%c0%5c%c0%80%5c
目录穿越 ---- 修复方案
在URL 内 不要使用文件名作为参数
检查使用者输入的文件名是否有“..”的目录阶层字符
在php.ini文件中设置open basedir来指定文件的目录,
使用realpath函数来展开文件路径中的"./"、"../"等字符,然后返回绝对路径名称
使用basename函数来返回不包含路径的文件名称