ASP.NET上的Mitigaing OS Injection攻击漏洞

时间:2017-01-31 15:12:03

标签: asp.net asp.net-mvc security

在代码发布到生产环境之前,我使用Burp工具扫描的应用程序。最近的扫描导致了OS Injection攻击漏洞。

在研究中,我看到的操作系统注入攻击的唯一例子是针对unix,java,php应用程序。

这些攻击是否可以针对ASP.NET(MVC)应用程序?如果是这样,您如何降低这种风险? ASP.NET(和/或MVC)本身是否会阻止操作系统注入攻击?

2 个答案:

答案 0 :(得分:1)

该框架本身不易受操作系统注入攻击。您使用此框架编写的代码可能容易受到攻击。例如,如果您有一个控制器操作,该操作执行从外部作为参数传递的命令,您的应用程序将立即变得容易受到攻击。考虑这个例子:

public ActionResult Index(string fileName, string arguments)
{
    Process.Start(fileName, arguments).WaitForExit();
    return View();
}

因此,无论您使用何种框架或编程语言开发应用程序,您都不应该信任用户输入并在接受之前执行适当的卫生设施。

答案 1 :(得分:0)

操作系统注入为defined by the OWASP Foundation如下:

  

操作系统命令从应用程序调用外部应用程序。

     

[...]

     

我们应该寻找的是应用程序和操作系统之间的关系。应用程序利用底层操作系统的功能。

     

在使用Runtime对象的java中,java.lang.Runtime执行此操作。在.NET中,System.Diagnostics.Process.Start等调用用于调用底层OS函数。在PHP中,我们可能会查找诸如exec()或passthru()之类的调用。

但是你的研究当然已经证明了这一点。

  

这些攻击是否可能针对ASP.NET / MVC应用程序?

所以,是的,您使用的任何地方或您使用的任何库使用System.Diagnostics.Process.Start(),无论是直接还是间接地提供用户输入,您都有风险。

  

如果是这样,你如何降低这种风险呢?

像往常一样,通过在必要时适当地转义和消毒用户输入。这不仅包括查询字符串或路由参数,还包括cookie,HTTP标头和诸如此类的内容。