3-身份认证绕过

1、用户名枚举

有些站点在注册、登录时会明显的提示你“用户名不正确”等。
此时可以使用对应的工具加上一个用户名字典,对页面进行枚举请求。
当页面提示你所希望的提示时,则把这条记录存下来。


可以自行添加>> username.txt将结果保存在文本中。
此时你就得到了一份有效用户名名单。

2、爆破

当你有了第一步的有效用户名名单后,你就可以使用自带的密码字典对有效用户名进行爆破。
上一步保存的username.txt里面包括了其他信息,比如返回状态,在第二步是不能用的,需要自行将用户名提取出来重新保存。


图内-w参数后,valid_username.txt:W1是指的将这份文件作为一个参数,并且命名为W1。
后面以,号分隔,使用密码文本作为参数W2。在-d参数后,将W1,W2作为赋值参数。最后的-fc 200的意思就是检测返回值大于200的信息。

这个地方需要注意一下,登录后靶场做的是302重定向,并不是正常返回200,所以师傅们以后渗透需要注意这个点

3、逻辑漏洞

逻辑漏洞存在的地方有很多,目前这个菜单是集中讨论在身份验证中的逻辑漏洞。
if(url.substr(0,6)==='/admin'){
  # code to check user is an admin
}else{
    # view page
  }
//模拟代码示例检查客户机访问的路径的开始是否以/admin 开始
//如果是,则进一步检查客户机是否实际上是管理员
//如果页面没有以/admin 开头,页面就会显示给客户端

这段靶场提供的代码是一般人都不会犯错的代码
如果访问/adMin,则绕过了检测直接走到else进行页面展示,也就是绕过了这段检测。


靶场要求第一个请求为请求重置密码,url填写的是目标账号的邮箱,body中填写的是目标账号。
因为是全英文和我使用翻译软件进行理解的,所以没有太理解此靶场的文字意思。
所以这个请求只是用来打开重置这个账户密码的页面。

第二个请求中,就是将此账户重置密码的链接发到尾部那个邮箱,这个靶场要求我们将尾部的邮箱替换为我们自己的邮箱,然后收到重置密码链接打开修改目标账号的密码。
这道题我认为出的很烂,靶场写了很多文字。
但其实核心问题就是,后台没有对此账号做原密码认证、或者其它进一步的认证,只需要用户名和邮箱正确就可以认证通过。
然后再通过-d(body中的信息)后面的email字段发送重置密码链接。所以我们修改邮箱地址就可以成功接收到这个账户的密码修改地址,最后成功拿下账户。

4、cookie修改

cookie作为一种记录账户状态的内容,在账户登录后、做了什么操作后,服务器会返回cookie内容到浏览器并记录下来,其中就包括权限、登录状态等常用内容。
如果服务器未对cookie进行校验,只是单纯根据浏览器发送过来的cookie内容进行判断,那么我们可以修改cookie的内容达到使账号具有更高权限的目的。

上图有两段cookie的字段,第一个是是否登录,第二个是是否具有管理员权限。
我们将cookie内容修改发送给客户端:

这个时候就直接已管理员身份进行了登录。



大多时候,cookie会被进行编码、加密等操作。

比如MD5加密、base64编码等等等等,MD5是不可逆的加密,但是同一段数据的MD5编码是相同的,这个时候可以使用一些在线MD5撞库进行搜索,查看是否有相同的数据,MD5撞库网站百度即可。
而base64编码是可逆的,是一类规范的编码格式,还有url编码等等等等。
靶场在这里就结束了,都只是一些简单的介绍,而逻辑漏洞最好是在对代码审计的时候查到,黑盒测试永远都只能进行无限的爆破、尝试。

posted @   小小鸡炖蘑菇  阅读(262)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术
点击右上角即可分享
微信分享提示