代碼審計之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目錄需要管理員權限,所以需要先登錄後臺才能進行遍歷目錄刪除文件

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章