php-framework-audit

$npx mdskill add wgpsec/AboutSecurity/php-framework-audit

Audit PHP frameworks for specific security flaws.

  • Detects Mass Assignment, Blade XSS, and RCE risks.
  • Scans composer.json and file system for framework signatures.
  • Cross-references vendor patterns against identified frameworks.
  • Reports findings with specific vulnerability references.

SKILL.md

.github/skills/php-framework-auditView on GitHub ↗
---
name: php-framework-audit
description: |
  PHP 框架特定安全审计。当在 PHP 白盒审计中已识别目标使用特定框架、
  需要检查框架特有安全机制和常见配置缺陷时触发。
  覆盖 6 大框架: Laravel(Mass Assignment/Blade XSS/CSRF 例外)、
  ThinkPHP(RCE 历史漏洞/路由注入/缓存写入)、WordPress(插件漏洞/权限钩子/nonce 验证)、
  Symfony(Debug Bar/YAML 解析/安全投票器)、Yii2(RBAC/ActiveRecord 注入)、CodeIgniter(全局 XSS/CSRF Token)。
metadata:
  tags: laravel, thinkphp, wordpress, symfony, yii, codeigniter, 框架审计, mass assignment, blade xss, wp plugin, think rce
  category: code-audit
---

# PHP 框架特定安全审计
## 框架识别决策表

| 识别特征 | 框架 | 深入参考 |
|---|---|---|
| `composer.json` → `laravel/framework` | Laravel | [references/laravel-patterns.md](references/laravel-patterns.md) |
| `composer.json` → `topthink/framework` | ThinkPHP | [references/thinkphp-patterns.md](references/thinkphp-patterns.md) |
| 存在 `wp-content/` 目录或 `wp-config.php` | WordPress | [references/wordpress-patterns.md](references/wordpress-patterns.md) |
| `composer.json` → `symfony/framework-bundle` | Symfony | 本文简要覆盖 |
| `composer.json` → `yiisoft/yii2` | Yii2 | 本文简要覆盖 |
| `composer.json` → `codeigniter4/framework` | CodeIgniter | 本文简要覆盖 |

## Laravel 核心检查点

1. **Mass Assignment** -- `$fillable` / `$guarded` 是否正确配置,`Model::create($request->all())` 或 `update($request->all())` 是否存在未过滤字段
2. **Blade XSS** -- 搜索 `{!! !!}` 未转义输出、`@php` 指令内直接 echo、自定义 Blade Directive 未调用 `e()`
3. **CSRF 例外** -- `VerifyCsrfToken` 中间件 `$except` 数组是否包含敏感路由,API 路由组默认不含 CSRF 中间件
4. **Gate / Policy** -- 控制器方法是否调用 `$this->authorize()` 或 `Gate::allows()`,Policy 定义是否覆盖所有 CRUD
5. **Eloquent Raw** -- `whereRaw` / `havingRaw` / `orderByRaw` / `DB::raw` 中是否存在变量拼接
6. **签名 URL / 调试** -- `APP_DEBUG=true` 残留、`.env` Web 可达、Telescope / Debugbar 路由暴露

## ThinkPHP 核心检查点

1. **历史 RCE 路由** -- TP5.x `method()` 覆盖、`Request` 类 `__construct` 任意方法调用
2. **缓存文件写入** -- 缓存文件路径可预测 + 内容可控 → 写入 WebShell
3. **数据库 where 注入** -- `where` 数组条件中 `exp` / `like` / `between` 表达式注入、`Db::raw`
4. **Session 反序列化** -- TP6 session 序列化驱动可能触发 POP 链
5. **模板注入** -- `{php}` 标签、变量函数 `{:system()}`

## WordPress 核心检查点

1. **插件 action/filter** -- `wp_ajax_nopriv_*` 钩子暴露未认证操作、Shortcode 回调参数注入
2. **$wpdb->prepare 缺失** -- 直接拼接 SQL 到 `$wpdb->query()`
3. **nonce 验证** -- 表单处理 / AJAX handler 缺少 `wp_verify_nonce` / `check_admin_referer`
4. **REST API** -- `register_rest_route` 的 `permission_callback` 是否为 `__return_true` 或缺失
5. **文件上传** -- 插件自定义上传逻辑绕过 `wp_handle_upload` 的 MIME 检查

