ctf xss利用_TCTF/0CTF2018 XSS Writeup
作者:LoRexxar'@知道创宇404实验室
刚刚4月过去的TCTF/0CTF2018一如既往的给了我们惊喜,其中最大的惊喜莫过于多道xss中Bypass CSP的题目,其中有很多应用于现代网站的防御思路。
其中bl0g提及了通过变量覆盖来调用已有代码动态插入Script标签绕过strict-dynamicCSP的利用方式。
h4xors.club2则是通过Script Gadgets和postmessage中间人来实现利用。
h4x0rs.space提及了Appcache以及Service worker配合jsonp接口实现的利用思路。
其中的很多利用思路非常精巧,值得研究。所以我花费了大量时间复现其中题目的思路以及环境,希望能给读者带来更多东西...
bl0g
题目分析
An extremely secure blog
Just focus on the static files. plz do not use any scanner, or your IP will be blocked.
很有趣的题目,整个题的难点在于利用上
站内的功能都是比较常见的xss功能
new 新生成文章
article/xx 查看文章/评论
submit 提交url (start with http://202.120.7.197:8090/)
flag admin可以查看到正确的flag
还有一些隐藏的条件
1、CSP
Content-Security-Policy:
script-src 'self' 'unsafe-inline'
Content-Security-Policy:
default-src 'none'; script-src 'nonce-hAovzHMfA+dpxVdTXRzpZq72Fjs=' 'strict-dynamic'; style-src 'self'; img-src 'self' data:; media-src 'self'; font-src 'self' data:; connect-src 'self'; base-uri 'none'
挺有趣的写法,经过我的测试,两个CSP分开写,是同时生效并且单独生效的,也就是与的关系。
换个说法就是,假设我们通过动态生成script标签的方式,成功绕过了第二个CSP,但我们引入了
从CSP我们也可以简单窥得一些利用思路,base-uri 'none'代表我们没办法通过修改根域来实现攻击,default-src 'none'这其中包含了frame-src,这代表攻击方式一定在站内实现,script-src的双限制代表我们只能通过
2、new中有一个字段是effect,是设置特效的
POST /new HTTP/1.1
Host: 202.120.7.197:8090
Connection: keep-alive
Content-Length: 35
Cache-Control: max-age=0
Origin: http://202.120.7.197:8090
Upgrade-Insecure-Requests: 1
Content-Type: application/x-www-form-urlencoded
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Referer: http://202.120.7.197:8090/new
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Cookie: BL0G_SID=vV1p59LGb01C4ys4SIFNve4d_upQrCpyykkXWmj4g-i8u2QQzngP5LIW28L0oB1_NB3cJn0TCwjdE32iBt6h
title=a&content=a&effect=nest
effect字段会插入到页面中的,但这里实际上是没有任何过滤的,也就是说我们可以通过闭合这个标签并插入我们想要的标签,需要注意的是,这个点只能插入70个字符。
3、login?next=这个点可以存在一个任意跳转,通过这个点,我们可以绕过submit的限制(submit的maxlength是前台限制,可以随便跳转
4、站内的特效是通过jqery的append引入的,在article.js这个文件中。
$(document).ready(function(){
$("body").append((effects[$("#effect").val()]));
});
effects在config.js中被定义。
回顾上面的几个条件,我们可以简单的整理思路。
在不考虑0day的情况下,我们唯有通过想办法通过动态生成script标签,通过sd CSP这个点来绕过
首先我们观察xss点周围的html结构
在整站不开启任何缓存的情况下,通过插入标签的方式,唯一存在一种绕过方式就是插入
浏览器有一定的容错能力,他会补足不完整的标签
=====>
但这个操作在这里并不适用,因为中间过多无用标签,再加上即使吞了也不能有什么办法控制后面的内容,所以这里只有一种绕过方式就是dom xss。
稍微翻翻可以发现,唯一的机会就在这里
$(document).ready(function(){
$("body").append((effects[$("#effect").val()]));
});
如果我们可以覆盖effects变量,那我们就可以向body注入标签了,这里需要一点小trick。
在js中,对于特定的form,iframe,applet,embed,object,img标签,我们可以通过设置id或者name来使得通过id或name获取标签
也就是说,我们可以通过effects获取到
这个标签。同理,我们就可以通过插入这个标签来注册effects这个变量。
可如果我们尝试插入这个标签后,我们发现插入的effects在接下来的config.js中被覆盖了。
这时候我们回到刚才提到的特性,浏览器有一定的容错能力,我们可以通过插入,那么中间的代码就会被视为js代码,被CSP拦截。
我们成功的覆盖了effects变量,紧接着我们需要覆盖effects[$("#effect").val()],这里我们选择id属性(这里其实是为了id会使用两次,可以更省位数),
所以我们尝试传入
effect=id">
ctf xss利用_TCTF/0CTF2018 XSS Writeup相关推荐
- xss植入_网站xss漏洞的利用过程
XSS跨站脚本,是一种Web安全漏洞,有趣是是他并不像SQL注入等攻击手段攻击服务端,本身对Web服务器没有危害,攻击的对象是客户端,使用浏览器访问这些恶意地址的网民.这里就跟大家稍微讲解一下网站xs ...
- 【XSS漏洞-06】XSS漏洞利用案例(浏览器劫持、会话劫持、GetShell)—基于神器beEF
目录 1 案例简介 1.1 案例目的 1.2 案例环境 2 案例一:浏览器劫持 2.1 概述 2.2 案例步骤 3 案例二:会话劫持 3.1 概述 3.2 案例步骤 4 案例三:GetShell 4. ...
- php反射型xss,利用反射型XSS漏洞,模拟获取登录账户的Cookie
目录结构 一.测试环境 二.测试目标 三.原理描述 四.操作步骤 1.在服务器上搭建并启用hacker测试网站 2.在服务器上测试站点根目录内创建一个存放攻击脚本的文件夹 3.在xss文件夹下创建攻击 ...
- 【XSS漏洞03】XSS漏洞验证、语句构造与绕过方法
目录 1 漏洞验证相关概念 2 XSS漏洞验证 2.1 常见POC 2.2 反射型XSS漏洞验证 2.3 存储型XSS漏洞验证 2.4 DOM型XSS漏洞验证 3 XSS语句构造与绕过 3.1 XSS ...
- 反射型xss和Dom型xss区别
我们观察这个url 说明会向服务端发送一个请求,只是服务器直接进行返回了所以说反射型的xss是一次性的 不是持久存储 我们可以利用这个漏洞在url里面加入自己的脚本 例如这个网站用户已经登录了,我们可 ...
- XSS学习笔记:XSS Game(xss.pwnfunction.com)1-11通关全解
前言 继续学习XSS 本篇是XSS Game平台的通关全解 1.Ma Spaghet! 源码 一个不安全的方式 直接get传输somebody 输入123看看位置 ?somebody=123 那就很简 ...
- XSS专栏之常见xss总结备忘
layout: post title: XSS专栏 category: Vulnerability_mining tags: XSS keywords: XSS,CSP 前言 开始总结一些xss的想法 ...
- XSS基础及实战(XSS提取cookie并登录的)
该学新知识了! 本篇文章篇幅有点长,做了很多的本地攻击演示! 请耐心观看. 目录 XSS基础 XSS分类 反射型XSS的利用 演示一(基于DoraBOX靶场) 演示二(基于DVWA靶场) 等级为:im ...
- 反射型XSS,存储型XSS,Dom型XSS,如何获取cookie,XSS钓鱼,XSS获取键盘记录
XSS: 反射型XSS,存储型XSS,Dom型XSS,如何获取cookie,XSS钓鱼,XSS获取键盘记录 一.跨站脚本漏洞(XSS) XSS漏洞一直被评估为web漏洞中危害较大的漏洞 XSS是一种发 ...
最新文章
- VS2008中Web Reference和Service Reference的区别
- python语言跨平台语言吗_python属于跨平台语言吗?
- 创建组_在Allegro软件中的Groups组创建之后怎么进行打散呢?
- 初识CPS方法的连续动态建模
- 模型 matlab_MBSDM土壤介电模型及Matlab实现
- Oracle RAC的Failover
- Delphi Invalidate的用法
- 谢旭升《操作系统教程》课后习题解答
- java经典算法(八)---zws
- android谷歌地图v2开发,android google map v2开发环境配置教程
- 关于java.security.AccessControlException: access denied 的解决方法
- 大数据时代,企业如何做好数据防泄漏?
- html5移动开发是什么意思,移动端什么意思?
- 64位 regsrv win10_64位WINDOWS 10系统下安装Eplan 2.8及注册过程
- 小程序也能接广告了,微信小程序广告位投放指南!
- [CVPR2022]3D Photo Stylization: Learning to Generate Stylized Novel Views from a Single Image
- css3 平行四边形 、大括弧
- 垂直水平居中的几种方式
- 金蝶ERP供应链之采购管理
- jq及html通过url下载文件