2016-03-06 52 views
0

是否有某種方法可以阻止JavaScript中的某些'函數'在客戶端上運行?我擔心像Mimikatz這樣的內容可能會從內存中運行,並使黑客能夠侵入主機。理想情況下,這會檢測不允許運行並阻止執行的可定義代碼。阻止在客戶端上運行JavaScript'函數'

+0

根本無法控制HTTP客戶端。 (我的意思是指你的服務器。) – Pointy

+0

許多瀏覽器都有一個選項來完全禁用JavaScript。那是你在找什麼? –

+0

嗨,彼得...我不想禁用JavaScript,因爲這會影響用戶的網絡體驗,白名單會有一些好處,但絕不是故障安全,所以我想要做的是有一個插件也許分析JavaScript確定是否存在(如策略中所定義的)應允許運行的命令。基於策略觸發器和操作,例如不允許代碼運行。 – shoguneye

回答

0

您所描述的內容存在一些問題。首先,它很容易混淆JavaScript。例如,假設您不希望執行eval函數。設計一個正則表達式可以很容易地去除直接調用eval的正則表達式。除非它不是以eval的名字命名呢?

var e = eval; 
e('evil');` 

你也可以檢測到,但你最終會在試圖預測混淆技術的兔子洞中出現。如果你真的想這樣做,我建議從一個像Greasemonkey或Tampermonkey這樣的瀏覽器插件開始。這將是很多工作,你會得到很多誤報。

另一個問題是決定阻止什麼。根據實現情況,JavaScript中只有十幾個global functions,另外還有幾十個全局對象。哪些會被阻止?除非JavaScript引擎或瀏覽器存在漏洞,否則它們都不具有內在危險性。如果您意識到漏洞,修補將比過濾JavaScript更安全和簡單。

JavaScript在攻擊中使用的最常見方式是通過跨站點腳本(XSS)。兩種主要方法是使用惡意腳本從域中竊取數據,或者重新格式化頁面以提示用戶輸入敏感數據(通常是憑證或支付卡號碼)。這兩種技術都使用與合法網頁相同的JavaScript功能,因此通過分析JavaScript實際上是不可能的。可以通過在請求參數中查找JavaScript來阻止簡單的XSS攻擊,但瀏覽器已經這樣做了。

您的Mimikatz示例不是特定於JavaScript的。 Mimikatz是後期開發的通用工具。換句話說,攻擊者必須首先找到進入你的系統的方法,然後使用Mimikatz使其更容易留在惡作劇中。同樣,如果沒有JavaScript引擎或瀏覽器中的初始漏洞,攻擊者將無法使用JS運行類似Mimikatz的內容。

如果您仍然擔心,請查看NoScript之類的插件。它支持定義哪些域可以運行JavaScript的策略。它不像你想要的那麼精細,但它很容易設置。

+0

ahhh ...很好的答案,我很感謝您分享您的專業知識。因此,如果受限制的正常特權用戶執行'Mimikatz。例如,它只會潛在地提供與用戶特權級別相稱的結果。由於缺乏特權,推測加載驅動程序和注入代碼也可能無法實例化。 – shoguneye

+0

只是爲了你的薰陶,如果這就是你所指的,那麼就有一個Mimikatz的JavaScript版本。乾杯 – shoguneye

+0

啊,不知道關於JS Mimikats。 在Web瀏覽器中加載的JavaScript有兩個主要限制。首先,它不能與底層操作系統進行交互,只能使用瀏覽器提供的數據。這會阻止任何像驅動程序加載這樣的低級操作。 第二個限制是相同的原始策略,它只允許腳本從發起腳本的網站請求數據。由於如何定義「數據」以及網站允許的一些有意的例外,這會變得有點複雜。 – SArcher