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

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

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

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

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

Категории

Все категории
Loading categories
THM-Steel_Mountain-CVE-2014-6287 — Разбор машины Steel Mountain с TryHackMe.com и эксплойт для CVE-2014-6287 | Kitploit
Инструменты/GitHubGitHub/wizardy0ga/thm-steel_mountain-cve-2014-6287
Повышение привилегийГенерация полезной нагрузкиАнализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийПост-эксплуатацияCTFТестирование на ПроникновениеОбучение и Образование

Популярное

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

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

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

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

Смотреть все инструменты →
Поделиться
Лаборатории и Практика
Archived
GitHubwizardy0ga/thm-steel_mountain-cve-2014-6287

THM-Steel_Mountain-CVE-2014-6287

Разбор машины Steel Mountain с TryHackMe.com и эксплойт для CVE-2014-6287

Репозиторий
64 лет назадЕщё не проверено

THM-Steel_Mountain-CVE-2014-6287

Разбор по машине Steel Mountain с TryHackMe.com и эксплойт для CVE-2014-6287

Благодарности

Я не присваиваю себе заслуги за первоначальное обнаружение и эксплуатацию этой уязвимости. Спасибо следующим людям!

Обнаружение: Daniele Linguaglossa

Автор модуля Metasploit: Muhamad Fadzil Ramli

Комната TryHackMe и автор: https://tryhackme.com/room/steelmountain https://tryhackme.com/p/tryhackme

Ссылки: https://nvd.nist.gov/vuln/detail/CVE-2014-6287 https://github.com/rapid7/metasploit-framework/blob/master/modules/exploits/windows/http/rejetto_hfs_exec.rb https://subscription.packtpub.com/book/networking_and_servers/9781786463166/1/ch01lvl1sec20/vulnerability-analysis-of-hfs-2-3 https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-6287 https://www.tutorialspoint.com/pascal/pascal_functions.htm

Если видите что-то не так — сообщите!

Я ни в коем случае не опытный специалист по безопасности. Это значит, что я могу предоставить неверную информацию. Если вы опытный специалист/исследователь и видите что-то некорректное, пожалуйста, сообщите мне, чтобы я мог вернуться, изучить свои ошибки и предоставить правильную информацию. Это будет полезно и мне, и другим начинающим исследователям, которые могут наткнуться на этот разбор. Если вы найдёте неверную информацию, которую я написал, свяжитесь со мной по адресу [email protected], чтобы я мог её исправить. Спасибо!

Уязвимость

Rejetto file server (также известный как HFS) — это программа для обмена файлами, используемая для публикации и обмена файлами по сети. В версии 2.3 была обнаружена уязвимость, которая позволяла злоумышленнику выполнять системные команды, вставляя нулевой байт в параметр поиска, как описано в CVE-2014-6287. Код некорректно обрабатывает нулевой байт в своей конфигурации регулярных выражений (RegEx), что приводит к удалённому выполнению кода.

Уязвимость находится в функции findMacroMarker, которая происходит из файла parserLib.pas. Расширение .pas — это расширение файлов для языка программирования Pascal. На момент написания этого текста я ничего не программировал на Pascal. Давайте посмотрим на фрагмент кода и разберём, что он делает!

function findMacroMarker(s:string; ofs:integer=1):integer; begin result:=reMatch(s, '{[.:]|[.:]}||', 'm!', ofs) end;

