介绍
工作坊团队修改了 Sign out this browser 处理会话的方式。结束所有会话虽能使旧 cookie 失效,但也会打断会员仍想在另一个浏览器中继续进行的操作。验收必须同时覆盖安全结果和承诺的正常行为。
你将在 Burp Repeater 中保留 Browser A 的原始账户请求和预订请求,为同一会员建立独立的 Browser B 会话,并在 A 退出登录后测试两者。交付成果结合私密 HTTP 证据与不含密码的验收结论。环境相互独立:不会延续之前的文件、会话或 Burp 选项卡。
请先完成退出登录后重放预订请求。你应知道如何启动 Burp 临时项目、保持拦截关闭、将历史记录行发送到 Repeater、读取 HTTP 状态和保存 XML 条目。本实验会重复操作流程,并加入独立会话比较。所有账户和预订均为合成内容。包含阅读和普通操作错误在内,预计需要约 60 分钟;这是作者估计。
确认 Browser A 的正常预订
本步骤将在这个新部署中确认正常流程。打开 Auditor,阅读提供的身份、地址和授权:
cat scope.json
仅使用 http://members.test:8080/autumn、用户名 morgan 和密码 PaperDay!47。预订属于 Morgan Reed:Printmaking,P12 座位。保留提供的范围、目标配置、数据和进程。
如果图形工作区显示 Disconnected,点击顶部的 Reconnect 按钮。这会重新连接现有窗口,并保留浏览器 cookie、Burp 请求和目标进度。
打开 Burp。保持选中 Temporary project,点击 Next,保持选中 Use Burp defaults,然后点击 Start Burp。如果出现 Burp Suite is out of date,点击 OK,继续使用已准备好的训练版本。在主窗口选择 Proxy → Intercept,确保按钮显示 Intercept is off。如果显示 Intercept is on,点击一次,让正常请求不会被暂停。
切换到 Browser A。点击 Chromium 地址栏,输入此 URL,然后按 Enter:
http://members.test:8080/autumn/
选择 View my booking,在 Username 中输入 morgan,在 Password 中输入 PaperDay!47,然后点击 Sign in。如果 Chromium 询问是否保存密码,选择 Never。在 Your next day of making 中确认 Morgan Reed、Printmaking 和 P12 座位,然后点击 Download booking。真实 CSV 包含该会员、工作坊和座位。
凭据输入错误会产生 Sign-in unsuccessful;点击 try again,修正提供的值。如果路径错误,返回准确的基础 URL。浏览器连接错误不是 HTTP 拒绝:完成 Burp 向导,检查拦截状态和准确地址,然后再次访问。关闭 LabEx Tab 不会重置场景。
保留 Browser A 的成功请求
本步骤将在引入另一个浏览器之前,保留 Browser A 的原始会话。切换到 Burp,然后选择 Proxy → HTTP history。找到 members.test:8080 的 GET /autumn/account 行,右键点击并选择 Send to Repeater。对 GET /autumn/booking.csv 重复此操作。如果历史过滤器隐藏了 CSV,打开过滤栏并启用 Show all。
打开主选项卡 Repeater。在第一个请求选项卡中,确认账户路径和原始 Cookie: studio_session=... 请求头,然后点击 Send。读取 Raw 响应:HTTP 200,并包含 Morgan Reed 的预订。选择第二个请求选项卡并点击 Send。它必须返回 HTTP 200 和实际 CSV 预订记录。
这两个请求使用 Browser A 的同一个原始会话 cookie。保持它们不变,包括主机、路径和 cookie。Repeater 的编号选项卡标识请求,而 LabEx 的 Browser A 和 Browser B Tab 标识独立浏览器配置文件。切换 LabEx Tab 不会改变 Repeater 内部选中的请求。
这些成功响应就是基线。一个从未成功使用过的 cookie,无法证明退出登录后是否使真实会话失效。如果选择了错误的历史记录行,将正确路径发送到 Repeater,改用该请求选项卡;通过路径识别它,不要猜测选项卡编号。
测试当前会话的边界
本步骤将检查退出一个浏览器是否只结束其会话。独立浏览器配置文件拥有自己的 cookie 存储。在 Browser A 内再打开一个选项卡会共享 A 的 cookie,不能提供这种比较。
切换到 LabEx 的 Browser B Tab。在其 Chromium 地址栏中访问:
http://members.test:8080/autumn/login
使用同一会员 morgan 和密码 PaperDay!47 登录。如果询问是否保存密码,选择 Never。确认预订并点击 Download booking。让 Browser B 保持登录。它成功访问账户和下载资源的请求必须发生在 A 退出登录之前。
要直接比较会话身份,切换到 Burp → Proxy → HTTP history。选择 B 最近的 /autumn/account 请求,检查其 Raw 请求。它的 studio_session 值与 A 原始 Repeater 选项卡中保留的值不同。两个会话都代表 Morgan Reed,但它们是不同的认证状态。不要将任一 cookie 复制到报告中,也不要用 B 的 cookie 替换 A 保留的 cookie。
切换到 Browser A,点击 Sign out this browser。登录页面出现。然后切换到 Burp → Repeater,在 A 的原始账户请求上点击 Send。预期会看到 401 Unauthorized 和 Sign in required。也发送 A 的原始预订请求:预期 HTTP 401,且不包含会员预订 CSV。保持两个原始 cookie 完整不变;不带 cookie 的请求不能测试 A 的旧会话是否已失效。

