第九关:Weak Session IDs(弱会话IDs)
当用户登录后,在服务器就会创建一个会话(session),叫做会话控制,接着访问页面的时候就不用登录,只需要携带 Sesion去访问。
sessionID作为特定用户访问站点所需要的唯一内容。如果能够计算或轻易猜到该sessionID,则攻击者将可以轻易获取访问权限,无需登录直接进入特定用户界面,进而进行其他操作。
用户访问服务器的时候,在服务器端会创建一个新的会话(Session),会话中会保存用户的状态和相关信息,用于标识用户。
服务器端维护所有在线用户的Session,此时的认证,只需要知道是哪个用户在浏览当前的页面即可。为了告诉服务器应该使用哪一个Session,浏览器需要把当前用户持有的SessionID告知服务器。用户拿到session id就会加密后保存到 cookies 上,之后只要cookies随着http请求发送服务器,服务器就知道你是谁了。SessionID一旦在生命周期内被窃取,就等同于账户失窃。
Session利用的实质 :
由于SessionID是用户登录之后才持有的唯一认证凭证,因此黑客不需要再攻击登陆过程(比如密码),就可以轻易获取访问权限,无需登录密码直接进入特定用户界面, 进而查找其他漏洞如XSS、文件上传等等。
Session劫持 :
就是一种通过窃取用户SessionID,使用该SessionID登录进目标账户的攻击方法,此时攻击者实际上是使用了目标账户的有效Session。如果SessionID是保存在Cookie中的,则这种攻击可以称为Cookie劫持。SessionID还可以保存在URL中,作为一个请求的一个参数,但是这种方式的安全性难以经受考验。
low
用burp抓包,把cookie复制下来
dvwaSession=8; security=low; PHPSESSID=b9ql0ihq5bshs9k5u7l76gbitf
url记录下来
退出登录,清除页面浏览器的cookie值,用火狐的hackbar,输入上面url和cookie,勾选cookie然后访问
就可以实现无密码登录了
medium
dvwaSession的值是通过时间戳来形成的,关于时间戳转换,直接查找转换器进行转换即可
dvwaSession=1688981402; security=medium; PHPSESSID=o1bs6jbs2k4rh8cu24une3tp8a
方法同low级别一样
high
抓包发现,dvwaSesion值很像md5加密,使用md5解密,发现是对从零开始的整数进行加密
构造payload使用火狐提交,跟low一样操作
impossible
$cookie_value采用随机数+时间戳+固定字符串"Impossible",再进行sha1运算,完全不能猜测到dvwaSession的值。