代码审计之bluecms1.6管理后台任意文件删除

初次接触PHP代码审计,靠自己的眼神审到第一个垃圾洞还是有点小激动...

执行删除功能的链接:

http://127.0.0.1/bluecms_v1.6_sp1/uploads/admin/database.php?act=del&file_name=test.txt

需要登录后台

先分析一下代码:

act参数:

删除功能实现代码:

当act参数为del时,进行删除备份文件操作。

有一个$_GET['file_name']参数是用户输入,传给$file_name,这里只是做了trim()函数处理,去除字符串首尾处的空白字符,并没有做其他的过滤。

然后下面  BLUE_ROOT.DATA."backup/".$file_name   就是后面要删除文件的路径,使用了拼接的方式,它的意思是删除 主目录下->data->backup 下的文件

然后 后面就执行unlink($file)操作。

这就是整体的一个思路

但是它没有对用户的输入做过滤,也就是$_GET['file_name']是用户可控的,这就造成了 ../   遍历任意文件删除了

测试:

我在主目录下创建了一个测试文件:test.txt

执行删除的payload:

http://127.0.0.1/bluecms_v1.6_sp1/uploads/admin/database.php?act=del&file_name=../../test.txt

通过../../就可以删除主目录下的test.txt文件

通过遍历就可以删除任意文件。

因为实现这个功能的代码点是 admin 目录下的 database.php 文件,admin目录需要管理员权限,所以需要先登录后台才能进行遍历目录删除文件

猜你喜欢

转载自blog.csdn.net/qq_39850969/article/details/83793187