提示信息利用
输入用户名和密码
如果用户名存在密码错误会提示 ”密码不正确“
如果用户名不存在那么就会提示 ”用户不正确“
我们可以猜测网站用户名之后固定用户名进行密码爆破
session固定攻击
- Session 是一种记录服务器和客户端会话状态的机制,使服务端有状态化,可以记录会话信息。而 Token 是令牌,访问资源接口(API)时所需要的资源凭证。Token使服务端无状态化,不会存储会话信息。
- session 是另一种记录服务器和客户端会话状态的机制
- session 是基于 cookie 实现的,session 存储在服务器端,sessionId 会被存储到客户端的cookie 中
sessionid 是包含在 cookie 里的。意思就是,sessionid 是存储在cookie里的,所以在客户端。具体过程是客户端第一次请求,服务器返回请求并给出 cookie,其中包含 sessionid ,随后客户端第二次带着 cookie 和 sessionid 请求服务器,服务器根据 sessionid 找到存储的 session 数据并返回。
会话固定(Session fixation), 是一种诱骗受害者使用攻击者指定的会话标识(SessionID) 的攻击手段。是利用服务器的 session 不变机制, 借他人之手获得认证和授权,然后冒充他人,就会发生认证问题和会话固定攻击。可能导致部分甚至全部导致账户遭受攻击。一旦成功,攻击者能执行受害用户的任何操作,因此特权账户是常见的攻击对象。
我对此理解的一个例子是:攻击者首先在未登录状态下访问网站得到 sessionid,然后把带有 sessionid 的链接发给受害者,受害者点击链接并登录,而由于 sessionid 是不变的,攻击者就可以用这个 sessionid 来登录,获取受害者的页面。更形象一点就是,我在网吧上号,然而忘了取消记住密码,然后我号就没了。
检测漏洞方法也很简单,登录网站前后查看 sessionid 是否有变化即可
实战:
然后构造钓鱼网页,发送给受害者
<html>
<body>
//目标网站url
<form action="http://ab9c9564.lxctf.net/" method="post">
<input type="hidden" name="session_id" value="a1bsj2lbbfgubvreqinfrooqa6">
//sessionid值
<input type="submit">
</form>
</body>
</html>
身份转变,我们现在是受害者,收到钓鱼网页直接点击,此时发现 sessionid 值确实是攻击者的 sessionid
而此时攻击者已经达成目的了。他不需要用户的账号密码,直接访问后台登录页面即可登陆上用户的账号来干坏事。
未授权cookie
区别 ● 数据存放位置不同:Session数据是存在服务器中的,cookie数据存放在客服端当中; ● 安全程度不同:cookie放在客户端中并不安全,session放在服务器中,相对安全; ● 性能使用程度不同:session放在服务器上,访问增多会占用服务器的性能;考虑到减轻服务器性能方面,应使用cookie。
JYmusic会话劫持
首先注册一个账号并登录
随便在一首歌的评论区,可以看见前端对用户评论内容是没有任何过滤的
可以利用 xss 漏洞,输入 LBWNB"><script>alert(document.cookie)</script><span style="
可以看出弹出 cookie 了,但是是我们自己的,我们要获取管理员的。此时攻击已经完成了,坐等管理员上钩查看我们的评论。
受害者管理员被迫上线
攻击者心满意足,回到自己的账户,把 sessionid 值改成管理员的
token绕过
token 译为令牌,是用户身份的验证方式 最简单的token组成: uid (用户唯一的身份标识)、time(当前时间的时间戳)、sign(签名)
token是开发定义的,session是http协议规定的;
token不一定存储,session存在服务器中;
token可以跨域,session不可以跨域(cookie也是),它是与域名绑定的。
- 每一次请求都需要携带 token,需要把 token 放到 HTTP 的 Header 里
- 基于 token 的用户认证是一种服务端无状态的认证方式,服务端不用存放 token 数据。用解析 token 的计算时间换取 session 的存储空间,从而减轻服务器的压力,减少频繁的查询数据库
登录凭证缺乏
未进行登陆凭证验证
有些业务的接口,因为缺少了对用户的登陆凭证的较验或者是验证存在缺陷,导致黑客可以未经授权访问这些敏感信息甚至是越权操
作。
后台页面访问
某电商后台主页面,直接在管理员web 路径后面输入main.php 之类的即可进入
仔细看,就可以找到规律,他就是固定0031003+数字+003+数字+003+数字,其实需要穷举的就是13位左右,如果能够访问,会泄露大量的用户个人资料
验证码绕过
通常来说,验证码机制是后端生成-----网页----客户端输入-----后端检验-----返回网页
前端状态值绕过
后端生成验证码之后,客服端输入后,前端检验才把返回结果给后端
那么我们可以拦截前端检验后的结果,比如说验证码的状态,把N(未通过)改为Y(通过),
再返回给后端,来绕过验证码
回包的N改为Y,试试前端绕过验证码
伪验证码未验证直接返回
这种情况少,就是网站向手机发送验证码之后,直接返回了验证码,这是伪验证码,机制的错误
点击获取验证码时,直接在返回包中返回验证码,通过抓包的来观察 reponse 包
在发送时候拦截回报,然后发送
客户端验证机制
通常来说,验证码机制是后端生成-----网页----客户端输入-----后端检验-----返回网页
但是有的网站喜欢直接前端生成,前端校验,不经过后端的认证。
这种的特征是填写验证码,抓包抓不到数据包。