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

时间:2010-12-11 07:51:53

标签: 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...

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

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


编辑:找到SelectQuery课程。尚未尝试过,但它似乎具有更强大的查询构建功能,例如一个Condition财产。

1 个答案:

答案 0 :(得分:2)

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

所以,攻击方法仍然有效,是的。暴露给您的确切风险取决于以下某些因素:

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