2014-03-27 57 views
1

我收到了一個來自擁有大型購物車網站的朋友的電話。過了一會兒,頁面無法加載,你不得不進行頁面刷新來顯示頁面。混淆JavaScript在網頁上找到

我不是一個HTML傢伙,但可以摸索並理解基礎知識。

我從螢火蟲開始,發現他們正在呼叫失敗的聊天服務。然後,我檢查了網站設置後發生了改變的所有網頁,並刪除了聊天腳本。

然而在同一頁上,我發現下面的腳本:

var _0x3fba = [ 
    "\x72\x61\x6E\x64\x6F\x6D", 
    "\x66\x6C\x6F\x6F\x72", 
    "\x3C\x73\x63\x72\x69\x70\x74\x20\x74\x79\x70\x65\x3D\x22\x74\x65\x78\x74\x2F\x75\x6E\x64\x65\x66\x69\x6E\x65\x64\x22\x3E", 
    "\x77\x72\x69\x74\x65", 
    "\x73\x74\x6F\x70" 
]; 

if (Math[ _0x3fba[1] ]((Math[ _0x3fba[0] ]() * 3) + 1) == 3) { 
    document[ _0x3fba[3] ](_0x3fba[2]); 
    window[ _0x3fba[4] ](); 
}; 

一些谷歌上搜索導致我相信這是模糊JavaScript後。我們屏住了呼吸(這是一個擁有大量流量的大型網站),並刪除了上述腳本,問題消失,網站運行速度加快。

因此,百萬美元的問題是這個腳本實際上在做什麼。

我嘗試了一些在線deObfuscaters,但一無所獲。

+0

可能的重複[如何去混淆這個JavaScript代碼?](http://stackoverflow.com/questions/9352971/how-to-deobfuscate-this-javascript-code) – Quentin

+1

這是它解碼爲:http:/ /pastebin.com/kgksrZdA只需將'_0x3fba [X]'替換爲數組中的值:-) –

+0

@Rocket你用什麼工具解碼它? –

回答

1
if (Math.floor((Math.random() * 3) + 1) == 3) { 
    document.write('<script type="text/undefined">'); 
    window.stop(); 
} 

真的不是很有意思。

+0

該網站很有可能被黑客入侵,並且有1/3的時間頁面「停止」加載。 –

+0

@ Karl-AndréGagnon出於好奇,如果網站遭到黑客攻擊,那麼這種代碼可以進入的唯一途徑就是黑客能否直接在服務器上訪問該文件?不應該有任何注入並將其保存到服務器沒有SSH或FTP,是正確的? – Pete

+0

@mister_rampage我不是一個很好的安全人員。如果您使用CMS,他們可以使用它來修改數據庫或文件。 –

1

如果執行:

["\x72\x61\x6E\x64\x6F\x6D","\x66\x6C\x6F\x6F\x72","\x3C\x73\x63\x72\x69\x70\x74\x20\x74\x79\x70\x65\x3D\x22\x74\x65\x78\x74\x2F\x75\x6E\x64\x65\x66\x69\x6E\x65\x64\x22\x3E","\x77\x72\x69\x74\x65","\x73\x74\x6F\x70"]; 

你會得到

["random", "floor", "<script type="text/undefined">", "write", "stop"] 

這樣的代碼做:

if (Math["floor"]((Math["random"]()*3)+1)==3) { 
    document["write"]('<script type="text/undefined">'); 
    window["stop"](); 
} 

的代碼,打印<script type="text/undefined">隨機停止加載頁面,也許它會嘗試隨機使頁面崩潰。