Первая строка кода — это объявление функции с именем findMacroMarker, которая принимает два параметра. В Pascal тип данных параметров должен быть объявлен, поэтому s:string означает, что переменная s является строкой (string). То же самое для переменной ofs с типом integer. Справа от параметров мы видим двоеточие, за которым следует integer. Это называется типом функции. Точка с запятой обозначает конец этой строки кода. Первое слово в следующей строке кода — begin. Оно сообщает компилятору, где начинается функция. Далее мы видим переменную с именем result, за которой следует оператор присваивания :=. Переменная result присваивается функции reMatch. Мне не удалось найти ничего о reMatch в интернете, поэтому я предполагаю, что это пользовательская функция, написанная где-то ещё в HFS. К счастью для нас, функция говорит сама за себя. reMatch явно является сокращением от "regular expression match" (соответствие регулярному выражению), за которым следует шаблон регулярного выражения, который она ищет. Этот шаблон указывается в параметрах функции , а также в исходных параметрах переменных, определённых в первой строке кода. В конце второй строки используется слово , чтобы обозначить для компилятора конец функции.

Уязвимость находится в шаблоне регулярного выражения, как описано выше в функции reMatch. Регулярное выражение неправильно обрабатывает нулевой байт %00. Когда мы передаём системную команду с предваряющим нулевым байтом, функция сталкивается с ошибкой и выполняет команду на хост-компьютере. Чтобы использовать эту уязвимость, нам нужно просто передать нулевой байт в параметр поиска GET-запроса, после чего указать {.exec|code.} (где code — это команда, которую нужно выполнить) через URL следующим образом: http://(IP-Адрес/ИмяДомена)/?search==%00{.exec|КомандаЗдесь.}

Разбор

Начнём со сканирования портов с помощью rustscan. Я предпочитаю rustscan для быстрого получения информации о поверхности атаки.

image

У нас довольно много открытых портов. Теперь мы углубимся с помощью nmap и выясним, какие службы прослушивают этот набор портов, чтобы найти эксплуатируемую службу.

image

У нас есть служба Microsoft Windows RPC, работающая на более высоких портах. RPC — это удалённый вызов процедур. Это позволяет процессам Windows взаимодействовать по сети или внутри самого компьютера. Далее, у нас есть несколько различных веб-серверов, работающих на портах 80 и 8080. На портах 5985 и 47001 присутствует Microsoft Httpapi Httpd, который позволяет приложениям взаимодействовать по HTTP без необходимости в Microsoft IIS (Internet Information Server). Nmap обнаруживает потенциальный веб-сервер на порту 3389, однако я не смог подключиться ни по HTTP, ни по SSL. Давайте подключимся к веб-серверу на порту 80, так как это стандартный порт для протокола HTTP.

image

На порту 80 перед нами веб-страница с логотипом компании Steel Mountain и фотографией с подписью "Сотрудник месяца". Если мы откроем инструменты разработчика веб-браузера, то увидим, что фотография называется BillHarper.png, что даёт нам ответ на первый вопрос. Давайте подключимся к другим прослушивающим службам и посмотрим, что можно найти.

image

При подключении к службе на порту 5985 мы получаем HTTP-код ошибки 404. Код ошибки 404 означает, что сервер не может найти запрашиваемый ресурс. Здесь нет ничего интересного. Переходим к следующему.

image

ДА! Вот это уже интересно. На порту 8080 у нас какая-то служба обмена файлами. Давайте осмотримся и попробуем найти дополнительную информацию об этой службе. Если мы посмотрим в левый нижний угол, то увидим имя и что-то похожее на номер версии: HttpFileServer 2.3. Продолжим разведку.

image

Если мы нажмём на ссылку с надписью HttpFileServer 2.3, мы перейдём на веб-страницу с названием программного обеспечения, работающего на порту 8080. В данном случае это Rejetto HFS HTTP File Server. Давайте проверим другой порт на 47001, чтобы охватить все возможности. Если мы не найдём ничего полезного, вернёмся к Rejetto и начнём искать известные CVE.

image

Похоже, у нас ещё одна 404 на порту 47001. Давайте начнём искать CVE для Rejetto HFS 2.3.

image

