skills/exploit/web-method/php-bypass/SKILL.md
PHP 安全特性绕过:disable_functions 和 open_basedir 限制突破。当已获取 webshell 但命令执行函数被禁用或文件操作被 open_basedir 限制时使用
npx skillsauth add wgpsec/AboutSecurity php-bypassInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
当你已获取 webshell(能执行 PHP 代码)但无法执行系统命令时,本 skill 指导你突破 disable_functions 和 open_basedir 限制。
首先确认限制范围,这决定了攻击路径:
<?php
echo "disable_functions: " . ini_get('disable_functions') . "\n";
echo "open_basedir: " . ini_get('open_basedir') . "\n";
echo "PHP version: " . phpversion() . "\n";
echo "OS: " . PHP_OS . "\n";
echo "Loaded extensions: " . implode(', ', get_loaded_extensions()) . "\n";
// 关键扩展检查
echo "FFI: " . (extension_loaded('ffi') ? 'YES' : 'NO') . "\n";
echo "imagick: " . (extension_loaded('imagick') ? 'YES' : 'NO') . "\n";
echo "iconv: " . (extension_loaded('iconv') ? 'YES' : 'NO') . "\n";
echo "putenv: " . (function_exists('putenv') ? 'YES' : 'NO') . "\n";
echo "mail: " . (function_exists('mail') ? 'YES' : 'NO') . "\n";
echo "error_log: " . (function_exists('error_log') ? 'YES' : 'NO') . "\n";
?>
putenv() 可用?
├─ YES → mail()/error_log() 可用?
│ ├─ YES → 方法 A: LD_PRELOAD 劫持(最稳定,首选)
│ └─ NO → iconv 扩展加载?
│ ├─ YES → 方法 B: iconv + LD_PRELOAD
│ └─ NO → imagick 扩展?
│ ├─ YES → 方法 C: ImageMagick delegate
│ └─ NO → 下一分支
├─ NO → FFI 扩展 (PHP ≥ 7.4)?
│ ├─ YES → 方法 D: FFI 直接调用 system()
│ └─ NO → PHP < 7.4.21 / 8.0 < 8.0.8?
│ ├─ YES → 方法 E: PHP Backtrace UAF (CVE-2019-11043 等)
│ └─ NO → PCNTL 扩展?
│ ├─ YES → 方法 F: pcntl_exec()
│ └─ NO → 方法 G: ShellShock (CVE-2014-6271) / Apache mod_cgi
每种方法的完整代码见 references/disable-functions-bypass.md
| 看到什么 | 方法 | 命令 | |----------|------|------| | putenv + mail 可用 | LD_PRELOAD | 上传 .so → putenv → mail() | | putenv + error_log 可用 | LD_PRELOAD | 同上,用 error_log() 替代 | | putenv + iconv 可用 | GCONV_PATH | 上传 gconv-modules + .so | | imagick 已加载 | delegate 注入 | MVG/SVG payload | | PHP ≥ 7.4 + FFI | FFI::cdef | 直接调 system() | | pcntl 已加载 | pcntl_exec | fork + exec | | Bash ≤ 4.3 | ShellShock | putenv 环境变量注入 | | 全部不行 | UAF exploit | 搜索版本对应的利用脚本 |
/usr/sbin/sendmail 不存在 → mail() 不触发 execve → 换 error_logtesting
Azure 云环境渗透测试总体方法论。当目标使用 Azure/Microsoft 365/Entra ID、发现 Azure 相关资产(Blob Storage/App Service/Azure VM/Azure Functions)、获取 Azure 凭据(Service Principal/Managed Identity/Access Token)、或需要对 Azure 环境进行安全评估时使用。提供从未授权枚举到 Entra ID 攻击、服务提权、Cloud-to-OnPrem 横向移动的全流程决策树。覆盖 35+ Azure 服务攻击面
tools
Mythic C2 操作方法论。当需要部署 Mythic、选择 Mythic Agent、安装 C2 Profile、配置 HTTP/DNS/WebSocket/SMB/TCP 通信、生成 payload、管理回连任务,或把 Mythic 作为跨平台 C2 框架用于授权红队演练时使用。覆盖 mythic-cli 安装、Agent/Profile 选择、SSL 证书配置、payload 构建和基础 OPSEC 判断
development
Docker 安全测试与容器渗透方法论。当需要评估 Docker 容器、Docker Daemon、Docker Registry、镜像层、构建产物或容器逃逸风险时使用。覆盖容器环境识别、特权容器逃逸、docker.sock/Remote API 利用、procfs/cgroup/capabilities 滥用、Docker 用户组提权、运行时/内核 CVE、Registry 枚举、镜像层 Secret 分析和构建上下文泄露。发现 Docker 容器环境、Registry 暴露、镜像凭据或容器配置错误时应使用此技能
development
使用 PadBuster 进行 Padding Oracle 攻击。当发现 Web 应用使用 CBC 模式加密且存在 Padding Oracle 漏洞时使用。PadBuster 可自动解密密文和伪造任意明文对应的合法密文,适用于加密 Cookie/Token/URL 参数。任何涉及 Padding Oracle 攻击、CBC 密文解密、Cookie 伪造的场景都应使用此技能