首页 > 其他分享 >【Web攻防之业务安全实战指南】第5章 业务办理模块测试

【Web攻防之业务安全实战指南】第5章 业务办理模块测试

时间:2023-12-13 22:12:42浏览次数:34  
标签:Web 登录 攻防 业务 用户 攻击者 测试 篡改 漏洞

5.1 订单ID篡改测试

5.1.1 测试原理和方法
在有电子交易业务的网站中,用户登录后可以下订单购买相应产品,购买成功后,用户可以查看订单的详情。当开发人员没有考虑登录后用户间权限隔离的问题时,就会导致平行权限绕过漏洞。攻击者只需注册一个普通账户,就可以通过篡改、遍历订单id,获得其他用户订单详情,其中多数会包括用户的姓名、身份证、地址、电话号码等敏感隐私信息。黑色产业链中的攻击者通常会利用此漏洞得到这些隐私信息。

5.1.2 测试过程
靶场:5_1.zip

URL:http://192.168.0.101/5_1/login.html

 

 2.burp抓包修改保单号policyNo=P000002,即可越权查看用户lisi保单内容

 3.Intruder模块标记policyNo变量000001部分,从000001遍历到000100

 4.在返回的数据包中,包含全部在界面中被隐藏的身份证号等敏感信息,获取20位用户敏感数据

5.1.3 修复建议

后台查看订单时要通过Session机制判断用户身份,做好平行权限控制,服务端需要校验相应订单是否和登录者的身份一致,如发现不一致则拒绝请求,防止平行权限绕过漏洞泄露用户敏感个人隐私信息。

5.2 手机号码篡改测试

5.2.1 测试原理和方法
手机号通常可以代表一个用户身份。当请求中发现有手机号参数时,我们可以试着修改它,测试是否存在越权漏洞。系统登录功能一般先判断用户名和密码是否正确,然后通过Session机制赋予用户令牌。但是在登录后的某些功能点,开发者很容易忽略登录用户的权限问题。所以当我们用A的手机号登录后操作某些功能时,抓包或通过其他方式尝试篡改手机号,即可对这类问题进行测试。

5.2.2 测试过程
靶场:5_2.zip

URL:http://192.168.0.107/5_2/login.php

1、手机号:15333333333,密码:123456,登录,目前状态:正常状态

 2、手机号:18888888888,密码:123456,登录,目前状态:正常状态

 3、15333333333登录,burp抓包,点击挂失按钮,修改username参数为18888888888

 4、浏览器显示“尊敬的 18888888888 用户,您申请挂失将立即生效,请确认办理。”

 5、在登录页面输入用户名:18888888888,密码:123456,发现18888888888状态变成“挂失”

 

5.2.3 修复建议
后台请求要通过Session机制判断用户身份,如果需要客户端传输手机号码,则服务端需要校验手机号是否和登录者的身份一致。如发现不一致则拒绝请求,防止平行权限绕过。另外,对于手机App程序,不要过于相信从手机中直接读取的手机号码,还是要做常规的身份认证,规范登录流程,防止未授权登录。

5.3 用户ID篡改测试

5.3.1 测试原理和方法
从开发的角度,用户登录后查看个人信息时,需要通过sessionid判定用户身份,然后显示相应用户的个人信息。但有时我们发现在GET或POST请求中有userid这类参数传输,并且后台通过此参数显示对应用户隐私信息,这就导致了攻击者可以通过篡改用户ID越权访问其他用户隐私信息。黑色产业链中的攻击者也喜欢利用此类漏洞非法收集个人信息。

5.3.2 测试过程
靶场:5_3.zip

URL:http://192.168.0.108/5_3/index.php?deliverId=1

1.burp抓包,将deliverId参数值“1”修改为“2”

 2.发包后返回了deliverId=2的收货人信息

 

5.3.3 修复建议
后台功能请求要通过Session机制判断用户身份,不要相信客户端传来的用户ID。如果确实需要客户端传输userid,则服务端需要校验userid是否和登录者的Session身份一致,如发现不一致则拒绝请求,防止被攻击者篡改,未授权访问他人账号内容。

