<summary><strong>Jifunze kuhusu kudukua AWS kutoka sifuri hadi shujaa na</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)</strong></a><strong>!</strong></summary>
* 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) 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.
Jiunge na [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) server ili kuwasiliana na wadukuzi wenye uzoefu na wawindaji wa zawadi za mdudu!
Kutoka [nyaraka](https://redis.io/topics/introduction): Redis ni chanzo wazi (lenye leseni ya BSD), duka la **muundo wa data la kumbukumbu**, hutumiwa kama **database**, cache na mpatanishi wa ujumbe).
Kwa chaguo-msingi Redis hutumia itifaki inayotegemea maandishi ya wazi, lakini lazima ukumbuke inaweza pia kutekeleza **ssl/tls**. Jifunze jinsi ya [kuendesha Redis na ssl/tls hapa](https://fossies.org/linux/redis/TLS.md).
Redis ni **itifaki inayotegemea maandishi**, unaweza tu **kutuma amri kwenye soketi** na thamani zilizorudishwa zitaweza kusomwa. Pia kumbuka kwamba Redis inaweza kuendeshwa kwa kutumia **ssl/tls** (ingawa hii ni ya kushangaza sana).
**Amri ya kwanza** unaweza kujaribu ni **`info`**. Inaweza **kurudisha matokeo na habari** ya kipengee cha Redis **au kitu** kama ifuatavyo kurudishwa:
**Kwa chaguo-msingi** Redis inaweza kupatikana **bila sifa**. Walakini, inaweza **kusanidiwa** ili kusaidia **nenosiri pekee, au jina la mtumiaji + nenosiri**.\
Inawezekana **kuweka nenosiri** katika faili ya _**redis.conf**_ kwa kutumia parameter `requirepass`**au kwa muda** hadi huduma ianzishwe upya kwa kuunganisha na kukimbia: `config set requirepass p@ss$12E45`.\
Pia, **jina la mtumiaji** linaweza kusanidiwa kwa kutumia parameter `masteruser` ndani ya faili ya _**redis.conf**_.
Katika hali kama hii utahitaji **kupata sifa halali** ili kuingiliana na Redis hivyo unaweza kujaribu [**kuvunja nguvu**](../generic-methodologies-and-resources/brute-force.md#redis).\
**Ikiwa umepata sifa halali unahitaji kuthibitisha kikao** baada ya kuanzisha uhusiano na amri:
Ikiwa seva ya Redis inaruhusu **mawasiliano yasiyo na jina** au ikiwa umepata mamlaka halali, unaweza kuanzisha mchakato wa uchambuzi kwa huduma kwa kutumia **amri** zifuatazo:
Tafadhali kumbuka kwamba **Amri za Redis za kipengee zinaweza kubadilishwa jina** au kuondolewa katika faili ya _redis.conf_. Kwa mfano, mstari huu utaondoa amri ya FLUSHDB:
Zaidi kuhusu kusanidi kwa usalama huduma ya Redis hapa: [https://www.digitalocean.com/community/tutorials/how-to-install-and-secure-redis-on-ubuntu-18-04](https://www.digitalocean.com/community/tutorials/how-to-install-and-secure-redis-on-ubuntu-18-04)
Unaweza pia **kuangalia muda halisi amri za Redis** zilizotekelezwa kwa kutumia amri **`monitor`** au kupata **25 ya amri zenye kuchelewa zaidi** kwa kutumia **`slowlog get 25`**
Ndani ya Redis **databases ni nambari zinazoanza na 0**. Unaweza kujua kama yeyote anatumika kwa kutumia matokeo ya amri `info` ndani ya sehemu ya "Keyspace":
Katika mfano huo **database 0 na 1** zinatumika. **Database 0 ina funguo 4 na database 1 ina 1**. Kwa chaguo-msingi Redis itatumia database 0. Ili kudump mfano wa database 1 unahitaji kufanya:
Ikiwa unapata kosa la `-WRONGTYPE Operation against a key holding the wrong kind of value` wakati unatekeleza `GET <KEY>` ni kwa sababu ufunguo huenda usiwe string au nambari na unahitaji mwendeshaji maalum kuonyesha hiyo.
**Dump the database with npm**[ **redis-dump**](https://www.npmjs.com/package/redis-dump) **au python** [**redis-utils**](https://pypi.org/project/redis-utils/)
Jiunge na [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) server ili kuwasiliana na wadukuzi wenye uzoefu na wawindaji wa tuzo za mdudu!
[**redis-rogue-server**](https://github.com/n0b0dyCN/redis-rogue-server) inaweza kupata kiotomatiki kifaa cha mwingiliano au kifaa cha mwingiliano wa nyuma kwenye Redis(<=5.0.5).
Maelezo kutoka [**hapa**](https://web.archive.org/web/20191201022931/http://reverse-tcp.xyz/pentest/database/2017/02/09/Redis-Hacking-Tips.html). Lazima ujue **njia** ya **folda ya Tovuti**:
Kwa mfano, kufuatia [**hii andishi**](https://www.neteye-blog.com/2022/05/cyber-apocalypse-ctf-2022-red-island-writeup/), unaweza kuona kwamba mkaidi aliingiza **rev shell katika html** iliyotafsiriwa na **injini ya templeti ya nunjucks:**
Tafadhali kumbuka **mifumo kadhaa ya templeti hufanya cache** ya templeti kwenye **kumbukumbu**, hivyo hata kama unazibadilisha, ile mpya **haitatekelezwa**. Katika hali hizi, au mwandishi aliacha upya wa kiotomatiki ukiwa hai au unahitaji kufanya DoS juu ya huduma (na kutarajia itazinduliwa upya kiotomatiki).
Tafadhali fahamu kuwa matokeo ya **`config get dir`** yanaweza kubadilika baada ya amri zingine za kuvamia kwa mikono. Pendekeza kuikimbia kwanza mara tu baada ya kuingia kwenye Redis. Katika matokeo ya **`config get dir`** unaweza kupata **nyumbani** kwa **mtumiaji wa redis** (kawaida _/var/lib/redis_ au _/home/redis/.ssh_), na ukijua hili unajua mahali unaweza kuandika faili ya `authenticated_users` ili kupata ufikiaji kupitia ssh **na mtumiaji redis**. Ikiwa unajua nyumbani mwa mtumiaji mwingine halali ambapo una ruhusa ya kuandika unaweza pia kuitumia:
1. Kufuata maagizo kutoka [https://github.com/n0b0dyCN/RedisModules-ExecuteCommand](https://github.com/n0b0dyCN/RedisModules-ExecuteCommand) unaweza **kukusanya moduli ya redis kutekeleza amri za aina yoyote**.
2. Kisha unahitaji njia ya **kupakia moduli iliyokusanywa**
3.**Pakia moduli** iliyopakiwa wakati wa uendeshaji kwa kutumia `MODULE LOAD /path/to/mymodule.so`
4.**Orodhesha moduli zilizopakiwa** kuhakikisha imepakia kwa usahihi: `MODULE LIST`
[**Hapa**](https://www.agarri.fr/blog/archives/2014/09/11/trying\_to\_hack\_redis\_via\_http\_requests/index.html) unaweza kuona kuwa Redis hutumia amri **EVAL** kutekeleza **Lua code sandboxed**. Katika chapisho lililounganishwa unaweza kuona **jinsi ya kulaghai** kutumia kazi ya **dofile**, lakini [kwa mujibu wa](https://stackoverflow.com/questions/43502696/redis-cli-code-execution-using-eval) hili sio tena linalowezekana. Kwa njia yoyote, ikiwa unaweza **kupita kizuizi cha Lua** unaweza **kutekeleza amri za aina yoyote** kwenye mfumo. Pia, kutoka kwenye chapisho hilo hilo unaweza kuona baadhi ya **chaguzi za kusababisha DoS**.
Operesheni zote za bwana wa redis zinasawazishwa moja kwa moja kwa mtumwa wa redis, ambayo inamaanisha tunaweza kuchukulia udhaifu wa redis kama mtumwa wa redis, uliounganishwa na bwana wa redis ambao tunadhibiti, kisha tunaweza kuingiza amri kwenye redis yetu wenyewe.
Ikiwa unaweza kutuma **ombi la maandishi wazi****kwa Redis**, unaweza **kuwasiliana nayo** kwani Redis itasoma ombi line kwa line na kujibu kwa makosa kwa mistari ambayo haielewi:
Kwa hivyo, ikiwa utapata **SSRF vuln** kwenye tovuti na unaweza **kudhibiti** baadhi ya **headers** (labda na CRLF vuln) au **POST parameters**, utaweza kutuma amri za kupendelea kwa Redis.
Katika **Gitlab11.4.7** iligunduliwa **SSRF** vulnerability na **CRLF**. **SSRF** vulnerability ilikuwa katika **import project from URL functionality** wakati wa kuunda mradi mpya na kuruhusu kupata IPs za kupendelea kwa mfano \[0:0:0:0:0:ffff:127.0.0.1] (hii itapata 127.0.0.1), na **CRLF** vuln ilidukuliwa kwa kuongeza tu wahusika wa **%0D%0A** kwenye **URL**.
Kwa hivyo, ilikuwa inawezekana **kutumia vulnerabilities hizi kuzungumza na kipengele cha Redis** ambacho **kinasimamia foleni** kutoka **gitlab** na kutumia foleni hizo kwa **kupata utekelezaji wa kanuni**. Payload ya udanganyifu wa foleni ya Redis ni:
_Kwa sababu fulani (kama ilivyokuwa kwa mwandishi wa_ [_https://liveoverflow.com/gitlab-11-4-7-remote-code-execution-real-world-ctf-2018/_](https://liveoverflow.com/gitlab-11-4-7-remote-code-execution-real-world-ctf-2018/) _ambapo habari hii ilitoka) uchomaji ulifanya kazi na mpango wa `git` na sio na mpango wa `http`._
Jiunge na [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) server ili kushirikiana na wadukuzi wenye uzoefu na wawindaji wa tuzo za makosa!
<summary><strong>Jifunze udukuzi wa AWS kutoka sifuri hadi shujaa na</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)</strong></a><strong>!</strong></summary>
* 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 udukuzi kwa kuwasilisha PRs kwa** [**HackTricks**](https://github.com/carlospolop/hacktricks) na [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) repos za github.