Webgoat-(A1)Broken Access Control:Hijack a session

0x00、声明

本文所涉及的任何技术、信息或工具,仅供学习和参考之用,请勿将文章内的相关技术用于非法目的,如有相关非法行为与文章作者无关。请遵守《中华人民共和国网络安全法》。


中华人民共和国网络安全法

第二十七条 规定

任何个人和组织不得从事非法侵入他人网络、干扰他人网络正常功能、窃取网络数据等危害网络安全的活动;不得提供专门用于从事侵入网络、干扰网络正常功能及防护措施、窃取网络数据等危害网络安全活动的程序、工具;明知他人从事危害网络安全的活动的,不得为其提供技术支持、广告推广、支付结算等帮助。

0x01、概述

本关卡主要考察,当 Cookie 或 Session 凭证不具备足够的随机性时,极易被攻击者猜解利用。例如,攻击者可通过暴力枚举的方式,劫持到合法用户的登录凭证。

0x02、测试

2.1、抓包分析

发现响应返回的信息中,响应头有个 Set-Cookie 的字段,且其中有个参数为 hijack_cookie,对应的值为 8092411644494503772-1766252500550; 猜测 hijack_cookie 很有可能是用户登录的凭证。

2.2、重复发包测试

通过重复发包,可以观察到hijack_cookie的变化,似乎能够发现一定的规律。

通过分析总结可以得出hijack_cookie是由两部分组成的,"-"的前一部分是一个长度为19的一串整形且是有规律的递增,即服务器每收到一个请求就加一;而"-"的后面部分看似像一个时间戳,验证确实是毫秒级时间戳

2.3、爆破cookie

继续观察,发现少了4537219065067353713开头的cookie,猜测该cookie可能被分配给了合法用户,由于我们可以推测出前部分,而后部分是时间戳,所以可以通过遍历时间戳去爆破出完整的cookie值。

遍历时间戳,成功找到合法cookie凭证,即:4537219065067353713-1766254121659

yakit配置与规则:

请求包

复制代码
POST /WebGoat/HijackSession/login HTTP/1.1
Host: 127.0.0.1:8001
Content-Length: 32
sec-ch-ua: "Not-A.Brand";v="99", "Chromium";v="124"
Accept: */*
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With: XMLHttpRequest
sec-ch-ua-mobile: ?0
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.6367.60 Safari/537.36
sec-ch-ua-platform: "Windows"
Origin: http://127.0.0.1:8001
Sec-Fetch-Site: same-origin
Sec-Fetch-Mode: cors
Sec-Fetch-Dest: empty
Referer: http://127.0.0.1:8001/WebGoat/start.mvc?username=admin123
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Cookie: JSESSIONID=28C57508AB3F802ACE7C903398B5DC45; hijack_cookie=4537219065067353713-1766254121659
Connection: keep-alive

username=test&password=admin123

0x03、完成

0x04、总结

本文以 WebGoat 靶场中 A1 "失效的访问控制" 分类下的 "Hijack a session" 关卡为场景,剖析了会话劫持漏洞的核心成因,即会话凭证随机性不足的安全隐患。

在该关卡中,通过抓包分析发现,响应头中hijack_cookie参数的结构存在明显规律:其由 "19 位递增整数" 与 "毫秒级时间戳" 两部分拼接而成,其中整数部分会随服务器接收的请求数逐次累加。借助这一可预测的生成模式,攻击者通过枚举时间戳、结合整数递增规律,可快速爆破出合法用户的cookie会话凭证,最终成功实现会话劫持。

此案例中的攻击过程虽相对简单,但现实环境中此类爆破攻击已大幅减少,现代系统普遍采用高熵值的随机算法生成会话凭证,如结合 UUID、加密随机数等,大幅提升了凭证的不可预测性,从根源上降低了猜解、爆破类攻击的可行性,有效强化了会话安全防护能力。

相关推荐
看着博客敲代码12 小时前
nikto 扫描报 0 host(s) tested 与 Web 服务器漏洞扫描用法
安全·web安全·网络安全
小羊没烦恼!14 小时前
如何在IIS6,7中部署ASP.NET网站?
数据库·后端·python·web安全·asp.net
看着博客敲代码14 小时前
gobuster 报 the server returns a status code that matches 与 目录爆破用法
安全·网络安全·系统安全
小枣信安15 小时前
MCP安全系列之缺乏日志审计
安全·网络安全·ai安全·大模型安全·智能体安全·mcp安全
Xudde.15 小时前
PwnLab: init 靶机渗透测试(Vulnhub Writeup)
笔记·学习·安全·web安全
学逆向的15 小时前
C 数据溢出与精度丢失
c语言·开发语言·网络安全
是真的小外套16 小时前
第14章:恶意代码防范技术原理与应用
网络·网络安全
听说66617 小时前
信息安全工程师 - 第二十三章 云计算安全需求分析与安全保护工程
网络·安全·web安全·网络安全·云计算·系统安全
Xudde.17 小时前
HackMe 靶机渗透测试(Vulnhub Writeup)
笔记·学习·安全·web安全
罗斯83917 小时前
Datalog与安全分析
算法·安全·网络安全