javascript逆向调试初探

admin 2022年4月9日16:45:10安全文章评论20 views1515字阅读5分3秒阅读模式

javascript是web应用的重要部分,是web应用动态交互及展示的关键所在,web应用开发者们往往会在javascript中编写大量的逻辑代码与后端接口进行交互,例如在javascript中编写ajax代码与后端接口进行异步请求等。因此javascript在web安全领域也是备受关注的,javascript代码中包含了大量的接口地址、接口请求方式、参数传递格式,甚至还会包含开发阶段的测试数据如测试账号、测试凭证等,而这些都是攻击者们非常感兴趣的可以进行利用的攻击点。下面就对实际web渗透中常用的javascript逆向调试手法进行简单的介绍。


javascript调试入门

javascript逆向调试初探

使用浏览器打开https://googlechrome.github.io/devtools-samples/debug-js/get-started


这是一个学习使用chromedevtools对程序进行debug的demo应用。


javascript逆向调试初探


分别在number1和number 2的输入框中输入数据,点击addnumber 1 and number 2按钮。


javascript逆向调试初探


可以看到程序输出了1+2的结果为12,这明显是错误的,接下来就需要我们利用devtools对程序进行debug找到其中的错误并进行修正,使程序输出正确的答案。


我们在当前浏览器窗口中按下f12键,chrome浏览器就会弹出devtools工具的界面。


javascript逆向调试初探


点击sources选项,可以对当前网页的所有资源列表进行查看,包括javascript代码文件、html代码文件、css代码文件等,如果javascript代码存在被压缩的情况,可以点击{}按钮对javascript代码进行格式化。


javascript逆向调试初探


接下来我们需要对点击add number 1 and number 2按钮后发生的计算逻辑进行捕获,展开eventlistener breakpoints,选择mouse->click。


javascript逆向调试初探


此时再点击addnumber 1 and number 2按钮,代码将会在点击按钮事件的入口处暂停。


javascript逆向调试初探


此时可以使用f9按键进行单步调式,查看程序的运行逻辑,同时检查参数赋值情况。


javascript逆向调试初探


从调试中可以看出,错误发生在get-started.js代码的第32行:


var sum =addend1 + addend2;

该行直接将输入的字符串类型数据进行相加,所以得到了错误的结果,可以使用parseInt函数进行修正

可以在console窗口中进行修正测试

parseInt(addend1)+parseInt(addend2);


javascript逆向调试初探


修正后得到了正确的结果。


javascript逆向加密爆破

javascript逆向调试初探

在实战中非常常见的一种场景是目标网站为了防止攻击者对登录入口进行爆破,会对登录数据包中的账号、密码字段进行加密,攻击者无法使用常规的明文字典进行爆破。这个时候由于账号、密码的加密都是在javascript中进行,可以通过调试对javascript代码进行逆向,找到相应的加密javascript代码,使用加密代码对明文字典进行批量转换后即可进行爆破。


以某站登录口为例,通过上面的调试技巧我们定位到如下的javascript加密函数。


javascript逆向调试初探


将上图中91行到113行的代码完整复制到console窗口中。


修改传入的username、password的初始值,即v1、v2,同时使用console.log打印经过加密后的账号、密码的值。


如下:

javascript逆向调试初探


在console窗口中回车运行上述代码,即可得到加密后的账号密码值,v1的值对应“admin”,v2的值对应“123456”。


javascript逆向调试初探


通过浏览器插件或者其他工具调用上述代码即可批量对明文字典进行加密产生对应后的加密字典。


javascript逆向调试初探


javascript逆向调试初探

原文始发于微信公众号(第59号):javascript逆向调试初探

特别标注: 本站(CN-SEC.COM)所有文章仅供技术研究,若将其信息做其他用途,由用户承担全部法律及连带责任,本站不承担任何法律及连带责任,请遵守中华人民共和国安全法.
  • 我的微信
  • 微信扫一扫
  • weinxin
  • 我的微信公众号
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年4月9日16:45:10
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                  javascript逆向调试初探 http://cn-sec.com/archives/888941.html

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: