出题——你的魔王护一般
前言
这次出题考察越权漏洞 + 信息收集 + JWT + Crypto
JavaScript 接口泄露
/static/js/
打开主页是一个三角洲陪玩主题的官网

逛了一圈没有太多的功能点去测试,于是去注册一个账号

注册一个打手进去没发现啥东西

当以普通用户登录时会多出一个下单功能

在 BP 中发现我们的登录是有做加密的,并且返回了两个 Token

观察到 /api/order/available-boosters 接口返回的是所有打手的信息,里面包含了 username,可惜是加密的

使用插件 XMCVE-WebRecon 进行信息收集发现 /api/ 接口所在的具体文件都是在 /static/js/ 这个目录下面

于是对这个目录进行爆破,发现了 api.js

访问一看做了混淆

级别不是很高,AI 可以梭哈出来关键信息
得到 /api/v2/userlist 以及 /api/rsa_gen

第一个接口则是假接口

第二个接口则是拿到了 RSA 的公钥

Crypto
RSA(分解 n)
扔给 AI 分析得到指数 e 为 65537

将 n 分解可以得到两个质数
1 | P = 112840243732455789648197748865738103507498045177858510412060728452781414555669 |
于是编写解密脚本
1 | import base64 |
得到 username 为
1 | kilo |
JavaScript 逆向
login_crypto.js(无限 Debugger 绕过)
拿到用户名之后可以尝试去爆破这些打手的账号,但密码在前面发现是加密的
于是去逆向,有无限 Debugger

还是用上面那个插件绕过

Ctrl + Shift + F 搜索大法定位到文件位置——login_crypto.js

这个代码没有做混淆,也直接给出了 Key 以及 IV,往下看就能发现是 AES-CBC 模式

弱口令
/api/account/login
编写加密脚本去爆破
1 | import argparse |
最后爆破出打手 kilo 的密码为 letmein(只有这位打手能拿到下一关的线索)
JWT
JWT 空算法漏洞
登录后可以看到客服留言

替换掉 localhost 为靶机 IP 去访问返回 401

查看历史包发现在我们登录后每次请求都会携带 x-access-token 以及 JWT

去掉 x-access-token 后也不能访问接口了,所以两个都必带

再次访问发现回显 403 权限不够

联想到空算法漏洞,利用 JWT alg: none 伪造 admin 身份,越权读取

1 | Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJub25lIn0.eyJ1c2VybmFtZSI6ImFkbWluIiwicm9sZSI6ImFkbWluIiwic2NvcGUiOiJyZXdhcmQifQ. |
拿到 flag
