我在一个应用程序上工作,在代码发布到生产之前,Burp工具会对其进行扫描。最近的扫描导致了操作系统注入攻击漏洞。
在做研究时,我看到的唯一的OS注入攻击的例子是unix,java,php应用程序。
这些攻击可能针对的是ASP.NET应用程序吗?如果是这样,您如何减轻这种风险?ASP.NET (和/或MVC)本身能防止OS注入攻击吗?
发布于 2017-01-31 23:15:51
该框架本身不容易受到OS注入攻击。使用此框架编写的代码可能是易受攻击的。例如,如果您有一个执行从外部作为参数传递的命令的控制器操作,则您的应用程序立即变得易受攻击。考虑这个例子:
public ActionResult Index(string fileName, string arguments)
{
Process.Start(fileName, arguments).WaitForExit();
return View();
}因此,基本上,无论您使用哪种框架或编程语言来开发应用程序,都不应该信任用户输入,并在接受它之前执行适当的清理。
发布于 2017-01-31 23:17:12
OS注入的defined by the OWASP Foundation方式如下:
操作系统命令从应用程序调用外部应用程序。
..。
我们应该寻找的是应用程序和操作系统之间的关系。该应用程序利用底层操作系统的功能。
在使用运行时对象的java中,java.lang.Runtime可以做到这一点。在.NET中,诸如System.Diagnostics.Process.Start之类的调用用于调用底层OS函数。在PHP中,我们可以查找诸如exec()或passthru()这样的调用。
当然,你的研究已经证明了这一点。
这些攻击有可能针对ASP.NET/MVC应用程序吗?
所以,是的,您使用的任何地方,或者您使用的任何库都使用System.Diagnostics.Process.Start(),无论是直接还是间接地提供用户输入,您都处于危险之中。
如果是这样的话,您如何减轻这种风险?
像往常一样,在必要的地方适当地转义和清理用户输入。这不仅包括查询字符串或路由参数,还包括cookie、HTTP标头等。
https://stackoverflow.com/questions/41960994
复制相似问题