【Burpsuite靶场】XSS专题精讲

个人】:NEUQ大一学生

专业】:通信工程 (Communication Engineering)

个人方向】:网安、开发双管齐下

座右铭】:真正的英雄主义,就是看清生活的真相后依然热爱生活 -- 罗曼.罗兰

 一、认识XSS(跨站脚本攻击):

1、什么是XSS:

XSS,全称 “Cross-Site Script”,burp官方的解释是允许攻击者与应用程序进行交互。攻击者可以利用XSS伪装成受害者,从而利用受害者身份执行其身份下能够执行的任何操作,包括查看其权限下任何数据,所以XSS的危害还是可大可小的,主要取决于受害者的权限大小。

2、XSS如何进行攻击:

XSS就是将恶意的JS脚本投放到受害者端,当受害者端触发到投放的恶意脚本后即会执行攻击者进行构造的操作,从而达到某种恶意目的。

3、XSS的三种类型:

(1)反射型XSS(Stored XSS):

攻击者构造一个包含恶意脚本的链接,诱使用户点击该链接。当用户点击链接并将包含恶意脚本的参数发送给服务器时,服务器会将恶意脚本反射回给用户的浏览器,浏览器执行该脚本。这种攻击通常通过钓鱼链接、恶意广告等方式传播

(2)存储型XSS(Reflected XSS):

攻击者将恶意脚本代码存储在服务器端的数据库或文件中,当其他用户访问包含这些恶意脚本的页面时,恶意代码会被服务器返回并执行。这种攻击通常用于留言板、论坛、博客等允许用户输入内容的地方。

(3)DOM型XSS(DOM-based XSS):

这种类型的攻击不涉及服务器端,而是利用浏览器端解析HTML和执行JavaScript的过程中的漏洞。攻击者构造一个包含恶意代码的URL,当用户访问包含这个URL的页面时,浏览器在解析URL时会执行恶意代码,从而导致攻击。这种攻击方式涉及到客户端的DOM操作,因此称为DOM型XSS。

(4)self型XSS:

对进行的XSS攻击只有自己可见,其他人不受影响,故危害很小。


二、基于source和sink的DOM型XSS:

1、无编码操作的HTML上下文中的反射型XSS:

(1)反射型XSS原理:

反射型XSS就是应用程序接收到一个HTTP请求,然后以不安全的方式映射到响应中,例如某应用程序构造以参数值为索引的HTTP请求
https://insecure-website.com/search?term=gift
然后应用程序会将参数值拼接到响应中
<p>You searched for: gift</p>
现在还属于是正常的参数值,那么如果我们将参数值设置为这个呢
https://insecure-website.com/search?term=<script>/*+Bad+stuff+here...+*/</script>
映射到响应中就会变成这样
<p>You searched for: <script>/* Bad stuff here... */</script></p>
这条响应如果被受害者打开,在经过浏览器的解析后,遇到闭合的script标签,会将其中内容按照JS脚本来解析,这就使得攻击者达到了其目的,执行了恶意的JS脚本。

(2)靶场复现:

进入靶场,发现搜索框:

搜索数字1并进行抓包,发包到repeater进行查看:

可以发现,参数 search 的值可以被映射到响应中,那么我们可以修改参数 search 的值为 <script>alert(1)</scipt>。

发现访问后出现弹窗。 这就表名此处存在XSS漏洞。


2、无编码操作的HTML上下文中的存储型XSS:

(1)存储型XSS漏洞原理:

存储型XSS就是应用程序从Web数据库获取数据后以不安全的形式映射到响应中,又称持久性XSS或二阶XSS。比如在某个提交评论的功能点提交评论,请求包是这样的:

POST /post/comment HTTP/1.1

Host: vulnerable-website.com Content-Length: 100 postId=3&comment=This+post+was+extremely+helpful.&name=Carlos+Montoya&email=carlos%40normal-user.net

 这条评论在响应中的实现形式为:

<p>This+post+was+extremely+helpful</p>,由于是评论,所以每一个到评论区的用户都能接收到这条响应。

