<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**](https://opensea.io/collection/the-peass-family)'yi keşfedin, özel [**NFT'lerimiz**](https://opensea.io/collection/the-peass-family) koleksiyonumuz
* **Katılın** 💬 [**Discord grubumuza**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) veya bizi **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks\_live)** 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ı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) öğ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).
Redis **varsayılan olarak** kimlik bilgileri olmadan erişilebilir. Bununla birlikte, yalnızca şifreyi veya kullanıcı adı + ş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 şunu çalıştırarak: `config set requirepass p@ss$12E45`.\
Ayrıca, bir **kullanıcı adı**_**redis.conf**_ dosyası içindeki `masteruser` parametresinde yapılandırılabilir.
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 **0'dan başlayan sayılarla numaralandırılan veritabanları** bulunmaktadı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 yeniden yükleme işlemini 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 ev dizinini** (genellikle _/var/lib/redis_ veya _/home/redis/.ssh_) bulabilir ve bunu bildiğinizde `authenticated_users` dosyasını yazabileceğiniz yeri bilirsiniz. Yazma izniniz olan diğer geçerli bir kullanıcının ev dizinini bildiğinizde onu 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**.
2. Ardından derlenen modülü **yüklemek için bir yol**a ihtiyacınız olacak.
3. Yüklenen modülü çalışma zamanında `MODULE LOAD /path/to/mymodule.so` ile **yükleyin**.
4. Doğru yüklendiğini kontrol etmek için **yüklü modülleri listeleme**: `MODULE LIST`
[**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 yürütmek** için **EVAL** komutunu kullandığını görebilirsiniz. Bağlantılı yazıda **dofile** işlevini 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, 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.
Master 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 master redis'e bağlı olan 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şlevinde** 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ı**kullanarak kod yürütme elde etmek mümkündü**. Redis kuyruk kötüye kullanımı yükü şuydu:
Ve **URL kodunu** isteği **SSRF'yi** istismar ederek ve **CRLF** kullanarak `whoami` komutunu çalıştırmak ve çıktıyı`nc` aracılığıyla geri göndermek için:
<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 PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin!
* [**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.