2019-3-15 dvwa学习(14)--Weak Session IDs

用户访问服务器的时候,在服务器端会创建一个新的会话(Session),会话中会保存用户的状态和相关信息,用于标识用户。服务器端维护所有在线用户的Session,此时的认证,只需要知道是哪个用户在浏览当前的页面即可。为了告诉服务器应该使用哪一个Session,浏览器需要把当前用户持有的SessionID告知服务器。

用户拿到session id就会加密后保存到 cookies 上,之后只要cookies随着http请求发送服务器,服务器就知道你是谁了。

SessionID一旦在生命周期内被窃取,就等同于账户失窃。同时由于SessionID是用户登录之后才持有的认证凭证,因此黑客不需要再攻击登陆过程(比如密码),就可以轻易获取访问权限,无需登录密码直接进入特定用户界面,进而查找其他漏洞如XSS、文件上传等等。

Session劫持 就是一种通过窃取用户SessionID,使用该SessionID登录进目标账户的攻击方法,此时攻击者实际上是使用了目标账户的有效Session。如果SessionID是保存在Cookie中的,则这种攻击可以称为Cookie劫持。SessionID还可以保存在URL中,作为一个请求的一个参数,但是这种方式的安全性难以经受考验。

看实例
low
界面很简单,点击按钮,就可以生成session id
2019-3-15 dvwa学习(14)--Weak Session IDs_第1张图片
只是个简单例子,了解原理。
看一下源码

 

如果last_session_id不存在就创建,值为0。
然后值加1,然后保存为cookie,名称dvwaSession。
这个和截取的http信息也是完全一致的。
只是说明session id和cookie是怎么回事情,真实环境不可能有人这么干。

medium
继续看代码

 

cookie的值变成了时间戳。
界面上运行一下,在开发者工具中获得信息如下

Set-Cookie:"dvwaSession=1552628479"

1552628479是UNIX时间戳,转换一下,其实就是2019-03-15 13:41:19。
稍微有点经验的,一眼就能看出来,没有什么秘密可言。

high
看源码

 

咋一看,和low差不多。只是last_session_id_high用了md5加密。然后cookie设置更加复杂了。
setcookie()函数 http://www.runoob.com/php/func-http-setcookie.html
语法如下

setcookie(name,value,expire,path,domain,secure)

2019-3-15 dvwa学习(14)--Weak Session IDs_第2张图片
其实也就是多了一个cookie过期时间,1个小时。
运行界面,观察如下:

Set-Cookie:"dvwaSession=c4ca4238a0b923820dcc509a6f75849b; expires=Fri, 15-Mar-2019 07:20:42 GMT; Max-Age=3600; path=/vulnerabilities/weak_id/; domain=172.25.100.100"

找个在线的网站 https://www.cmd5.com/ 还原一下md5加密的c4ca4238a0b923820dcc509a6f75849b

2019-3-15 dvwa学习(14)--Weak Session IDs_第3张图片
只是包装的好看了一点,其实和low是一样的。

impossible
看源码

 

这次cookie值= sha1(随机数+时间戳+固定字符串“impossbile”)

sha1函数参见http://www.w3school.com.cn/php/func_string_sha1.asp
知道该怎么做才能减少session id被破解了吧。

你可能感兴趣的:(IT,安全)