Explication:
tcp[((tcp[12:1] & 0xf0) >> 2):4] détermine d’abord l’emplacement des octets qui nous intéressent (après l’en-tête TCP), puis sélectionne les 4 octets avec lesquels nous souhaitons faire correspondre.
Comment capturer toutes les requêtes HTTP POST entrantes
Comment capturer uniquement les requêtes HTTP POST entrantes sur le port 80 (Apache/NGINX)
tcpdump -i enp0s8 -s 0 -A 'tcp dst port 80 and tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x504F5354'
Comment capturer uniquement les appels HTTP GET entrants sur le port 443 (Apache/NGINX)
tcpdump -i enp0s8 -s 0 -A 'tcp dst port 443 and tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x47455420'
Comment capturer uniquement les appels HTTP POST entrants sur le port 443 (Apache/NGINX)
tcpdump -i enp0s8 -s 0 -A 'tcp dst port 443 and tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x504F5354'
Comment capturer les appels entrants HTTP GET (ou) POST vers le port 80 (ou) 443 (Apache/NGINX) provenant de l’hôte 192.168.10.1
tcpdump -i enp0s8 -s 0 -A 'tcp dst port 80 or tcp dst port 443 and tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x47455420 or tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x504F5354' and host 192.168.10.1
Comment capturer une transmission HTTP complète entrante et sortante GET et POST
tcpdump -i enp0s8 -s 0 -A 'tcp dst port 80 and tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x47455420 or tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x504F5354 or tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x48545450 or tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x3C21444F and host 192.168.10.1'
Comment surveiller toutes les URL de requête HTTP entrantes (POST ou GET)
Comment capturer une transmission HTTP complète avec TCPDUMP (GET & POST) sur un port spécifique
Ici, nous allons passer un appel du client avec jusqu’à 192.168.60.1 vers notre application TestWebService en utilisant les méthodes GET et POST et capturer les données de trafic HTTP du côté du serveur.
tcpdump -i enp0s8 -s 0 -A 'tcp dst port 18001 and tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x47455420 or tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x504F5354 or tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x48545450 or tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x3C21444F and host 192.168.60.1'
Format lisible pour les en-têtes http
tcpdump -A -s 10240'tcp port 443 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'|\
egrep --line-buffered "^........(GET |HTTP\/|POST |HEAD )|^[A-Za-z0-9-]+: "|\
sed -r 's/^........(GET |HTTP\/|POST |HEAD )/\n\1/g'