0x01 最近有一位粉絲朋友私信我,給我發了一個網上商城,問我能不能做一下滲透測試,我拿來看了一看,由於是在網吧,沒有什麼環境,但是簡單一看就發現這個站真的可以說是漏洞百出,這樣的商城還能開這麼久,真的是一件奇怪的事情

我們先看看他的主頁

看上去很是精美,這個頁面可能就騙過了許多人,覺得這是一個防護森嚴的正規商城,但是我們仔細看下去,真的是這樣么,我們看到這是一套開源的cms,我們可以在網上下載到它的源碼

0x02 開始找漏洞

我們從index.php找到應用層目錄application,在application目錄下找到admin的控制器

這就是所有的控制器,滲透經驗豐富的同學一定會注意到upload這個控制器,這是一個毀譽參半的東西,我們著重關注一下他

總共有700多行,筆者看了一會兒,忽然電腦提示我餘額不足,正當我準備去交費的時候,發現了一個問題

這七百多行都沒有一個身份驗證的判斷???

那豈不是說誰都可以上傳文件???

這裡就是正常的獲取路徑,文件名,並沒有發現對文件的後綴判斷語句,直接獲取,然後對文件改名,最後複製到指定目錄,重要的代碼在這

// 文件上傳成功執行下邊的操作
if (! strstr(UPLOAD_VIDEO, $this->reset_file_path)) {
@unlink($_FILES[file_upload]);
$image_size = getimagesize($ok["path"]); // 獲取圖片尺寸
if ($image_size) {

$width = $image_size[0];
$height = $image_size[1];
$name = $file_name_explode[0];

switch ($this->file_path) {
case UPLOAD_GOODS:
// 商品圖
$type = request()->post("type", "");
$pic_name = request()->post("pic_name", $guid);
$album_id = request()->post("album_id", 0);
$pic_tag = request()->post("pic_tag", $name);
$pic_id = request()->post("pic_id", "");
$upload_flag = request()->post("upload_flag", "");
// 上傳到相冊管理,生成四張大小不一的圖
$retval = $this->photoCreate($this->reset_file_path, $ok["path"], "." . $file_name_explode[$suffix], $type, $pic_name, $album_id, $width, $height, $pic_tag, $pic_id, $ok["domain"], $ok["bucket"]);
if ($retval > 0) {
$this->return[code] = $retval;
$this->return[message] = "上傳成功";
$this->return[data] = $ok["path"];
} else {
$this->return[message] = "上傳失敗";
}

在文件上傳成功之後,會用getimagesize()這個函數去獲取圖片信息,否則會強制改掉文件後綴,並報錯提醒

那我們看看這個漏洞點

xxx/index.php?s=/admin/upload/uploadfile

0x3 開始測試

這時候我們構造一個表單,用post傳一個圖片馬試一試

圖片馬後綴php,回顯會告訴你他的路徑

這裡這個站也會過濾eval函數的post方式。。。我傳一個get形式的一句話執行一下phpinfo();

看到可以執行,這時候寫上過狗的後門(要自己發揮想像力了),連上過狗的菜刀,打完收工

網費剛好到點,溜溜球了


推薦閱讀:
相关文章