记录一个前端登录绕过最简单的一种方式。没啥技术含量,就作为这种漏洞类型的样例吧。
0****1
梭哈
1.1
梭哈
看到登录框首先测试一下有没有sql注入,一个1'啪就打进去,提示用户名错误,寄。
既然提示用户名错误了那就爆破用户名吧。用户名和密码随便输,抓一个数据包。
点击登录后bp竟然没有任何数据包,立马来精神了。
bp没有数据包有两种情况:一个是bp出故障了、另一个就是站点靠前端校验没有与后端交互,所以没有数据包产生。我可以肯定我的bp不可能出问题的,所以哈哈哈哈哈哈。
1.2
梭哈是一种智慧
直接F12大法全局搜索admin字样。喜滋滋账户和密码这不就来了嘛,后台我来了哈哈哈。
屮,好家伙用户名对了密码不对是吧。
现在bp里有数据包了,看一下数据包里的内容。看到result字样相信在座的各位大佬都坐不住了吧。
重新拦截登录的数据包,直接把"result":"false"改成"result":"true"成功登录到后台。
02
卸甲
2.1
卸甲
ok现在让我看看他是怎么判断的,让我看看你是怎么秀的。先看看完整代码:
`IndexComponent.prototype.goLogin = function() {` `var t = this;` `if ("" == this.userName || "" == this.passWord)` `return void (this.toast = "用户名或密码不能为空!");` `if ("adminxhsty" != this.userName)` `return void (this.toast = "用户名错误!");` `var n = {` `code: this.userName,` `username: encode(this.userName, "thinkgem,jeesite,com"),` `password: encode(this.passWord, "thinkgem,jeesite,com")` `};` `$(".loading").show(),` `this.indexService.goLogin(n).then(function(n) {` `$(".loading").hide(),` `"true" == n.result ? (t.isLogin = !1,` `t.onVoted_changelogin.emit(!t.isLogin),` `sessionStorage.setItem("sessionid", n.sessionid)) : t.toast = n.message` `})``}`
2.2
再卸再卸
首先定义了一个goLogin方法,var t = this;将当前对象保存在变量t中,这样在后面的异步回调中可以访问该对象的属性和方法。
`IndexComponent.prototype.goLogin = function() {` `var t = this;`
这段代码首先检查用户名和密码是否为空。如果是空的,则返回:用户名或密码不能为空!。如果用户名不是"adminxhsty",则返回:用户名错误!。
`if ("" == this.userName || "" == this.passWord)` `return void (this.toast = "用户名或密码不能为空!");` `if ("adminxhsty" != this.userName)` `return void (this.toast = "用户名错误!");`
如果通过了验证,接下来准备一个包含登录信息的对象n:code:使用输入的用户名。username和password:通过encode函数编码输入的用户名和密码,使用了特定的加密参数"thinkgem,jeesite,com"。
`var n = {` `code: this.userName,` `username: encode(this.userName, "thinkgem,jeesite,com"),` `password: encode(this.passWord, "thinkgem,jeesite,com")` `};`
接下来,显示页面中的加载动画。然后调用this.indexService.goLogin(n)方法,传递准备好的登录信息n,这个方法返回一个Promise对象。当登录请求完成时,执行接下来的动作:根据返回的数据n中的result字段判断登录是否成功。如果n.result是字符串"true",则表示登录成功。如果n.result是字符串"false",则显示相应的错误消息。
`$(".loading").show(),` `this.indexService.goLogin(n).then(function(n) {` `$(".loading").hide(),` `"true" == n.result ? (t.isLogin = !1,` `t.onVoted_changelogin.emit(!t.isLogin),` `sessionStorage.setItem("sessionid", n.sessionid)) : t.toast = n.message` `})`
往期文章推荐
【资源分享】最新BurpSuite2024.5专业中英文开箱即用版下载
项
目
承
接
团队中的师傅们都来自国内安全厂商在职的一线工程师,均具有良好的职业素养与丰富的从业经验。
渗透测试
Web站渗透、APP渗透、小程序渗透、内网渗透、技术咨询
CTF
赛事、RE、PWN、CTF培训
提升与考证
渗透思路、NISP考证、CISP考证
edusrc邀请码
免费不限量提供edusrc邀请码,请在公众号的菜单栏资源获取-edusrc邀请码中获取。
TNT漏洞文库
所有文章第一时间会发布在文库中,漏洞文库中的内容全部免费开放。
访问密码每周都会更换,最新访问密码请在公众号的菜单栏资源获取-漏洞文库中获取。
免责声明
本文所涉及的任何技术、信息或工具,仅供学习和参考之用。请勿利用本文提供的信息从事任何违法活动或不当行为。
任何因使用本文所提供的信息或工具而导致的损失、后果或不良影响,均由使用者个人承担责任,与本文作者无关。
作者不对任何因使用本文信息或工具而产生的损失或后果承担任何责任。
使用本文所提供的信息或工具即视为同意本免责声明,并承诺遵守相关法律法规和道德规范。
END
点个「在看」 我的零食分你一半