Быстрый поиск показывает, что у нас есть известная запись CVE для HFS 2.3. Мы отойдём от руководства THM и не будем использовать проприетарный metasploit. Я написал эксплойт, который даст нам оболочку. Чтобы его использовать, вам нужно зайти на revshells.com, ввести правильные сетевые данные и выбрать PowerShell #3 (Base 64). Когда у вас будет полезная нагрузка, скопируйте и вставьте её в переменную payload в строке 13 и запустите эксплойт. Прослушиватель откроется автоматически, и вы должны получить доступ к системе. Примечание: возможно, потребуется запустить эксплойт несколько раз, чтобы поймать оболочку.

image

Бум! Мы в системе, и в качестве бонуса у нас оболочка PowerShell. Это означает, что у нас будет доступ к командлетам .NET. С этим мы можем быть гораздо опаснее, чем со стандартной оболочкой командной строки. Переходим к повышению привилегий. Руководство THM предоставляет нам полезный инструмент под названием PowerSploit, в котором есть инструмент для перебора машины на предмет потенциальных векторов повышения привилегий. Мы собираемся загрузить PowerUp.ps1 на машину и использовать его, чтобы помочь нам получить контроль над машиной.

image

Сначала мы запускаем простой HTTP-сервер в каталоге, где находится наш файл PowerUp.ps1, на нашей системе. Затем на целевой системе мы используем командлет Invoke-Webrequest, чтобы скачать файл с нашего сервера на целевую машину. Теперь мы установим и запустим один из командлетов, входящих в состав PowerUp.

image

Чтобы установить PowerUp.ps1, выполните команду: . .\PowerUp.ps1. Далее нам нужно использовать наш новый командлет Invoke-AllChecks. После его выполнения мы получаем огромное количество вывода. Я сократил его до того важного, который нам нужен. Мы видим, что PowerUp сообщил нам, что у нас есть права на изменение файла. Давайте проверим работающие службы, чтобы остановить её, если она запущена. Это нужно сделать, потому что мы не можем ничего сделать с файлом, если он используется службой.

image

Используя командлет Get-Service, мы получаем список служб, присутствующих на машине. Поскольку наша целевая служба запущена, нам нужно будет остановить её, чтобы изменить и перезаписать двоичный файл.

image

Чтобы остановить службу, мы используем командлет Stop-Service, за которым следует имя службы. Теперь нам нужно перепроверить, что служба остановлена, с помощью командлета Get-Service. Как показано выше, мы можем подтвердить, что служба действительно остановлена. Давайте перейдём в каталог, содержащий наш целевой двоичный файл. Каталог — C:\Program Files (x86)\IObit\Advanced SystemCare.

image

Обратите внимание на размер файла двоичного файла, который находится слева от имени двоичного файла в самой правой колонке.

image

Создайте полезную нагрузку meterpreter и разместите её с помощью модуля веб-сервера Python, как мы делали раньше.

image

Запустите прослушиватель meterpreter, используя те же сетевые данные, которые вы использовали для создания полезной нагрузки.

image

Используйте командлет Invoke-Webrequest, чтобы скачать нашу полезную нагрузку meterpreter на целевую систему с нашей машины. Убедитесь, что вы назвали её ASCService.exe, чтобы мы могли использовать слабые права доступа к файлам и перезаписать обычный двоичный файл нашим вредоносным.

image

Подтвердите, что двоичный файл был перезаписан, выведя список каталога и проверив, изменился ли размер файла. В данном случае он изменился с шестизначного числа на пятизначное, что подтверждает успешную загрузку нашего вредоносного двоичного файла!

image

Когда вредоносный двоичный файл заменил обычный, всё, что нам нужно сделать, это перезапустить службу с помощью командлета Start-Service. Когда мы это сделаем, машина выполнит нашу полезную нагрузку и предоставит нам оболочку meterpreter! Мы можем выполнить getuid в meterpreter, чтобы проверить, есть ли у нас NT AUTHORITY/SYSTEM. После выполнения getuid мы действительно видим, что мы завладели этой машиной! Хорошего дня!

Скачать инструмент
reMatch
end