渗透测试过程中的JS调试(一)

news2025/1/7 12:56:56

前言

前端调试是安全测试的重要组成部分。它能够帮助我们掌握网页的运行原理,包括js脚本的逻辑、加解密的方法、网络请求的参数等。利用这些信息,我们就可以更准确地发现网站的漏洞,制定出有效的攻击策略。前端知识对于安全来说,不但可以提高测试效率,还可以拓宽测试思路。

以下的一个案例是我在测试一个后台管理系统时遇到的问题,本来在登录页面通过js已经发现了接口和字段,但是请求的时候发现不是未授权漏洞,但是字段只有新密码和用户名,那么这个大概率是存在漏洞的。

正文

本次为授权测试,客户有提供账号密码。在后台的修改密码处:

202309221555010.png

JavaScript分析

当我输入正确密码时,又消失,说明存在校验。要么后端校验,要么前端校验。通过前面登录前的js内容,大致可以猜到这个就是前端校验。

我使用burp进行抓取数据包,发现没有请求通过:

202309221555012.png

说明大概率前端校验(也有可能是抓不到,但是概率很小)接下来就是要分析前端js了。这边我主要分析的是文本框的"与初始密码不一致"这个提示信息的判断逻辑:

我这边分析主要有两种方法:

①事件监听器:

通过事件监听器去找对应的js事件,通过正向去查看js,跟着对应的函数一层一层进行代码审计:

202309221555013.png

202309221555014.png

但是通过正向找过去,发现是经过多层调用的。且所有代码经过高度压缩混淆。

这时候还可以通过其他的按钮去找,大概率处理逻辑的js都是在一起的。当然只是可能。

【----帮助网安学习,以下所有学习资料免费领!加vx:yj009991,备注“freebuf”获取!】

① 网安学习成长路径思维导图
② 60+网安经典常用工具包
③ 100+SRC漏洞分析报告
④ 150+网安攻防实战技术电子书
⑤ 最权威CISSP 认证考试指南+题库
⑥ 超1800页CTF实战技巧手册
⑦ 最新网安大厂面试题合集(含答案)
⑧ APP客户端安全检测指南(安卓+IOS)

找到提交按钮。

202309221555015.png

点击是会报错的。查看下这个提交的逻辑:

202309221555016.png

找到submit,去查看调用的js代码:

202309221555014.png

很不幸,还是这个混淆过的看不懂的js。按住ctrl还进不去函数,不知道为什么。GG。

②直接搜对应的关键字,去js里面翻

这个方法应该是大家比较常用的方法了。直接搜索关键字,比如加解密就直接搜索encrypt,一般都有效。

比如这边,可以直接搜索报错信息:与初始密码不一致:

202309221555010.png

202309221555017.png

找过去都是0。这时候就应该考虑,他是否有可能保存在css里面,或者使用urlencode或者Unicode编码。

(PS:因为没有对于后端请求,我们就不做从后端响应的情况假设。不然正常的字符串在前端找不到的情况下,有可能是后端返回的。)

先把这些字符转为Unicode编码查看。作为字符去查询的时候,建议不要全部字符去查询,因为有时候他可能会把对应的字符串分开放,或者做拼接。使用可以直接搜索比如不容易重复的几个关键字。比如这边的"一致"。

202309221555018.png

对于搜索,可以把js和html页面都代理从burp出去,然后使用burp自带的搜索,可能会比较方便。我这边就是采用这种方法进行查询:

202309221555019.png

很幸运,找到了!

±----------------------------------------------------------------------+| function At(n, o) { || || 1 & n && (t.TgZ(0, “mat-hint”), || || t._uU(1, || “\u4e0e\u521d\u59cb\u5bc6\u7801\u4e0d\u4e00\u81f4”), || || t.qZA()) || || } || || function bt(n, o) { || || 1 & n && (t.TgZ(0, “mat-hint”), || || t._uU(1, || “\u4e0e\u8bbe\u7f6e\u7684\u5bc6\u7801\u4e0d\u4e00\u81f4”), || || t.qZA()) || || } |+=======================================================================+±----------------------------------------------------------------------+

可以看到js高度混淆。

对于审计很难。这边我们只需要查看是谁调用了这个函数,网上找这个逻辑即可。

有几种方法可以找到,这边借用new bing的回答:

您好,这是Bing。

根据我的搜索结果,有几种方法可以在Chrome中实现这个功能。我将为您介绍其中的一些方法:

