美文网首页程序员
一次前端安全测试小计

一次前端安全测试小计

作者: 白鹭鹭鹭 | 来源:发表于2022-02-17 13:08 被阅读0次

一、前言

遇到一个传输过程数据被加密的网站,无法重放改包,前端也做了较为严格的限制,测试一度陷入僵局,最终从js找到突破点拿到web后台管理员权限

二、过程

网站前端操作逻辑由js控制,首次请求返回内容为静态资源调用,随后js向页面填充内容

image

传输过程对数据做了加密处理

image

2.1 敏感信息泄漏

前端逻辑由js控制,全网站请求路径及参数构造方式明文出现在js中,打开开发者工具即可看见敏感信息

image

通过jsfinder对调用的38个js进行匹配,发现779条url

image

再放入burp做存活探测,263个地址可以直接被访问到,如果后端鉴权功能不完善,则可能存在大量未授权访问

image

2.2 任意用户密码修改

泄漏地址中/xx-password可疑,是一个密码修改的web,访问后填写数据后点击确定,没有请求发出,但登录后再测试能正常修改密码,存在问题:

  • 用于用户初次登陆强制修改密码的接口未做限制,导致可在登录状态下不输入原密码即可修改新密码

随后手动点击logout后再次测试便可以发出请求,多次测试确认与cookie相关,登陆成功后服务器下发cookie,前端js会提取该cookie生成一个新的请求头Access-Token用于身份鉴别,当未能从cookie中提取token时便不会进入处理流程就不会触发请求事件,所以未登录状态点击提交没有请求发出,登出后cookie未被删除依然可以生成token

image

继续测试,此时请求头已有一个失效的合法token,但返回用户类型错误,猜测传入参数还存在问题

image

但传输过程被加密,无法改包测试

image

只能从参数构造入手,找到button绑定click事件

image

进入函数,找到核心代码,p()函数传入密钥(t)和待加密数据(e)两个值,可以看到断点处此时userIduserType未绑定值,函数内使用sm2算法对密钥加密、aes算法对数据加密,然后分别放入keycontent字段返回,这种结构类似https模型,使用非对称算法加密密钥、对称算法加密数据

[图片上传失败...(image-b5b13f-1645084626312)]

理解了构造流程,尝试写入普通用户的userIDuserType后放包,修改密码成功,猜测后端服务器只验证了token的真实性,便提取用户id进入修改密码流程,依此逻辑可以尝试遍历管理员id,但生产环境会造成大量账号无法登陆,最终由客户提供管理员id完成漏洞测试,成功修改管理员密码

image

image

拿到后台管理员账户权限

image

2.3 小结

js泄漏网站路径 --> 敏感业务未授权访问 --> 服务器弱鉴权机制 --> 参数构造方法透明 --> 获得web管理员权限

三、总结

从用户输入处的敏感字符检测到请求发送过程数据加密再到服务端响应内容加密,网站做了较为系统的安全防护,但忽略了一个重要的点是:js是透明的,该网站使用js驱动关键业务但未对代码做安全加固明文出现在页面中,运行逻辑完全可见,传输过程防护失效,整体安全性降低,同时大量敏感数据也出现在js代码中,连同后端不完善的权限设计,系统变得不再安全可靠,建议:

  • 不要将敏感数据写入js代码中,如果因业务需要也应对代码进行加固(如:混淆、加密、反调试)后再投入生产环境

相关文章

  • 系统安全测试要点

    作为测试工程师不仅仅要干好自己功能,自动化,性能测试,还应该关注安全性测试。 安全测试分为部分∶ 一、web前端的...

  • 测试小计

    测试用例注意点 测试用例的设计中涉及到表格,图表等多数据展示时,一定要产品给出数据展示的顺序。如果产品没有给出的话...

  • 软件硬件测试快速入门:前端和后端测试的区别

    前端测试简介 前端测试是一种展示层的测试。外包测试大多是点点点,多属于前端测试。 前端测试检查GUI或Web等可视...

  • 前端单元测试(一) - 入门向

    目录 概述为何要写测试前端测试的类型TDD vs BDD 常用前端单元测试框架JestMocha More前端测试...

  • 前端测试

    前端测试的现状 前端测试可以从API测试和GUI测试入手,虽然部分的代码是可以通过API测试来保证质量,但在前端项...

  • 前端测试框架 Jest

    前端测试工具一览 前端测试工具也和前端的框架一样纷繁复杂,其中常见的测试工具,大致可分为测试框架、断言库、测试覆盖...

  • 测试类型划分

    功能测试 性能测试 性能测试主要包含以下方面: 性能测试指标 性能测试常用工具 安全测试 安全测试常用工具 安全测...

  • react测试用例

    什么是测试用例 字面理解来说,就是测试一个东西,对于我们前端开发来说就是测试前端功能,前端主要分为 html cs...

  • web安全测试文章

    Web安全测试漏洞场景 web安全性测试用例 验证码的测试用例分析 WEB安全测试的类型 Web安全测试中常见逻辑...

  • 在功能测试中需要有安全测试思维(文尾附安全测试工具)

    “ 什么是安全测试?为什么要做安全测试?安全测试与功能测试之间有何联系? ” 今天,很多软件并没有经过专门的安全测...

网友评论

    本文标题:一次前端安全测试小计

    本文链接:https://www.haomeiwen.com/subject/scdslrtx.html