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)
Katika POST hii itafafanuliwa mfano ukitumia java.io.Serializable
.
Java Serializable
interface (java.io.Serializable
ni interface ya alama ambayo darasa zako lazima zitekeleze ikiwa zinapaswa kuwa serialized na deserialized. Uandishi wa serialization ya kitu cha Java unafanywa na ObjectOutputStream na usomaji wa deserialization unafanywa na ObjectInputStream.
Hebu tuone mfano wa darasa la Person ambalo ni serializable. Darasa hili linakandamiza kazi ya readObject, hivyo wakati kitu chochote cha darasa hili kinapokuwa deserialized kazi hii itatekelezwa.
Katika mfano, kazi ya readObject ya darasa la Person inaita kazi eat()
ya mnyama wake na kazi eat()
ya Mbwa (kwa sababu fulani) inaita calc.exe. Tutashuhudia jinsi ya kuunda na kuondoa kitu cha Person ili kutekeleza kalkuleta hii:
Mfano ufuatao umetolewa kutoka https://medium.com/@knownsec404team/java-deserialization-tool-gadgetinspector-first-glimpse-74e99e493649
Kama unavyoona katika mfano huu wa msingi, "udhaifu" hapa unaonekana kwa sababu ya kazi ya readObject ambayo in aita kazi nyingine zenye udhaifu.