## Symfony 简要概述

- **Debug 模式** -- `APP_DEBUG=1` 泄露 Profiler / Web Debug Toolbar,暴露环境变量和 SQL
- **YAML 反序列化** -- 低版本 `Yaml::parse` 支持 `!!php/object` 标签导致对象注入
- **Security Voter** -- 自定义 Voter 逻辑缺陷或 `ACCESS_ABSTAIN` 误用导致越权

## Yii2 简要概述

- **RBAC 配置** -- `DbManager` 权限项分配不当、`checkAccess` 调用缺失导致垂直越权
- **ActiveRecord 注入** -- `findBySql` / `where` 条件字符串拼接、`orderBy` 未过滤

## CodeIgniter 简要概述

- **全局 XSS 过滤** -- CI3 `$config['global_xss_filtering']` 已弃用,CI4 需手动调用 `esc()`
- **CSRF Token** -- 配置 `CSRFProtection` 但排除路由过多、Token 重生策略不当

## 深入参考

- [Laravel 审计模式](references/laravel-patterns.md)
- [ThinkPHP 审计模式](references/thinkphp-patterns.md)
- [WordPress 审计模式](references/wordpress-patterns.md)

More from wgpsec/AboutSecurity

SkillDescription
401-403-bypass401/403 访问拒绝绕过方法论。当遇到管理后台、API 端点返回 401/403 Forbidden 时使用。覆盖路径操纵、HTTP 方法篡改、Header 注入、协议降级、组合攻击
ad-acl-abuseActive Directory ACL 滥用攻击方法论。当 BloodHound 发现 GenericAll/WriteDACL/WriteOwner/GenericWrite/ForceChangePassword 等危险 ACE 时使用。覆盖 ACE 枚举、权限滥用链、Shadow Credentials、RBCD 攻击
ad-delegation-attackKerberos 委派攻击(非约束/约束/RBCD)。当 BloodHound 发现委派配置、或已获取有 SPN 的服务账号/机器账号控制权时使用。通过 S4U 协议滥用可实现跨服务模拟任意用户,常用于域内权限提升和横向移动。
ad-domain-attackActive Directory 域环境攻击全链路。当目标主机在域环境中(systeminfo 显示 Domain 非 WORKGROUP)、发现 88/389/636 端口、或获取到域用户凭据时使用。覆盖域信息收集、用户枚举、Kerberoasting、AS-REP Roasting、委派攻击、ACL 滥用、DCSync、Golden/Silver Ticket
ad-persistenceAD 域环境持久化技术。当已获取域管/本地管理员权限、需要建立持久访问以确保重启或密码更改后仍能回到目标环境时使用。覆盖主机级持久化(计划任务/注册表Run/COM劫持/WMI事件订阅/Windows服务/启动文件夹)、域级持久化(Golden Ticket/Silver Ticket/Skeleton Key/DSRM/AdminSDHolder)、DCShadow/GoldenGMSA高级技术、清理命令与检测规避
ad-trust-attack域信任关系攻击。当目标存在多域/多林环境时使用。包含父子域提权(Golden Ticket + ExtraSid)、跨林攻击(SID History/MSSQL Trust Links)、单向信任利用。已获取子域 Domain Admin 或发现信任关系时优先加载。
adcs-certipy-attackActive Directory Certificate Services (ADCS) 证书攻击。当发现域内有 CA 服务器、ADCS Web Enrollment、证书模板配置错误时使用。覆盖 ESC1-ESC11 所有证书滥用路径、Certipy 工具链、证书伪造、NTLM 中继到 ADCS。发现 ADCS/CA/证书/certsrv 相关内容时一定要使用此技能
adinfo-enum使用 Adinfo 进行 Active Directory 信息收集。当获得域用户凭据后需要快速收集域环境信息时使用。Adinfo 是一个快速 AD 信息收集工具,一条命令输出域控列表、域管用户、信任关系、GPO、SPN、委派配置等关键信息——比手动 LDAP 查询快得多。发现域环境后第一步信息收集使用此技能
agent-security|
ai-data-security|