<summary><strong>Leer AWS-hacking vanaf nul tot held met</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Ontdek [**Die PEASS Familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.
Vanaf [die dokumente](https://redis.io/topics/introduction): Redis is 'n oopbron (BSD-gelisensieerde), in-memory **datastruktuurwinkel**, gebruik as 'n **databasis**, cache en boodskapmakelaar).
Standaard gebruik Redis 'n teksgebaseerde protokol, maar onthou dat dit ook **ssl/tls** kan implementeer. Leer hoe om [Redis met ssl/tls hier uit te voer](https://fossies.org/linux/redis/TLS.md).
Redis is 'n **teks-gebaseerde protokol**, jy kan net die **bevel in 'n sokket stuur** en die teruggekeerde waardes sal leesbaar wees. Onthou ook dat Redis kan hardloop met behulp van **ssl/tls** (maar dit is baie vreemd).
Die **eerste bevel** wat jy kan probeer is **`info`**. Dit **kan uitset met inligting** van die Redis-instantie **of iets** soos die volgende kan teruggegee word:
**Standaard** kan Redis sonder geloofsbriewe benader word. Dit kan egter **gekonfigureer word** om slegs wagwoord, of gebruikersnaam + wagwoord te ondersteun.\
Dit is moontlik om 'n wagwoord in te stel in die _**redis.conf**_ lêer met die parameter `requirepass` of tydelik totdat die diens herlaai deur daarmee te verbind en die volgende uit te voer: `config set requirepass p@ss$12E45`.\
In gevalle soos hierdie sal jy **geldige geloofsbriewe moet vind** om met Redis te kan interaksieer, sodat jy kan probeer om dit [**brute-force**](../generic-methodologies-and-resources/brute-force.md#redis).\
**Indien jy geldige geloofsbriewe vind, moet jy die sessie verifieer** nadat jy die verbinding met die volgende bevel tot stand gebring het:
Indien die Redis-bediener **anonieme verbindinge** toelaat of as jy geldige geloofsbriewe verkry het, kan jy die enumerasieproses vir die diens inisieer deur die volgende **opdragte** te gebruik:
Merk op dat die **Redis-opdragte van 'n instansie hernoem** of verwyder kan word in die _redis.conf_ lêer. Byvoorbeeld hierdie lyn sal die opdrag FLUSHDB verwyder:
Meer oor die veilige konfigurasie van 'n Redis-diens hier: [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)
Binne Redis is die **databasisse nommers wat begin vanaf 0**. Jy kan sien of enigiemand dit gebruik in die uitset van die opdrag `info` binne die "Keyspace" blok:
In daardie voorbeeld word die **databasis 0 en 1** gebruik. **Databasis 0 bevat 4 sleutels en databasis 1 bevat 1**. Standaard sal Redis databasis 0 gebruik. Om byvoorbeeld databasis 1 te dump, moet jy die volgende doen:
In die geval dat jy die volgende fout kry `-WRONGTYPE Operation against a key holding the wrong kind of value` terwyl jy `GET <KEY>` hardloop, is dit omdat die sleutel dalk iets anders as 'n string of 'n heelgetal is en 'n spesiale operator benodig om dit te vertoon.
**Dompel die databasis met npm** [**redis-dump**](https://www.npmjs.com/package/redis-dump) **of python** [**redis-utils**](https://pypi.org/project/redis-utils/)
[**redis-rogue-server**](https://github.com/n0b0dyCN/redis-rogue-server) kan outomaties 'n interaktiewe skul of 'n omgekeerde skul kry in Redis(<=5.0.5).
Inligting van [**hier**](https://web.archive.org/web/20191201022931/http://reverse-tcp.xyz/pentest/database/2017/02/09/Redis-Hacking-Tips.html). Jy moet die **pad** van die **Webwerf vouer** weet:
Byvoorbeeld, volgens [**hierdie skryfstuk**](https://www.neteye-blog.com/2022/05/cyber-apocalypse-ctf-2022-red-island-writeup/), kan jy sien dat die aanvaller 'n **rev shell ingespuit het in 'n html** wat deur die **nunjucks-sjabloon-enjin geïnterpreteer** word:
Let wel dat **veral sjabloon-enjins** die sjablone in **geheue** oppas, sodat selfs as jy dit oorskryf, die nuwe een **nie uitgevoer sal word nie**. In hierdie gevalle het die ontwikkelaar óf die outomatiese herlaai aktief gelaat, óf jy moet 'n DoS oor die diens uitvoer (en verwag dat dit outomaties weer begin sal word).
Wees bewus dat die resultaat van **`config get dir`** kan verander na ander handmatige uitbuitingsopdragte. Stel voor om dit eerste uit te voer direk na die aanmelding by Redis. In die uitset van **`config get dir`** kan jy die **tuiste** van die **redis-gebruiker** vind (gewoonlik _/var/lib/redis_ of _/home/redis/.ssh_), en deur dit te weet, weet jy waar jy die `authenticated_users` lêer kan skryf om toegang te verkry via ssh **met die gebruiker redis**. As jy die tuiste van 'n ander geldige gebruiker ken waar jy skryfregte het, kan jy dit ook misbruik:
1. Volg die instruksies vanaf [https://github.com/n0b0dyCN/RedisModules-ExecuteCommand](https://github.com/n0b0dyCN/RedisModules-ExecuteCommand) jy kan **'n redis module saamstel om arbitrêre bevele uit te voer**.
[**Hier**](https://www.agarri.fr/blog/archives/2014/09/11/trying\_to\_hack\_redis\_via\_http\_requests/index.html) kan jy sien dat Redis die bevel **EVAL** gebruik om **Lua-kode sandboks** uit te voer. In die gekoppelde pos kan jy sien **hoe om dit te misbruik** deur die **dofile**-funksie te gebruik, maar [blykbaar](https://stackoverflow.com/questions/43502696/redis-cli-code-execution-using-eval) is dit nie meer moontlik nie. Hoe dan ook, as jy die Lua-sandboks kan **omseil** kan jy arbitrêre bevele op die stelsel **uitvoer**. Ook, van dieselfde pos kan jy sien van sommige **opsies om DoS te veroorsaak**.
Die meester redis alle operasies word outomaties gesinchroniseer na die slaaf redis, wat beteken dat ons die kwesbaarheid redis as 'n slaaf redis kan beskou, verbind met die meester redis wat ons eie beheer, dan kan ons die bevel na ons eie redis invoer.
As jy **duidelike teks** versoek **na Redis** kan stuur, kan jy **daarmee kommunikeer** aangesien Redis lyn vir lyn die versoek lees en net met foute reageer op die lyne wat dit nie verstaan nie:
Daarom, as jy 'n **SSRF vuln** in 'n webwerf vind en jy kan sommige **headers** (miskien met 'n CRLF vuln) of **POST parameters****beheer**, sal jy in staat wees om willekeurige bevele na Redis te stuur.
In **Gitlab11.4.7** is 'n **SSRF**-kwesbaarheid en 'n **CRLF** ontdek. Die **SSRF**-kwesbaarheid was in die **projek invoer van URL-funksionaliteit** tydens die skep van 'n nuwe projek en het toegang tot willekeurige IP-adresse in die vorm \[0:0:0:0:0:ffff:127.0.0.1] (dit sal 127.0.0.1 toegang gee), en die **CRLF** vuln is uitgebuit deur net **%0D%0A** karakters by die **URL** te voeg.
Daarom was dit moontlik om **misbruik te maak van hierdie kwesbaarhede om met die Redis-instantie te kommunikeer** wat **queues bestuur** van **gitlab** en om daardie queues te misbruik om **kodes uit te voer**. Die Redis queue misbruik payload is:
_Vir 'n rede (soos vir die skrywer van_ [_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/) _waar hierdie inligting vandaan kom) het die uitbuiting gewerk met die `git` skema en nie met die `http` skema nie._
<summary><strong>Leer AWS hak van nul tot held met</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* As jy wil sien dat jou **maatskappy geadverteer word in HackTricks** of **HackTricks aflaai in PDF-formaat** Kyk na die [**INSKRYWINGSPLANNE**](https://github.com/sponsors/carlospolop)!
* Ontdek [**Die PEASS-familie**](https://opensea.io/collection/the-peass-family), ons versameling eksklusiewe [**NFT's**](https://opensea.io/collection/the-peass-family)
* **Sluit aan by die** 💬 [**Discord-groep**](https://discord.gg/hRep4RUj7f) of die [**telegram-groep**](https://t.me/peass) of **volg** ons op **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Deel jou haktruuks deur PR's in te dien by die** [**HackTricks**](https://github.com/carlospolop/hacktricks) en [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github-opslag.