文件删除漏洞
文件删除漏洞
介绍
文件删除漏洞可让攻击者随意删除服务器上的任意或指定文件。
原理
同样是被删除文件的变量用户可控,且没有进行严格的校检,所以导致任意文件删除,再配合目录遍历,删除硬盘上的其他文件。
分析技巧
查找分析文件删除漏洞的方法与上一节“文件读取下载漏洞”的方法相似。对PHP脚本搜索unlink函数,对JavaScript脚本搜索file.delete或delete,delFile,delDir等函数关键词,定位关键位置,再进一步分析关键位置的上下文代码,重点分析是否存在可控文件参数,是否有校验或者校验可绕过。
危害
这个漏洞的危害还是很大的,别人可以删除你电脑上的私密文件等。可能哪天重启服务器发现服务器崩溃了,都有可能是这个漏洞造成的。
另外,许多CMS在安装后会相应生成一个install.lock文件,后期在安装页面时会判断install.lock是否存在,不存在就可覆盖重装。可以利用任意文件删除漏洞导致任意重装覆盖。
文件删除与目录删除函数
unlink() 函数
unlink() 函数删除文件。若成功,则返回 true,失败则返回 false。
1 |
|
payload:
- delFile.php?file=../install/install.lock
- delFile.php?file=file:///var/www/html/install/install.lock
rmdir() 函数
rmdir() 函数删除空的目录。若成功,则该函数返回 true。若失败,则返回 false。
注意,目录必须为空
1 |
|
payload:
- delFile.php?file=../install/test/
漏洞防御修复
- 过滤
.点,使用户在url中不能回溯上级目录 php.ini配置open_basedir限定文件访问范围- 正则严格判断用户输入的参数
参考资料
- 曹玉杰,王乐,李家辉,孔韬循 编著《Web代码安全漏洞深度剖析》
- 任意文件读取及删除漏洞平凡的学者的博客-CSDN博客任意文件读取漏洞
- 任意文件读取和删除漏洞 - 哔哩哔哩 (bilibili.com)
- 【代码审计】任意文件删除漏洞实例_微信公众号Bypass-CSDN博客
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Ulysses'Blog!
评论
