本文详细梳理了WordPress WassUp插件的一个安全漏洞,其核心问题在于输入验证不严格,具体表现为SQL注入风险,可能导致数据库敏感信息泄露。
受影响版本
WordPress WassUp 1.4 - 1.4.3
不受影响版本
WordPress WassUp 1.4.3a
漏洞详情
WordPress的WassUp插件(一款常用的网站统计工具)存在输入验证漏洞,远程攻击者可借此执行SQL注入攻击。漏洞根源在于插件的spy.php文件,它对to_date参数缺乏严格的过滤机制。来看关键代码片段:
if (isset($_GET['to_date'])) $to_date = htmlentities(strip_tags($_GET['to_date']));
# ...........
# spyview($from_date,$to_date,$rows);
#
# -In main.php
#
# function spyview ($from_date="",$to_date="",$rows="999") {
# ...........
# $qryC = $wpdb->get_results("SELECT id, wassup_id, max(timestamp) as max_timestamp, ip, hostname, searchengine,
# urlrequested, agent, referrer, spider, username, comment_author FROM $table_name WHERE timestamp BETWEEN $from_date AND
# $to_date GROUP BY id ORDER BY max_timestamp DESC");
可以看到,spyview函数直接将$from_date和$to_date拼接到SQL查询的BETWEEN子句中。虽然spy.php里使用了htmlentities和strip_tags对输入进行了过滤,但这两种函数仅处理HTML实体和标签,无法阻止SQL注入——因为它们对SQL语法中的特殊字符(如单引号、分号等)毫无防御效果。攻击者只需构造一个恶意的to_date参数,就能绕过限制,控制整个SQL查询,进而窃取数据库中的敏感数据。
官方修复与建议
目前官方已发布修复版本1.4.3a,强烈建议所有受影响用户立即升级。补丁下载地址:WordPress官方插件库。此外,若暂时无法升级,建议检查插件目录下是否存在spy.php文件,必要时可临时禁用该插件,以防被扫描利用。
