WordPress AdServe 0.2 这个版本,隐藏着一个极为危险的SQL注入漏洞。如果你正在使用这款插件,请务必提高警惕,及时采取防护措施。
漏洞究竟在哪里?
问题根源在于 adclick.php 文件。该文件接收 id 参数时,完全没有进行任何过滤或转义处理——直接将其拼接到SQL查询语句中。让我们仔细分析这段代码:
if (isset($_GET['id'])) {
Header("Location: ".iri_AdServe_BannerClick($_GET['id']))
// 在 iri_AdServe_BannerClick 函数中:
return $wpdb->get_var("SELECT url FROM $table_name WHERE id=$id;");
}
发现了吗?$_GET['id'] 被原封不动地嵌入到SQL语句中。攻击者只需在 id 参数中注入一段精心构造的恶意SQL代码,就能完全操控整个数据库查询。例如,利用 UNION 查询可以轻松提取用户表、管理员账号和密码等敏感信息。一旦得手,后果不堪设想。
不过,要成功利用该SQL注入漏洞,攻击者需要先得知数据库的表前缀。WordPress 默认使用 wp_ 作为表前缀,但许多站长会自行修改。这意味着攻击者要么通过猜测,要么借助其他信息泄露方式才能获取这一前缀。尽管增加了一道障碍,但对于经验丰富的攻击者而言,这并非难以逾越的壁垒。
现在应该怎么办?
截至本文撰写时,官方尚未发布针对该漏洞的补丁或升级版本。因此,如果你正在使用 AdServe 0.2,最稳妥的做法是密切关注 WordPress 官方插件仓库的更新动态:https://wordpress.org/。一旦有新版本推出,请立即升级。此外,在官方补丁发布之前,你可以考虑临时禁用此插件,或者部署 Web 应用防火墙(WAF)来拦截可疑的SQL注入请求——毕竟,主动防御远比被动应对更能保障网站安全。