5.4 邮箱和用户篡改测试

5.4.1 测试原理和方法
在发送邮件或站内消息时,篡改其中的发件人参数,导致攻击者可以伪造发信人进行钓鱼攻击等操作,这也是一种平行权限绕过漏洞。用户登录成功后拥有发信权限,开发者就信任了客户端传来的发件人参数,导致业务安全问题出现。

5.4.2 测试过程
靶场:5_4.zip

靶场下载链接:5_4.zip

URL:http://192.168.2.14/5_4/login.php

1.登陆页面,用户名:user0,密码:M8weHI3B

 2.下拉框选择user6发送消息

 3.burp抓包修改发件人参数sender

 4.登录收件人user6账号,用户名:user6,密码:P7uoVb1N,发现发件人被篡改成功

5.4.3 修复建议

用户登录后写信、发送消息时要通过Session机制判断用户身份。如果需要客户端传输邮箱、发件人,服务端需要校验邮箱、发件人是否和登录者的身份一致,如发现不一致则拒绝请求,防止被攻击者篡改用于钓鱼攻击。

5.5 商品编号篡改测试

5.5.1 测试原理和方法
在交易支付类型的业务中,最常见的业务漏洞就是修改商品金额。例如在生成商品订单、跳转支付页面时,修改HTTP请求中的金额参数,可以实现1分买充值卡、1元买特斯拉等操作。此类攻击很难从流量中匹配识别出来,通常只有在事后财务结算时发现大额账务问题,才会被发现。此时,攻击者可能已经通过该漏洞获得了大量利益。如果金额较小或财务审核不严,攻击者则可能细水长流,从中获得持续的利益。事后发现此类漏洞,就大大增加了追责的难度和成本。此类业务漏洞的利用方法,攻击者除了直接篡改商品金额,还可以篡改商品编号,同样会造成实际支付金额与商品不对应,但又交易成功的情况。攻击者可以利用此业务漏洞以低价购买高价的物品。

5.5.2 测试过程
靶场:5_5.zip

靶场下载链接:5_5.zip

URL:http://192.168.2.14/5_5/index.php

1.兑换礼品,当前金币数量:10

 2.礼品1-立即兑换,抓包修改为30金币礼品的礼品号,goods_id=3

 3.兑换成功并在订单信息显示,当前金币数量:-20

5.5.3 修复建议

建议商品金额不要在客户端传入,防止被篡改。如果确实需要在客户端传输金额,则服务端在收到请求后必须检查商品价格和交易金额是否一致,或对支付金额做签名校验,若不一致则阻止该交易。

5.6 竞争条件测试

5.6.1 测试原理和方法
竞争条件通常是在操作系统编程时会遇到的安全问题:当两个或多个进程试图在同一时刻访问共享内存,或读写某些共享数据时,最后的竞争结果取决于线程执行的顺序(线程运行时序),称为竞争条件(Race Conditions)。

5.6.2 测试过程
靶场:upload-labs

靶场下载链接:upload-labs

URL:http://192.168.2.14/upload-labs/Pass-18/index.php

1.首先上传一张正常图片获取文件路径

URL:http://192.168.2.14/upload-labs/upload/4820231007140838.jpg

 2.上传phpinfo文件burp拦截数据包

 3.请求包发送到Intruder模块,payload type设置为null,payload options设置为continue indefinitely,无限发送请求包,并在options中将threads线程修改为30

4.在另一个主机浏览器中访问index.php,burp Intruder模块,payload type设置为null,payload options设置为continue indefinitely,成功访问到phpinfo页面

URL:http:///192.168.2.14/upload-labs/upload/index.php

5.6.3 修复建议
在处理订单、支付等关键业务时,使用悲观锁或乐观锁保证事务的ACID特性(原子性、一致性、隔离性、持久性),并避免数据脏读(一个事务读取了另一个事务未提交的数据),解决竞争条件和并发操作可能带来的相关业务问题。

标签:Web,登录,攻防,业务,用户,攻击者,测试,篡改,漏洞
From: https://www.cnblogs.com/xfbk/p/17900056.html

