小知识:某集团任意文件下载到虚拟主机getshell的方法

0x01 前言 

从某群的故事改编而来,都是些老套路各位看官看得高兴就好;第一次在i春秋发帖有点紧张,如果有什么不周到的地方请去打死阿甫哥哥。你没听错,阿甫哥哥推荐。

 0x02 什么是任意文件下载

  说到文件下载各位童鞋都不陌生(老司机请跳过),我们要下载网站上某个文件(.zip、.doc、.pdf)直接请求这个文件即可格式一般为:域名+相对路径+文件名,如。而在网站上下载文件一般分为两种,一种就是刚才所说的直接请求某个文件,还有一种就是者提供了一个下载脚我们只需要请求:(文件名)这样的url也可以下载文件。

  众所周知,我们请求一个网站上的脚本文件(这里以php为例)是不会被下载的,如:。那任意文件下载是怎么造成的呢?这里就是上面说到的第二种情况了,者提供了这样一个连接本意是想访问者下载test.zip文件,但是没有做好安全措施导致任意文件下载。 举个栗子:

  测试环境(phpstudy):windows7+php-5.5.38+apache

  一个任意文件下载脚本test.php,代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<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(); }
>

  直接访问该文件,文件并没有被下载而是解析了其中的代码   

%小知识:某集团任意文件下载到虚拟主机getshell的方法-猿站网-插图

在网站根目录下新建一个文件夹inc并新建一个名为ichunqiu.php的文件   

%小知识:某集团任意文件下载到虚拟主机getshell的方法-1猿站网-插图

现在来尝试下载该文件,访问:成功下载该文件 

%小知识:某集团任意文件下载到虚拟主机getshell的方法-2猿站网-插图

0x03 某集团任意文件下载

  之前挖某集团的漏洞时发现一个任意文件下载,两个思路:①下载源码审计-发现漏洞-利用;②下载数据库文件-如果支持外联-登录后台-尝试getshell,这里我选择了第二种。

  首先下载了index.php文件,代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<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]==enen: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文件,继续下载global.php文件在第31-32行代码发现包含了数据库连接文件,如下:

1
<php…/* 加载基本配置信息文件 */require(root_path . data/config.php); …>

  在config.php中找到数据库连接信息:

1
2
3
4
5
6
<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有限公司”  

%小知识:某集团任意文件下载到虚拟主机getshell的方法-3猿站网-插图

  再访问下这个域名,通过扫描微信后基本确认“xx集团”主站的数据库是放在“xxx有限公司”的服务器上  

%小知识:某集团任意文件下载到虚拟主机getshell的方法-4猿站网-插图

  继续,用navacat连接找到后台用户帐号密码:

用户名     密文         解密明文

axxxn        5xxx0

gxxxn        2xxxc        1xxxv 

%小知识:某集团任意文件下载到虚拟主机getshell的方法-5猿站网-插图

0x04 虚拟主机getshell  

接着用gxxxn/1xxxv成功登录某集团官网后台:  

%小知识:某集团任意文件下载到虚拟主机getshell的方法-6猿站网-插图

  在已发布文章里找了一处可以上传图片的,简单测试了下phtml、php、php%20、php%00之类的后缀均不能绕过,只好只好下载相关文件看代码。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<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的站,又涨姿势了~   

%小知识:某集团任意文件下载到虚拟主机getshell的方法-7猿站网-插图

查看日志文件发现大量网站记录:cat /var/www/73scan.log也可以直接看web命令:ls /var/www/vhosts   

%小知识:某集团任意文件下载到虚拟主机getshell的方法-8猿站网-插图

100+的网站,无意间getshell某公司的虚拟主机  

%小知识:某集团任意文件下载到虚拟主机getshell的方法-9猿站网-插图

  任意读取一网站目录下的文件:cat /var/www/vhosts/0xxcom/httpdocs/index.php  

%小知识:某集团任意文件下载到虚拟主机getshell的方法-10猿站网-插图

  虽然当前权限不能修改和写入,但是可跨目录读文件而这些网站的数据库又支持外联,你懂的;

  本想试试脏牛提权,但怕给打死了就草草提交了

 0x05 总结

① 精简下整个过程:任意文件下载-连接数据获得帐号密码-后台上传;

② 代码这块有点php基础都能看懂,学个十天半个月就成;

③ 细心吧,看到错误信息才想到支持perl脚本,不过一般也只有linux才会有;

以上所述是小编给大家介绍的某集团任意文件下载到虚拟主机getshell的方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对服务器之家网站的支持!

原文链接:http://bbs.ichunqiu.com/portal.php

声明: 猿站网有关资源均来自网络搜集与网友提供,任何涉及商业盈利目的的均不得使用,否则产生的一切后果将由您自己承担! 本平台资源仅供个人学习交流、测试使用 所有内容请在下载后24小时内删除,制止非法恶意传播,不对任何下载或转载者造成的危害负任何法律责任!也请大家支持、购置正版! 。本站一律禁止以任何方式发布或转载任何违法的相关信息访客发现请向站长举报,会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。本网站的资源部分来源于网络,如有侵权烦请发送邮件至:2697268773@qq.com进行处理。
建站知识

小知识:OpenStack Tempest的正确的打开方式

2023-4-19 14:29:24

建站知识

小知识:VMware设置桥接上网(图文详解)

2023-4-19 14:44:17

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索