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();
看到可以執行,這時候寫上過狗的後門(要自己發揮想像力了),連上過狗的菜刀,打完收工
網費剛好到點,溜溜球了