有没有办法阻止JavaScript中的某些“函数”在客户端运行?我担心像Mimikatz这样的东西可能会从内存中运行,并使黑客能够危害主机。理想情况下,这将检测不允许运行并阻止执行的可定义代码。
发布于 2016-03-07 12:24:11
您所描述的内容存在一些问题。第一个是很容易混淆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的策略。它不像您希望的那样细粒度,但它很容易设置。
https://stackoverflow.com/questions/35833058
复制相似问题