Web攻防--JS算法逆向--断点调试--反调试&&代码混淆绕过

JS算法逆向

在进行渗透测试过程中,在一些功能点进行参数注入或者枚举爆破等过程中,会出现参数进行加密的情况,但是我们输入参数并不是加密状态,即便测试点存在漏洞也不可能测试成功,这时候便需要将所提交参数进行加密后在进行注入,针对JS应用我们可以采用JS断点调试的方法将加密算法逆向出来,再使用插件将加密后的参数进行注入

  • 代码全局搜索

    即将参数提交的网址、目录等关键字在开发者工具中进行搜索,再对JS源码进行分析,找出加密算法
  • 文件流程断点

    即查看登录数据包中所调用执行堆栈,文件执行流程为从下往上执行,选用其中可能存在加密过程的文件处进行断点调试



    添加断点后再继续提交参数,观察作用域处的参数加密状况进行判断参数是否已经加密,如果未加密则查看堆栈上方文件中作用域的情况,直到作用域中的参数加密之后,分析代码中是否存在加密函数,找到加密函数后追踪加密文件即可成功获取加密算法。

  • 代码标签断点

    右键审查功能点,在html代码中将标签进行子树修改和属性修改,再次运行功能点即可断点。其他步骤参考文件流程断点。

  • XHR提交断点

    选择数据包中关键url路径



    在源码的顶层文件夹中添加XHR断点关键url,再次运行功能点即可断点,其他步骤参考文件流程断点。

加密算法载入

将加密算法以及加密逻辑找出之后,将加密算法文件另存为。使用brupsuite插件JSEncrypt即可将参数运用在枚举过程中。

载入过程:

  • 下载phantomjs并设置环境变量

    phantomjs下载地址
  • brupsuite加载jsEncrypter插件

    jsEncrypter下载地址



    brupsuite出现此栏目即插件加载成功



    将加密算法文件拷贝至插件所在jar包同级目录



    修改phantomjs_server.js文件中的内容,将加密算法文件名称添加,以及编写算法运行逻辑



    在该目录下使用已经设置了环境变量的phantomjs.exe文件运行phantomjs_server.js文件



    查看brupsuite中插件连接是否成功,并进行测试



    将加密算法加载至枚举爆破过程中,使得枚举的参数在加密后再进行爆破。



    username字段成功加载算法进行枚举

JS反调试绕过

JS反调试,即禁用开发者工具,防止用户查看JS源码,保护敏感数据,防止分析代码。

  • 常见反调试方法

    键盘监听(F12)

    检测浏览器的高度插值

    检测开发者人员工具变量是否为true

    利用console.log调用次数

    利用代码运行的时间差

    利用toString

    检测非浏览器
  • 绕过方法
    • 禁用断点法

      该方法指将开发者工具上的禁用断点开关打开,禁用一切断点,这样自己也就不能断点调试了,不过可以看到源代码

    • 条件断点法

      即将代码中产生断点的语句添加前置条件。

    • 此处暂停法

    • 置空函数法

      即将产生debug的函数跟踪找到,在控制台处重新定义,使得函数不起作用。

    • 本地覆盖法

      这种方法与在文件上传前端检测绕过类似,即将网页所加载关键文件保存在本地,启用本地覆盖,这样浏览器在加载网页时会根据本地覆盖文件进行加载,将反调试函数所在文件以及相关引用文件找出,使用本地覆盖的方法将反调试函数及相关作用代码进行注释修改,即可绕过反调试功能

      在使用这种方法时要将断点功能禁用,否则浏览器加载网页文件将显示不全

JS代码混淆

JS文件在网页中可以被查看到,为了防止源码被调试,或者关键信息泄露,会对JS代码文件进行加密混淆。

常见的JS加密种类有:JJEncode AAEncode JSFuck,Sojson v4,Sojson v5,JSjiami v6 等

破解工具链接JSDec

ak/sk敏感信息泄露

在JS源码中,会泄露url、API信息,从而增加攻击面,如果部署了云服务,接口等服务,可能存在access key等关键信息,通过Pentestkit FindSomething Wappalyzer等浏览器插件可以收集JS代码中的信息,如password,key等,之后可以利用云利用工具上线云服务等

以上内容仅作学习,如有错误或瑕疵,欢迎批评指正,感谢阅读。

