感說創意股份有限公司存在SQL注入型漏洞 - HITCON ZeroDay

Vulnerability Detail Report

Vulnerability Overview

  • ZDID: ZD-2025-00178
  •  發信 Vendor: 感說創意股份有限公司
  • Title: 感說創意股份有限公司存在SQL注入型漏洞
  • Introduction: 風蕭蕭兮易水寒

處理狀態

目前狀態

公開
Last Update : 2025/04/19
  • 新提交
  • 已審核
  • 已通報
  • 未回報修補狀況
  • 未複測
  • 公開

處理歷程

  • 2025/02/17 19:23:37 : 新提交 (由 萬里 更新此狀態)
  • 2025/02/19 16:27:29 : 審核完成 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2025/03/13 17:16:58 : 通報未回應 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2025/03/13 17:16:58 : 通報未回應 (由 HITCON ZeroDay 服務團隊 更新此狀態)
  • 2025/04/19 03:01:12 : 公開 (由 HITCON ZeroDay 平台自動更新)

詳細資料

  • ZDID:ZD-2025-00178
  • 通報者:jackLI (萬里)
  • 風險:中
  • 類型:資料庫注入攻擊 (SQL Injection)

參考資料

攻擊者可利用該漏洞取得後端資料庫權限及完整資料(包含大量使用者個資或敏感性資料),同時也有機會對資料進行破壞或修改。

漏洞說明: OWASP - SQL Injection
https://www.owasp.org/index.php/SQL_Injection

漏洞說明: OWASP - Top 10 - 2017 A1 - Injection
https://www.owasp.org/index.php/Top_10-2017_A1-Injection

漏洞說明: CWE-89: Improper Neutralization of Special Elements used in an SQL Command ('SQL Injection')
https://cwe.mitre.org/data/definitions/89.html

防護方式: OWASP - SQL Injection Prevention Cheat Sheet
https://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet
(本欄位資訊由系統根據漏洞類別自動產生,做為漏洞參考資料。)

相關網址

https://www.listencontent.com.tw/search?type=media&keywords=

敘述

可构造https://www.listencontent.com.tw/search?type=media&keywords=test' AND 1=1 -- -这样的 URL(其中test为任意字符)。在 SQL 语句中,test'会破坏原有的 SQL 语法结构,AND 1=1是一个永远为真的条件,-- -是 SQL 注释符,用于注释掉后面的内容。若应用存在漏洞,原本的查询逻辑被改变,可能返回与正常搜索不同的结果(如返回更多数据、页面报错等),由此可初步判断存在 SQL 注入漏洞。

获取数据库信息:进一步构造https://www.listencontent.com.tw/search?type=media&keywords=test' AND (SELECT COUNT(*) FROM users)>0 -- -,通过观察页面响应判断数据库中是否存在名为users的表。若页面有变化,如显示正常、报错或返回异常内容,就可推测表的存在情况,进而逐步探测数据库结构,包括其他表名、字段名等信息。
获取敏感数据:当攻击者获取到数据库表结构信息后,假设已知存在users表且包含username和password字段,可构造https://www.listencontent.com.tw/search?type=media&keywords=test' AND 1=2 UNION SELECT username,password FROM users -- -。若应用存在漏洞且数据库权限足够,攻击者就能获取users表中的用户名和密码等敏感数据。

修補建議

修复建议:
输入验证:在服务器端对keywords参数进行严格的输入验证,只允许合法字符输入,可使用正则表达式等方式。例如在 PHP 中,可使用preg_match('/^[a-zA-Z0 - 9\s]+$/', $_GET['keywords'])来确保输入仅包含字母、数字和空格。
参数化查询:避免将用户输入直接拼接到 SQL 语句中,采用参数化查询方式。以 PHP 和 MySQL 为例,使用PDO或mysqli的预处理语句功能。例如:

// 使用PDO的预处理语句
$keywords = $_GET['keywords'];
$pdo = new PDO('mysql:host=localhost;dbname=your_database', 'username', 'password');
$stmt = $pdo->prepare("SELECT * FROM media_table WHERE keyword LIKE :keywords");
$stmt->bindParam(':keywords', '%'.$keywords.'%', PDO::PARAM_STR);
$stmt->execute();
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);

这样可确保用户输入的数据作为数据值处理,而非 SQL 语句的一部分,有效防止 SQL 注入攻击。

數據庫信息一欄全無
存在多個數據庫
PS:沒有去檢查有沒有個資存在,但是看主頁有登錄按鈕,判斷應該有個人信息資料存在。

擷圖

留言討論

聯絡組織

 發送私人訊息
您也可以透過私人訊息的方式與組織聯繫,討論有關於這個漏洞的相關資訊。
;