首页 > 其他分享 >【业务安全实战演练】业务接口调用模块测试9

【业务安全实战演练】业务接口调用模块测试9

时间:2023-12-21 15:12:04浏览次数:34  
标签:返回 调用 模块 url 业务 接口 token 测试 演练

业务接口调用模块

1,接口调用重放测试

测试方法:接口调用重放测试可以理解成重放测试,接口也就是数据请求,功能很多,例如发布文章,发布评论,下订单,也可以理解成只要请求有新的数据生成,能重复请求并成功,都可以算请求重放,也就是接口重放测试。

修复方法:对生成订单缓解可以使用验证码,防止生成数据的业务被恶意调用。或是每一个请求有唯一的一个 token,请求提交后,token 失效这样。也可以参考微信的做法,在参数中添加 timestamp 和 nonce,并对其进行签名加密。

2,接口调用遍历测试

测试方法:例如有一个功能,是浏览商品的历史记录。把其用户的浏览历史记录 url 发送到 intruder,遍历其用户的 id,看返回 response 信息中是否有正常返回的,且是其他用户的,则证明存在接口遍历问题。

修复方法:在 session 中存储当前用户的凭证或者 id,只有传入凭证或者 id 参数值与 session 中的一致再返回数据内容。

3,接口调用参数篡改测试

测试方法:例如在一些短信验证码、邮件验证码等功能业务中,比如修改其他用户密码,发送后,再次点击重新发送,拦截其请求,修改为自己的账号,如果自己收到了验证码,则存在此问题。

修复方法:会话 session 中存储重要的凭证,在忘记密码、重新发送验证码等业务中,从 session 获取用户凭证而不是从客户请求的参数中获取。从客户端处获取手机号、邮箱等账号信息,要与 session 中的凭证进行对比,验证通过后才允许进行业务操作。

4,接口未授权访问

测试方法:只要是登录后才可以返回相关信息的接口,在未登录状态下也可以返回的,就是未授权访问。在一般的网站测试中,可以 http history 中选择网站的根目录地址,然后右键 spider from here 进行爬去相关的 url,然后在 target 栏下的 site map 中利用 mime type 进行筛选,主要关注一下 json、script、xml 等这些类型,然后把 url 贴到浏览器中看是否能访问来验证。

经验之谈:或者在测试的时候,相关数据包发送到 repeater 后,删除 cookie 进行 go,如果成功返回信息,则是存在此问题的。但把 url 贴到浏览器中时会跳到登录页,这时为了验证可以使用 firefox 的 backfar 插件再试。

修复方法:利用 token 校验的方式,在 url 中添加一个 token 参数,只有 token 验证通过才返回接口数据且 token 使用一次后失效。在接口被调用时,后端对会话状态进行验证,如果已经登录,便返回接口数据,如果未登录,则返回自定义的错误信息。

5,callback 自定义测试

测试方法:因为同源策略,很多网站都会使用 JSONP,而 JSONP 一般会使用 callback 回掉函数,如果这个函数没有做相关的措施,可以随意传入 js 代码并执行则存在此问题。

可以使用 burp 的爬虫功能,先爬去目标网站,然后筛选一下包含有 callback 关键词的 url,看 response 返回的 mime 类型,如果是 text/html 的,则可以输入 js 代码确认下是否存在这个问题。

修复方法:首先可以定义下 content-type 为 json 格式,content=application/json。其次建立 callback 函数白名单,如果传入的函数不是白名单内的,则组织并转到异常页。最后可以对 callback 参数进行 html 实体编码来过滤掉一些特殊字符。

6,webservice 测试

这个测试我目前没有具体的实操过,之前有一次是接口测试就是 webservice 的。回头有测试用例的话,再单独记录一篇博客。

 

标签:返回,调用,模块,url,业务,接口,token,测试,演练
From: https://www.cnblogs.com/xfbk/p/17918413.html

相关文章

  • Python中Selenium模块的使用详解
    Selenium的介绍、配置和调用Selenium(浏览器自动化测试框架) 是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7,8,9,10,11),Firefox,Safari,GoogleChrome,Opera等。这个工具的主要功能包括:测试浏览器的兼容性——......
  • 单点登录业务场景和使用流程
    单点登录:己方系统(a)域名链接单点登录提供方(b)的登录在b页面上进行账号密码的登录操作,将登录信息转发到a系统的登录接口,而后a系统发送请求前往b系统的登录获取token在获取token的时候a方便可将用户信息和token一起返回,也可多写一个使用token换取用户身份信息的接口进行返回,b系统......
  • time 和 hashlib模块
    【一】time模块【1】时间戳importtimeprint(time.time())#1703122154.8660362【2】时间元组本地时间print(time.localtime(time.time()))#time.struct_time(tm_year=2023,tm_mon=12,tm_mday=21,tm_hour=9,tm_min=30,tm_sec=38,tm_wday=3,tm_yday=355,tm_isdst=......
  • 用低代码如何实现复杂的业务流程的撤回与重新开始?
    在当今的数字化时代,业务流程的效率和准确性对于企业的运营至关重要。在实际业务场景中,我们可能需要处理一些复杂的流程,例如申请审批流程、合同签订流程等。这些流程在执行过程中可能会遇到各种情况,例如某个审批步骤需要重新审核,或者发现申请信息有误,这时我们需要能够撤回流程并重新......
  • 《业务安全实战演练》时效绕过测试10
    一、大多有利用的案例发生在验证码以及业务数据的时效范围上,在之前的总结也有人将12306的作为典型,故,单独分类。1、时间刷新缺陷12306网站的买票业务是每隔5s,票会刷新一次。但是这个时间确实在本地设置的间隔。于是,在控制台就可以将这个时间的关联变量重新设置成1s或者更小,这样刷......
  • 【业务安全实战演练】密码找回模块测试08
    一、验证码客户端回显测试典型场景:任意用户登录使用验证码的场景:人机验证:防止机器操作,爆破表单。唯一凭据:唯一性判断,任意账户登录。​找回密码测试中要注意验证码是否会回显在响应中,有些网站程序会选择将验证码回显在响应中,来判断用户输入的验证码是否和响应中的......
  • 【业务安全实战演练】业务流程乱序测试07
    一、流程乱序测试1、测试原理和方法该项测试主要针对业务流程的处理流程是否正常,确保攻击者无法通过技术手段绕过某些重要流程步骤,检验办理业务过程中是否有控制机制来保证其遵循正常流程。例如业务流程分为三步:第一步,注册并发送验证码;第二步,输入验证码;第三步,注册成功。在第三......
  • OS模块和JSON模块
    OS模块和JSON模块【一】OS模块【二】JSON模块【1】序列化与反序列化序列化和反序列化是计算机科学中数据处理中的两个过程,用于将数据从一种格式转换为另一种格式。这两个过程通常称为编码和解码。序列化是将数据结构或对象转换为字节序列的过程,使得数据可以以一种易于传输......
  • ATM2.0模块版
    ATM项目开发(1)在主程序文件中创建程序入口(2)在核心代码文件(视图层)搭建程序框架(3)进行代码功能分配-ATM项目根目录-README.md项目说明书-start.py项目启动文件的创建方式二,直接暴露在最外层-conf配置文件-settings.py-lib公共方法文件......
  • python之常用模块
    【time/datetime】(时间模式转换)    【datetime】 【os模块】  【random模块】 【json模块:序列化与反序列化】  案例  【subprocess模块】  【hash模块】 案例 【sys模块】 ......