¿podría la instanciación dinámica de objetos + el lanzamiento arbitrario en java podría llevar a un RCE?

2

Estaba haciendo una prueba para un programa de recompensas de errores, no puedo decir más porque se ha corregido pero no se ha revelado. Todavía me pregunto, sin embargo, ¿el reportero obtuvo un RCE?

Un servicio web esperó XML, primero intenté XXE, me metí con la lógica de negocios, no hay nada jugoso allí. Entonces un atributo me llamó la atención, no utilizado en nada que Burp hubiera podido capturar, lo encontré en JavaScript.

<blaa fieldtype="java.lang.ProcessBuilder"/>

lleva a ese error (blaa es inicialmente una cadena)

could not convert java.lang.ProcessBuilder into java.lang.string

Lo intenté

<blaa fieldtype="java.lang.ProcessBuilder"><command>bla</command></blaa>

mismo error. Sin embargo:

<blaa fieldtype="java.lang.ProcessBuilder"><foo><foo></blaa>

dio

unknown field java.lang.ProcessBuilder.foo

Entonces, en este punto, soy capaz de crear una instancia de cualquier objeto arbitrario, establecer cualquier propiedad pública y realizar pedidos de cualquier cosa a cualquier cosa, me quedé confuso durante horas y no encontré una manera de llamar a un método. ¿Hay un RCE aquí? ¿O se corrigieron a partir de un informe que decía "la entrada del usuario no debería usarse dinámicamente en el código"?

    
pregunta user3512344 07.01.2017 - 14:35
fuente

1 respuesta

1

La respuesta dependerá en gran medida de lo que esté en la ruta de clase. Sin embargo, no puedo ver en tu fragmento de código XML donde pasarías el comando para ejecutar en tu ejemplo.

Entonces, sin saber más sobre el medio ambiente, es imposible responder a su pregunta. Sin embargo, sería beneficioso para usted ver algunos gadgets de deserialización de Java .

Si no has escuchado sobre la vulnerabilidad de deserialización de Java, recomiendo esto y this .

    
respondido por el kaidentity 07.01.2017 - 17:07
fuente

Lea otras preguntas en las etiquetas