web-xss跨站之原理分类及攻击手法
XSS简介
跨站脚本攻击(Cross Site Script),为和层叠样式表区分,安全领域叫做“XSS”。
XSS攻击,通常指黑客通过“HTML注入”篡改了网页,插入了恶意脚本,从而在浏览网页时控制用户浏览器的一种攻击。一开始攻击的演示示例是跨域的,而现在由于JavaScript的强大功能以及网站前端应用的复杂化,是否跨域已经不重要。
XSS原理解析
攻击者通过向web页面中注入JavaScript代码(或者ActionScript、VBScript),来获取用户的Cookie、改变网页内容、URL跳转,存在XSS漏洞的网站就可以盗取用户的Cookie、黑掉页面、导航到恶意网站。
1.反射性XSS
反射性XSS只是简单的将用户输入的数据“反射”给浏览器。往往需要诱使用户“点击”一个恶意链接,服务器端接受数据后处理,然后把带有xss代码的数据发送到浏览器,浏览器解析这段带有xss代码的数据后,才能攻击成功。反射型XSS也叫非持久型XSS。是最容易出现的xss漏洞。
发包 x=1 => x.php =>回包
攻击方式:攻击者通过电子邮件等方式将包含XSS代码的恶意链接发送给目标用户。当用户访问该链接时,服务器接受该用户的请求并进行处理,然后服务器把带有XSS代码的数据发送给用户的浏览器,浏览器解析这段带有XSS代码的恶意脚本后,就会触发XSS漏洞。
2.存储型XSS
存储型XSS会将用户输入的数据存储在服务器端。具有很强的稳定性和隐蔽性。存储型xss是最危险的一种跨站脚本。允许用户存储数据的web应用程序都可能会出现该漏洞。当攻击者提交一段xss代码后,被服务器端接受并存储,当再次访问时,该代码被程序读出来响应给浏览器,造成xss跨站攻击。存储型XSS不需要用户手动触发。
发包 x=1 =>x.php =>写到数据库的某个表 => x.php =>回显
攻击方式:攻击多见于留言板,论坛、博客,在发帖的过程中,将恶意脚本连同正常信息一同注入到帖子内容中。恶意脚本也被永久的保存在后台数据库中,用户浏览帖子时,恶意脚本在用户的浏览器中得以执行。
3.DOM型XSS
DOM型XSS是反射型XSS的一种,只是形成原因比较特别。DOM全称为 Document Object Model,即文档对象模型,DOM通常用于代表在HTML、XHTML和XML中的对象。使用DOM可以允许程序和脚本动态的访问和更新文档中的内容、结构和样式。
DOM的规定如下:
- 整个文档是一个文档节点;
- 每个HTML标签是一个元素节点;
- 包含在HTML元素中的文本是一个文本节点;
- 每个HTML属性是一个属性节点;
- 节点与节点之间有等级关系。
HTML的标签都是节点,这些节点构成了DOM的整体结构:节点树
客户端的脚本程序可以通过DOM动态修改页面内容,从客户端获取DOM中的数据并在本地执行。由于DOM型的XSS漏洞是在客户端修改节点的,所以基于DOM的XSS是不需要和服务器端交互的,它只发生在客户端处理数据阶段
攻击方式:用户请求一个经过专门设计的URL,它由攻击者提交,而且其中包含XSS代码。服务器的响应不会以任何形式
包含攻击者的脚本。当用户的浏览器处理这个响应时,DOM对象就会处理XSS代码,导致存在XSS漏洞。
攻击者的脚本。当用户的浏览器处理这个响应时,DOM对象就会处理XSS代码,导致存在XSS漏洞。