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"?