某不知名博客 某不知名博客
首页
  • 《vulcat文档》
  • Web安全

    • 《BurpSuite及官方实验室》
    • 《OSWE学习历程》
  • 云原生安全

    • 《Docker命令大全》
    • 《CKS考试学习指南》
    • 《旧-Kubernetes教程》
漏洞库
  • 《渗透工具大全》
  • 《云安全》
事件库
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Carsaid

安全界的小学生
首页
  • 《vulcat文档》
  • Web安全

    • 《BurpSuite及官方实验室》
    • 《OSWE学习历程》
  • 云原生安全

    • 《Docker命令大全》
    • 《CKS考试学习指南》
    • 《旧-Kubernetes教程》
漏洞库
  • 《渗透工具大全》
  • 《云安全》
事件库
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 前言

  • 服务器端主题(翻译)

  • 客户端主题(翻译)

  • 高级主题(翻译)

  • 扩展阅读(翻译)

  • 个人学习笔记

  • 实验室做题记录

    • 实验室做题记录
    • 服务器端

    • 客户端

      • 跨站脚本(XSS)

      • 跨站请求伪造(CSRF)

      • 跨域资源共享(CORS)

      • 点击劫持

      • 基于DOM的漏洞

        • 从业者-基于DOM的开放重定向
        • 从业者-基于DOM的cookie操纵
          • 题目
          • 实操
            • 更好的解决方案
        • 从业者-web消息-实现DOM型XSS
        • 从业者-web消息与javascript url-实现DOM型XSS
        • 从业者-web消息与JSON.parse-实现DOM型XSS
        • 专家-DOM覆盖-造成XSS
        • 专家-DOM覆盖-覆盖attributes属性以绕过HTML过滤器
      • WebSockets

    • 高级主题

  • BurpSuite及官方实验室
  • 实验室做题记录
  • 客户端
  • 基于DOM的漏洞
carsaid
2023-10-11
目录

从业者-基于DOM的cookie操纵

# 实验室:基于DOM的cookie操纵

# 题目

此实验室包含一个基于 DOM 的客户端 Cookie 操纵。

若要解决实验室问题,请注入一个 cookie,它将在不同的页面上导致 XSS 并调用print()函数。你需要使用漏洞利用服务器 将受害者定向到正确的页面。

实验室-从业者

基于DOM的cookie操纵 >>

- name: 实验室-从业者
  desc: 基于DOM的cookie操纵 >>
  avatar: https://fastly.statically.io/gh/clincat/blog-imgs@main/vuepress/static/imgs/docs/burpsuite-learn/public/lab-logo.png
  link: https://portswigger.net/web-security/dom-based/cookie-manipulation/lab-dom-cookie-manipulation
  bgColor: '#001350'
  textColor: '#4cc1ff'
1
2
3
4
5
6

# 实操

点击 “ACCESS THE LAB” 进入实验室。

Not Found Image

一个购物站点。

Not Found Image

进入任意一个商品详情页,然后查看网页源代码,会看到以下 JavaScript:

document.cookie = 'lastViewedProduct=' + window.location + '; SameSite=None; Secure'
1

这将会获取当前的 URL,并将其拼接到字符lastViewedProduct=的后面,然后被设置为 Cookie 的一部分。

Not Found Image

捕获一个数据包看看,当前 URL 果然被设置到了 Cookie 当中。

Not Found Image

可以在 URL 中添加几个无效的 GET 传参,看看是否存在可控输入。

Not Found Image

再捕获一个数据包,我们在 URL 中设置的值成功被带入 Cookie 当中。

Not Found Image

直接在 URL 的 GET 传参中拼接 XSS 载荷:

'><img src=1 onerror=print()>
1

访问的一瞬间,成功执行print()函数。

Not Found Image

来到漏洞利用服务器,通过window.location将受害用户重定向到存在漏洞的 URL:

<script>
  window.location = "https://<受攻击的域>/product?productId=1&abc123%27%3E%3Cimg%20src=1%20onerror=print()%3E";
</script>
1
2
3

保存之后,将其发送给受害用户。

注意,需要发送两次才能成功。因为 Cookie 的缘故,第一次访问时会向 Cookie 注入载荷,第二次访问时载荷才会触发。

Not Found Image

发送之后,实验完成。

Not Found Image

# 更好的解决方案

完成实验之后,我看了答案,寻求更好的解决方案(以上载荷需要发送两次才能攻击成功)。

答案是这样做的,通过if和变量x来判断用户是第一次访问,还是第二次访问:

  • 如果未设置变量x的值,则说明是第一次访问,此时会先向 Cookie 注入载荷。然后重新设置src属性,重载站点页面并触发已经注入到 Cookie 中的载荷;
  • 如果已经设置了变量x的值,说明已经注入了载荷,直接加载站点页面 并 触发载荷即可。
<iframe src="https://<受攻击的域>/product?productId=1&'><script>print()</script>" onload="if(!window.x)this.src='https://<受攻击的域>';window.x=1;">
1
编辑 (opens new window)
从业者-基于DOM的开放重定向
从业者-web消息-实现DOM型XSS

← 从业者-基于DOM的开放重定向 从业者-web消息-实现DOM型XSS→

最近更新
01
API测试笔记
04-30
02
msfvenom
03-29
03
Metasploit
03-29
更多文章>
Theme by Vdoing | Copyright © 2023-2024 Carsaid | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式