渗透测试之前端加密爆破

MySQL

相信很多人在渗透测试的时候找到一个破解点,但是BURP抓包发现是加密过的。

这种问 题可以通过一下方法解决:

1.直接调用浏览器模拟登录进行爆破(比如:python利用selenium调用浏览器等方法)

2.直接执行JS进行爆破(懒人模式 ajax for循环直接浏览器执行JS)

3.通过中转站进行爆破 (利用你会的语言搭建WEB服务器进行转发爆破)

4.追踪加密过程再进行 (简单粗暴)

什么是中转?

利用你会的语言,本地搭建一个WEB(中转) 客户端接收的数据后端进行 加密 或者 解密处理 再提交到目标服务器 ,然后目标返回给中转站 中转站返回给客户端。

picture.image

今天就来说一下第四种爆破方式

这边推荐个BURP插件: https://github.com/whwlsfb/BurpCrypto (支持直接调用本地JS)

访问网站

picture.image

看的password这个参数的值是已经被加密了,我们通过浏览器断点方式追踪加密流程

说一下步骤方式

追踪加密-->找到加密-->得到加密-->制作加密--> 开始爆破

方法一:

查看源代码 直接输入password 或者 key 等关键字快速找到需要断点的代码

picture.image

方法二:

方法一用不了的话 就通过浏览器的网络请求搜索关键字 然后一步一步的断点找到加密的核心代码即可

picture.image

picture.image

找到加密的核心代码:

picture.image

美化一下:

picture.image

我们可以看到用的是jsencrypt 那么我们可以采用 中转加密(利用你会的语言) 或者 本地直接加密 进行爆破

菜鸟分析:

第一步函数的形参分别是 j, h, i 对应的是 ===》 baseUtil.encryptEle("encryptKey","inputPassword","password");

j == encryptKey

h == inputPassword

i == password

picture.image

实参分别是这3个表单

第二步的函数是:

encryptText: function(l, n, j) {
var i = l || "encryptKey";
if (n) {
var m = f("#" + i).val() || "";
var k;
var h = c("JSEncrypt");
if (typeof (h) === "function" && m) {
var o = new h();
o.setPublicKey(m);
k = o.getKey().encrypt(n)
} else {
console && console.error("【警告】加密组件初始化失败...", m);
k = n
}
} else {
k = n
}
if (typeof (j) === "string") {
f("#" + j).val(k)
}
return k
},

f("#" + j).val(k) j 对应的是 实参的 第三个参数password

picture.image

最后得知 第一个参数是公钥 第二个参数的明文 第三个参数是加密后的值 直接赋给表单的password

然后BURP抓包就是加密后的数据啦。

最后一步就是加密 进行爆破了

它的核心代码:

encryptEle: function(j, h, i) {
if (!h) {
return null
}
var k = f("#" + h).val() || "";
return b.encryptText(j, k, i)
},
encryptText: function(l, n, j) {
var i = l || "encryptKey";
if (n) {
var m = f("#" + i).val() || "";
var k;
var h = c("JSEncrypt");
if (typeof (h) === "function" && m) {
var o = new h();
o.setPublicKey(m);
k = o.getKey().encrypt(n)
} else {
console && console.error("【警告】加密组件初始化失败...", m);
k = n
}
} else {
k = n
}
if (typeof (j) === "string") {
f("#" + j).val(k)
}
return k
},

调用jsencrypt 修改成他的代码:

function jiami(password) {
var k;
var o = new JSEncrypt();
o.setPublicKey("30819f3******************************************************************************************************010001");
k = o.getKey().encrypt(password)
return k
}

picture.image

picture.image

picture.image


          
作者:心东
          
原文地址:https://www.freebuf.com/articles/web/333922.html
      

声明:本公众号所分享内容仅用于网安爱好者之间的技术讨论,禁止用于违法途径, 所有渗透都需获取授权 !否则需自行承担,本公众号及原作者不承担相应的后果.

如有侵权,请联系删除

推荐阅读

实战|记一次奇妙的文件上传getshell

「 超详细 | 分享 」手把手教你如何进行内网渗透

神兵利器 | siusiu-渗透工具管理套件

一款功能全面的XSS扫描器

实战 | 一次利用哥斯拉马绕过宝塔waf

BurpCrypto: 万能网站密码爆破测试工具

快速筛选真实IP并整理为C段 -- 棱眼

自动探测端口顺便爆破工具t14m4t

渗透工具|无状态子域名爆破工具(1秒扫160万个子域)

查看更多精彩内容,还请关注 橘猫学安全:

每日坚持学习与分享,觉得文章对你有帮助可在底部给点个“ 再看

0
0
0
0
关于作者

文章

0

获赞

0

收藏

0

相关资源
字节跳动 XR 技术的探索与实践
火山引擎开发者社区技术大讲堂第二期邀请到了火山引擎 XR 技术负责人和火山引擎创作 CV 技术负责人,为大家分享字节跳动积累的前沿视觉技术及内外部的应用实践,揭秘现代炫酷的视觉效果背后的技术实现。
相关产品
评论
未登录
看完啦,登录分享一下感受吧~
暂无评论