JS安全应用

news2025/1/21 12:20:23

JS应用

常见分析调试:

-代码全局搜索

案例

登录框,可以看到发送用户名密码被JS加密

在这里插入图片描述

搜索Username,找到加密地方

logindata.UserName = encodeURI(encrypt.encrypt(numMobile));
        logindata.Mobile = encodeURI(encrypt.encrypt(numMobile));;
        //加密密码
        logindata.Password = encodeURI(encrypt.encrypt(numPassword));

在这里插入图片描述

使用控制台加密,报错没有声明函数

encodeURI(encrypt.encrypt(1231231424));

在这里插入图片描述

搜索encrypt,找到声明encrypt函数的地方

在这里插入图片描述

声明encrypt函数后进行加密

var encrypt = new JSEncrypt();
encodeURI(encrypt.encrypt(1231231424));

在这里插入图片描述

断点

-文件流程断点
案例

发送数据包后可以在启动器看到有发送顺序

在这里插入图片描述

点击Login.js?v=20240516211949:222跳转到ajax

在这里插入图片描述

点击左边,进行断点调试,然后重新登录,放在logindta上就可以看到,登录数据已经被加密了

在这里插入图片描述

打开调用堆栈,查看数据什么时候被加密的

在这里插入图片描述

搜索logindata,鼠标放到encrypt.encrypt,显示了加密算法文件

在这里插入图片描述

-代码标签断点
案例

鼠标放到登录,右击检查标签

在这里插入图片描述

鼠标右击点击中断于属性修改,有修改就断

在这里插入图片描述

点击登录就成功断点

在这里插入图片描述

断点找到加密用户名密码js

在这里插入图片描述

将加密js文件全部复制

在这里插入图片描述

将o直接赋值为生成出来的值

var r = new JSEncrypt
o = "305c300d06092a864886f70d0101010500034b003048024100959684a0076fd2a8fc1589469cf8c95f16ef67490c519f4d274373f29cee64cf6a0db8ad8953122c5b3664e4a48acd34d9b95c0ae62a31be612632e1c49154db0203010001"
;
r.setPublicKey(o);
var s = r.encrypt(123)
console.log(s)

在这里插入图片描述

-XHR提交断点
案例

先抓包看类型是不是xhr

在这里插入图片描述

在请求包标头找到请求网址的路径,复制/Vip/LoginResult

在这里插入图片描述

然后找到源代码,将复制的路径添加到XHR断点

在这里插入图片描述

点击登录就被断点

在这里插入图片描述

在这里插入图片描述

-密码登录枚举爆破

JS逆向-结合BurpSuite-插件引用
根据使用系统下载phantomjs

在这里插入图片描述

设置环境变量

将phantomjs路径添加到path里面

在这里插入图片描述

检查环境变量是否设置成功

在这里插入图片描述

BurpSuite加载jsEncrypter插件

在这里插入图片描述

添加jsEncrypter插件

在这里插入图片描述

添加成功就会出现这个

在这里插入图片描述

对逆向的加密算法提取JS文件及代码

将加密算法JSEncrypt.js文件下载到同级目录

在这里插入图片描述

修改加密js文件,将调用算法代码编写

var r = new JSEncrypt
	o = "305c300d06092a864886f70d0101010500034b003048024100959684a0076fd2a8fc1589469cf8c95f16ef67490c519f4d274373f29cee64cf6a0db8ad8953122c5b3664e4a48acd34d9b95c0ae62a31be612632e1c49154db0203010001";
	r.setPublicKey(o);
	var newpayload = r.encrypt(payload)

在这里插入图片描述

使用phantomjs加载phantomjs_server.js文件开启127.0.0.1:1664服务

phantomjs phantomjs_server.js

在这里插入图片描述

进入burp,找到jsEncrypter模块,点击连接,连接成功会出现True,点击test,测试是否能够加密成功

在这里插入图片描述

