
Репозиторий для эксплуатации CVE-2023-46604, обнаруженной в ActiveMQ
Этот репозиторий представляет собой руководство с примерами эксплуатации CVE-2023-46604
Эксплойт использует рефлексию для создания экземпляров классов исключений через вредоносную команду, которая вместо валидной команды отправляет в качестве класса исключения класс Spring для загрузки бинов, а в качестве строкового параметра конструктора – URL, откуда загружается XML-файл с определениями Spring Bean.
Этот Spring Bean на самом деле является java.lang.ProcessBuilder, который выполнит любую команду bash с теми же правами пользователя,
под которыми работает Java-клиент или сервер Active MQ.
Хотелось бы сделать HTTP-соединение на Python, но, насколько я видел, загрузчик Spring Bean почему-то делает два HTTP-запроса, и я больше знаком с многопоточным программированием на Java, чем на Python
Этот эксплойт предназначен для клиента ActiveMQ, устанавливающего соединение с брокером-сервером, который, в свою очередь, является вредоносным сервером и делает этого клиента уязвимым для удаленного выполнения кода.
Эксплойт разделен на два процесса:
Протестировано с Python 3.6 и Java 17
Скомпилируйте Java-проект:
cd activemq-exploit
mvn clean package
Вернитесь в корень проекта с помощью cd .., и запустите python scripts/client_exploit.py
В другом терминале запустите Java-код:
cd activemq-exploitjava -jar target/activemq-exploit-1.0-SNAPSHOT.jarСерверный эксплойт подключается к серверному брокеру ActiveMQ и отправляет вредоносные команды. Он использовался только с ActiveMQ Artemis 2.18 и не смог эксплуатировать уязвимость, потому что Artemis не поставляется со Spring, и единственный известный эксплойт для удаленного выполнения кода осуществляется через класс Spring для загрузки Spring Bean.
Однако Python-скрипт в scripts/server_exploit.py делает то же самое, что и клиентский эксплойт, только подключается к серверу.
В нем отсутствует аутентификация, поэтому, возможно, потребуется адаптация процедуры рукопожатия Open Wire.