<summary><strong>AWS hacklemeyi sıfırdan kahramana öğrenin</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Kırmızı Takım Uzmanı)</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**]'in bulunduğu koleksiyonumuz
* **Bize katılın** 💬 [**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 püf noktalarınızı paylaşarak HackTricks ve HackTricks Cloud** github depolarına PR göndererek katkıda bulunun.
[Belgelerden](https://redis.io/topics/introduction) alıntı: 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ıştırılabileceğini unutmayın (ancak bu çok garip).
Redis **varsayılan olarak** kimlik bilgileri olmadan erişilebilir. Bununla birlikte, yalnızca şifreyi veya kullanıcı adını + şifreyi desteklemek üzere **yapılandırılabilir**.\
`requirepass` parametresiyle _**redis.conf**_ dosyasına bir şifre **belirlemek mümkündür** veya hizmet yeniden başlatılana kadar geçici olarak 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şimde bulunmak için **geçerli kimlik bilgilerini bulmanız gerekecektir**, bu nedenle [**kaba kuvvet**](../generic-methodologies-and-resources/brute-force.md#redis) uygulayabilirsiniz.\
**Geçerli kimlik bilgilerini bulduğunuzda oturumu doğrulamanız gerekecektir** bağlantıyı kurduktan sonra aşağıdaki komutla:
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:
Daha fazla bilgi için Redis servisini güvenli bir şekilde yapılandırma hakkında buraya bakabilirsiniz: [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 izlenebilir** olduğu komut **`monitor`** ile veya en **yavaş 25 sorguyu** almak için **`slowlog get 25`** komutu ile izleyebilirsiniz.
Daha fazla ilginç bilgi için diğer Redis komutları hakkında buraya bakabilirsiniz: [https://lzone.de/cheat-sheet/Redis](https://lzone.de/cheat-sheet/Redis)
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 başka bir şey olabileceğini ve onu görüntülemek için özel bir operatöre ihtiyaç duyduğunu gösterir.
[**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ın **nunjucks şablon motoru tarafından yorumlanan bir html içine bir ters shell enjekte ettiğini** görebilirsiniz:
**Birçok şablon motorunun önbelleğe aldığı** şablonlar **bellekte** tutulduğundan, bunları üzerine yazsanız bile yeni olan **çalıştırılmayabilir**. Bu durumlarda, ya geliştirici otomatik yeniden yükleme işlemini etkin bıraktı ya da hizmet üzerinde bir DoS gerçekleştirmeniz gerekebilir (ve bunun otomatik olarak yeniden başlatılmasını beklersiniz).
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 ev dizinini** (genellikle _/var/lib/redis_ veya _/home/redis/.ssh_) bulabilir ve bunu bildiğinizde `authenticated_users` dosyasını yazabileceğiniz yeri bilirsiniz. Yazma izinleriniz olan diğer geçerli bir kullanıcının ev dizinini 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) adresinden talimatları takip ederek **keyfi komutları yürütmek için bir redis modülü derleyebilirsiniz**.
[**Buradan**](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 kullandığınızı** 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, Lua kum havuzunu **atlatabilirseniz** sistemde **keyfi komutlar yürütebilirsiniz**. Ayrıca, aynı yazıdan, **DoS**'a neden olmak için bazı**seçenekler** 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, ana redis'e bağlı olan kendi kontrolümüzdeki slave redis'e komut girebiliriz.
Eğer **Redis'e****açık metin** isteği gönderebiliyorsanız, Redis ile iletişim kurabilirsiniz çünkü Redis isteği satır satır okur ve anlamadığı satırlara sadece hatalarla yanıt verir:
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ü şuydu:
<summary><strong>Sıfırdan kahraman olmaya kadar 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!
* **💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) katılın veya bizi Twitter'da** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)** takip edin.**