PHP沙盒的安全问题

PHP沙盒的安全问题,php,Php,我正在为Web应用程序蜜罐开发一个PHP沙盒。PHP沙箱将分析可能作为RFI攻击的一部分注入的PHP文件。它应该在安全的环境中运行文件并返回结果,嵌入PHP脚本的输出。我们希望欺骗攻击者相信这是一个真正的反应,从而继续他的下一步攻击 为了构建沙箱,我们使用了高级PHP调试器(ADP)。使用rename_函数和override_函数,易受攻击的PHP函数已被重写。一些函数,如exec,磁盘空闲空间已被重写,以发送虚假回复。所有其他函数都不返回任何内容。已考虑的功能的完整列表 此外,输入脚本在沙箱中

我正在为Web应用程序蜜罐开发一个PHP沙盒。PHP沙箱将分析可能作为RFI攻击的一部分注入的PHP文件。它应该在安全的环境中运行文件并返回结果,嵌入PHP脚本的输出。我们希望欺骗攻击者相信这是一个真正的反应,从而继续他的下一步攻击

为了构建沙箱,我们使用了高级PHP调试器(ADP)。使用
rename_函数
override_函数
,易受攻击的PHP函数已被重写。一些函数,如
exec
磁盘空闲空间
已被重写,以发送虚假回复。所有其他函数都不返回任何内容。已考虑的功能的完整列表

此外,输入脚本在沙箱中最多只运行10秒。在那之后,整个沙箱过程都被杀死了

  • 这张单子够好吗?这是否使沙箱足够安全,可以成为web应用程序的一部分

  • 除了像这样阻止函数调用之外,还有其他安全措施需要采取吗

  • 最后,这是一个蜜罐。因此,我们希望我们的答复尽可能接近真实的答复。因此,通过阻止DNS函数调用,如
    DNS\u check\u record
    gethostbyname
    ,我们不必要地限制了脚本的执行范围。(我不知道他们为什么会出现在这里)

    简而言之,我想知道应该从列表中添加/删除哪些元素

  • 如有任何其他建议/建议,将不胜感激


  • 我认为,如果不是不可能的话,很难预见所有可能有害的函数调用,以伪造它们的输出(例如,高亮显示_文件或其别名show_源不在您的列表中)。此外,在真实应用程序和蜜罐中使用相同的服务器还会引起其他问题:应用程序是否使用扩展?如果它真的这样做了,则必须阻止/伪造更多的功能。如果你更新了其中一个扩展呢?你必须重新检查新的安全漏洞。另外,如果一个恶意文件被上传到蜜罐,然后从主应用程序访问,会怎么样??当然你会采取措施不让这种情况发生,但如果你在某个时候有一个错误,有害的代码将已经在服务器上。。。在我看来不安全


    我认为最好按照MitMaro的建议设置vm。在这种情况下,虚拟机本身就像一个沙箱一样好,不费吹灰之力,您就可以让所有讨厌的php函数在虚拟机内执行,而不会影响主应用程序的安全性

    如果不实际运行,您如何知道代码的输出?我想您可以对代码进行一些极其复杂的分析,以迂回的方式收集输出,但除此之外?我知道这没有多大帮助,但我的建议是你不要这样做。如果有什么东西不小心滑过你的蜜罐,那就糟糕了!服务器受损。这一点都不好玩。我不知道为什么有必要这么做?你就不能从一开始就阻止RFI攻击吗?或者这可能已经发生了,并且您正在尝试验证服务器上的所有代码都没有被泄露?听起来像是一个整洁但风险很大的项目。我认为,在这种情况下,确保完美沙盒的唯一方法是将实际的蜜罐放在不同的服务器上(虚拟机可能允许快速重新加载),并让实际的服务器将完整的php脚本传递给第二台服务器。这样,如果你忘记了什么,没有什么大不了的。@Corbin:不,我们正在运行代码。只是,对于一些有风险的函数,例如
    exec
    fopen
    ,我们会返回假输出(例如当它们请求/etc/passwd文件时)。@rdlowrey:想法是让RFI发生,捕获注入的文件,运行它,并希望捕获更多的文件,如果它们碰巧被恶意脚本下载。+1感谢您提供的示例函数。此外,我还发布了一个关于询问虚拟机的问题。如果你有任何建议,请回答这里。