相关文章

  • 【案例教程】LoadRunner订票系统WebTours部署
    题目:使用LoadRunner自带的测试项目--航班订票管理系统WebTours,网站地址为:http://127.0.0.1:1080/WebTours/(用户名为jojo,密码为bean),完成性能测试,要求:1、虚拟用户为10;2、每隔15s启动2个Vusers;3、运行时间为5min;4、每隔15s停止2个Vusers;5、在分析工具中自定......
  • 基于PyQt和websocket,制作一个简单的BiliBili弹幕机(大体思路)
    前言从B站上获取直播弹幕的方式大体有两种,一种是通过调用下面这个接口,通过轮询获取importrequestsroom_id=123456#示例url='https://api.live.bilibili.com/xlive/web-room/v1/dM/gethistory'headers={'User-Agent':'Mozilla/5.0(WindowsNT10.0;Win64......
  • 【软件安装】Web Tours的安装与启动
    1、下载,地址:https://marketplace.microfocus.com/appdelivery/content/web-tours-sample-application#app_releases2、安装,下载完成后,解压,安装应用程序:strawberry-perl-5.10.1.03、启动服务,下载的zip:WebTours1.0,解压后解压文件夹中存在zip包:WebTours,再次解压,双击StartServer......
  • websocket使用
    WEBSocket(客户端和服务器能够双向同时传输数据):应用层协议,客户端和服务器建立连接时采用http握手方式,建立连接后利用http协议的Upgrade属性将协议变更为WebSocket协议(通过TCP协议来传输数据)http和websocket相同点:1都是建立在TCP之上,通过TCP协议来传输数据;2都是可靠性传输协议......
  • Asp.net core Net6.0 Webapi 项目如何优雅地使用内存缓存
    前言缓存是提升程序性能必不可少的方法,Asp.netcore支持多级缓存配置,主要有客户端缓存、服务器端缓存,内存缓存和分布式缓存等。其中客户端缓和服务器端缓存在使用上都有比较大的限制,而内存缓和分布式缓存则比较灵活。内存缓存就是一种把缓存数据放到应用程序内存中的机制。本......
  • 基于JavaWeb的电影推荐平台的设计与实现
    1.项目演示前端演示地址:http://96.8.117.232:8082/后端演示地址:http://96.8.117.232:8083/(管理员账号:admin密码123456)访问慢是因为服务器是海外的,国内访问慢,便宜VPS凑合了2.项目介绍技术列表技术说明SpringBootWeb应用开发框架Vue3.xjava1.8mysql......
  • BugKu-Web-Flask_FileUpload(模板注入与文件上传)
    FlaskFlask是一个使用Python编写的轻量级Web应用框架。它是一个微型框架,因为它的核心非常简单,但可以通过扩展来增加其他功能。Flask的核心组件包括Werkzeug,一个WSGI工具箱,以及Jinja2,一个模板引擎。Flask使用BSD授权,这意味着它遵循开源许可证,允许用户自由地使用、修改和分发。Fla......
  • JavaWeb - Day06 -MySQL-DDL、DML
    01.MySQL-课程介绍什么是数据库?数据库:英文为DataBase,简称DB,它是存储和管理数据的仓库。像我们日常访问的电商网站京东,企业内部的管理系统OA、ERP、CRM这类的系统,以及大家每天都会刷的头条、抖音类的app,那这些大家所看到的数据,其实都是存储在数据库中的。最终这些数据,只是在......
  • Web 安全之 DNS 信息收集指南
    简介在进行网络安全评估和渗透测试时,DNS(DomainNameSystem)信息收集是一个至关重要的环节。通过获取目标域名的DNS信息,渗透测试人员可以获得有关目标系统的关键信息,为后续攻击策略制定提供基础。本文将深入介绍DNS信息收集的方法和工具,以帮助安全专业人员和渗透测试人员更好地......
  • javaWeb项目开发文件上传与下载功能实现
    Web开发文件上传与下载依赖<!--java生成excel文件插件--><dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>3.15</version></dependency><!--文件上传--><dependency><g......