JS安全应用

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

在这里插入图片描述

直接跳过验证码修改密码

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python将Markdown格式转为HTML:轻松实现博客文章的自动化处理

哈喽,大家好,我是木头左! 引言 编写一篇高质量的博客文章并非易事,尤其是在排版和格式方面。Markdown作为一种轻量级的标记语言,为博主们提供了一种简洁、高效的写作方式。而Python作为一门强大的编程语言&#xff0c…

SpringBoot的入门案例

1、创建一个Maven工程 2、点击设置自动导入jar包 3、导入spring boot需要的依赖 打开sping boot的文档 导入依赖的pom.xml配置内容 4、创建一个spring boot的执行入口程序 5、写controller,service,dao的页面逻辑代码 6、测试,运行工程&#…

Repetition Improves Language Model Embeddings论文阅读笔记

文章提出了一种提高decoder-only LLM的embedding能力的方法,叫echo embeddingslast-token pooling(即直接选最后一个token作为句子的embedding)和直接mean pooling都不如文章提出的echo embedding,做法是把句子重复两次&#xff0…

Ardupilot开源代码之ExpressLRS性能实测方法

Ardupilot开源代码之ExpressLRS性能实测方法 1. 源由2. 测试效果3. 测试配置4. 总结5. 参考资料6. 补充 1. 源由 之前一直在讨论ExpressLRS性能的问题,有理论、模拟、实测。 始终缺乏完整的同一次测试的测试数据集,本章节将介绍如何在Ardupilot上进行获…

【Redis】内存回收和内存淘汰机制

1 概念 Redis 所有的数据都是存储在内存中的, 如果不进行任何的内存回收, 那么很容易出现内存爆满的情况。因此,在某些情况下需要对占用的内存空间进行释放。 Redis 中内存的释放主要分为两类 Redis 中内存的释放主要分为两类: 内存回收: 将过期的 key 清除&#…

算法训练与程序竞赛题目集合(L1)

目录 L1-001 Hello World! 输入格式: 输出格式: L1-002 打印沙漏 输入格式: 输出格式: 输入样例: 输出样例: L1-003 个位数统计 输入格式: 输出格式: 输入样例: 输出样例: L1-004 计算摄氏温度 输入格式: 输出格式…

[保姆级教程]uniapp实现页面路由配置

文章目录 新建目录新建页面配置页面路由修改tabBar地址其他:在package.json中的pages配置详细 新建目录 先点击src–》新建–》目录 输入名称,并以此类推完成所有新建目录 新建页面 右击目录,点击新建–》vue文件 弹出弹框,…

【HTTPS】Wireshark导入密钥文件后仍无法解密https报文

个人搭建了一个HTTPS网站后,想通过Wireshark抓包https报文并解密。在本站查询了大量文章后,发现介绍的方法基本就分两步: 1、在本地Windows系统上新增系统环境变量"SSLKEYLOGFILE",保存Chrome浏览器访问网站时使用的密…

SpringMVC系列五: SpringMVC映射请求数据

SpringMVC映射请求数据 💞获取参数值说明应用实例 💞获取http请求消息头💞获取JavaBean对象使用场景说明应用实例注意事项和细节 💞获取servlet api说明应用实例注意事项和细节 上一讲, 我们学习的是SpringMVC系列四: Rest-优雅的…

Intelij IDEA中Mapper.xml无法构建到资源目录的问题

问题场景: 在尝试把原本在eclipse上的Java Web项目转移至Intelij idea上时,在配置文件均与eclipse一致的情况下出现了如下报错: org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): cn.umbrella.crm_core.…

基于python的三维装箱可视化

背景介绍 本文主要介绍两种基于python的三维装箱可视化能力,第一种是基于mpl_toolkits的静态三维可视化代码,另外一种是基于matplotlib的动态可视化代码。 mpl_toolkits实现 Axes3D简介 mpl_toolkits 是 matplotlib 库的一个模块集合,它包…

STM32单片机USART串口详解

文章目录 1. 通信接口概述 2. 串口通信 3. 硬件电路 4. 电平标准 5. 串口参数及时序 5.1 数据帧的组成 5.2 起始位 5.3 数据位 5.4 校验位 5.5 停止位 5.6 波特率 5.7 数据帧传输过程示例 6. 串口时序 7. USART概述 8. USART框图 9. USART基本结构 10. 数据帧…

【DevOps】Kibana:数据可视化与探索的强大工具

目录 1、Kibana的基本概念 1.1 Elasticsearch集成 1.2 可视化类型 1.3 仪表板 2、 Kibana的主要功能 2.1 数据探索 2.2 可视化分析 2.3 仪表板管理 2.4 日志分析 2.5 监控与警报 3、 Kibana的使用场景 3.1 应用性能监控(APM) 3.2 安全信…

初始化一个Android项目时,Android Studio会自动生成一些文件和目录结构,以帮助你快速上手开发

当你初始化一个Android项目时,Android Studio会自动生成一些文件和目录结构,以帮助你快速上手开发。这些文件和目录各自有其特定的功能和用途。下面我为你解释一下这些自动生成的内容: 1. app 目录 这是你的应用模块的根目录,包…

27、matlab傅里叶变换:fft()函数

1、傅里叶变换简介 傅里叶变换是数学中一种非常重要的工具,用于将一个函数(通常是时域函数)分解成一组正弦和余弦函数的和。通过傅里叶变换,可以将一个信号从时域转换到频域,以便更好地理解信号的频率成分和频谱特征。…

MySQL 的故事:一场 SQL 语句的戏剧演绎

本文由 ChatMoney团队出品 第一幕:解析与优化 - “翻译官与谋士” SQL 解析器是第一个上场的角色,任务就是把 SQL 请求翻译成 MySQL 能听懂的语言。就像你点餐时,服务员得听懂你到底要什么菜。不然你说“我要一盘炒青菜”,结果服…

可解释机器学习之SHAP方法

以Breast cancer wisconsin (diagnostic) dataset数据集为例。 # Built-in libraries import math import numpy as np import pandas as pd# Visualization libraries import matplotlib.pyplot as plt import seaborn as sns# Sklearn libraries # from skle…

经典游戏案例:unity官方推荐3d跑酷

学习目标&#xff1a;实现跑酷核心算法 游戏画面 项目结构目录 部分核心代码 using System; using System.Collections; using System.Collections.Generic; using UnityEngine; /// <summary> /// 游戏管理器是一个状态机&#xff0c;根据当前的游戏状态&#xff0c;它…

旅游管理平台系统

摘要 如今许多地区的风景已经随着网络技术的不断发展和进步而映入人们的眼帘&#xff0c;旅游已经成为一种大众化的休闲方式。而青海海西州风光旖旎&#xff0c;民族文化独特&#xff0c;更是吸引了众多游客纷至沓来。海西州地域广阔、人烟稀少、是一个经济发展缓慢的地方&…

uni微信小程序使用lottie

在uni插件市场找到 lottie-uni https://ext.dcloud.net.cn/plugin?id1044按照文档要求安装 HBuilderX 引入 下载或导入示例获取插件 import lottie from /common/lottie-miniprogram.jsindex.vue <template><uni-popupref"popup"type"center"ba…