前端无秘密:看我如何策反JS为我所用(上)

admin 2021年4月22日23:42:28评论54 views字数 874阅读2分54秒阅读模式

近日,参加金融行业某私测项目,随意选择某个业务办理,需要向客户发送短信验证码:

前端无秘密:看我如何策反JS为我所用(上)

响应报文中包含大段加密数据:

前端无秘密:看我如何策反JS为我所用(上)

全站并非全参数加密,加密必可疑!尝试篡改密文,页面提示“实名认证异常”:

前端无秘密:看我如何策反JS为我所用(上)

猜测该密文涉及用户信息,且通过前端 JS 解密,验证之。

手工分析

要分析前端,自然得打开浏览器的开发者工具。习惯性按下 F12 键,无反应,显然页面禁用 F12,没有调试环境,所有后续工作均无法开展,我得创造环境。

1.1 创造前端调试环境

虽然禁用 F12,但未禁用 shift-F5,它也能启用开发者工具,或者,页面也未禁用右键,我从元素审查菜单项同样进入开发者工具。前端采用 webpack 打包,通过开发者工具的 {} 简单美化:

前端无秘密:看我如何策反JS为我所用(上)

刚执行前端代码,页面卡死,应该存在反调试逻辑:

前端无秘密:看我如何策反JS为我所用(上)

多次单步执行,发现 setTimeout(e, 100) 语句:

前端无秘密:看我如何策反JS为我所用(上)

业务上几乎不可能用到 100 毫秒的定时器,猜测用于反调试。全局搜索(ctrl-shift-f)该语句,发现只存在于 businessReservation.js 中:

前端无秘密:看我如何策反JS为我所用(上)

尝试删除该语句,看能否禁掉反调试。由于 JS 已被浏览器加载至内存,即便通过开发者工具删掉该语句,浏览器照样会执行它,所以,必须得在浏览器拿到 JS 前就将其删除,也就是说,得让服务端重新下发该 JS,拦截响应包,删除该语句后放行至浏览器。具体而言,JS 作为静态资源,优先从本地缓存中获取而非服务端,必须强制刷新页面(ctrl-shift-r),拦截返回 businessReservation.js 的响应包,搜索关键字 setTimeout(e, 100),无果:

前端无秘密:看我如何策反JS为我所用(上)

考虑到关键字 setTimeout(e, 100) 是经浏览器美化(代码格式化)之后的,尝试去掉逗号后面的空格,用关键字 setTimeout(e,100) 再次搜索,命中:

前端无秘密:看我如何策反JS为我所用(上)

将 setTimeout(e, 100) 改为空语句 ;:

前端无秘密:看我如何策反JS为我所用(上)

放行修改后的 JS 至客户端,之后,前端代码可正常执行,也可随意下断点:

前端无秘密:看我如何策反JS为我所用(上)

这下算是创建出了前端调试的环境。


长按下方二维码或点击底部【阅读原文】查看完整文章内容

前端无秘密:看我如何策反JS为我所用(上)

本文始发于微信公众号(FreeBuf):前端无秘密:看我如何策反JS为我所用(上)

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年4月22日23:42:28
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   前端无秘密:看我如何策反JS为我所用(上)http://cn-sec.com/archives/199746.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息