ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

蓝队实战笔记:一次 BOLA 越权攻击的防守复盘——从告警发现到溯源加固

蓝队实战笔记:一次 BOLA 越权攻击的防守复盘——从告警发现到溯源加固 重要提醒越权BOLA是 OWASP Top 10 里最容易被开发忽视、却最容易在护网中被红队当突破口的一类漏洞。本文延续本专栏「蓝队护网 / SOC 防守全套学习清单」的思路把「损坏的对象级别鉴权漏洞BOLA」里的攻击类型套进一次真实的防守复盘流程告警发现 → 遏制隔离 → 溯源取证 → 根除恢复 → 加固复盘。不讲虚的只走一遍蓝队真正会踩的坑。专栏蓝队技能学习话题越权 / BOLA / 溯源取证难度⭐⭐⭐⭐适合护网备赛 / SOC 研判 / Web 安全0 前言为什么把这两篇笔记串起来本专栏之前分别写过两篇笔记一篇梳理了 BOLABroken Object Level Authorization损坏的对象级别鉴权的五种越权形态——未鉴权、参数可遍历水平越权、请求路径异常路由绕过 / 垂直越权、可遍历下载文件、鉴权凭证脆弱伪造 Token另一篇是「蓝队护网 / SOC 防守全套学习清单」按基础打底 → 安全设备 → 日志流量分析 → 应急响应取证 → MITRE ATTCK 威胁狩猎 → 系统加固 → 脚本自动化九大模块排了优先级。但很多同学反馈「单看攻击类型记不住单看防守清单又太散。」所以这篇就用一次完整的越权防守复盘把两边粘起来——先还原攻击是怎么进来的再看蓝队在每个阶段该干什么、用什么命令、看哪个事件 ID。你把它当成「清单的实战版」即可。阅读建议如果你还没看过那两篇基础笔记建议先过一遍BOLA 五种类型用来对号入座攻击手法防守清单用来查每个阶段该用哪类工具。本文不再重复罗列定义只讲「碰到时怎么办」。1 场景还原一次典型的水平越权告警某周二凌晨SOC 大屏跳了一条 WAF 告警业务系统/api/order/detail?orderId接口在 9 分钟内被同一源 IP 用连续递增的 orderId 高频请求命中 WAF 的「越权 / 遍历」规则。这是 BOLA 五种形态里最经典的「参数可遍历水平越权」——接口只校验了「是否登录」没校验「这个订单是不是你的」。1.1 攻击时间线流量侧还原02:11:03源 IP 203.0.113.27 首次正常请求 orderId10045返回 200业务正常。02:11:18开始遍历orderId10046, 10047, 10048 …UA 伪装成 Chrome间隔约 0.8s。02:19:51累计请求 612 次其中 587 次返回 200 且响应体含他人订单号、手机号、地址——数据已泄露。02:20:02WAF 命中「越权遍历」规则触发告警推送至 SIEMSOC 开始介入。研判要点判断「遍历」而非「正常翻页」的关键同一会话、参数单调递增、响应体归属人与登录人不一致。三者同时成立基本可以定性越权不要被「用户在查自己订单」的借口带偏。2 第一阶段告警发现与初判蓝队核心工作台是 SIEM日志集中分析平台。这条告警会同时出现在三个地方要会关联着看WAF 侧越权 / 遍历规则命中附原始 Payload 与响应码分布。Web 访问日志Nginx/Apache access.log 里的高频单 IP、同 URI 不同参数。应用日志业务系统自身日志同一 userId 短时间内查了大量不属于自己的 orderId。初判命令Linux 侧# 1. 按源 IP 聚合访问频次锁定可疑源 awk {print $1} /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -20 2. 看这个 IP 到底请求了哪些 orderId参数提取 grep 203.0.113.27 /var/log/nginx/access.log | grep -oP orderId\K[0-9] | sort -n | uniq -c 3. 关联业务日志看响应归属是否与登录人一致 grep 203.0.113.27 /var/log/nginx/access.log | awk {print $7} | sed -n s/.orderId([0-9]).*/\1/p | while read id; do grep order_id$id /opt/app/order.log; done如果第 2 步发现 orderId 跨度很大、且第 3 步里这些订单的 owner 与当前登录 userId 不一致——水平越权实锤进入遏制阶段。3 第二阶段遏制与隔离防守清单里写的标准应急 SOP 是遏制 → 根除 → 恢复 → 溯源 → 加固复盘遏制永远第一优先先止血再查因。遏制动作清单边界层WAF / 防火墙把源 IP 203.0.113.27 拉黑同时给该接口加临时限频规则同会话 60s 内同接口 ≤ 30 次。接口层通知研发对/api/order/detail临时加对象归属校验先堵漏洞根治代码后面再说。账号层冻结发起遍历的登录态强制下线该 token避免被当跳板继续横向。# 防火墙拉黑firewalld 示例 firewall-cmd --permanent --add-rich-rulerule familyipv4 source address203.0.113.27 reject firewall-cmd --reload iptables 方式 iptables -I INPUT -s 203.0.113.27 -j DROP别一上来就重启如果怀疑主机已失陷禁止直接重启——会破坏内存里的取证证据进程、网络连接、注入的内存马。正确做法是先隔离网络、保留内存镜像再决定处置。4 第三阶段溯源取证这一步要回答三个问题怎么进来的攻击路径、动了什么影响范围、还碰了什么别的横向。用 MITRE ATTCK 杀伤链把行为挂上去复盘才经得起推敲。4.1 流量侧Wireshark 还原攻击包过滤语法ip.addr 203.0.113.27 http.request.uri contains orderId导出 HTTP 请求列表看遍历节奏、是否带自动化脚本特征固定 UA、无 Referer、间隔均匀。检查是否有二次回连攻击者拿到数据后是否往外部 C2 发包DNS 隧道 / ICMP 隐蔽通道——一旦有就不是越权这么简单了要按失陷处置。4.2 主机侧Windows 事件日志蓝队重中之重这几个事件 ID 是护网必背研判失陷横向全靠它们事件 ID含义防守关注点4624成功登录看登录类型3网络、10远程桌面异常时间 / 异常源 IP 登录要重点排查4625登录失败短时间高频失败爆破痕迹4688进程创建关注 powershell.exe、cmd.exe、wmic、certutil 等可疑子进程链4104PowerShell 脚本块执行抓编码 / 混淆命令内存马、下载器常走这条7045新建服务攻击者常用来做持久化后门注册恶意服务自启# 用 wevtutil 导出安全日志再交给 LogParser / ELK 分析 wevtutil epl Security C:\forensic\sec.evtx PowerShell 快速筛 4624 / 4625取证时常用 Get-WinEvent -LogName Security -MaxEvents 5000 | Where-Object { $_.Id -in 4624,4625,4688,4104,7045 } | Select-Object TimeCreated, Id, Message | Format-Table -AutoSize4.3 Linux 侧排查清单排查项位置 / 命令找什么登录痕迹/var/log/secure异常 IP 登录、sudo 提权Web 访问/var/log/nginx/access.log遍历 / 注入 / webshell 上传特征异常进程ps aux / netstat -antp外联进程、监听非常规端口持久化后门crontab -l / /etc/rc.local / systemd定时反弹、自启恶意服务SSH 后门~/.ssh/authorized_keys被植入陌生公钥临时恶意文件/tmp /dev/shmwebshell、提权脚本、挖矿4.4 用 ATTCK 把行为映射到战术把上面查到的行为挂到杀伤链上溯源报告才完整ATTCK 战术本次对应行为初始访问合法账号登录接口仅校验登录态未校验对象归属执行遍历接口拉取数据无代码执行纯 API 滥用凭据访问泄露订单含手机号 / 地址可用于社工钓鱼数据渗出587 条订单通过 HTTP 响应外带待确认横向移动若发现 4624 异常登录 / 4688 可疑进程则升级为失陷取证工具速记Windows 内存取证用 Volatility提取内存木马、密码、隐藏进程磁盘镜像用 FTK Imager 保全海量 evtx 用 LogParser 或直接进 ELK 检索。先取证、后处置证据链不能断。5 第四阶段根除与恢复根除删除攻击者留下的痕迹如有 webshell 清文件、清定时任务、删陌生 SSH 公钥、删恶意服务。恢复从干净备份还原受影响数据重置受影响用户凭证修复 orderId 接口的对象级鉴权这是根治 BOLA 的关键不是加 WAF 规则就完事。验证用 OWASP ZAP / Burp 复测该接口确认遍历已被阻断回归测试业务功能未被影响。6 第五阶段加固复盘复盘不是写完报告就结束要落到可执行的加固项上。对应防守清单里的「资产梳理与漏洞管理」和「攻击面收敛」。加固方向具体动作鉴权根治所有涉及对象 ID 的接口加对象级鉴权服务端校验「当前用户是否有权访问该 orderId」而非只验登录不可预测 ID对外 ID 用 UUID / 加盐哈希替代自增整数降低遍历可行性WAF 规则沉淀把本次越权特征写成 Sigma / WAF 规则复用到同类接口作为威胁情报沉淀攻击面收敛下线老旧未维护资产、关闭无用端口、删除测试站点红队高频突破口日志全覆盖确认业务日志已全量进 SIEM关键接口请求 / 响应可回溯告警降噪区分「正常翻页」与「越权遍历」避免误报淹没真实攻击7 防守反思所谓「摸鱼」是精准作为而非不作为专栏名字叫「其实防守也摸鱼」常被误解成防守就是混日子。走完这一遍流程你会发现恰恰相反真正高效的蓝队不是 7×24 死盯屏幕而是把重复研判交给自动化把人解放出来做威胁狩猎和加固复盘。能自动化的别手动爆破自动拉黑、告警自动分级、日志自动关联——靠 Shell / Python 脚本和 SOAR 剧本别拿人肉 grep 当主力。能前置的别后置资产梳理、漏洞闭环、攻击面收敛、鉴权根治这些事在护网前就该做完而不是等告警来了再补。希望这篇实战复盘能帮你把 BOLA 的攻击手法和防守流程真正串起来。下次在 SIEM 里看到「越权遍历」告警你就能快速定位、果断遏制、精准溯源最后把漏洞彻底堵上。
返回列表