Intigriti的2020年5月XSS挑战

分析题目

在访问Challenge.intigriti.io 时,显示以下页面

引起我的注意:我看到的第一件事是黑体字,指出XSS仅在Firefox(恰好是我的主要浏览器)中工作。考虑到这一点,我按了CTRL + U来查看页面的静态HTML。这是一个截图:

以下HTML是页面中对JavaScript的唯一引用(当然,不包括可见文本):

<script async src="widgets.js" charset="utf-8"></script>

我看了一下,widgets.js乍看之下,我看到了一个压缩的JavaScript文件,其中包含对Twitter的一些引用。经过进一步检查,我意识到它可能只是https://platform.twitter.com/widgets.js的复制和粘贴。我对文件进行了区分,是的,它们基本上是相同的。这时,我只是假设里面的代码widgets.js是安全的。

尽管其中一个列表条目指出XSS“应在此页面上执行”,但我还是决定四处寻找其他文件。

我在https://challenge.intigriti.io/robots.txt上看看是否有什么有趣的事情。我确实获得了新的信息,但是没有达到我期望的形式。它只是返回了与以前完全相同的页面。这意味着可以从其他路径访问目标页面,这也很有用。
接下来,我测试了https://challenge.intigriti.io/a/,结果如下:

那么,这里发生了什么?提供了完全相同的HTML,但是由于URL的路径组件包括一个未转义的/浏览器视a/为目录,并试图从那里加载相对的子资源。换句话说,浏览器正在尝试加载/a/style.css/a/widgets.js而不是/style.css/widgets.js。(顺便说一句,此名称的实际名称是相对的路径覆盖。)

在测试时发现https://challenge.intigriti.io//<location>是一个开放重定向。例如,https://challenge.intigriti.io//physuru.github.io重定向到https://physuru.github.io。另外,访问https://challenge.intigriti.io//(在两个斜杠之后没有任何内容)没有重定向,而是加载了默认页面。现在,我的目标很明确。我必须让Web浏览器同时使用路径覆盖和开放重定向来加载widgets.js

最后使用的一步是路径遍历。 我确实在这部分卡住了一段时间。 我很快发现Firefox和(大多数)其他浏览器之间的区别,但是我不知道如何应用它。区别在于,在Firefox中,如果满足以下条件,则不会删除两个点(..)和先前的路径组件:

  • 点在路径的尽头
  • 这些点中至少有一个是百分比编码的

例如,如果要加载https://challenge.intigriti.io/abc/.%2E(在Firefox中)的任何(合理)变体,则尾随点(以及先前的路径组件)将保留

解决题目

根据上面的分析,我们可以结合重定向和路径遍历来解决题目
https://challenge.intigriti.io//physuru.github.io%252fintigriti_may_2020_solution/.%2E

原理分析

加载https://challenge.intigriti.io/a/.%2E(在Firefox中)时,我们会得到默认页面(即https://challenge.intigriti.io页面)!!


这意味着服务器认为我正在请求https://challenge.intigriti.io//。换句话说,服务器看到了a/,但是随后看到了.%2E。将.%2E被解析为..,这意味着整个a/.%2E,URL的一部分基本上忽略(因此不会重定向,而是得到了默认页面)。
但是由于路径遍历仅在服务器端,因此浏览器仍将从//a中加载相对子资源的目录!因此,浏览器任然向https//a/widgets.js发出请求,该请求确实被重定向到https://a/widgets.js


https://physuru.github.io/intigriti_may_2020_solution/的目录下存在widgets.js。我们可以用
https://challenge.intigriti.io//physuru.github.io%252fintigriti_may_2020_solution/.%2E
来加载JavaScript文件。

%252f使用的url双重编码,因为还要重定向一次,需要解码两次.

注意

用于重定向的url需要使用https,所以直接使用本地(http)测试不会成功。
如果你想使用github的gists,也不能使用。

参考

https://physuru.github.io/blog/posts/intigriti_may_2020_challenge/

本文来源于: https://xz.aliyun.com/t/7800

相关推荐

thinkphp 5.1框架流程分析与RCE

环境 phpstudy+thinkphp5.1.20 由于thinkphp5.1以上的版本不再支持官网下载源码,需要使用composer下载,比如说下载5.1.20版本 composer create-project --prefer-di

CVE-2016-4437:Apache Shiro RememberMe UnSerialized RCE分析

影响范围 Apache Shiro <=1.2.4(由于密钥泄露的问题, 部分高于1.2.4版本的Shiro也会受到影响) 漏洞类型 反序列化导致RCE 漏洞概述 Apache Shiro 是ASF旗下的一款开源软件,它提供了一个强大而灵活

Bug Bounty:Keybase一键式RCE

TL;DR 用户可以keybase客户端对话框中发送任意聊天链接。在Windows平台中,通过keybase客户端给受害者发送一个明显无害的链接,当单击该链接时,可以在受害者系统上执行任意命令。 keybase介绍 keybase类似于sl

qdPM <9.1 远程代码执行漏洞分析(CVE-2020-7246)

qdPM \<9.1 远程代码执行漏洞分析(CVE-2020-7246) 0x00 背景知识 htaccess文件 .htaccess文件是Apache服务器中的一个配置文件,负责相关目录下的网页配置。通过htaccess文件,可以实现网页

phpmyadmin<4.8.3 XSS挖掘

前言 最近在审计phpmyadmin的时候发现了一个XSS漏洞,后来发现在版本大于4.8.3以后该漏洞被修复了。看了下之前公布的CVE,有个CVE和此漏洞很相似但没有漏洞细节,于是乎便有了这篇文章。 准备 需要的环境 phpmyadmin

都0202年了老嗨还在用的 - 各种姿势jsp webshell

最近,我的朋友“老嗨”,他参加了一个某云举办的号称可能史上最强的使用了AI技术的Webshell检测系统挑战赛...因为我没什么时间去搞这个,所以,我把我珍藏多年,姿势比较多的JSP Webshell发给了老嗨,老嗨跟我说,全部bypass

WordPress Page Buider插件 CSRF to XSS漏洞分析

前言 Page Builder by SiteOrigin是一个安装量超过100W的WordPress页面生成器插件,该插件可帮助用户使用基于小工具的页面生成器轻松构建响应式页面内容 近日wordfence安全人员披露了一个Page Bui

Spring Boot漏洞复现

复现一下Sprint Boot的一些漏洞 环境搭建 Dump环境 Mvn构建项目 启动项目 端点信息 路径 描述 /autoconfig 提供了一份自动配置报告,记录哪些自动配置条件通过了,哪些没通过 /beans 描述应用程序上下文里全部

CVE-2020-9484 tomcat session反序列化漏洞分析

CVE-2020-9484 tomcat session反序列化漏洞 漏洞通告 可以看到利用条件较为苛刻,并且在复现的时候需要做一定配置 修改PersistenceManager配置,这个配置是在tomcat目录的conf目录中的conte

wireshark和威胁分析

TL;DR 前段时间看了一个介绍wireshark和威胁分析相关的议题(视频演讲和pdf见参考链接),现在抽出点儿时间总结和记录一下。 由于工作需要,那段时间搜集和整理了wireshark基本使用和技巧相关资料,但是总感觉不太完整不够深入,

PHPYUN人才系统一个正常函数不正常用法引发的逻辑隐患(审计思路)

一般来说审计的话都可以从入口文件代码开始看起,因为从入口文件代码中可以给到非常多的信息为后面审计做好铺垫,比如根目录下的 index.php 基本都会为程序的入口文件。 index.php: include(dirname(__FILE__