SQL注入是否适用于WMI查询?

Pet*_*ron 5 sql wmi sql-injection

SQL注入是否对WMI构成威胁?

例如:

鉴于以下代码,如果domainName在外部提供并且未经过清理,恶意攻击者可能会实现什么?

string domainName = "user-inputted-domain.com";
string wql = "SELECT * 
    FROM MicrosoftDNS_ATYPE
    WHERE OwnerName = '" + domainName + "'";
// perform WMI query here...
Run Code Online (Sandbox Code Playgroud)

如果它是一种威胁,我认为它是什么,最好的方法是防御它而不是像使用LINQ那样使用正常的参数化查询?简单地剥离任何[ ']字符都可以解决问题吗?

另外,有没有用于查询WMI的LINQ扩展来解决这个问题?


编辑:找到SelectQuery班级.尚未尝试过,但它似乎具有更强大的查询构建功能,例如Condition属性.

Dan*_*olo 3

它以同样的方式容易受到攻击,因为他们可以在此之后输入任意条件。想想他们是否将其foo' OR SomeOtherField='bar作为自己的投入。但是,我认为您不能在一个字符串中执行多个 WQL 查询,因此它可能不具有相同的“攻击面”,因为 WQL 是 SQL 的一小部分。

所以,攻击方法仍然有效,是的。您面临的具体风险取决于以下一些因素:

  • 潜在的攻击者是否可以提前终止您的 WQL 语句,然后插入自己的语句?
  • 他们能否调整过滤器以释放比您想要的更多的数据(正如我上面提到的)?
  • 可能还有很多我没有想到的