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

0x01 前言 

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

0x02 什么是任意文件下载

说到文件下载各位童鞋都不陌生(老司机请跳过),我们要下载网站上某个文件(.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文件,但是没有做好安全措施导致任意文件下载。 举个栗子:

测试环境(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 某集团任意文件下载

之前挖某集团的漏洞时发现一个任意文件下载,两个思路:①下载源码审计-发现漏洞-利用;②下载数据库文件-如果支持外联-登录后台-尝试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文件,继续下载global.php文件在第31-32行代码发现包含了数据库连接文件,如下:

<?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有限公司”的服务器上

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

用户名     密文         解密明文

axxxn        5xxx0

gxxxn        2xxxc        1xxxv

0x04 虚拟主机getshell  

接着用gxxxn/1xxxv成功登录某集团官网后台:http://www.xxx.com/manage.php

在已发布文章里找了一处可以上传图片的,简单测试了下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的站,又涨姿势了~

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

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

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

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

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

 0x05 总结

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

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

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

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

(0)

相关推荐

  • 某集团任意文件下载到虚拟主机getshell的方法

    0x01 前言  从某群的故事改编而来,都是些老套路各位看官看得高兴就好:第一次在i春秋发帖有点紧张,如果有什么不周到的地方请去打死阿甫哥哥.你没听错,阿甫哥哥推荐. 0x02 什么是任意文件下载 说到文件下载各位童鞋都不陌生(老司机请跳过),我们要下载网站上某个文件(.zip..doc..pdf)直接请求这个文件即可格式一般为:域名+相对路径+文件名,如http://www.test.com/downlad/test.zip.而在网站上下载文件一般分为两种,一种就是刚才所说的直接请求某个文件,

  • nginx配置虚拟主机vhost的方法详解

    前言 所谓虚拟主机,是说通过几个不同的url地址,都能到达nginx环境,只不过针对不同的url,处理的逻辑不同. nginx支持虚拟主机,但是浏览器等客户端不知道,所以虚拟主机的几个地址,应该是都指向nginx所在的ip地址,虚拟主机功能才能正常. 环境 系统环境:CentOS6.7 nginx version: nginx/1.8.1 方案 例如配置文件位于: /opt/nginx/conf/nginx.conf 在http {}的最后,添加如下行: include vhosts/*.con

  • 在Apache服务器上添加虚拟主机功能的方法

    Apache 默认存放网页根目录,是在/var/www/html/下面,也就是说,默认情况下,一个服务器,只能跑一个网站.但是一台性能还算不错的服务器,如果只跑一个网站,岂不是有点浪费?其实 Apache 是支持虚拟主机功能的,以虚拟主机模式可以跑 N 个网站. Apache 开启虚拟主机功能的方式也很简单,以 CentOS 6.3 和 Apache 2.2 为例, 在 /etc/httpd/conf.d/ 目录下创建一个vhost.conf配置文件,内容格式如下: NameVirtualHos

  • XAMPP下使用顶级域名绑定虚拟主机的配置方法和示例

    有时候你需要一些顶级域名访问方式来访问你本地的项目,这时候就需要配置虚拟主机,给你的目录绑定一个域名,实现多域名绑定访问.(本地的话可以通过修改 hosts 文件随便绑定什么域名比如 www.a.com 或者 localdemo). 现在假定你有两个目录,一个存在于 /xampp/htdocs/a,另一个存在于 /xampp/htdocs/b . 现在你想要在本地测试的时候访问 www.a.com 对应的目录是 /xampp/htdocs/a ,访问 www.b.com 对应的目录是 /xamp

  • apache 虚拟主机的配置方法

    方法一: 首先打开apache中conf下的http.conf文件打开虚拟主机的注释:如下去掉第二行前面的#即可 # Virtual hosts # Include conf/extra/httpd-vhosts.conf 再打开conf目录下的extra目录中的httpd-vhosts.conf文件 在文件最后面加上 <VirtualHost *:80>//你的虚拟主机所使用的端口号 ServerAdmin webmaster@dummy-host2.localhost //虚拟主机的管理员

  • nginx配置多个虚拟主机vhost的方法示例

    在nginx下配置虚拟主机vhost非常方便.主要在nginx的配置文件nginx.conf中添加一个server即可 比如我想配置两个虚拟主机,通过域名linux.com和linux2.com访问,分别对应的目录是/usr/htdocs/linux 和/usr/htdocs/linux2 (这个目录下是放你开发项目文件哦) 因为我安装的本地虚拟机,所以我先在hosts文件中添加两个重定向: 192.168.20.250 linux.com //192.168.20.250是我虚拟机的ip,用的

  • Nginx 部署的虚拟主机使用 Let's Encrypt 加密 https的方法

    目录 需要前提条件 安装 python3-certbot-nginx 插件 获得 pem 秘钥 配置你的虚拟主机 检查网站 HTTPS 情况 HTTPS 是现在网站的标配了,很多服务都是必须使用 https,如果你不使用的话,浏览器可能就不会对你非常友好了. 如果你不想使用商业的 CA 秘钥的话,你可以使用 Let’s Encrypt 来进行加密. 使用 Let’s Encrypt 唯一不好的地方就是每 3 个月要更新一次,当然你也可以使用自动的更新来处理就好了. 我们需要通过安装插件来实现:

  • apache虚拟主机的配置指南

    一.检查apache虚拟主机模块 apache要配置虚拟主机,就需要先查看apache是否编译vhost_alias_module模块.当然apache默认是已经编译该模块的,我们可以通过以下命令查看是否已经编译模块,如下: /usr/local/apache2/bin/apachectl -M 二.开启apache虚拟主机功能 要开启apache虚拟主机功能,我们需要修改apache配置文件http.conf.打开apache的安装目录,找到httpd.conf文件,去掉Include con

  • 安全虚拟主机配置技巧

    注入漏洞.上传漏洞.弱口令漏洞等问题随处可见.跨站攻击,远程控制等等是再老套不过了的话题.有些虚拟主机管理员不知是为了方便还是不熟悉配置,干脆就将所有的网站都放在同一个目录中,然后将上级目录设置为站点根目录.有些呢,则将所有的站点的目录都设置为可执行.可写入.可修改.有些则为了方便,在服务器上挂起了QQ,也装上了BT.更有甚者,竟然把Internet来宾帐号加入到Administrators组中!汗--!普通的用户将自己的密码设置为生日之类的6位纯数字,这种情况还可以原谅,毕竟他们大部分都不是专

  • Win2003+ASP.NET虚拟主机安全设置图文教程

    在这里,我们的站点目录放在D盘的www文件夹,假设现在有一个名叫fesend的虚拟主机用户,我们在www文件夹下建立 fesend 的文件夹来存放此用户的站点数据 其中要用到以下组及帐号: IIS_WPG 组(也称为 IIS 工作进程组,IIS Worker Process Group) Guests组 (来宾组,在系统中拥有最少的权限) Internet 来宾帐户 (匿名访问 Internet 信息服务的内置帐户) 启动 IIS 进程帐户 (用于启动进程外应用程序的 Internet 信息服务

随机推荐