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)
W tym POŚCIE zostanie wyjaśniony przykład użycia java.io.Serializable
.
Interfejs Java Serializable
(java.io.Serializable
to interfejs znacznikowy, który Twoje klasy muszą implementować, jeśli mają być serializowane i deserializowane. Serializacja obiektów Java (zapisywanie) odbywa się za pomocą ObjectOutputStream, a deserializacja (odczyt) odbywa się za pomocą ObjectInputStream.
Zobaczmy przykład z klasą Person, która jest serializowalna. Ta klasa przesłania funkcję readObject, więc gdy jakikolwiek obiekt tej klasy jest deserializowany, ta funkcja zostanie wykonana.
W przykładzie, funkcja readObject klasy Person wywołuje funkcję eat()
jego zwierzęcia, a funkcja eat()
psa (z jakiegoś powodu) wywołuje calc.exe. Zobaczymy, jak serializować i deserializować obiekt Person, aby uruchomić ten kalkulator:
Poniższy przykład pochodzi z https://medium.com/@knownsec404team/java-deserialization-tool-gadgetinspector-first-glimpse-74e99e493649
Jak widać w tym bardzo podstawowym przykładzie, "wrażliwość" tutaj pojawia się, ponieważ funkcja readObject wywołuje inne wrażliwe funkcje.
Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)