Basic Java Deserialization (ObjectInputStream, readObject)
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
U ovom POST-u će biti objašnjen primer korišćenja java.io.Serializable
.
Java Serializable
interfejs (java.io.Serializable
je marker interfejs koji vaše klase moraju implementirati ako treba da budu serializovane i deserializovane. Java objektna serializacija (pisanje) se vrši pomoću ObjectOutputStream, a deserializacija (čitanje) se vrši pomoću ObjectInputStream.
Hajde da vidimo primer sa klasom Person koja je serializovana. Ova klasa prepisuje funkciju readObject, tako da kada se bilo koji objekat ove klase deserializuje, ova funkcija će biti izvršena.
U primeru, readObject funkcija klase Person poziva funkciju eat()
njegovog ljubimca, a funkcija eat()
psa (iz nekog razloga) poziva calc.exe. Videćemo kako da serializujemo i deserializujemo objekat Person da bismo izvršili ovaj kalkulator:
Sledeći primer je sa https://medium.com/@knownsec404team/java-deserialization-tool-gadgetinspector-first-glimpse-74e99e493649
Kao što možete videti u ovom vrlo osnovnom primeru, "ranjivost" ovde se pojavljuje jer readObject funkcija poziva druge ranjive funkcije.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)