【问题标题】:OS Command injection操作系统命令注入
【发布时间】:2013-02-19 12:22:29
【问题描述】:

OS Command Injection 是否适用于 winform 应用程序?

这是主要的安全威胁吗?

如果是,那么保护应用程序免受攻击的最佳可行解决方案是什么?

以上任何链接将不胜感激。

这里是示例代码

公共静态无效 RunNewInstance(参考字符串 pstrUserRole) { 组装 asm = Assembly.GetExecutingAssembly(); 字符串 lstrExeName = asm.ManifestModule.Name; 进程 proc = new Process(); 字符串 lstrCurrentDirectory = Environment.CurrentDirectory; proc.StartInfo.FileName = lstrCurrentDirectory + "\\" + strExeName; proc.StartInfo.Arguments = pstrUserRole; proc.Start(); }

【问题讨论】:

  • 避免向操作系统发送任何客户端输入
  • @kenny:你能提供任何参考吗?我对此一无所知。
  • tenfour 的回答解决了这个问题。在您添加的代码上。您可能想要清除似乎是可能的用户输入 pstrUserRole。您需要确保不允许将操作系统命令添加到其中,可能使用“&”。见superuser.com/questions/62850/…

标签: c# windows winforms


【解决方案1】:

如果您的 winforms 应用程序允许用户输入执行他们原本无法执行的任意系统命令,那么是的,它很容易受到攻击。解决方案是不允许它。与其运行 shell 命令,不如明确说明允许用户做什么。不允许用户做任何事情。

这是一个非常笼统的答案,但您没有提供有关您的应用的具体信息,因此无法知道最适合您的决定是什么。

但我的猜测是,因为这是一个 winforms 应用程序,所以该应用程序可能具有与交互式用户相同的权限。在这种情况下,只要打开命令提示符,您的应用就没有其他事情可以做。

也许您应该提供有关您的应用程序的更多详细信息,以及您为什么害怕这个特定的漏洞。

【讨论】:

  • 你的意思是说我的应用程序不应该允许任何操作系统命令执行??但实际上我被告知
    System.Diagnostics.Process.Start
    被认为是操作系统命令注入下的潜在安全威胁之一。

    我正在使用它通过 Outlook 发送邮件。

  • 除非您完全了解威胁,否则无法保护您的应用。使用Process.Start 本身并不是一个漏洞。重要的是你如何使用它。而且你还没有提供任何细节。
  • 我已经更新了这个问题。上述代码块被视为安全威胁之一。
  • @VijayHulmani 你有没有想过解决这个命令注入问题?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-01-23
  • 1970-01-01
  • 1970-01-01
  • 2014-07-31
  • 1970-01-01
  • 2014-12-18
  • 2012-12-27
相关资源
最近更新 更多