【实战】某大学信息门户登录分析

【实战】某大学信息门户登录分析

抓包参数分析

通过抓包分析 发现 在访问

1
http://authserver.tjut.edu.cn/authserver/login?service=http%3A%2F%2Fehall.tjut.edu.cn%2Flogin%3Fservice%3Dhttp%3A%2F%2Fehall.tjut.edu.cn%2Fnew%2Findex.html

时候 会设置两个 Cookies:route 和 JSESSIONID,当我们清空这两个 cookies 的时候点击登录发现会重定向,确定 ck 是服务器确认登录请求的值。用 python 模拟

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
head = {
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9",
"Accept-Language": "zh-CN,zh;q=0.9",
"Cache-Control": "no-cache",
"Connection": "keep-alive",
"Content-Type": "application/x-www-form-urlencoded",
"Host": "authserver.tjut.edu.cn",
"Origin": "http://authserver.tjut.edu.cn",
"Pragma": "no-cache",
"Upgrade-Insecure-Requests": "1",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.67 Safari/537.36"
}
#
session = requests.session()


res = session.get(url = URL["index"])
html = res.text

logger.debug(res.cookies)
logger.debug(session.cookies)
logger.debug("=============pause================")
1
2022-06-14 15:43:25.215 | DEBUG    | __main__:<module>:45 - <RequestsCookieJar[<Cookie JSESSIONID=4ldhKdeMCHs8LqBGsI3fTMNIAHP-IWlG6LlxQz08ZqpYTX2vs-ss!2090879530 for authserver.tjut.edu.cn/>, <Cookie route=476e8ab4730c382ed52d041b4e6f3f90 for authserver.tjut.edu.cn/>]>

image-20220614154757475

分析比较和我们浏览器抓的值一样

登录包分析

1
2
3
4
5
6
7
8
9
10
11
url = http://authserver.tjut.edu.cn/authserver/login?service=http%3A%2F%2Fehall.tjut.edu.cn%2Flogin%3Fservice%3Dhttp%3A%2F%2Fehall.tjut.edu.cn%2Fnew%2Findex.html

{
"username": "11111111",
"password": "zWNWg/d0gFfOD2e1+d6muP6UKh7Awx1a+vkE42QyTKGwg/iRUtqYRm9XUNKw3InmCBRBgILnX0eyAAeN/ENKnm8WDxTE27z8Hrvn2eZQL4w=",
"lt": "LT-443257-YMoeFwN60aKuJdJK9uMpcZloda60qN1655193987483-WBvX-cas",
"dllt": "userNamePasswordLogin",
"execution": "e2s1",
"_eventId": "submit",
"rmShown": "1"
}

发现 Password 是加密的,lt 是变动的 execution 是随机的

参数分析

password

image-20220614155413359

在 Dom 事件中点击 发现 login 函数

image-20220614155440626

image-20220614155639812

跟进后发现了关键函数

image-20220614155709668

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function _etd(_p0) {
try {
var _p2 = encryptAES(_p0, pwdDefaultEncryptSalt)
$('#casLoginForm').find('#passwordEncrypt').val(_p2)
} catch (e) {
$('#casLoginForm').find('#passwordEncrypt').val(_p0)
}
}

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

关键函数:encryptAES(_p0, pwdDefaultEncryptSalt); 进一步跟

image-20220614160758598

发现这个 p0 就是 密码 p1 就是 key 点进去 encrypt 这个函数

image-20220614160847800

所以我们只需要原封不动的扣下来就可以了,加密函数有了,接下来就是寻找这个 p1 是怎么生成的

1
casLoginForm.find('#pwdDefaultEncryptSalt').val()

找到了 是加载页面的时候 有个隐藏的元素 这个值是自动生成的所以 所以我们只需要访问的时候把这个值用解析的方式把他拿出来就行了, 在这里我选择的是用 BeautfulSoup 这个库

其他参数

1
2
3
4
5
6
7
soup = BeautifulSoup(html,'html.parser')
ltDom = soup.find('input',attrs={'name': "lt"})
exDom = soup.find('input',attrs={'name':'execution'})
lt = ltDom["value"]
execution = exDom["value"]
keyDom = soup.find('input',attrs={'id':'pwdDefaultEncryptSalt'})
key = keyDom["value"]

用 python 来发包测试

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
'''
发送登录包
'''
#
password = jsFunc.call('encryptAES',PASS_WORD,key)

data = {
"username":USER_NAME,
"password":password,
"lt":lt,
'dllt':'userNamePasswordLogin',
'execution':execution,
'_eventId':'submit',
'rmShown':1
}

url = 'http://authserver.tjut.edu.cn/authserver/login?service=http%3A%2F%2Fehall.tjut.edu.cn%2Flogin%3Fservice%3Dhttp%3A%2F%2Fehall.tjut.edu.cn%2Fnew%2Findex.html'

res = session.post(url=url,data=data,allow_redirects=False)

image-20220614162855199

image-20220614162952059

登录成功

总结

验证码无用

当我们登录多次的时候会发现一个验证码

image-20220614163110314

这个验证码没有任何用 不在服务端进行校验 我们只需要用开发者工具删除缓存和清空 Ck 就可以将这个验证 🐎 干掉

image-20220614163224449

登录参数全部在明面上

没有任何阻碍就可以获取到这些参数并且模拟出来

image-20220614163254809

作者

Codecat

发布于

2022-06-14

更新于

2022-06-14

许可协议

评论