抓到登录流量包,放入intruder模块下,将password添加为爆破点

在这里插入图片描述

加载一个字典,添加burp插件选择JsEncrypter插件

在这里插入图片描述

点击启动,点击一个数据包可以看到,password已经被加密

在这里插入图片描述

反调试

实现防止他人调试、动态分析自己的代码

在这里插入图片描述

检测调试方法

-键盘监听(F12)
-检测浏览器的高度插值
-检测开发者人员工具变量是否为true
-利用console.log调用次数
-利用代码运行的时间差
–利用toString
-检测非浏览器

常见绕过方法

-禁用断点法
-条件断点法
-此处暂停法
-置空函数法

-本地覆盖法

右键和F12都有检测

在这里插入图片描述

打开一个新页面提前打开调试

在这里插入图片描述

搜索关键字

在这里插入图片描述

选择替换本地文件

在这里插入图片描述

点击允许

在这里插入图片描述

搜索关键字debug,注释后ctrl+s保存

在这里插入图片描述

刷新后可以看到右键已经可以打开了

在这里插入图片描述

混淆加密-识别&还原

代码混淆加密:

上述几种方法,已经达到了反调试的效果,但如果他人查看代码,也可能被找出检测功能并删去。为了防止反调试功能被剔除,我们可以对JS代码进行混淆加密。

1、开源代码混淆解密

在线加密网址:https://www.sojson.com/

源代码

function qiangsec(){
	console.log('hello qiangsec')
}
qiangsec();
JJEncode

在这里插入图片描述

在本地服务器运行加密后的代码

在这里插入图片描述

AAEncode

在这里插入图片描述

在本地服务器运行加密后的代码

在这里插入图片描述

JSFuck

在这里插入图片描述

在本地服务器运行加密后的代码

在这里插入图片描述

安装Rainbow Brackets Lite 插件

在这里插入图片描述

删除最后括号

在这里插入图片描述

再执行代码就还原了

在这里插入图片描述

案例

响应包是jsfuck加密

在这里插入图片描述

在本地服务器运行加密后的代码

在这里插入图片描述

将最后括号里的内容删除

在这里插入图片描述

还原代码

在这里插入图片描述

2、商业代码混淆解密

官方加密网址https://www.jsjiami.com/

加密算法已经告诉了

在这里插入图片描述

直接使用https://jsdec.js.org/使用jsjiami V6解密,加密的js文件是一个编码数据的

在这里插入图片描述

这是加密后的数据

在这里插入图片描述

使用AES解码,还原后的数据

在这里插入图片描述

JS安全

在Javascript中也存在变量和函数,当存在可控变量及函数调用即可参数漏洞。
JS开发应用和PHP,JAVA等区别在于即没源代码,也可通过浏览器查看源代码。
获取URL,获取JS敏感信息,获取代码传参等,所以相当于JS开发的WEB应用属于白盒测试,一般会在JS中寻找更多URL地址,(加密算法,APIkey配置,验证逻辑,框架漏洞等)进行后期安全测试。

1、会增加攻击面(URL、接口,分析调试代码逻辑)
2、敏感信息(用户密码、ak/sk、token/session)
3、潜在危险函数(eval、dangerallySetInnerHTML)
4、开发框架类(寻找历史漏洞Vue、NodeJS、Angular等)

打包器Webpack:PackerFuzzer
AK/SK云安全利用:工具箱CF(云安全后续会讲更多)
浏览器插件:Pentestkit FindSomething Wappalyzer(前期的JS收集项目)

前端验证

响应包返回数据

在这里插入图片描述

复制访问路径,在js文件中搜索

在这里插入图片描述

在这里插入图片描述

状态码为200就验证成功

在这里插入图片描述

返回request包

在这里插入图片描述

将206改成200

在这里插入图片描述

直接跳过验证码修改密码

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1837717.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Jmeter如何进行分布式测试