读取左侧窗格中未变的 Cookie,以及右侧窗格中的 401 Unauthorized 和 Sign in required。这表示 A 之前可用的会话已被拒绝。
现在切换到 Browser B。点击 Chromium 地址栏旁的重新加载按钮。其预订页面必须仍显示 Morgan Reed 的预订。再次点击 Download booking,确认真实下载。这些新请求证明访问仍然有效;只留在屏幕上而未刷新的页面可能是旧内容。如果 B 也失去了访问权限,结束所有会话就违反了本课程明确的 this browser 契约,即使 A 的旧 cookie 已被拒绝。其他产品可能有意提供单独的“退出所有设备”操作;那是另一种契约。
最后,切换到 Browser A,使用提供的凭据重新登录,查看预订并点击 Download booking。新会话仍然有效。切换回 Burp,不要更改 A 的原始 Repeater 请求。它们最近的响应仍是退出登录后的两个 HTTP 401 响应。
你可以接受这项范围明确的改动:A 的旧会话在两个受保护资源上都失效,B 之前已建立的独立会话仍可用,新登录也可用。这不能证明会话安全的所有方面。
如果意外退出了 B,或替换了 A 的旧 cookie,请建立两个新的独立会话,并重复完整顺序:在两个浏览器中建立两项资源的基线,保留 A 的请求,让 A 退出登录,重放 A 的请求,在 B 中刷新并下载,然后确认 A 重新登录可用。仅重新打开 Tab 不会创建可替代的会话。
保留支持验收通过的测试证据
本步骤将交付私密证据和有依据的验收结论。切换到 Auditor,其起始目录为 /home/labex/project。与之前所学一样,umask 077 限制此 shell 中新建文件的权限,mkdir -p 创建证据目录,chmod 700 让该目录仅供所有者访问。
umask 077
mkdir -p evidence
chmod 700 evidence
切换到 Burp → Repeater。选择 A 的原始账户请求,确认最新响应为退出登录后的 HTTP 401。右键点击 Request 编辑器,选择 Save item,并输入以下绝对路径作为 File Name:
/home/labex/project/evidence/account-after.xml
保持勾选 Base64-encode requests and responses,点击 Save。如果出现 OK 成功提示,点击关闭。对 A 的原始预订请求重复操作,其最新响应也必须是 HTTP 401:
/home/labex/project/evidence/booking-after.xml
这些 XML 条目包含 A 的原始 cookie。Base64 是编码,不是加密。切换到 Auditor,将文件限制为仅所有者可访问:
chmod 600 evidence/account-after.xml evidence/booking-after.xml
ls -l evidence
两个文件都应显示 -rw-------。使用与之前相同的原样复制 here-document 格式编写不含密码的报告。> 替换 assessment.json;结束标记 JSON 必须独占一行。
cat > assessment.json <<'JSON'
{
"decision": "accept",
"account_after_logout": 401,
"booking_after_logout": 401,
"independent_browser_preserved": true,
"fresh_sign_in_works": true
}
JSON
cat assessment.json
交付原始 XML 请求与响应对以及这份报告,不要在报告中包含密码、cookie 或原始请求。现有服务器事实支持 B 的独立访问和重新登录可用;验证不会执行缺失的登录、退出登录或重放请求。其公共页面保留检查请求可能追加一条访问记录,重复评分会保留你的文件。
如果文件名错误,将同一个真实响应导出到正确路径,并再次应用 chmod 600。如果 shell 位于其他目录,使用 pwd 检查,再用 cd /home/labex/project 返回。保留正常公共网站和全部目标资源。
总结
你针对账户页面和预订下载测试了修正后的“仅退出当前浏览器”功能。旧 cookie 被拒绝,之前已建立的独立浏览器会话仍可访问,重新登录也仍然可用。私密 Burp XML 请求与响应对,以及不含密码的评估报告,保留了有依据的验收通过结论。
独立挑战会更换会员、部署地址和预订。应用同样的完整契约,让两个资源的真实响应决定结论。



