跳到主要内容

某建站厂商SQL注入影响数万企业

建站厂商是供应链风险的高风险目标。 它们统一管理数万家企业网站,一个集中漏洞就能导致大规模的客户数据泄露和权限突破。攻击者攻破建站平台,等于同时攻破其所有客户,这种放大效应使建站厂商成为投入产出比极高的攻击目标。

1 信息收集

信息收集阶段可以直接揭示目标的整体架构。 通过搜索引擎枚举子域名,发现该厂商使用了大量 testwebN.***world.com 格式的子域作为客户网站的临时访问入口,每个子域下托管了数千个客户网站。这种多实例统一托管的结构,意味着任何一个子域上的安全漏洞都具有横向传播到所有实例的潜力。

testwebN 子域的存在揭示了一种典型的运维便利性设计。 建站厂商为了让客户在域名未备案或尚未购买时也能访问网站,将所有客户统一挂载在自己的子域下。多实例部署配合统一的弱防御机制,意味着横向移动几乎零阻力——攻破一个子域,就拿到了进入其他子域的钥匙。

2 漏洞证明

每个子域上的 SQL 注入点都指向同一套数据库结构。 在多个 testwebN 子域的不同页面参数中均发现了注入漏洞,参数未经过滤,支持布尔盲注和 UNION 注入,可直接读取数据库内容。

在多个子域的不同路径下均找到可注入的参数,从 testwebtestweb7 及更多实例均受影响,参数支持布尔盲注和 UNION 注入,攻击者可借此枚举并读取完整的数据库内容。

testweb数据库

web application technology: PHP 5.2.13, Apache 2.2.15
back-end DBMS: MySQL >= 5.0.0
[*] 'yining'@'localhost'
available databases [4]:
[*] information_schema
[*] maindb
[*] test
[*] ...
Database: maindb
[10 tables]
+---------------------------------------+
| t_admin |
| t_bak |
| t_dict |
| t_feedback |
| t_language |
| t_log |
| t_model |
| t_plugin |
| t_progress |
| t_timeline |
| ... |
+———————————————————+

testweb2maindb

Database: maindb
[12 tables]
+------------+
| books |
| company |
| t_admin |
| t_bak |
| t_dict |
| t_feedback |
| t_language |
| t_log |
| t_model |
| t_plugin |
| t_progress |
| t_timeline |
| ... |
+——————+

testweb3maindb

Database: maindb
[6 tables]
+------------+
| books |
| company |
| t_admin |
| t_bak |
| t_dict |
| t_feedback |
| ... |
+------------+

maindb 是整个供应链的薄弱点。 每个子域都有一个 maindb 库,其中存储了该子域下所有客户网站的管理员账号密码、配置、日志等敏感信息,且密码明文存储。这种设计将单点漏洞的影响范围扩展到了整个子域的所有客户。

共享管理员密码揭示了一个典型的设计取舍。 每个子域的 maindb.t_admin 中都存在同一个内置管理员账号,这是建站厂商为了能够随时介入客户网站进行运维支持而预留的后台入口。这种设计在运营层面有其合理性——快速响应客户问题需要统一的访问凭据——但代价是所有客户共享同一个安全短板:一旦这个凭据泄露,整个平台的所有客户后台同时洞开。每个子域都有自己的管理后台入口(如 testweb2.***world.com/admin),使得这一问题在所有实例上同步存在。

3 漏洞影响

共享凭据使所有后台同时可登录,这是供应链风险的直接体现。 使用从 maindb 中提取的内置管理员凭据,可以登录所有子域的管理后台,涵盖 testwebtestweb11 共十余个实例,每个实例下托管了数百至近两千个客户网站。

这种广泛的依赖关系本身就是一个安全风险集中点。 建站厂商与客户之间的关系,决定了厂商平台上的每一个安全缺陷都会等比例放大到整个客户群。从 maindb.t_admin 中随机取出任一客户账号,即可直接登录该客户网站后台,并获取网站权限、数据库权限乃至源代码——客户自身的安全防护在这个供应链漏洞面前完全失效。

漏洞已报告给CNCERT/乌云/补天或厂商且已修复完成,感谢厂商的重视及现金奖励。

披露漏洞细节是安全行业通行做法,若对披露有异议请联系feei#feei.cn进行隐藏厂商处理。