反射型 XSS

简介:

反射型XSS


科普型paper,大牛略过。--:
在Web2.0技术的发展下越来越多的计算工作被放到客户端处理,由于程序员的疏忽,导致了许多的安全漏洞。XSS属于比较常见的一种,在前几年XSS还并不怎么被人重视,但如今,随着XSS漏洞的危害日益增大,如校内和baidu空间前阵子的XSSWORM等等,其危害之大也引起了大家的重视。
XSS的类型大体分为三种:反射型XSS、持久型XSS以及DOMXSS,相比之下,后两种的利用要比前者方便许多。甚至许多人认为反射型的XSS是鸡肋,因为其利用起来很不方便,但在安全技术飞速发展的今天,鸡肋也有变鸡翅的一天。下面我们来看看什么是反射型XSS。


什么是反射型XSS
XSS又叫CSS(CrossSiteScript),跨站脚本攻击。它指的是恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意攻击用户的特殊目的。
那么什么是反射型XSS呢?

如"http://www.jpl.nasa.gov/about_JPL/maps.cfm?departure=lax%22%3Cimg%20src=k.png%20onerror=alert(%22XSSed%20by%20sH%22)%20/%3E"这样需要欺骗用户自己去点击链接才能触发XSS的是反射型XSS,如在论坛发贴处的XSS就是持久型的XSS。
非持久性XSS(Reflectedcross-sitescripting),是我们通常所说的反射型XSS,也是最常用,使用最广的一种方式。它通过给别人发送带有恶意脚本代码参数的URL,当URL地址被打开时,特有的恶意代码参数被HTML解析、执行。它的特点是非持久化,必须用户点击带有特定参数的链接才能引起。
持久性XSS(Persistentcross-sitescripting),指的是恶意脚本代码被存储进被攻击的数据库,当其他用户正常浏览网页时,站点从数据库中读取了非法用户存入非法数据,恶意脚本代码被执行。这种攻击类型通常在留言板等地方出现。
很多人非常鄙视非持久性XSS(反射型XSS),认为这种XSS只能依靠欺骗的手段去骗人点击,才能让攻击正常实施起来。其实让反射型XSS变得持久的方法,已经出现过好多次了。比如利用applet、利用flash的AS脚本、利用IE的Ghost页面,CrossIframeTrick等等。


反射型XSS的常见利用方法
既然是“需要欺骗用户自己去点击链接才能触发XSS”,那利用反射型XSS岂不是只有去忽悠用户这一种方法?放在几年前也许是这样的,现如今,就要上演鸡肋变鸡翅的好戏了!


[1]欺骗
不得不说这是最简单有效的利用方法了,但对忽悠的能力有严格的要求,不然用户不会那么容易上钩的。其次,现在的用户都有了一定的安全意识,也不是那么好骗了。以上面提到的链接为例,由于是NASA网站的跨站,大家完全可以在一些天文爱好者聚集的群里发类似这样的消息,如:“美国航空航天局公布最新UFO照片”然后加上我们的链接。由于是NASA的链接(现在连小学生都知道NASA是干什么的),我想应该会有一部分人相信而去点击从而达到了我们的目的,这个反射型的XSS被触发。但如果不是这么碰巧呢?请往下看。


[2]ClickJacking
在几年前的OWASP会议上,ClickJacking这种攻击方式被提了出来。简单来说ClickJacking大致是这么回事:
1.表现为点击某个链接或button时,实际上是点击到别的地方去了(劫持链接)
2.不一定需要javascript,所以noscript也挡不住,但是如果有javascript会让事情更简单
3.攻击是基于DHTML的
4.需要攻击者一定程度上控制页面
所以,我们只要将用户的点击劫持到我们的链接上去就行了,而且ClickJacking是可以跨域的哦~
具体应用示例大家去google下就有了。