若将评论的语句改为 : <script>alert(1)</script>等恶意代码,则会造成大范围影响,每一个到达评论区接收到此响应的用户都会被波及。

(2)靶场复现:

在靶场评论区进行评论 <script>alert(1)</script>

证明:存在存储型XSS漏洞。


什么是基于DOM型的XSS:

DOM有一个 source 和 一个sink。

source指可以接收用户输入或其他不受信任的数据的地方,例如 URL 查询字符串、表单输入等。

sink指对这些输入进行处理的地方,如果没有适当的验证和过滤,可能导致安全漏洞,例如 document.writeinnerHTMLeval 等方法

DOM型XSS漏洞就是在 source输入点处的输入在被传递给出口点sink的时候,被出口点sink处的函数执行导致触发XSS。

3、基于location.search和document.write使用的DOM型XSS漏洞:

(1)漏洞原理:

location.search:返回 URL 中的查询字符串部分。攻击者可以构造一个包含恶意脚本的 URL,并将其发送给受害者。

http://example.com/page?name=<script>alert('XSS')</script>

document.write():将字符串写入到 HTML 文档中,攻击者可以通过 document.write 在页面中直接插入恶意脚本。

<script>
  var query = location.search;
  document.write(query);
</script>

(2)靶场复现:

进入靶场,查看页面源代码,发现了如下代码:

审计代码:发现 URL中的search参数不经过任何处理便被赋值给 query,然后调用 trackSearch()函数直接将 参数query 拼接至<img>标签中。

我们可以构造 search参数的值对 <img> 标签进行闭合,再跟上想要执行的恶意代码,来构造payload。

将 payload : "> <script>alert(1)</script> 赋值给 search。

闭合后效果如下:

出现弹窗,证明存在XSS漏洞。

4、HTML--select元素中基于location.search和document.write使用的DOM型XSS漏洞:

(1)HTML中的<select>元素:

<select>元素,用于创建下拉列表,允许用户从预定义的选项中选择一个或多个值。下拉列表通常用于表单中,让用户从一组选项中进行选择。

 

代码示例:

执行效果:

(2)靶场复现:

进入靶场,view points,查看页面源代码:

代码中使用 window.location.search 来获取URL中的 参数search 的值,并将其赋值给 store。

然后利用document.write将其与标签 <option selected></option>拼接后写入HTML文档。

构造payload: &storeId=</select><img%20src=1%20οnerrοr=alert(1)>

拼接后效果如下:

出现弹窗,证明存在XSS漏洞。


5、基于location.search和innerHTML使用的DOM型XSS漏洞:

(1)什么是innerHTML:

innerHTML 是一个 JavaScript 中的 DOM 操作方法,用于设置或获取指定元素的 HTML 内容。攻击者可能会尝试利用 innerHTML 来注入恶意脚本或其他不安全的内容到页面中,从而进行 XSS(跨站脚本攻击)等攻击。

(2)innerHTML的特性:

1、innerHTML不接受 <script> 标签。

2、innerHTML不接受 使用onload 事件的 <svg>标签。

(3)靶场复现:

进入靶场,查看源代码:

既然 innerHTML 不接受 <script>标签与使用onload事件的<svg>标签,则使用 <img>标签和 onerror 事件来构造payload: <img src="1" οnerrοr="alert(1)">

出现弹窗,证明存在XSS漏洞。

6、基于location.search和jQuery描点属性的DOM型XSS漏洞:

jQuery库为一种Js库,其中含有修改DOM元素的函数,例如attr()函数

(1)jQuery库中的attr()函数:

attr() 函数是 jQuery 中用于获取或设置 HTML 元素属性的方法。它允许你通过 jQuery 选择器选中一个或多个元素,并对它们的属性进行操作。

// 获取属性的值
$(selector).attr(attributeName);

// 设置属性的值
$(selector).attr(attributeName, value);

