
Herramienta de enumeración y ataque JMX.
beanshooter es una herramienta de enumeración y ataque JMX que ayuda a identificar vulnerabilidades comunes en endpoints JMX.
beanshooter es un proyecto maven y la instalación debería ser sencilla. Con maven
instalado, solo ejecute los siguientes comandos para crear un archivo .jar ejecutable:```console
[qtc@devbox ~]$ git clone https://github.com/qtc-de/beanshooter
[qtc@devbox ~]$ cd beanshooter
[qtc@devbox ~]$ mvn package
También puede usar paquetes precompilados que se crean para [cada lanzamiento](https://github.com/qtc-de/beanshooter/releases).
Los paquetes precompilados para la rama de desarrollo se crean automáticamente y se pueden encontrar en la *GitHub*
[página de acciones](https://github.com/qtc-de/beanshooter/actions). También hay una imagen Docker precompilada para ejecutar *beanshooter*
[disponible](#docker-image).
*beanshooter* no incluye *ysoserial* como dependencia. Para habilitar el soporte de *ysoserial*, debe especificar la ruta
a su archivo ``ysoserial.jar`` como argumento adicional (por ejemplo, ``--yso /opt/ysoserial.jar``) o cambiar la
ruta predeterminada dentro del [archivo de configuración de beanshooter](https://github.com/qtc-de/beanshooter/blob/master/beanshooter/config.properties) antes de construir el proyecto.
*beanshooter* admite autocompletado para *bash*. Para aprovechar el autocompletado, necesita tener el
proyecto [completion-helpers](https://github.com/qtc-de/completion-helpers) instalado. Si la configuración es correcta, simplemente
copiar el [script de autocompletado](https://github.com/qtc-de/beanshooter/blob/master/resources/bash_completion.d/beanshooter) en su carpeta ``~/.bash_completion.d`` habilita
el autocompletado.```console
[qtc@devbox ~]$ cp resources/bash_completion.d/beanshooter ~/bash_completion.d/
Las diferentes operaciones de beanshooter se pueden dividir en dos grupos: operaciones básicas y operaciones MBean. Mientras que las operaciones básicas se utilizan para realizar operaciones generales en un endpoint JMX, las operaciones MBean se dirigen a un MBean específico con el que interactuar. Para más detalles, consulta los ejemplos de uso en las siguientes secciones.```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
### Operaciones Básicas
---
Las operaciones básicas son operaciones de propósito general que se pueden realizar en un servicio JMX. Por lo general, son
operaciones que no apuntan a un MBean específico o que apuntan a un MBean sin soporte integrado por parte de beanshooter.
#### Attr
La acción `attr` se puede usar para obtener o establecer atributos en un *MBean* especificado. Para obtener los atributos disponibles,
se debe usar la acción `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()
Cuando solo se especifica el nombre del atributo, beanshooter obtiene y muestra el valor actual del atributo:```console [qtc@devbox ~]$ beanshooter attr 172.17.0.2 9010 java.lang:type=Memory Verbose false
Cuando se especifica un valor adicional, *beanshooter* intenta establecer el atributo correspondiente. Para aquellos atributos que tengan un tipo diferente a *String*, es necesario especificar el tipo de atributo usando la opción `--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