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

Posted

技术标签:

【中文标题】SQL 注入是不是适用于 WMI 查询?【英文标题】:Does SQL injection apply to WMI queries?SQL 注入是否适用于 WMI 查询? 【发布时间】:2011-05-23 21:08:16 【问题描述】:

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】:

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

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

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

【讨论】:

以上是关于SQL 注入是不是适用于 WMI 查询?的主要内容,如果未能解决你的问题,请参考以下文章

部分sql注入总结

SQL注入之sqli-labs等(安装,配置)

这种 SQL 构造是不是容易发生 SQL 注入? [关闭]

sql注入

sql注入的SQL注入技术

sqli-labs的搭建