欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

JavaScript混淆-2021年1月12日的每日问题

最编程 2024-08-14 09:02:14
...

JS混淆

首先看到一个奇怪的文件内容

题面.png

这是ISFuck,JS混淆。

JS混淆 https://www.cnblogs.com/guyouyin123/p/13804700.html

JS代码为什么要进行混淆加密?
因为:JS代码是明文。
JS是种开放源码的编程语言,
无论是前端浏览器中的JS代码,还是在后端使用,如nodejs,js代码都是明文,
明文代码,他人可以随意查看、复制、分析、盗用,极不安全!
对JS代码进行混淆加密、保护JS代码。经过保护的JS代码,代码失去了可读性,且不可逆,可以有效防止代码被分析、复制、盗用等问题。

  • JSFunck:jsfuck编码是由8个:< > + – . , [ ]字符组成。

  • AAEncode:可以吧文字加密成表情 https://utf-8.jp/public/aaencode.html

  • JJEncode:将JS转换成只有符号的字符串编码http://www.atoolbox.net/Tool.php?Id=704

但是这道题直接放到浏览器F12 console中执行报错。

去掉最后的(),加上],再次运行,出现flag。

flag.png

绕过前端JS加密进行密码爆破

例子引入:https://blog.****.net/u014029795/article/details/105039174

原理分析:https://www.freebuf.com/articles/web/127888.html

渗透测试过程中遇到web登录的时候,现在很多场景账号密码都是经过js加密之后再请求发送(通过抓包可以看到加密信息)如图一burp抓到的包,request的post的登录包,很明显可以看到password参数的值是经过前端加密之后再进行传输的,遇到这种情况,普通发包的爆破脚本就很难爆破成功。

分析找出是哪个js文件进行了password参数值的加密,将该js导入本地动态执行,建一个小型的web服务器,利用浏览器页面将js运行起来,把账号密码发给本地这个服务器,然后本地js执行加密之后把加密的值再给登录的请求,实现普通的发包爆破。

(把原来的字典都用js加密方法加密形成新的字典,再用这个字典爆破)

操作说明:
https://gv7.me/articles/2017/jsEncrypter/
https://blog.****.net/zy_extreme/article/details/105827176

jsEncrypter: https://github.com/c0ny1/jsEncrypter
phantomJS :http://phantomjs.org/download.html

下载这两个,需要在idea中把jsEncrypter项目打成jar包,burpsuit中添加jar包插件

将加密js文件下载下来,phantomjs_server.js 和 要 下载好的加密JS文件 到 phantomJS 目录

js.png

修改phantomjs_server.js 文件:

操作.png

运行 phantomjs.exe

BurpSuite 在插件进行测试,成功进行了加密

(这一步只是测试,可以加密成功)

test.png

之后设置爆破,根据长度找到正确的密码

爆破.png