Webgoat-Hijack a session
Hijack session是会话劫持,先了解需要用到的知识:
Cookie原理:
1.客户端向服务端发起请求
2.服务端返回cookie,自己也保存了一份
3.客户端收到后,将cookie也保存起来
4.客户端再次发起请求时,会带上这个cookie
5.服务端收到后,检查客户端的cookie和自己第二步保存的cookie是否一致,一致则认为是同一个用户。
答题思路:
1.先获取合法的id
2.答题时,拦截请求,换成合法的id
3.服务器会返回hijack_cookie
4.找hijack_cookie有什么规律,自己猜出一个新的正确的hijack_cookie
5.使用新hijack_cookie发送请求,服务器返回成功,即可通关。
用到的工具:
1.burp
答题实操:
1.打开burp,temp-proxy,点击open browser,会打开浏览器,在打开的浏览器输入http://127.0.0.1:8080/WebGoat,正确登录
查看http history下的login请求,返回头中set-cookie的值,即为合法id
2.点击intercept off,会变为intercept on,意思是打开断点,请求到这后就会被拦住;点击forward,意思是继续发送被拦截的请求;
3.进到答题页面,随便输入账密,点击access;此时burp会拦截到该请求(因为会有其他的请求,所以,点forward,直到出现Hijacksession/login请求)
4.将cookie换成第1步中获取到的合法id,然后点击forward;再去http历史找到该请求,会发现,此时返回头中set-cookie有个hijack_cookie,这个就是我们要找的东西
但是这个是不能用的,它具有唯一性,所以我们多获取几次,找到它的规律,可以这样获取:在该请求上右键-send to repeater,多send几次,将hijack_cookie记录下来
5.记录下的如下:
6178783789518220671-1693534389478
6178783789518220674-1693534400799
6178783789518220676-1693534411606
6178783789518220678-1693534421919
6178783789518220680-1693534430951
你会发现,-前是递增的,-后好像是时间戳
那么-前我们选一个:6178783789518220679
-后的范围在1693534421919-1693534430951之间,即21919-30951之间
6.再次在http历史找到该请求,右键-send to intruder,我们将hijack_cookie作为爆破参数,选中它点击Add§即可
7.然后去payloads设置,我是load txt进来的,再点击开始攻击
8.可以查看攻击记录,一般长度不一样的意味着返回不一样,大概率是成功的那个请求,如图示,这道题目也会显示为绿色了