使用Jmeter进行性能测试时,有些同学问我如果并发数比较大(比如最近项目需要支持1000并发),单台电脑的配置(CPU和内存)可能无法支持,怎么办就需要使用分布式压测 1.分布式原理: 1、Jmeter分布式测试时,选择其中一台作…

视频融合共享平台LntonCVS视频监控管理平台技术方案详细介绍

LntonCVS国标视频综合管理平台是一款以视频为核心的智慧物联应用平台。它基于分布式、负载均衡等流媒体技术进行开发,提供广泛兼容、安全可靠、开放共享的视频综合服务。该平台具备多种功能,包括视频直播、录像、回放、检索、云存储、告警上报、语音对讲…

jpa下hibernate的ddl-auto的各种属性

在jpa中ddl-auto一共有四种,分别为: ddl-auto:create ----每次运行该程序,没有表格会新建表格,表内有数据会清空; ddl-auto:create-drop ----每次程序结束的时候会清空表 ddl-auto:…

2024最新IDEA插件开发+发布全流程 SelectCamelWords[选中驼峰单词](idea源代码)

2024最新IDEA插件开发(发布)-SelectCamelWords[选中驼峰单词](idea源代码) 参考文档 Jetbrains Idea插件开发文档: https://plugins.jetbrains.com/docs/intellij/welcome.html代码地址:https://github.com/yangfeng…

如何覆盖!important修饰的属性

最简单的方法 如果这个!important修饰的属性 是自己的写的,去掉这种写法,使用优先级的方式来写这个属性(.outter .inner 的优先级就会比 。outter的优先级高) 复杂的方法:用魔法打败魔法 但是这个样式来自于全局css&am…

代码随想录——子集Ⅱ(Leecode 90)

