
Инструмент для перечисления и атаки на JMX.
beanshooter — это инструмент для перечисления и атаки JMX, который помогает выявлять распространенные уязвимости на конечных точках JMX.
beanshooter — это проект maven, и установка должна быть простой. При установленном maven просто выполните следующие команды, чтобы создать исполняемый .jar файл:```console
[qtc@devbox ~]$ git clone https://github.com/qtc-de/beanshooter
[qtc@devbox ~]$ cd beanshooter
[qtc@devbox ~]$ mvn package
Вы также можете использовать предварительно собранные пакеты, которые создаются для [каждого релиза](https://github.com/qtc-de/beanshooter/releases).
Предварительно собранные пакеты для ветки разработки создаются автоматически и доступны на *GitHub* [странице действий](https://github.com/qtc-de/beanshooter/actions).
Также предварительно собранный Docker-образ для запуска *beanshooter* [доступен](#docker-image).
*beanshooter* не включает *ysoserial* в качестве зависимости. Чтобы включить поддержку *ysoserial*, вам нужно либо указать путь к вашему файлу ``ysoserial.jar`` в качестве дополнительного аргумента (например, ``--yso /opt/ysoserial.jar``), либо изменить путь по умолчанию в [файле конфигурации beanshooter](https://github.com/qtc-de/beanshooter/blob/master/beanshooter/config.properties) перед сборкой проекта.
*beanshooter* поддерживает автодополнение для *bash*. Чтобы воспользоваться автодополнением, вам необходимо установить проект [completion-helpers](https://github.com/qtc-de/completion-helpers). Если все настроено правильно, достаточно скопировать [скрипт автодополнения](https://github.com/qtc-de/beanshooter/blob/master/resources/bash_completion.d/beanshooter) в вашу папку ``~/.bash_completion.d``, чтобы включить автодополнение.```console
[qtc@devbox ~]$ cp resources/bash_completion.d/beanshooter ~/bash_completion.d/
Различные операции beanshooter можно разделить на две группы: базовые операции и MBean операции. В то время как базовые операции используются для выполнения общих операций на конечной точке JMX, MBean операции нацелены на взаимодействие с конкретным MBean. Для получения более подробной информации ознакомьтесь с примерами использования в следующих разделах.```console [qtc@devbox ~]$ beanshooter -h usage: beanshooter [-h] ...
beanshooter v3.0.0 - a JMX enumeration and attacking tool
positional arguments:
Basic Operations attr set or get MBean attributes brute bruteforce JMX credentials deploy deploys the specified MBean on the JMX server enum enumerate the JMX service for common vulnerabilities info display method and attribute information on an MBean invoke invoke the specified method on the specified MBean list list available MBEans on the remote MBean server serial perform a deserialization attack stager start a stager server to deliver MBeans undeploy undeploys the specified MBEAN from the JMX server
MBean Operations diagnostic Diagnostic Command MBean hotspot HotSpot Diagnostic MBean mlet default JMX bean that can be used to load additional beans dynamically recorder jfr Flight Recorder MBean tomcat tomcat MemoryUserDatabaseMBean used for user management tonka general purpose bean for executing commands and uploading or download files
named arguments: -h, --help show this help message and exit
### Базовые операции
---
Базовые операции — это операции общего назначения, которые можно выполнять с помощью службы JMX. Обычно это
операции, которые не нацелены на конкретный MBean или нацелены на MBean без встроенной поддержки со стороны beanshooter.
#### Attr
Действие `attr` можно использовать для получения или установки атрибутов на указанном *MBean*. Чтобы получить доступные атрибуты,
следует использовать действие `info`:```console
[qtc@devbox ~]$ beanshooter info 172.17.0.2 9010
...
[+] MBean Class: sun.management.MemoryImpl
[+] ObjectName: java.lang:type=Memory
[+]
[+] Attributes:
[+] Verbose (type: boolean , writable: true)
[+] ObjectPendingFinalizationCount (type: int , writable: false)
[+] HeapMemoryUsage (type: javax.management.openmbean.CompositeData , writable: false)
[+] NonHeapMemoryUsage (type: javax.management.openmbean.CompositeData , writable: false)
[+] ObjectName (type: javax.management.ObjectName , writable: false)
[+]
[+] Operations:
[+] void gc()
Когда указано только имя атрибута, beanshooter получает и отображает текущее значение атрибута:```console [qtc@devbox ~]$ beanshooter attr 172.17.0.2 9010 java.lang:type=Memory Verbose false
Когда указано дополнительное значение, *beanshooter* пытается установить соответствующий атрибут. Для атрибутов, тип которых отличается от *String*, требуется указать тип атрибута с помощью опции `--type`:```console
[qtc@devbox ~]$ beanshooter attr 172.17.0.2 9010 java.lang:type=Memory Verbose true --type boolean
[qtc@devbox ~]$ beanshooter attr 172.17.0.2 9010 java.lang:type=Memory Verbose
true