// 设置多个属性的值
$(selector).attr({attribute1: value1, attribute2: value2, ...});
  • selector:用于选择要操作的 HTML 元素的 jQuery 选择器。
  • attributeName:要获取或设置的属性名称。
  • value:要设置的属性值

范例:

1、获取属性的值:  

var value = $('img').attr('src');

这将返回所有 <img> 元素的 src 属性值。

 2、设置属性的值:

$('img').attr('alt', 'Alternative text');

这将设置所有 <img> 元素的 alt 属性为 "Alternative text"。

 

3、设置多个属性的值:

$('img').attr({ 'alt': 'Alternative text', 'title': 'Image Title' });

 这将同时设置所有 <img> 元素的 alttitle 属性。

(2)靶场复现:

进入靶场,测试submit feedback功能点,查看源代码:

可以通过修改 returnPath 的值来构造payload,利用JS伪协议,构造payload为:?returnPath =javascript:alert(1)

JS伪协议:

JS 伪协议(JavaScript pseudo-protocol)是一种 URL 协议,用于在网页中执行 JavaScript 代码。它通常以 javascript: 开头,后面跟随着要执行的 JavaScript 代码。

<a href="javascript:alert('Hello, world!')">Click me</a>

存在XSS漏洞。

7、基于Angular JS框架的执行JS代码的DOM型XSS漏洞:

(1)漏洞原理:

如果使用的是像AngularJS这种框架,就可以在没有尖括号和事件的情况下执行JS。当HTML元素使用ng-app属性时,就会被AngularJS处理,就可以在双花括号内执行JS并且回显在HTML页面或属性中

因为防止XSS攻击,可能会对尖括号和双引号进行HTML编码处理。

(2)靶场复现:

进入靶场后,利用工具 Wappalyzer 可以得知使用框架为 Angular JS框架:

于是构造payload: {{$on.constructor('alert(1)')()}}

成功弹窗,存在XSS漏洞。


三、基于反射型与存储型的DOM型XSS漏洞:

二中介绍的DOM型XSS,source是从客户端进行输入的,若source是HTTP请求/数据库,就会衍生出 反射型DOM XSS和存储型DOM XSS

1、反射型DOM-XSS:

(1)靶场复现:

进入靶场,发现搜索框,搜索数字1,发现出现一个开始时没有的JS文件:

  

发现出现一个JS文件,查看源代码并进行审计:

function search(path) {
    var xhr = new XMLHttpRequest();
    xhr.onreadystatechange = function() {
        if (this.readyState == 4 && this.status == 200) {
            eval('var searchResultsObj = ' + this.responseText);
            displaySearchResults(searchResultsObj);
        }
    };
    xhr.open("GET", path + window.location.search);
    xhr.send();

发现函数中调用了eval()函数,只要返回包responseText中存在Json格式的javascript恶意代码,eval()函数便可执行。

对发出的GET请求进行抓包:

发现响应包内容格式为Json,只需要修改参数search参数进行闭合即可。

但有些字符可能会被转义处理,例如尖括号和双引号等。

测试尖括号和双引号是否被转义:

发现双引号被转义了,对我们进行闭合很不利,所以我们手动添加反斜杠,形成双反斜杠使转义失效,于是构造payload: 

成功弹窗,存在XSS漏洞。

2、存储型DOM-XSS:

(1)靶场复现:

进入靶场,view points访问一个页面,利用F12查看前后的 源代码/来源 内容发生的变化,发现访问新的页面后多出了一个JS文件:

审计JS文件源代码:

所有代码集合在 loadComments(postCommentPath)这个函数中,根据函数名loadComments判断这个函数的作用为加载评论区的数据,并通过displayComments()显示,并且通过GET请求加载。

为防止XSS攻击,代码使用escapeHTML()函数对尖括号进行了HTML实体编码使其失效

接着对每条评论进行处理,但是对每一条评论的作者名(comment.author)只进行了一次escapeHTML,若存在多个尖括号<>便可实现绕过。

由此构造payload: <><img src=1 οnerrοr="alert(1)">

提交评论后退出,第二次进入评论区查看评论时便会弹窗:

存在XSS。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/571372.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

fatal: unable to access ‘https://github.com/alibaba/flutter_boost.git/

Git error. Command: git fetch stdout: stderr: fatal: unable to access ‘https://github.com/alibaba/flutter_boost.git/’: Failed to connect to github.com port 443 after 75005 ms: Couldn’t connect to server exit code: 128 GitHub (国际型)代码 分发平台/托管平…

梯度下降法总是在同一点收敛吗?

梯度下降法总是在同一点收敛吗&#xff1f; 梯度下降法并不总是在同一点收敛。梯度下降法的收敛取决于多个因素&#xff0c;包括初始参数的选择、学习率的设置、损失函数的形状等。 以下是一些影响梯度下降法收敛行为的关键因素&#xff1a; 1.初始参数&#xff1a; 初始参数…

Json-server 模拟后端接口

json-server&#xff0c;模拟rest接口&#xff0c;自动生成增删改查接口。(官网地址&#xff1a;json-server - npm) 使用方法&#xff1a; 1. 安装json-server&#xff0c;npm i json-server -g 2. 创建json文件&#xff0c;文件中存储list数据&#xff0c;db.json {"…

图像超分辨率技术在AI去衣中的应用探索

在数字图像处理领域&#xff0c;图像超分辨率&#xff08;Super-Resolution, SR&#xff09;技术一直是研究的热点之一。该技术旨在从低分辨率的图像中恢复出高分辨率的图像&#xff0c;以提供更清晰、更丰富的细节信息。近年来&#xff0c;随着人工智能&#xff08;AI&#xf…

<计算机网络自顶向下> 路由器组成

路由器结构概况 路由&#xff1a;运行路由选择算法/协议&#xff08;RIP, OSPF, BGP&#xff09;生成路由表转发&#xff1a;从输入到输出链路交换数据包-根据路由表进行分组的转发中间的fabric是用来接收输入的分组交给输出端口的&#xff0c;完成局部的转发&#xff08;根据…

free 命令示例

目录 ⛳️推荐 前言 Linux 中如何使用 free 命令 1、以人类可读的形式显示信息 2、连续显示统计数据 3、定义显示统计数据的次数 4、指定输出数据类型 5、获取物理内存和交换内存的总和 总结 ⛳️推荐 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&am…

掌握注册唤起应用的秘诀,Xinstall助你提升用户体验

在移动互联网时代&#xff0c;App已经成为我们日常生活中不可或缺的一部分。然而&#xff0c;随着App数量的激增&#xff0c;如何让自己的App在激烈的市场竞争中脱颖而出&#xff0c;成为开发者们关注的焦点。其中&#xff0c;注册唤起应用作为提升用户体验和转化率的关键环节&…

4- 24

day02 1.100个英语单词 2.vp div3 不过有点小悲惨&#xff0c;第一题正常的直接看出来答案。第二题其实是map模拟&#xff0c;一直没有读懂题目的意思&#xff0c;题目给的序列是打乱的。找出最小的&#xff0c;讲原来的序列补全&#xff0c;如果mp中没有这个数字&#xff0c;…

Linux网络-DHCP原理与配置

目录 一.DHCP工作原理 1.了解DHCP服务 1.1.使用DHCP的好处 1.2.DHCP的分配方式 2.DHCP的租约过程 2.1.DHCP工作原理 2.2.DHCP交互过程 二.DHCP服务器的配置 1.关闭防火墙 2.检查并且安装DHCP有关软件包 3.查看系统的配置文件 3.1.设置参数 4.修改网络 4.1.修改虚…

python高级进阶(一)[str字符串、set集合、dict字典]

目录 一、str字符串 1. 字符串的概念 2.字符串的特点 3. 定义字符串 4. 获取字符串中的某个元素 5. 遍历字符串 6. 字符串的常用方法 6.1 判断 6.2 转换 6.3 查找 6.4 切割 6.5 去空白 7. 小案例【用户名和密码合法校验】 8. 常用方法中 isdecimal() 和 isdigi…

前端开发攻略---封装calendar日历组件,实现日期多选。可根据您的需求任意调整,可玩性强。

1、演示 2、简介 1、该日历组件是纯手搓出来的&#xff0c;没依赖任何组件库&#xff0c;因此您可以随意又轻松的改变代码&#xff0c;以实现您的需求。 2、代码清爽干净&#xff0c;逻辑精妙&#xff0c;您可以好好品尝。 3、好戏开场。 3、代码&#xff08;Vue3写法&#xff…

分布式与一致性协议之CAP(一)

CAP理论 概述。 在开发分布式系统的时候&#xff0c;会遇到一个非常棘手的问题&#xff0c;那就是如何根据业务特点&#xff0c;为系统设计合适的分区容错一致性模型&#xff0c;以实现集群能力。这个问题棘手在当发生分区错误时&#xff0c;应该如何保障系统稳定运行而不影响…

C++多态(个人笔记)

C多态 1.多态的定义以及实现1.1多态的构成条件1.2虚函数1.3虚函数的重写1.4override和final1.5函数重载&#xff0c;覆盖&#xff08;重写&#xff09;&#xff0c;隐藏&#xff08;重定义&#xff09;区别 2.抽象类2.1接口继承和实现继承的区别 3.多态原理3.1虚函数表3.2多态的…

SpringBoot整合七牛云实现图片的上传管理

唠嗑部分 各位小伙伴大家好&#xff0c;我是全栈小白&#xff0c;今天我们来分享一下SpringBoot如何整合七牛云存储实现图片的上传与存储 首先我们来说说图片存储&#xff0c;在项目中图片几乎是必不可少的&#xff0c;那么大家会选择怎样存储呢&#xff0c;当然有几种方案 …

软件游戏缺失d3dcompiler_43.dll怎么修复?分享多种靠谱的解决方法

在我们日常频繁地操作和使用电脑的过程中&#xff0c;时常会遇到一些突发的技术问题。其中一种常见的情况是&#xff0c;在尝试启动或运行某个应用程序时&#xff0c;系统会弹出一个错误提示窗口&#xff0c;明确指出当前电脑环境中缺少了一个至关重要的动态链接库文件——d3dc…

算法学习笔记Day9——动态规划初探

一、介绍 本文解决几个问题&#xff1a;动态规划是什么&#xff1f;解决动态规划问题有什么技巧&#xff1f;如何学习动态规划&#xff1f; 1. 动态规划问题的一般形式就是求最值。动态规划其实是运筹学的一种最优化方法&#xff0c;只不过在计算机问题上应用比较多&#xff…

STM32cubemx和HAL库的使用入门--点亮一颗LED

一&#xff1a;流程介绍 &#xff08;1&#xff09;环境搭建 1 &#xff1a;stm32cubemx安装 2 &#xff1a;stm32xxFW安装 3 &#xff1a;MDK5安装 4 &#xff1a;生成MDK版本project &#xff08;2&#xff09;stm32cubemx创建工程&#xff0c;选择芯片型…

删除链表的倒数第n个节点的最优算法实现

给你一个链表&#xff0c;删除链表的倒数第 n 个结点&#xff0c;并且返回链表的头结点。 提示&#xff1a; 链表中结点的数目为 sz 1 < sz < 300 < Node.val < 1001 < n < sz 你能尝试使用一趟扫描实现吗&#xff1f; 具体实现 要删除链表的倒数第 n 个…

OpenHarmony语言基础类库【@ohos.url (URL字符串解析)】

说明&#xff1a; 本模块首批接口从API version 7开始支持。后续版本的新增接口&#xff0c;采用上角标单独标记接口的起始版本。 导入模块 import Url from ohos.url URLParams9 URLParams接口定义了一些处理URL查询字符串的实用方法。 constructor9 constructor(init?…

基于Spring Boot的家具销售电商平台设计与实现

基于Spring Boot的家具销售电商平台设计与实现 开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/idea 系统部分展示 系统功能界面图&#xff0c;在系统首页可以查看首页…
最新文章