题目链接 回溯 class Solution {List<List<Integer>> res new ArrayList<List<Integer>>();List<Integer> list new ArrayList<Integer>();boolean[] used; public List<List<Integer>> subsetsWithDup(int[] nums) {use…

Maven 插件列表详解

Maven 是一个强大的项目管理和构建工具&#xff0c;广泛应用于 Java 项目中。作为一款优秀的构建管理工具&#xff0c;Maven 不仅提供了标准化的项目结构和依赖管理&#xff0c;还通过其丰富的插件系统&#xff0c;极大地扩展了其功能和灵活性。无论是代码编译、测试、打包&…

第55期|GPTSecurity周报

GPTSecurity是一个涵盖了前沿学术研究和实践经验分享的社区&#xff0c;集成了生成预训练Transformer&#xff08;GPT&#xff09;、人工智能生成内容&#xff08;AIGC&#xff09;以及大语言模型&#xff08;LLM&#xff09;等安全领域应用的知识。在这里&#xff0c;您可以找…

怎样搭建serveru ftp个人服务器

首先说说什么是ftp&#xff1f; FTP协议是专门针对在两个系统之间传输大的文件这种应用开发出来的&#xff0c;它是TCP/IP协议的一部分。FTP的意思就是文件传输协议&#xff0c;用来管理TCP/IP网络上大型文件的快速传输。FTP早也是在Unix上开发出来的&#xff0c;并且很长一段…

【linux】内核从tcp层调用IP层摸索中

合入代码&#xff1a; 登录 - Gitee.com 这是运行日志&#xff1a; https://gitee.com/r77683962/linux-6.9.0/raw/master/test_log/kern_tcp_ip.log 日志截取部分&#xff08;也不知道对不对&#xff0c;凭感觉走。。。。&#xff09;

「51媒体」电视台媒体邀约采访报道怎么做?

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 电视台作为地方主流媒体&#xff0c;对于新闻报道有着严格的选题标准和报道流程。如果您希望电视台对某个会议或活动进行报道&#xff0c;可以按这样的方法来做&#xff1a; 1.明确活动信…

BizDevOps全局建设思路:横向串联,纵向深化

本文来自腾讯蓝鲸智云社区用户&#xff1a;CanWay BizDevOps概述 IT技术交付实践方法在不断迭代中持续优化。在工业化时代&#xff0c;Biz&#xff08;业务&#xff09;、Dev&#xff08;开发&#xff09;、Ops&#xff08;运维&#xff09;三者往往相对分离&#xff0c;甚至有…

Python3 Matplotlib展示数据

matplotlib 是一个 Python 库&#xff0c;用于创建各种类型的图表和可视化。它提供了一个类似于 MATLAB 的绘图界面&#xff0c;使用户能够轻松地绘制线图、散点图、直方图、饼图等各种图表类型。matplotlib 可以在 Python 脚本、IPython shell、Jupyter Notebook 等环境中使用…

《梦醒蝶飞:释放Excel函数与公式的力量》3.3常用数学函数:AVERAGE

3.3常用数学函数&#xff1a;AVERAGE 在Excel中&#xff0c;AVERAGE 函数用于计算一系列数值的平均值。这个函数在数据分析中非常有用&#xff0c;因为它可以快速提供数值集的中心趋势。 1)基本语法&#xff1a; AVERAGE(range) 或者 AVERAGE(number1,[number2,...]) ran…

Jetpack Compose_Alignment对其+Arrangement排列

文章目录 1.Alignment 对齐1.1Alignment 对齐方式1.2AbsoluteAlignment 绝对对齐1.3BiasAlignment 偏差对齐1.4BiasAbsoluteAlignment偏差绝对对齐 2.Arrangement 排列2.1Arrangement 排列方式2.2Arrangement.Horizontal2.3Arrangement.Vertical 1.Alignment 对齐 1.1Alignmen…

Linux之旅: 基础知识点的终极指南

文章目录 1、Linux的目录结构2、ls命令3、管理文件和目录4、linux命令使用细节和技巧5、权限管理基本命令6、搜索命令7、管道符与重定向8、压缩和解压命令9、用户及vim编辑器10、用户和用户组管理一、Linux系统用户账号的基本管理二、Linux系统用户组的管理 1、Linux的目录结构…

大数据集群离线解析经纬度逆编码地址

背景 最近有个需要需求把经纬度解析为地址&#xff0c;那么通常解析地址市面上流行的方案就是调取百度、高德地图的接口进行解析。 难点 但是在用这个方案遇到一个问题就是企业认证的百度地图每天的逆编码解析为300w次&#xff0c;qps为100次/秒&#xff0c;对于日增上千万的…

2025年计算机毕业设计题目参考-简单容易

2025年最新计算机毕业设计题目参考-第二批 以下可以参考 企业员工薪酬关系系统的设计 基于SpringBoot在线远程考试系统 SpringBootVue的乡政府管理系统 springboot青年公寓服务平台 springboot大学生就业需求分析系统 基于Spring Boot的疗养院管理系统 基于SpringBoot的房屋交…

MySQL全解(基础)-(MySQL的安装与配置,数据库基础操作(CRUD,聚合,约束,联合查询),索引,事务)

MySQL安装与配置 1.数据库介绍 存储数据用文件就可以了&#xff0c;为什么还要弄个数据库? 文件保存数据有以下几个缺点&#xff1a; 文件的安全性问题 文件不利于数据查询和管理 文件不利于存储海量数据 文件在程序中控制不方便数据库存储介质&#xff1a; 磁盘 内存 为了…

从ITIL,CMMI到DevOps的实践与思考

点击进入IT管理资料库 在信息技术迅猛发展的今天&#xff0c;企业对IT运维和管理的要求越来越高。从最早的ITIL&#xff0c;到后来的CMMI&#xff0c;再到现在风靡全球的DevOps&#xff0c;每一个管理框架的出现都代表着一种新的思维和实践模式。ITIL帮助企业建立起系统的IT服…