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)
* **💬 [**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)** bizi 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 nasıl çalıştırılır öğrenin](https://fossies.org/linux/redis/TLS.md).
Redis, **metin tabanlı bir protokoldür**, sadece **bir soket üzerinden komutu gönderebilirsiniz** 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 deneyebileceğiniz **`info`**. 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.
Böyle 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 bilgilerini 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 **Redis komutlarını gerçek zamanlı olarak izleyebilir** veya **`slowlog get 25`** ile en **yavaş 25 sorguyu** alabilirsiniz.
Daha fazla ilginç bilgi için daha fazla Redis komutu hakkında burada bulabilirsiniz: [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:
In case you get the following error `-WRONGTYPE Operation against a key holding the wrong kind of value` while running `GET <KEY>` it's because the key may be something else than a string or an integer and requires a special operator to display it.
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** (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 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ı**atlatabilirseniz**, 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 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.
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)
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın ya da **Twitter**'da **bizi takip edin** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**