WEB安全总结之读懂Xss

原理

Xss攻击通常是指攻击者利用在网页开发时程序员设计不严谨产生的漏洞,通过设计巧妙的的方法将代码注入到网页(或服务器)中,使用户在浏览相关网页时加载并执行恶意代码。以达到自己恶意的目的,通常会获得目标更高的权限,会话和cookie等内容。通常这些网页程序会使用Javascript,Java、vbscript(较少),或普通的HTML代码生成。JavaScript可以用来获取用户的cookie,改变网页内容,url跳转,

类型

存储型

攻击者事先将恶意代码上传或储存到漏洞服务器中,只要受害者浏览包含此恶意代码的页面就会执行恶意代码。这就意味着只要访问了这个页面的访客,都有可能会执行这段恶意脚本,因此储存型XSS的危害会更大。因为存储型XSS的代码存在于网页的代码中,可以说是永久型的。

存储型 XSS 一般出现在网站留言、评论、博客日志等交互处,恶意脚本存储到客户端或者服务端的数据库中。

反射型

反射型XSS也常被称作非持久性XSS,是比较常见的一种。当用户访问一段带有XSS代码的URL请求时,服务器端接收数据后处理,然后把带有XSS代码的数据发送到浏览器,浏览器解析这段含有XSS代码后,会形成XSS漏洞,这个漏洞形成过程就像一次反射,故称为反射型XSS。

示例

 

 

DOM型

DOM型XSS,先了解一下DOM,DOM型XSS就是基于DOM文档对象模型的。对于浏览器来说,DOM文档就是一份XML文档,DOM型不用将恶意脚本传输到服务器在返回客户端,这就是DOM型和反射、存储型的区别,客户端JavaScript可以访问浏览器的DOM文本对象模型是利用的前提,当确认客户端代码中有DOM型XSS漏洞时,并且能诱使(钓鱼)一名用户访问自己构造的URL,就说明可以在受害者的客户端注入恶意脚本。利用步骤和反射型很类似,但是唯一的区别就是,构造的URL参数不用发送到服务器端,可以达到绕过WAF、躲避服务端的检测效果。

利用

XSS会话劫持

 

XSS Farmework

 

Xss getshell

 

XSS蠕虫

 

无过滤的情况进行利用

借助常见标签

以下列举的标签大部分是可以自动触发js代码的,无需用户去交互,大部分情况下我们也是希望是程序自动触发而不是等用户触发

 alert("xss"); 

  

  

 竞争焦点,从而触发onblur事件  

 通过autofocus属性执行本身的focus事件,这个向量是使焦点自动跳到输入元素上,触发焦点事件,无需用户去触发  

 

 

使用open属性触发ontoggle事件,无需用户去触发

通过autofocus属性执行本身的focus事件,这个向量是使焦点自动跳到输入元素上,触发焦点事件,无需用户去触发