AWS Hacking öğrenin ve pratik yapın:<imgsrc="/.gitbook/assets/arte.png"alt=""data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<imgsrc="/.gitbook/assets/arte.png"alt=""data-size="line">\
GCP Hacking öğrenin ve pratik yapın: <imgsrc="/.gitbook/assets/grte.png"alt=""data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<imgsrc="/.gitbook/assets/grte.png"alt=""data-size="line">](https://training.hacktricks.xyz/courses/grte)
* [**abonelik planlarını**](https://github.com/sponsors/carlospolop) kontrol edin!
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın ya da **Twitter'da** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**'i takip edin.**
Deneyimli hackerlar ve bug bounty avcıları ile iletişim kurmak için [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) sunucusuna katılın!
[Belgelerden](https://redis.io/topics/introduction): Redis, bir **veritabanı**, önbellek ve mesaj aracısı olarak kullanılan açık kaynaklı (BSD lisanslı), bellek içi **veri yapısı deposu**dur.
Varsayılan olarak Redis, düz metin tabanlı bir protokol kullanır, ancak **ssl/tls** uygulayabileceğini de unutmamalısınız. [Buradan ssl/tls ile Redis çalıştırmayı öğrenin](https://fossies.org/linux/redis/TLS.md).
Redis, **metin tabanlı bir protokoldü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).
İlk **komut** olarak **`info`** deneyebilirsiniz. Bu, Redis örneği hakkında **bilgilerle** çıktı döndürebilir **veya** aşağıdakine benzer bir şey dönebilir:
**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`.\
Ayrıca, _**redis.conf**_ dosyasında `masteruser` parametresinde bir **kullanıcı adı** yapılandırılabilir.
Bu tür durumlarda, Redis ile etkileşimde bulunmak için **geçerli kimlik bilgilerini bulmanız gerekecek**, bu yüzden [**brute-force**](../generic-methodologies-and-resources/brute-force.md#redis) denemeyi düşünebilirsiniz.\
Eğer Redis sunucusu **anonim bağlantılara** izin veriyorsa veya geçerli kimlik bilgileri elde ettiyseniz, hizmet için sayım sürecini başlatmak üzere aşağıdaki **komutları** kullanabilirsiniz:
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:
Daha fazla bilgi için Redis hizmetini güvenli bir şekilde yapılandırma hakkında burada bulabilirsiniz: [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 yürütülen 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ç bilgiler bulmak için buraya bakabilirsiniz: [https://lzone.de/cheat-sheet/Redis](https://lzone.de/cheat-sheet/Redis)
Redis içinde **veritabanları 0'dan başlayan sayılardır**. `info` komutunun çıktısında "Keyspace" bölümünde herhangi birinin kullanılıp kullanılmadığını bulabilirsiniz:
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:
`GET <KEY>` komutunu çalıştırırken `-WRONGTYPE Operation against a key holding the wrong kind of value` hatası alırsanız, bu anahtarın bir dize veya tam sayıdan farklı bir şey olabileceği ve görüntülemek için özel bir operatör gerektirdiği anlamına gelir.
Deneyimli hackerlar ve bug bounty avcıları ile iletişim kurmak için [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) sunucusuna katılın!
[**redis-rogue-server**](https://github.com/n0b0dyCN/redis-rogue-server) otomatik olarak Redis'te (<=5.0.5) etkileşimli bir shell veya ters shell alabilir.
Eğer webshell erişim istisnası varsa, yedek aldıktan sonra veritabanını boşaltabilir ve tekrar deneyebilirsiniz, veritabanını geri yüklemeyi unutmayın.
Ö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'de rev shell** enjekte etmiştir:
Not edin 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).
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:
**Bu teknik burada otomatikleştirilmiştir:** [https://github.com/Avinash-acid/Redis-Server-Exploit](https://github.com/Avinash-acid/Redis-Server-Exploit)
[**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.
Master redis'teki tüm işlemler otomatik olarak slave redis'e senkronize edilir, bu da zayıf redis'i kendi kontrolümüzdeki master redis'e bağlı bir slave redis olarak değerlendirebileceğimiz anlamına gelir, ardından kendi redis'imize komut girebiliriz.
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:
Bu nedenle, bir web sitesinde bir **SSRF vuln** bulursanız ve bazı**headers**'ı (belki bir CRLF vuln ile) veya **POST parametrelerini****kontrol** edebiliyorsanız, Redis'e keyfi komutlar gönderebilirsiniz.
**Gitlab11.4.7**'de bir **SSRF** açığı ve bir **CRLF** keşfedildi. **SSRF** açığı, yeni bir proje oluştururken **URL'den proje içe aktarma işlevselliği** içinde bulunuyordu ve \[0:0:0:0:0:ffff:127.0.0.1] biçiminde keyfi IP'lere erişime izin veriyordu (bu, 127.0.0.1'e erişecektir) ve **CRLF** vuln, **URL**'ye sadece **%0D%0A** karakterleri ekleyerek istismar edildi.
Bu nedenle, **bu açıkları kullanarak Redis örneğiyle iletişim kurmak** ve **gitlab**'dan **kuyrukları yönetmek** için bu kuyrukları istismar etmek mümkündü ve **kod yürütme elde etmek** için bu kuyrukları istismar etmek mümkündü. Redis kuyruk istismar yükü:
_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ı._
Deneyimli hackerlar ve bug bounty avcıları ile iletişim kurmak için [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) sunucusuna katılın!
AWS Hacking'i öğrenin ve pratik yapın:<imgsrc="/.gitbook/assets/arte.png"alt=""data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<imgsrc="/.gitbook/assets/arte.png"alt=""data-size="line">\
GCP Hacking'i öğrenin ve pratik yapın: <imgsrc="/.gitbook/assets/grte.png"alt=""data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<imgsrc="/.gitbook/assets/grte.png"alt=""data-size="line">](https://training.hacktricks.xyz/courses/grte)
* [**abonelik planlarını**](https://github.com/sponsors/carlospolop) kontrol edin!
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın ya da **Twitter'da** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**'i takip edin.**