Web攻防--JS算法逆向--断点调试--反调试&&代码混淆绕过的更多相关文章

  1. 【Python3爬虫】反反爬之解决前端反调试问题

    一.前言 在我们爬取某些网站的时候,会想要打开 DevTools 查看元素或者抓包分析,但按下 F12 的时候,却出现了下面这一幕: 此时网页暂停加载,也就没法运行代码了,直接中断掉了,难道这就能阻止 ...

  2. APP安全防护基本方法(混淆/签名验证/反调试)

    本教程所用Android Studio测试项目已上传:https://github.com/PrettyUp/SecTest 一.混淆 对于很多人而言是因为java才接触到“混淆”这个词,由于在前移动 ...

  3. 学习:逆向PUSH越界/INT 68/反调试导致的程序

    自己根据shark恒老师的分析,总结一下: 一般反调试自动关闭程序利用的函数有: 1.CreateToolhelp32Snapshot 2.FindWindow 3.ExitProcess 4.Pos ...

  4. 【Python3爬虫】一次应对JS反调试的记录

    一.前言简介 在前面已经写过关于 JS 反调试的博客了,地址为:https://www.cnblogs.com/TM0831/p/12154815.html.但这次碰到的网站就不一样了,这个网站并不是 ...

  5. 使用KRPano资源分析工具强力加密KRPano项目(XML防破解,切片图保护,JS反调试)

    软件交流群:571171251(软件免费版本在群内提供) krpano技术交流群:551278936(软件免费版本在群内提供) 最新博客地址:blog.turenlong.com 限时下载地址:htt ...

  6. APP加固反调试(Anti-debugging)技术点汇总

    0x00 时间相关反调试 通过计算某部分代码的执行时间差来判断是否被调试,在Linux内核下可以通过time.gettimeofday,或者直接通过sys call来获取当前时间.另外,还可以通过自定 ...

  7. 华为手机内核代码的编译及刷入教程【通过魔改华为P9 Android Kernel 对抗反调试机制】

    0x00  写在前面 攻防对立.程序调试与反调试之间的对抗是一个永恒的主题.在安卓逆向工程实践中,通过修改和编译安卓内核源码来对抗反调试是一种常见的方法.但网上关于此类的资料比较少,且都是基于AOSP ...

  8. web 安全 & web 攻防: XSS(跨站脚本攻击)和 CSRF(跨站请求伪造)

    web 安全 & web 攻防: XSS(跨站脚本攻击)和 CSRF(跨站请求伪造) XSS(跨站脚本攻击)和CSRF(跨站请求伪造) Cross-site Scripting (XSS) h ...

  9. JavaScript反调试技巧

    一.函数重定义 这是一种最基本也是最常用的代码反调试技术了.在JavaScript中,我们可以对用于收集信息的函数进行重定义.比如说,console.log()函数可以用来收集函数和变量等信息,并将其 ...

  10. 20145335郝昊《网络攻防》Bof逆向基础——ShellCode注入与执行

    20145335郝昊<网络攻防>Bof逆向基础--ShellCode注入与执行 实验原理 关于ShellCode:ShellCode是一段代码,作为数据发送给受攻击服务器,是溢出程序和蠕虫 ...

随机推荐

  1. python环境的安装与设置和oneforall的安装与使用

    下载python: https://www.python.org/downloads/windows/ 安装python 如果不需要修改路径,下面两个√打开后,点击上面的install now 也可以 ...

  2. SICP:惰性求值、流和尾递归(Python实现)

    求值器完整实现代码我已经上传到了GitHub仓库:TinySCM,感兴趣的童鞋可以前往查看.这里顺便强烈推荐UC Berkeley的同名课程CS 61A. 即使在变化中,它也丝毫未变. --赫拉克利特 ...

  3. vernemq 一个可用的入门指南之一:Mac下的安装及使用,使用MQTTX访问verneMQ

    因为百度到一篇简书的,不可用,所以写这么一篇,方便后来人 物联网的消息队列技术选型,很多地方会推荐使用VerneMQ,这里做一个安装实验记录,并非推荐. git clone https://githu ...

  4. Java的CompletableFuture,Java的多线程开发

    三.Java8的CompletableFuture,Java的多线程开发 1.CompletableFuture的常用方法 以后用到再加 runAsync() :开启异步(创建线程执行任务),无返回值 ...

  5. Jenkins(1)-安装教程

    我用的服务器是阿里云服务器, 服务器系统: CentOS7.9, 不同的操作系统需要下载不同的软件包, 对应的链接如下https://www.jenkins.io/zh/download/ 1) 软件 ...

  6. 园子的商业化努力-行行AI人才培养「常青藤计划」

    各位园子的小伙伴: 感谢大家长期对园子的支持,AI大模型出现之后,各行各业都在积极思考如何应对,如何把业务场景和AI结合.在这个过程中,AI人才缺乏是最核心的问题. 基于此,园子打算在AI人才培养方面 ...

  7. 深度解读 Linux 内核级通用内存池 —— kmalloc 体系

    本文是笔者 slab 系列的最后一篇文章,为了方便大家快速检索,先将相关的文章列举出来: <细节拉满,80 张图带你一步一步推演 slab 内存池的设计与实现> <从内核源码看 sl ...

  8. 【TVM教程】 自定义relay算子

    本文地址:https://www.cnblogs.com/wanger-sjtu/p/15046641.html 本文为tvm 教程的翻译版.这部分介绍了如何在tvm中添加新的relay算子,具体的是 ...

  9. iis7以上 ssl 证书导入

    证书导入 开始 -〉运行 -〉MMC: 启动控制台程序,选择菜单"文件"中的"添加/删除管理单元"-> "添加",从"可用的 ...

  10. EtherCAT 转CCLINK网关连接三菱plc应用案例

    EtherCAT 现场总线协议是由德国倍福公司在 2003 年提出的,该通讯协议拓扑结构十分灵活,数据传输速度快,同步特性好,可以形成各种网络拓扑结构. 捷米特JM-ECT-CCLK  是自主研发的一 ...