android 删除文件 代码_代码审计之某系统后台存在任意删除文件
本文作者:霾
團(tuán)隊(duì)交流群:673441920
-----------------------------------------------------------
前言
POC鎮(zhèn)樓!!!
POST漏洞演示過(guò)程:
首先我們利用D盾監(jiān)聽(tīng)下我們的項(xiàng)目以外的目錄。
這里剛剛我們創(chuàng)建了這個(gè)文件現(xiàn)在我們要從CMS去刪除他。
隨便找了一個(gè)目錄去點(diǎn)擊,然后我們用burp去抓包。
我們?nèi)バ薷南耭name這個(gè)參數(shù)再去刪除
這里可以看到我們的文件和文件夾都給刪除了。
漏洞審計(jì):
路徑:controladmin_filemanager.php
第158行,if(isset($this->post['currentdir']) && isset($this->post['fname'])),判斷post中的currentdir是否有設(shè)置并且判斷fname是否有設(shè)置。
第161行,if(!file_exists($fname)),判斷文件或者目錄是否存在。
第164行,if($this->post['isdir']== '0'),判斷isdir的值是否等于0。
第165行,@unlink($fname);,刪除文件。
第167行,else if($this->post['isdir'] == '1'),或者判斷isdir的值是否等于1。
第168行,$str=$_ENV['dir']->dir_delete($fname);,進(jìn)入自定義方法。
路徑:modeldir.class.php
第46行,if(!is_dir($dir)) return FALSE;,判斷是否是目錄。
第47行,$systemdirs = array('', HDWIKI_ROOT.'control', HDWIKI_ROOT.'langzh', HDWIKI_ROOT.'data', HDWIKI_ROOT.'model', HDWIKI_ROOT.'view', HDWIKI_ROOT.'install', HDWIKI_ROOT.'js', HDWIKI_ROOT.'lib', HDWIKI_ROOT.'plugins', HDWIKI_ROOT.'block', HDWIKI_ROOT.'api', HDWIKI_ROOT.'lang', HDWIKI_ROOT.'ss');,聲明自定義的路口
第48行,if(substr($dir, 0, 1) == '.' || in_array($dir, $systemdirs)) exit("Cannot remove system dir $dir !");,substr代表字符串切割并且等于.,或者判斷數(shù)組是否存在值。
第49行,$dir=$dir."";,聲明一個(gè)變量。
第50行,$list = glob($dir.'*'),glob代表返回匹配指定模式的文件名或目錄。
第51行,foreach($list as $v),foreach循環(huán)。
第52行,is_dir($v) ? $this->dir_delete($v) : @unlink($v);,3元運(yùn)算符,is_dir判斷是否是目錄,如果是目錄那么就遞歸,如果不是目錄那么就刪除文件。
第54行,@rmdir($dir);,刪除文件夾。
漏洞修復(fù):
利用str_replace去吧字符串過(guò)濾掉。
總結(jié)
以上是生活随笔為你收集整理的android 删除文件 代码_代码审计之某系统后台存在任意删除文件的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: python r语言 作图_生物医学绘图
- 下一篇: java exec 关闭_如何正确关闭j