1、使用Chrome开发者工具的搜索功能¹。您可以按下ctrl + shift +F(Windows)或cmd + optn +F(macOS)打开一个跨所有脚本的搜索窗口。然后,您可以勾选"正则表达式"复选框,并搜索函数的名称和定义方式。例如,如果您想要查找名为foo的函数,您可以搜索foo\s*=\s*function(表示foo=function之间有任意数量的空格)或者function\s*foo\s*\((表示functionfoo(之间有任意数量的空格)。搜索结果将显示函数定义所在的脚本和位置,您可以点击它们跳转到相应的代码行。

2、使用Chrome开发者工具的调用栈功能。如果您想要查找一个函数是从哪里被调用的,您可以在函数体内部添加一个断点,然后运行代码。当代码执行到断点处时,开发者工具会暂停,并显示当前的调用栈。您可以在调用栈面板中查看函数被调用的顺序和位置,以及每个函数的参数和局部变量。

3、使用JavaScript代码获取函数的调用者³。如果您想要在代码中获取一个函数是从哪里被调用的,您可以使用arguments.callee.caller属性来访问当前函数的调用者。这个属性会返回一个函数对象,您可以使用它的name属性来获取函数的名称,或者使用它的toString()方法来获取函数的源代码。如果当前函数是从全局作用域被调用的,那么这个属性会返回null,您可以使用条件判断来处理这种情况。

我这边采用了第二点,可以在这边看到栈的调用。

202309221555020.png

成功找到密码判断点:

202309221555021.png

接下来就可以看你想改什么就改什么了。

JavaScript本地修改调试

找到对应函数后,接下来就是修改js里面的内容了。如果想修改js,在前端调试,需要在替换里面添加一个文件夹,然后在js编辑界面保存即可。保存成功会有紫色的小点点:

202309221555022.png

202309221555023.png

在js里面添加一个console.log,测试调试。触发该函数后,成功打印:

202309221555024.png

后续如果想通过前端绕过,可以同样去调试提交按钮。

结尾

可能有些人会说,这么麻烦去绕过做什么?本文只是讲解一些调试思路,和本次的漏洞没有太大关系,只是作为案例讲解。我本身不是做前端出身,主做分享使用。很多方面的知识我也是自己有接触到才去学习,可能对于一些大佬来说,这些都是很基础,勿喷。给自己挖个坑,如果本文反响不错的话,后续给大家分享一些遇到js前端加解密的web站点,该怎么去进行调试和测试。

CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

在这里插入图片描述

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

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

相关文章

【Linux工具系列】linux安装Maven3.6.3

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老导航 檀越剑指大厂系列:全面总结 jav…

运维 在Windows上搭建小型Git服务

文章目录 1、Git选型1.1、主要特性1.2、代码管理1.3、工单管理1.4、Pull/Merge requests1.5、第三方集成1.6、选型结论 2、环境搭建2.1、Gitea下载2.2、Gitea安装2.3、配置服务信息2.4、运行服务2.5、注册Gitea为服务2.6、正常使用 1、Git选型 1.1、主要特性 1.2、代码管理 1.…

优思学院|质量管理怎样才能做好?

质量管理怎样才能做好?这是一个好问题,很多人第一时间会想到建立一个稳定的质量管理体系,例如ISO9001,又或者善用QC七大手法等等,虽然以上这些方法都是实用和正确的,绝大多数企业通常最忽略的,其…

虹科分享 | 平衡速度与优先级:为多样化的实时需求打造嵌入式网络(3)——CAN与CANopen的实时能力与局限性

在回顾了选择具有实时能力的嵌入式通信系统的基本要求之后,我们现在将更详细地探讨CAN和CANopen的实时能力和局限性。 控制器局域网(CAN)协议是各个行业众多应用的基础,每个应用都有其独特的实时需求。CANopen和J1939等著名示例强调了该协议的多种适应性…

PyCharm 配置sqlite3驱动下载问题

单击View -> Tool Windows -> Database,打开Database窗体,之后进行配置,下载驱动包失败! 解决 (1)下载Sqlite3驱动 下载地址: Central Repository: org/xerial/sqlite-jdbc 选择的版本是3.34.0,下载…

黑苹果新手指导:名词解释常用软件常见问题说明

黑苹果新手指导:名词解释&常用软件&常见问题说明 写在前面名词解释系统篇引导篇工具篇 常见问题安装篇如何安装黑苹果?安装过程中卡在一排号怎么办?AMD处理器可以安装黑苹果 macOS吗?我的笔记本电脑为什么不能驱动独立显卡…

溅射沉积镍薄膜的微观结构和应力演化

引言 众所周知,材料的宏观性质,例如硬度、热和电传输以及光学描述符与其微观结构特征相关联。通过改变加工参数,可以改变微结构,从而能够控制这些性质。在薄膜沉积的情况下,微结构特征,例如颗粒尺寸和它们…

穿越数据的迷宫-数据管理知识介绍

一、权威书籍介绍 《穿越数据的迷宫》 本书分12章重点阐述了数据管理的重要性,数据管理的挑战,DAMA的数据管理原则,数据伦理,数据治理,数据生命周期管理的规划和设计,数据赋能和数据维护,使用…

第15届蓝桥STEMA测评真题剖析-2023年10月29日Scratch编程初中级组

[导读]:超平老师的《Scratch蓝桥杯真题解析100讲》已经全部完成,后续会不定期解读蓝桥杯真题,这是Scratch蓝桥杯真题解析第160讲。 第15届蓝桥第2次STEMA测评,这是2023年10月29日举办的STEMA,比赛仍然采取线上形式。这…

PDF Reader Pro 3.0.1.0(pdf阅读器)

PDF Reader Pro是一款功能强大的PDF阅读、注释、填写表单&签名、转换、OCR、合并拆分PDF页面、编辑PDF等软件。 它支持多种颜色的高亮、下划线,可以按需选择,没有空白处可以进行注释,这时候便签是你最佳的选择,不点开时自动隐…

五大匹配算法

五大匹配算法 五大匹配算法 BF 匹配、RK 匹配、KMP 匹配、BM 匹配、Sunday 匹配。 1、BF 匹配 // BF 匹配(暴力匹配) public static int bfMatch(String text, String pattern) {char[] t text.toCharArray();char[] p pattern.toCharArray();int i …

麒麟v10系统,在虚拟机上直接连公司同一个局域网,设置静态ip

1.更改配置信息 cd /etc/sysconfig/network-scripts vi ifcfg-ens33 TYPEEthernet PROXY_METHODnone BROWSER_ONLYno BOOTPROTOstatic DEFROUTEyes IPV4_FAILURE_FATALno IPV6INITyes IPV6_AUTOCONFyes IPV6_DEFROUTEyes IPV6_FAILURE_FATALno IPV6_ADDR_GEN_MODEstable-pri…

智慧储能边缘计算网关应用,提升能源效率

智慧储能通过边缘计算网关物联网技术来实现对储能电池等设备的在线监控和远程管理。边缘计算网关可以将储能数据转化为可用的信息,并传输到储能系统中,为储能管理提供优化与调度等数据支持。 边缘计算网关在智慧储能系统中起到了关键的作用。IR4000边缘计…

二叉树--递归和回溯

首先我们需要了解递归和回溯是什么意思 递归: 定义: 递归是一种在算法或函数中调用自身的过程。递归通常用于解决可以被拆分成相似子问题的问题。在递归算法中,每一次递归调用都是对较小子问题的求解,直到达到某个终止条件&#x…

数据库实验一 数据表的创建与修改管理

数据库实验一、数据表的创建与修改管理实验 一、实验目的二、设计性实验三、观察与思考 一、实验目的 (1) 掌握表的基础知识。 (2) 掌握使用SQL语句创建表的方法。 (3) 掌握表的修改、查看、删除等基本操作方法。 (4) 掌握表中完整性约束的定义。 (5) 掌握完整性约束的作用 二…

AIGC 点亮创作之旅,「重内容」行业也能轻装出发

毋庸置疑,AIGC 的普及成为了内容产业的一束光。 不仅策划们可以从信息挖掘、素材调用、修改编辑等基础文案工作中解放出来,美术也成为 AIGC 的应用强项,基本的加文字、换背景、改尺寸、延展素材等,都能快速解决。 内容创作者们也因…

基于SpringBoot的图书管理系统

基于SpringBoot的图书管理系统 图书管理系统开发技术功能模块代码结构数据库设计运行截图源码获取 图书管理系统 开发技术 技术:SpringBoot、MyBatis-Plus、MySQL、Beetl、Layui。 框架:基于开源框架Snowy-Layui开发。 工具:IDEA、Navicat等…

基于骑手优化算法优化概率神经网络PNN的分类预测 - 附代码

基于骑手优化算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于骑手优化算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于骑手优化优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要:针对PNN神…

2023年中国制服需求量、市场规模及行业细分需求现状分析[图]

制服是某一种行业为体现自己的行业特点,并有别于其他行业而特别设计的着装。它具有很明显的功能体现与形象体现的双重含义。这种职业装不仅具有识别的象征意义,还规范了人的行为并使之趋于文明化、秩序化。 职业制服市场可细分为国家统一着装部门&#x…

数字逻辑电路基础-时序逻辑电路之锁存器

文章目录 一、锁存器简介二、verilog源码三、综合及仿真结果一、锁存器简介 本文介绍数字逻辑电路中一种常用的基础时序逻辑电路-锁存,顾名思义,它的功能就是将输入在控制信号有效时透明传输到输出端,当控制信号无效时,输出值保持不变。它具有记忆和存储功能。这是它区别组…