<summary><strong>Jifunze kuhusu kudukua AWS kutoka sifuri hadi shujaa na</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Ikiwa unataka kuona **kampuni yako inatangazwa kwenye HackTricks** au **kupakua HackTricks kwa muundo wa PDF** Angalia [**MPANGO WA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
* Pata [**swag rasmi wa PEASS & HackTricks**](https://peass.creator-spring.com)
* Gundua [**The PEASS Family**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa [**NFTs**](https://opensea.io/collection/the-peass-family) za kipekee
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au [**kikundi cha telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Shiriki mbinu zako za kudukua kwa kuwasilisha PRs kwenye** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos za github.
Tuko katika hali ambapo tumepata **deserialization ya PHP katika programu ya wavuti** bila maktaba yoyote inayoweza kudukuliwa ndani ya **`phpggc`**. Walakini, kwenye chombo hicho hicho kulikuwa na **programu nyingine ya wavuti ya mtunzi yenye maktaba zinazoweza kudukuliwa**. Kwa hivyo, lengo lilikuwa **kupakia mzigo wa mtunzi wa programu nyingine ya wavuti** na kuitumia kudukua kwa kutumia kifaa ambacho kitatumia maktaba hiyo na kifaa kutoka kwenye programu ya wavuti inayoweza kudukuliwa.
* Umeona **deserialization** na **hakuna kifaa** katika msimbo wa programu ya sasa
* Unaweza kutumia kazi ya **`spl_autoload_register`** kama ifuatavyo ku **pakia faili yoyote ya ndani na kipengee cha `.php`**
* Kwa hilo, tumia deserialization ambapo jina la darasa litakuwa ndani ya **`$name`**. **Hauwezi kutumia "/" au "."** katika jina la darasa katika kitu kilichosimbwa, lakini **msimbo** unafanya **badilisho** la **chini ya mstari** ("\_") **kwa mabano** ("/"). Kwa hivyo jina la darasa kama `tmp_passwd` litabadilishwa kuwa `/tmp/passwd.php` na msimbo utajaribu kulipakia.\
Mfano wa kifaa utakuwa: **`O:10:"tmp_passwd":0:{}`**
Katika kesi yangu, sikuwa na kitu kama hicho, lakini kulikuwa na ukurasa mwingine wa wavuti wa mtunzi ndani ya **chombo kile kile** na **maktaba inayoweza kudhurika na kifaa cha `phpggc`**.
* Ili kupakia maktaba hii nyingine, kwanza unahitaji **kupakia mtunzi wa mtunzi wa wavuti ya programu nyingine** (kwa sababu ile ya programu ya sasa haitaweza kufikia maktaba za ile nyingine.) **Ukiwa na njia ya programu**, unaweza kufanikisha hii kwa urahisi sana na: **`O:28:"www_frontend_vendor_autoload":0:{}`** (Katika kesi yangu, mtunzi wa mtunzi alikuwa katika `/www/frontend/vendor/autoload.php`)
* Sasa, unaweza **kupakia** mtunzi **wa programu nyingine**, kwa hivyo ni wakati wa **`kuzalisha phpgcc`** **malipo** ya kutumia. Katika kesi yangu, nilitumia **`Guzzle/FW1`**, ambayo iliniruhusu **kuandika faili yoyote ndani ya mfumo wa faili**.
* KUMBUKA: **Kifaa kilichozalishwa hakikuwa kinafanya kazi**, ili kifanye kazi nilibadilisha malipo hayo **`chain.php`** ya phpggc na kuweka **sifa zote** za madarasa **kutoka kwa binafsi hadi umma**. Ikiwa sivyo, baada ya kudeserializa herufi, sifa za vitu vilivyoundwa hazikuwa na thamani yoyote.
* Sasa tuna njia ya **kupakia mtunzi wa programu nyingine** na kuwa na **malipo ya phpggc yanayofanya kazi**, lakini tunahitaji **kufanya hivi katika OMBI MOJA ili mtunzi upakie wakati kifaa kinapotumiwa**. Kwa hilo, nilituma safu iliyoserialiwa na vitu vyote viwili kama ifuatavyo:
* Unaweza kuona **kwanza mtunzi unapakia na kisha malipo**
* Sasa, tunaweza **kuunda na kuandika faili**, hata hivyo, mtumiaji **hawezi kuandika katika folda yoyote ndani ya seva ya wavuti**. Kwa hivyo, kama unavyoona katika mzigo wa data, PHP inaita **`system`** na baadhi ya **base64** imeundwa katika **`/tmp/a.php`**. Kisha, tunaweza **kutumia aina ya kwanza ya mzigo wa data** ambayo tulitumia kama LFI kuweka mzigo wa data wa kompyuta ya mtunzi wa wavuti nyingine **ili kupakia faili iliyoundwa `/tmp/a.php`**. Tuongeze kwenye kifaa cha deserialization: 
* **Pakia autoload ya mtunzi** wa wavuti tofauti katika kontena moja
* **Pakia kifaa cha phpggc** ili kutumia maktaba kutoka kwa wavuti nyingine (wavuti ya awali iliyokuwa na udhaifu wa deserialization haikuwa na kifaa chochote kwenye maktaba zake)
* Kifaa hicho kitasababisha **faili yenye mzigo wa PHP** katika /tmp/a.php na amri mbaya (mtumiaji wa wavuti hawezi kuandika kwenye folda yoyote ya wavuti yoyote)
* Sehemu ya mwisho ya mzigo wetu itatumia **pakia faili ya php iliyozalishwa** ambayo itatekeleza amri
Nilihitaji **kuita deserialization hii mara mbili**. Katika majaribio yangu, mara ya kwanza faili ya `/tmp/a.php` iliumbwa lakini haikupakiwa, na mara ya pili ilipakiwa kwa usahihi.
<summary><strong>Jifunze kuhusu kudukua AWS kutoka sifuri hadi shujaa na</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Ikiwa unataka kuona **kampuni yako inatangazwa kwenye HackTricks** au **kupakua HackTricks kwa muundo wa PDF** Angalia [**MPANGO WA KUJIUNGA**](https://github.com/sponsors/carlospolop)!
* Pata [**swag rasmi ya PEASS & HackTricks**](https://peass.creator-spring.com)
* Gundua [**The PEASS Family**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa [**NFTs**](https://opensea.io/collection/the-peass-family) za kipekee
* **Jiunge na** 💬 [**Kikundi cha Discord**](https://discord.gg/hRep4RUj7f) au [**kikundi cha telegram**](https://t.me/peass) au **tufuate** kwenye **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Shiriki mbinu zako za kudukua kwa kuwasilisha PR kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.