一次工作中前端函数审计引发的通用EXP漏洞
一次工作中前端函数审计引发的通用EXP漏洞
漏洞类型:
前端函数审计,函数可被调用,导致一键通杀EXP
看到这里,看到两个函数
getLoginSecret(),另外一个queryCompanyList()
再看看其他的函数
selectCompany(event,wzh){
chooseCompany(event){
event就是取用户输入的参数,这里感觉无法调用
changeQrCode()
uuidFun1()
checkUser() 取用户的,这个跟queryCompanyList()
函数应该差不多
forwardUpdatePassword()
这个函数已经直接调用了,我们不用管
那么我们回到getLoginSecret()函数
注意这里:
查询用户的密码加密key =
这里管理员声明是查询用户的密码加密key =
那么看他的提交方式
默认变量loginSecret为空
url : "/user/goLoginSecret", contentType : "application/json", type : "post", async : false, data : JSON.stringify({ otherAccount: $("#account").val(), account: $("#accountOnly").val() }), success : function(data) { console.log(data) loginSecret = data.data; } }); return loginSecret;
JSON去传了一个otherAccount参数
contentType : "application/json", type : "post", async : false, data : JSON.stringify({ otherAccount:$("#account").val() }),
那么如果这里可以被利用的话,这是查询用户的
我在想是管理员故意留的后门,还是没注意,以为这种方式很安全
这么想恰恰错了
我们注意是queryCompanyList()
函数触发的
我们为了验证这个函数的有效性,就需要找一个可以调用的函数,来触发
onclick事件
先看看登陆这里,没什么利用点
这里一个忘记密码
注意onclick这里
默认是调用的forwardUpdatePassword()函数
我们可以修改一下,让他触发到queryCompanyList()函数
然后截取数据包
如果成功利用,queryCompanyList()函数的参数将会被带入
果然参数被触发了
触发到了otherAccount参数
这时候,我们来查询一下用户,输入admin
查询到了信息
证明存在这个用户
那么我们再看另外一个函数getLoginSecret()
这是查询base64密码的
如果被成功调用,那么就可以查询到用户密码了
接着把函数改成getLoginSecret()
果然被带入了两个json参数
{"otherAccount":"","account":""}
我们在这里输入admin
成功查询到超级管理员的base64密码
那么有了这个思路
我们直接写个工具来EXP,更方便
我们接下来对
密码做一个简单的二进制解密
Base64密文:==
我们找到一个网站,下载base64解密工具
放入密文
然后直接输入命令
base64 --decode base64.b64 base64.tmp
然后使用二进制打开密文
下一篇 >>