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、加密随机数等,大幅提升了凭证的不可预测性,从根源上降低了猜解、爆破类攻击的可行性,有效强化了会话安全防护能力。

相关推荐
黑客老李6 小时前
web渗透实战 | js.map文件泄露导致的通杀漏洞
安全·web安全·小程序·黑客入门·渗透测试实战
枷锁—sha13 小时前
【SRC】SQL注入快速判定与应对策略(一)
网络·数据库·sql·安全·网络安全·系统安全
liann11916 小时前
3.1_网络——基础
网络·安全·web安全·http·网络安全
独行soc16 小时前
2026年渗透测试面试题总结-17(题目+回答)
android·网络·安全·web安全·渗透测试·安全狮
独行soc17 小时前
2026年渗透测试面试题总结-18(题目+回答)
android·网络·安全·web安全·渗透测试·安全狮
ESBK202518 小时前
第四届移动互联网、云计算与信息安全国际会议(MICCIS 2026)二轮征稿启动,诚邀全球学者共赴学术盛宴
大数据·网络·物联网·网络安全·云计算·密码学·信息与通信
旺仔Sec18 小时前
一文带你看懂免费开源 WAF 天花板!雷池 (SafeLine) 部署与实战全解析
web安全·网络安全·开源·waf
七牛云行业应用18 小时前
Moltbook一夜崩盘:150万密钥泄露背后的架构“死穴”与重构实战
网络安全·postgresql·架构·高并发·七牛云
原来是你~呀~19 小时前
Strix:AI驱动的全自动安全测试平台,LinuxOS部署
网络安全·自动化渗透测试·strix
fendouweiqian19 小时前
AWS WAF(配合 CloudFront)基础防护配置:免费能做什么、要不要开日志、如何限制危险方法
网络安全·aws·cloudfront