<summary><strong>AWS hacklemeyi sıfırdan kahramana öğrenin</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* **Şirketinizi HackTricks'te reklamınızı görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**]'na göz atın (https://github.com/sponsors/carlospolop)!
* [**The PEASS Family**]'yi keşfedin (https://opensea.io/collection/the-peass-family), özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuzu
* **Katılın** 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya **bizi****Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**'da takip edin.**
[Belgelerden](https://redis.io/topics/introduction) alınan bilgilere göre: Redis, açık kaynaklı (BSD lisanslı), bellek içi **veri yapıları deposu** olarak kullanılan bir **veritabanı**, önbellek ve mesaj aracıdır.
Varsayılan olarak Redis, düz metin tabanlı bir protokol kullanır, ancak **ssl/tls** de uygulayabileceğinizi unutmamalısınız. [Redis'i ssl/tls ile çalıştırmayı buradan](https://fossies.org/linux/redis/TLS.md) nasıl öğreneceğinizi öğrenin.
Redis, bir **metin tabanlı protokol** olduğundan, sadece **komutu bir sokete gönderebilirsiniz** ve dönen değerler okunabilir olacaktır. Ayrıca Redis'in **ssl/tls** kullanarak çalışabileceğini unutmayın (ancak bu çok garip).
Bu son durumda, bu, Redis örneğine erişmek için **geçerli kimlik bilgilerine ihtiyaç duyduğunuz anlamına gelir**.
**Varsayılan olarak** Redis'e **kimlik bilgileri olmadan** erişilebilir. Bununla birlikte, yalnızca şifreyi veya kullanıcı adı + şifreyi desteklemek üzere **yapılandırılabileceği** şekilde **ayarlanabilir**.\
`requirepass` parametresiyle _**redis.conf**_ dosyasına bir şifre **belirlemek mümkündür** veya hizmet yeniden başlatılana kadar geçici olarak ona bağlanarak ve çalıştırarak: `config set requirepass p@ss$12E45`.\
Yalnızca şifre yapılandırıldıysa kullanılan kullanıcı adı "**varsayılan**" 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ı**harici olarak bulmanın bir yolu olmadığını** unutmayın.
Bu gibi durumlarda Redis ile etkileşim kurmak için geçerli kimlik bilgilerini bulmanız gerekecektir, bu nedenle [**kaba kuvvet**](../generic-methodologies-and-resources/brute-force.md#redis) uygulayabilirsiniz.\
Eğer Redis sunucusu **anonim bağlantılara** izin veriyorsa veya geçerli kimlik bilgilerine sahipseniz, hizmet için aşağıdaki **komutları** kullanarak numaralandırma sürecini başlatabilirsiniz:
Redis servisini 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)
Ayrıca **Redis komutlarının gerçek zamanlı olarak izlenebileceği** veya en **yavaş 25 sorgunun****`slowlog get 25`** komutu ile alınabileceği bir komut olan **`monitor`** ile izleme yapabilirsiniz.
Redis içinde **veritabanları 0'dan başlayan numaralardır**. "Keyspace" bölümünde `info` komutunun çıktısında kullanılıp kullanılmadığını bulabilirsiniz:
Eğer `GET <KEY>` komutunu çalıştırırken `-WRONGTYPE Operation against a key holding the wrong kind of value` hatasını alırsanız, bu anahtarın bir dize veya tamsayı olmaktan farklı bir şey olabileceğini ve onu görüntülemek için özel bir operatöre ihtiyaç duyabileceğini belirtir.
[**redis-rogue-server**](https://github.com/n0b0dyCN/redis-rogue-server), Redis(<=5.0.5) içinde etkileşimli bir kabuk veya ters kabuk otomatik olarak alabilir.
Bilgi [**buradan**](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:
Webshell erişiminde istisna oluşursa, yedekleme yaptı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 bir html şablon dosyasını da üzerine yazabilir ve bir shell elde edebilirsiniz.
Örneğin, aşağıdaki [**bu yazıda**](https://www.neteye-blog.com/2022/05/cyber-apocalypse-ctf-2022-red-island-writeup/) belirtildiği gibi, saldırgan **nunjucks şablon motoru tarafından yorumlanan bir html** içine bir **rev shell enjekte etti:**
**Birçok şablon motorunun önbelleği** şablonları**bellekte** önbelleğe alır, bu yüzden üzerine yazsanız bile yeni olan **çalıştırılmaz**. Bu durumlarda, ya geliştirici otomatik yenilemeyi aktif bıraktı ya da hizmet üzerinde bir DoS gerçekleştirmeniz gerekecek (ve bunun otomatik olarak yeniden başlatılmasını bekleyeceksiniz).
Lütfen **`config get dir`** sonucunun diğer manuel saldırı komutlarından sonra değişebileceğine dikkat edin. Redis'e giriş yaptıktan hemen sonra bunu çalıştırmanızı öneririz. **`config get dir`** çıktısında **redis kullanıcısının evini** (genellikle _/var/lib/redis_ veya _/home/redis/.ssh_) bulabilir ve bunu bildiğinizde `authenticated_users` dosyasını yazabileceğiniz yeri ve **redis kullanıcısı ile ssh üzerinden erişebileceğiniz yeri bilirsiniz**. Yazma izinleriniz olan diğer geçerli bir kullanıcının evini bildiğinizde 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)
1. [https://github.com/n0b0dyCN/RedisModules-ExecuteCommand](https://github.com/n0b0dyCN/RedisModules-ExecuteCommand) adresindeki talimatları takip ederek **keyfi komutları yürütmek için bir redis modülü derleyebilirsiniz**.
[**Burada**](https://www.agarri.fr/blog/archives/2014/09/11/trying\_to\_hack\_redis\_via\_http\_requests/index.html) Redis'in **Lua kodunu kum havuzunda** çalıştırmak için **EVAL** komutunu kullandığını görebilirsiniz. Bağlantılı yazıda **dofile** fonksiyonunu kullanarak bunu nasıl **kötüye kullanabileceğinizi** görebilirsiniz, ancak [görünüşe göre](https://stackoverflow.com/questions/43502696/redis-cli-code-execution-using-eval) artık bu mümkün değil. Neyse ki, Lua kum havuzunu **atlatabilirseniz** sistemde **keyfi** komutlar **yürütebilirsiniz**. Ayrıca, aynı yazıdan, **DoS**'a neden olacak bazı**seçenekleri** görebilirsiniz.
Ana redis tüm işlemleri otomatik olarak slave redis'e senkronize eder, bu da redis zafiyetini bir slave redis olarak görebileceğimiz anlamına gelir, kendi kontrolümüzdeki ana redis'e bağlı olan slave redis'e komut girebiliriz.
Eğer **Redis'e****açık metin** isteği gönderebiliyorsanız, Redis isteği satır satır okuyacağından sadece anlamadığı satırlara hatalarla yanıt verecektir:
Bu nedenle, bir web sitesinde bir **SSRF açığı** bulursanız ve bazı**başlıkları** (belki bir CRLF açığı ile) veya **POST parametrelerini kontrol edebilirseniz**, Redis'e keyfi komutlar gönderebilirsiniz.
**Gitlab11.4.7**'de bir **SSRF** açığı ve bir **CRLF** keşfedildi. **SSRF** açığı, yeni bir proje oluşturulurken **URL'den proje içe aktarma işlevselliğinde** bulunuyordu ve \[0:0:0:0:0:ffff:127.0.0.1] formundaki keyfi IP'lere erişime izin veriyordu (bu, 127.0.0.1'e erişecekti), ve **CRLF** açığı sadece **URL'ye %0D%0A** karakterlerini ekleyerek sömürüldü.
Bu nedenle, bu açıkları**kullanarak gitlab'dan kuyrukları yöneten Redis örneğiyle iletişim kurmak** ve bu kuyrukları**kod yürütme elde etmek** için kötüye kullanmak mümkündü. Redis kuyruk kötüye kullanım yükü:
Deneyimli hackerlar ve hata ödül avcıları ile iletişim kurmak için [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) sunucusuna katılın!
<summary><strong>Sıfırdan kahraman olmak için AWS hackleme öğrenin</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* **Şirketinizi HackTricks'te reklamını görmek istiyorsanız** veya **HackTricks'i PDF olarak indirmek istiyorsanız** [**ABONELİK PLANLARI**](https://github.com/sponsors/carlospolop)'na göz atın!
* [**The PEASS Family'yi**](https://opensea.io/collection/the-peass-family) keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)**'da takip edin.**
* **Hacking hilelerinizi paylaşarak PR'lar göndererek** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına katkıda bulunun.