xss注入

一、XSS漏洞基础概念

XSS——跨站脚本攻击(Cross-Site Scripting),简写本为css,但与层叠样式表(Cascading Style Sheets,CSS)重名,故改为XSS,通常是使用javascript将恶意代码插入前端网页,当用户使用这些网页时,这些被嵌入的恶意代码就会实施攻击。

二、XSS漏洞本质

XSS漏洞本质就是将攻击者传递的数据直接或间接使用到前端javascript代码中运行。

三、XSS类型

XSS类型分为反射型、存储型以及DOM型

1.反射型XSS

该类型特点为非持久化,一次性
原理:将恶意代码注入到URL中,如果服务器未对URL携带参数进行过滤,则用户在点击或者访问该链接时,服务器就会携带XSS恶意代码返回页面并执行,常用来窃取用户cookie,劫持流量、执行弹窗广告等。因类型特性攻击者需要诱导用户点击注入过的链接才能实施攻击
数据传输过程:攻击者浏览器->后端->用户浏览器

2.存储型XSS

该类型特点为持久化
原理:在服务器缺少对数据过滤的情况下,攻击者将恶意代码直接传输到服务器的数据库进行存储,在其他用户访问该服务器链接时,服务器就会携带XSS恶意代码返回用户页面并执行,与反射型相比,不需要诱导用户访问特定的链接,但目前对存储型XSS注入防范比较完备,因此使用率并没有反射型高
数据传输过程:攻击者浏览器—>后端->数据库(存储)->后端->用户浏览器

3.DOM型XSS

DOM了解:https://blog.csdn.net/wei1273356078/article/details/106543967
该类型与前两种类型XSS有本质区别,特点就是不需要经过后端,而是直接在网页执行
原理:攻击者的恶意数据直接在当前页面的javascript执行。

四、XSS注入以及简单绕过

这里推荐练习场:https://xss.haozi.me/

1.代码输出一个div的空标签,那我们可以直接用script来弹窗

2.代码将输入数据传入input标签内value值,那我们可以将input闭合后进行弹窗,同时主要value的“

3.代码过滤掉()后再将输入数据返回页面,那我们可以通过acill码、十六进制等编码进行绕过
(1)使用svg标签绕过,只要浏览器解析并加载了SVG标签,他的onload事件就会被触发。我们可以在后面用script标签内写代码作为onload事件

其中&#40与&#41为acill码绕过()
(2)使用img标签绕过,src为图片路径,当无法找到该路径时就会触发onerror事件

其中&#x28与&#x29为十六进制绕过()
(3)借助es6特性,Set.constructor:Set是JavaScript中的一个内置对象,用于存储任何类型的唯一值,这里的.constructor属性会返回Set构造函数本身。所以就是构造了函数并执行跟在后面的值

在该题目中acill码与十六进制绕过可以替换

4.代码将我们输入的数据放入了注释符并输出,并且过滤了 –>,但是注释符除去–>来闭合外还能通过–!>进行闭合后插入img标签

5.代码将我们输入的数据放入输入框,并且将on开头=号结尾的字符串过滤,我们可以借助html中换行不影响代码执行的特性,插入img标签弹窗

除去此题另外一道类似的题目也使用换行输入的解法,用script标签弹窗

6.代码将我们输入的数据放入了article标签,过滤掉了>,但我们可以借助html中对最后一行不需要闭合也能执行的特性,插入img标签弹窗


xss注入
http://example.com/2024/10/08/XSS注入/
作者
印星
发布于
2024年10月8日
许可协议