
Cookie 登录绕过 这个漏洞有点老。我看freebuf上没有人写,于是我来分享一下。
Cookie介绍
Cookie 是存储在用户浏览器中的一段不超过 4 KB 的字符串。 它由一个名称(Name)、一个值(Vaue) 和其它几个用于控制 Cookie 有效期、安全性、使用范围的可选属性组成。 不同域名下的 Cookie 各自独立.,每当客户端发起请求时,会自动把当前域名下所有未过期的 Cookie一同发送到服务器。
Cookie储存在本地
Cookie四大特性
1.自动发送
2.域名独立
3.过期时限
4.4KB限制
Cookie 的分类:
Cookie 分为会话Cookie 和持久 Cookie,会话Cookie 是指在不设定它的生命周期 expires 时的状态,前面
说了,浏览器的开启到关闭就是一次会话,当关闭浏览器时,会话Cookie 就会跟随浏览器而销毁。当关闭
一个页面时,不影响会话Cookie 的销毁。会话Cookie 就像我们没有办积分卡时,单一的买卖过程,离
开之后,信息则销毁。
持久 cookie 则是设定了它的生命周期 expires,此时,cookie 像商品一样,有个保质期,关闭浏览器之后,
它不会销毁,直到设定的过期时间。对于持久Cookie,可以在同一个浏览器中传递数据,比如,你在打开
一个京东页面登陆后,你在点开一个商品页面,依然是登录状态,即便你关闭了浏览器,再次开启浏览器,
依然会是登录状态。这就是因为Cookie 自动将数据传送到服务器端,在反馈回来的结果。持久Cookie 就
像是我们办了一张会员卡一样,即便离开,信息一直保留,直到时间到期,信息销毁。
Cookie 不具有安全性
由于 Cookie 是存储在浏览器中的,而且浏览器也提供了读写 Cookie 的 API。
因此 Cookie 很容易被伪造,不具有安全性。
因此不建议服务器将重要的隐私数据,通过 Cookie 的形式发送给浏览器。
Cookie绕过漏洞代码分析
<?php if($_COOKIE['username']){ echo "登录成功【{$_COOKIE['usernme']}】" } ?> <meta charset="UTF-8"> <form method='post'> <label>帐号:</label><input type='text' name='username'><br> <label>密码:</label><input type='password' name='password'><br> <input type='submit' value='登录' name='submit'> </form>
我们可以看到是判断cookie里的username是不是为空,如果不为空即登录成功。
Cookie登录普通用户提升管理员权限复现
我用github上一个开源的项目,awspanel。
https://github.com/Yuzuki616/AWS-Panel
注册普通用户后
登录时用户抓包
isadmin的意思是管理员的意思 修改返回包的fasle为true 意思是管理员的意思
可以看到现在我们的cookie后面有这个管理员参数为真了。
可以看到我们有管理员的权限了
这也算是Cookie绕过的一种方法
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)