该技能是一套 PostgreSQL 数据库服务(默认端口 5432,也涉及 5433)的渗透测试方法论,按阶段给出测试路径与命令参考。内容以决策树形式组织,覆盖从服务发现到后渗透的完整流程。
一、用途 用于在扫描发现 5432/5433 端口开放后,对 PostgreSQL 服务进行系统化的安全评估,包括版本识别、认证测试、数据库枚举、文件读写、命令执行、权限提升与已知漏洞利用。
二、主要能力(按阶段)
- 服务发现与版本识别:使用 nmap 的 -sV -sC 探测、Metasploit 的 postgres_version 模块;通过 version()、current_setting('is_superuser')、SHOW data_directory 等 SQL 查询获取信息;根据 rdsadmin、cloudsqladmin、supabase_admin 等特征判断托管环境;本地审计可查找 postgresql.conf、pg_hba.conf,检查 trust/peer 规则、socket 与 .pgpass。
- 认证测试:尝试 postgres:postgres、postgres:空、admin:admin 等默认凭据;利用本地 trust 认证(sudo -u postgres psql、psql -h 127.0.0.1);使用 hydra 或 postgres_login 模块进行密码喷洒;通过 dblink 连接 127.0.0.1 绕过本地认证。
- 数据库枚举:列出数据库、表、Schema;查询 pg_shadow、pg_roles、pg_auth_members 获取用户与角色及组成员关系;检查 pg_execute_server_program、pg_read_server_files、pg_write_server_files 等特权组;枚举已安装扩展与可用语言(PL/Python、PL/Perl 等)。
- 文件读写:读取路径包括 COPY FROM、pg_read_file、pg_read_binary_file、pg_ls_dir、lo_import;写入路径包括 COPY TO(单行 base64,不支持二进制与换行)、lo_export(二进制安全)、覆盖 filenode;CREATEROLE 可授予相应特权组后复用上述路径。
- 命令执行:方法 A 为 COPY FROM PROGRAM(PostgreSQL >= 9.3,需 superuser 或 pg_execute_server_program);方法 B 为 PL 语言(plpython3u、plperlu、plsh);方法 C 为恶意扩展(.so);方法 D 为配置文件 RCE(ssl_passphrase_command、archive_command、session_preload_libraries);并提供使用 DO $$ + CHR() 的 WAF 绕过示例。
- 权限提升:CREATEROLE 可 GRANT 特权组或修改他人密码;拥有 RCE 时可借本地 trust 认证提升为 SUPERUSER;具备文件读写时可覆盖 pg_authid filenode 或 postgresql.conf;还包括 GCP Cloud SQL 的 ALTER TABLE + 索引函数提权、SECURITY DEFINER 函数滥用、Supabase 事件触发器提权。
- 已知漏洞与后渗透:列出多个 Metasploit 模块(postgres_version、postgres_login、postgres_hashdump、postgres_schemadump、postgres_readfile、postgres_payload、postgres_copy_from_program_cmd_exec);dblink 端口扫描(根据错误信息判断主机与端口状态);pgAdmin4.db 密码提取;日志配置审计与 pg_hba.conf 审计要点(trust、peer、md5/password 的风险说明)。
三、使用方式 以决策树为索引,根据当前已获得的权限与环境特征选择对应阶段的方法。命令均为可直接参考的 SQL 或工具命令,部分细节指向 references/postgresql-techniques.md。
四、适用场景 授权范围内的 PostgreSQL 安全评估、渗透测试教学与演练、托管数据库(AWS RDS、GCP Cloud SQL、Supabase)安全配置审查。
五、限制 部分技术依赖具体权限(superuser、pg_execute_server_program、pg_read_server_files、pg_write_server_files 等)或特定版本与已安装扩展;COPY TO 不支持二进制与换行;托管环境存在特定限制(如 COPY FROM PROGRAM 在部分托管实例不可用);使用前需确保获得合法授权。本资料未提供收费、价格与平台支持等信息。