×

新闻动态 资料下载 源码审核

一次工作中前端函数审计引发的通用EXP漏洞

0x_www 0x_www 发表于2022-01-14 18:37:04 浏览302 评论0

抢沙发发表评论

一次工作中前端函数审计引发的通用EXP漏洞           


漏洞类型:

前端函数审计,函数可被调用,导致一键通杀EXP

图片1.png




看到这里,看到两个函数

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事件


QQ截图20220114184053.jpg




先看看登陆这里,没什么利用点

这里一个忘记密码


图片2.png




注意onclick这里

默认是调用的forwardUpdatePassword()函数

我们可以修改一下,让他触发到queryCompanyList()函数

然后截取数据包

如果成功利用,queryCompanyList()函数的参数将会被带入


果然参数被触发了

触发到了otherAccount参数

这时候,我们来查询一下用户,输入admin


QQ截图20220114184147.jpg



查询到了信息

证明存在这个用户

 

那么我们再看另外一个函数getLoginSecret()

这是查询base64密码的

如果被成功调用,那么就可以查询到用户密码了

接着把函数改成getLoginSecret()


果然被带入了两个json参数

{"otherAccount":"","account":""}

我们在这里输入admin


成功查询到超级管理员的base64密码


那么有了这个思路

我们直接写个工具来EXP,更方便



QQ截图20220114184308.jpg



我们接下来对

密码做一个简单的二进制解密

Base64密文:==

我们找到一个网站,下载base64解密工具


放入密文

 

然后直接输入命令

 

base64 --decode base64.b64 base64.tmp

 

然后使用二进制打开密文


QQ截图20220114184400.jpg





少长咸集