javascript – page.evaluate()中是否存在phantomJS注入漏洞?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – page.evaluate()中是否存在phantomJS注入漏洞?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1831字,纯文字阅读大概需要3分钟。
内容图文
![javascript – page.evaluate()中是否存在phantomJS注入漏洞?](/upload/InfoBanner/zyjiaocheng/785/f9db386f569d433fa369f6f6c43d7965.jpg)
使用PhantomJS,您可以通过执行page.evaluate()在浏览器中执行代码.如果我们允许用户指定可以在该浏览器上下文中执行的代码,我们是否向攻击向量开放?有没有办法逃离浏览器上下文到phantomJS环境,从而在我们的服务器上执行命令?
这是一个例子:
page.open(options.url, function(status) {
var test = function() {
return page.evaluate(function() {
return eval({{USER JAVASCRIPT STRING}});
});
});
var interval = setInterval(function() {
if (test()) {
clearInterval(interval);
// take screenshot, do other stuff, close phantom
}
}, 250);
});
根据我的理解,page.evaluate()内部出现的eval()会阻止它们转义打开的页面的上下文.用户javascript字符串作为字符串传递(它不是“编译”到单个javascript文件中).在我看来,与用户浏览带有浏览器的网站并尝试通过他们喜爱的Javascript控制台进行破解之间没有什么不同.因此,此用法不代表安全漏洞.它是否正确?
更新
为确切的用例提供更多的清晰度.基本要点是有人会去一个网址,http://www.myapp.com/?url=http://anotherurl.com/&condition= {{javascriptstring}}.当一个工作人员可用时,它将启动幻像实例,页面.打开提供的URL,然后当条件满足时,它将截取该网页的屏幕截图.这样做的目的是某些页面,特别是那些具有大量异步javascript的页面,具有奇怪的“就绪”条件,这些条件并不像DOM就绪或窗口就绪那样简单.这样,在javascript条件为真之前不会截取屏幕截图.示例包括$(“.domNode”).data(“jQueryUIWidget”).loaded == true或$(“.someNode”).length> 0.
解决方法:
我对PhantomJS不是很熟悉,但是当运行未知代码时,eval本质上是不安全的.逃避预期的背景将是非常容易的:
return page.evaluate(function() {
return eval({{javascriptstring}});
});
http://example.com/?url=http://anotherurl.com/&condition={{javascriptstring}}
{{javascriptstring}}等于哪里:
console.log('All your script are belong to us');
我不确定你可以用PhantomJS做什么样的讨厌的事情,但它是一个用户能够运行他们想要的任何代码的例子,所以这听起来不是一个好主意.用户字符串可以是整个程序.
为了澄清,注入漏洞不在page.evaluate()中,它在代码中的eval中.
内容总结
以上是互联网集市为您收集整理的javascript – page.evaluate()中是否存在phantomJS注入漏洞?全部内容,希望文章能够帮你解决javascript – page.evaluate()中是否存在phantomJS注入漏洞?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。