[3]结合CSRF技术
CSRF是伪造客户端请求的一种攻击,CSRF的英文全称是CrossSiteRequestForgery,字面上的意思是跨站点伪造请求。这种攻击方式是国外的安全人员于2000年提出,国内直到06年初才被关注。
结合CSRF技术来利用反射型XSS是种不错的方法,利用CSRF可以使得这些不好利用的XSS漏洞变得威力无穷。具体示例请参考余弦的《基于CSRF的XSS攻击》(http://huaidan.org/archives/2561.html),这里就不细说了。

[4]CrossIframeTrick
先讲讲这种攻击能够达成什么效果:
1.跨域执行脚本(IE、Firefox)
2.把非持久性XSS变成持久性XSS-->!!!
3.跨页面执行脚本
这种攻击方法比较绕,具体请参考《CrossIframeTrick》(http://hi.baidu.com/aullik5/blog/item/07d68eb015d72652092302b1.html)

[5]反转雅典娜---配合Anehta的回旋镖模块
什么是Anehta?Anehta是一个跨站脚本攻击(XSS)的利用平台。功能模块化,开发者可以单独为anehta开发各种各样的模块,以满足独特的需求。Anehta中有许多的具有创意的设计,回旋镖模块(Boomerang),就是其中一个。回旋镖模块的作用,是为了跨域获取本地cookie,只是在站点上有一个XSS,种类不限,不管是反射型XSS,还是持久型XSS,都可以为我们工作。
这时,反射型XSS的余热就被充分的发挥了。
具体示例请参考axis牛的《Anehta--Boomerang(回旋镖),如何将反射型XSS变成持久型XSS:论跨域获取cookie》(http://hi.baidu.com/aullik5/blog/item/02bccaeb018dc4d5d539c930.html),这里就不再做详细的介绍。


DVWA(DamnVulnerableWebApplication)DVWA是用PHP+Mysql编写的一套用于常规WEB漏洞教学和检测的WEB脆弱性测试程序。包含了SQL注入、XSS、盲注等常见的一些安全漏洞。

下面简单的以dvwa里面反射型XSS漏洞的三种等级代码来说一下代码审计。

首先比较low、medium、high三种级别的php代码:

215733643.png

215735561.png

215739668.png

通过对三份代码的比较,我们发现media的代码比low的代码增加了一个<script>的过滤,在提交后,我们发现<script>被过滤转意了,而high的代码则是使用了dhtmlspecialchars()函数,htmlspecialchars()函数把一些预定义的字符转换为HTML实体。

预定义的字符是:

  • &(和号)成为&amp;

  • "(双引号)成为&quot;

  • '(单引号)成为&#039;

  • <(小于)成为&lt;

  • >(大于)成为&gt;




现在我们来对反射型的XSS三种级别的漏洞进行测试

在low里,未做任何的验证
直接提交<script>alert(/xss/)</script>测试

215741108.png

URL:http://192.168.111.146/dvwa/vulnerabilities/xss_r/?name=%3Cscript%3Ealert%28%27xss%27%29%3C%2Fscript%3E

215743213.png

在media里,只过滤了<script>,那么我们可以对它绕过去

我们可以提交<SCRIPT>alert('xss')</SCRIPT>

或者<scri<script>pt>alert('xss')</script>

215746362.png

URL:http://192.168.111.146/dvwa/vulnerabilities/xss_r/?name=%3CSCRIPT%3Ealert%28%2Fxss%2F%29%3C%2FSCRIPT%3E

215749892.png

对于high的XSS,用了htmlspecialchars,不知道你能不能用什么方法绕过,如果无法绕过可以参考Discuz的dhtmlspecialchars()函数:)


浅析Anehta回旋镖模块工作原理
既然提到了Anehta的Boomerang模块,那就简单说说吧。
Boomerang的工作原理:我们知道,浏览器被XSS攻击后,攻击者可以用js或其他脚本控制浏览器的行为。这时候如果我们强制浏览器去访问站点B上一个存在XSS漏洞的页面,就可以继续用B站上的XSS_B控制用户的浏览器行为;那么把整个过程结合起来,简单表示如下:
victimBrowser--->siteA,XSS_A----redirectto---->SiteB,XSS_B-----redirectsomewhere--->.....
在IE中,iframe、img等标签都是拦截本地cookie的。需要使用不拦截cookie的比如window.open等方法,但是window.open会被IE拦截弹出窗口,所以axis牛在Boomerang中使用了表单提交,构造一个form,向siteB提交,然后再从SiteB导入一个XSSB,获取了cookie后,再通过表单提交,跳转回原来的SiteA.如果在SiteB上,使用XSS_B再将页面重新定向回SiteA,那么对于用户来说,就是简单的闪了一下,非常具有欺骗性,整个过程就像用回旋镖扔出去打了一下B一样。
但其实这并没有把反射型XSS真正的变成持久型的XSS,只是反射型XSS的一种攻击方式而已,也没有跨域,而是URL重定向转了一圈,跳了一圈又回来了。但这确实是让反射型XSS得到了充分的利用,达到了我们的目的。axis牛的这种思路非常值得我们学习!



本文只总结了常见的反射型XSS利用的方法,但都是简单的提了下,让大家见到反射型XSS时能想到这些(貌似要都详细写出来就太多了--:),如有不足之处还请各位见谅。





     本文转自Tar0 51CTO博客,原文链接:http://blog.51cto.com/tar0cissp/1305995,如需转载请自行联系原作者




相关文章
|
1月前
|
安全 JavaScript 前端开发
Low 级别反射型 XSS 演示(附链接)
Low 级别反射型 XSS 演示(附链接)
17 0
|
1月前
|
存储 前端开发 JavaScript
反射型 XSS 攻击演示(附链接)
反射型 XSS 攻击演示(附链接)
94 0
|
供应链 安全 IDE
Gotify <2.2.3 存在反射型 XSS 漏洞(MPS-2023-0815)
Gotify <2.2.3 存在反射型 XSS 漏洞(MPS-2023-0815)
Gotify <2.2.3 存在反射型 XSS 漏洞(MPS-2023-0815)
|
供应链 安全 JavaScript
Apache Sling App CMS <1.1.4 存在反射型XSS漏洞(CVE-2022-46769)
Apache Sling App CMS <1.1.4 存在反射型XSS漏洞(CVE-2022-46769)
Apache Sling App CMS <1.1.4 存在反射型XSS漏洞(CVE-2022-46769)
|
JavaScript 安全 前端开发
|
Web App开发 安全 测试技术
|
26天前
|
JavaScript 安全 前端开发
js开发:请解释什么是XSS攻击和CSRF攻击,并说明如何防范这些攻击。
XSS和CSRF是两种常见的Web安全威胁。XSS攻击通过注入恶意脚本盗取用户信息或控制账户,防范措施包括输入验证、内容编码、HTTPOnly Cookie和CSP。CSRF攻击则诱使用户执行未经授权操作,防范手段有CSRF Tokens、双重验证、Referer检查和SameSite Cookie属性。开发者应采取这些防御措施并定期进行安全审计以增强应用安全性。
19 0
|
3月前
|
存储 JSON 前端开发
【面试题】XSS攻击是什么?
【面试题】XSS攻击是什么?
|
3月前
|
存储 开发框架 安全
如何处理预防XSS漏洞攻击问题
防止XSS攻击需要从多个方面入手,包括输入验证和过滤、输出编码、设置正确的HTTP头部、使用最新的安全框架和库、定期进行安全审计和漏洞扫描以及培训和意识提升等。只有综合运用这些措施,才能有效地防止XSS攻击,保护网站和用户的安全。
|
6月前
|
存储 安全 JavaScript
渗透攻击实例-xss跨站脚本攻击
渗透攻击实例-xss跨站脚本攻击