Ero pentesting per un programma di bug bug, non posso dire di più perché è stato corretto ma non rivelato. Mi chiedo comunque, il reporter ha ottenuto un RCE?
Un webservice ha aspettato l'XML, prima ho provato a XXE, ho combinato con la logica del business, niente di succoso lì. Poi un attributo attirò la mia attenzione, inutilizzato in qualsiasi cosa fosse riuscito a catturare, ho trovato in JavaScript.
<blaa fieldtype="java.lang.ProcessBuilder"/>
porta a quell'errore (blaa è inizialmente una stringa)
could not convert java.lang.ProcessBuilder into java.lang.string
Ho provato
<blaa fieldtype="java.lang.ProcessBuilder"><command>bla</command></blaa>
stesso errore. Tuttavia:
<blaa fieldtype="java.lang.ProcessBuilder"><foo><foo></blaa>
ha dato
unknown field java.lang.ProcessBuilder.foo
Quindi, a questo punto, sono in grado di creare un'istanza di qualsiasi oggetto arbitrario, impostare qualsiasi proprietà pubblica e ordinare il cast da qualsiasi cosa a qualcosa, mi sono confuso per ore e non ho trovato alcun modo di chiamare un metodo. C'è un RCE qui? O hanno corretto da un rapporto che diceva "L'input dell'utente non dovrebbe essere usato dinamicamente nel codice"?