Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
af_packet.c — Preuve de concept pour vérifier les privilèges de af_packet.c afin de valider les privilèges acquis par tout hacker lors de l'exploitation réussie de CVE-2021-22600 | Kitploit
Outils/GitHubGitHub/chinmay1743/af_packet.c
Escalade de PrivilègesAnalyse des VulnérabilitésExploitationTests d'IntrusionAnalyse de BinairesApprentissage et Éducation
GitHubchinmay1743/af_packet.c

af_packet.c

Preuve de concept pour vérifier les privilèges de af_packet.c afin de valider les privilèges acquis par tout hacker lors de l'exploitation réussie de CVE-2021-22600

Voir le dépôt
11il y a 11 moisPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

af_packet.c

Preuve de concept pour vérifier les privilèges d'af_packet.c afin de valider les privilèges acquis par un pirate lors d'une exploitation réussie de CVE-2021-22600


Il s'agit simplement d'un exemple de preuve de concept généré par LLM et ne couvre pas tous les cas. L'idée de base derrière cette preuve de concept est de vérifier avec quel type de privilèges le code cible s'exécute (que ce soit dans l'espace utilisateur ou l'espace noyau, par exemple) afin de comprendre les implications de son exploitation avec tout exploit construit autour de la CVE-2021-22600. Ce code n'est en aucun cas un exploit de la CVE susmentionnée. Je l'ai testé sur Ubuntu dans une VM. Votre expérience peut varier selon l'environnement.


Étapes pour compiler le code et l'exécuter :

root@kitploit:~
gcc program.c -o runme
chmod +x runme
./runme
sudo ./runme

Exemple de sortie pour une exécution en tant qu'utilisateur normal :

root@kitploit:~
<..SNIP..>
=== AF_PACKET privilege probe ===
UID=1000  EUID=1000

WARNING: couldn't read CapEff from /proc/self/status. Continuing anyway.
Stage 1: try AF_PACKET + SOCK_DGRAM (no CAP_NET_RAW required by kernel check)
socket(AF_PACKET, SOCK_DGRAM, ETH_P_ALL) => FAILED: Operation not permitted (errno=1)

Stage 2: try AF_PACKET + SOCK_RAW (kernel checks CAP_NET_RAW for SOCK_RAW)
socket(AF_PACKET, SOCK_RAW, ETH_P_ALL) => FAILED: Operation not permitted (errno=1)
RAW socket creation failed: you cannot reach packet_set_ring() from user-land without CAP_NET_RAW.
Common results:
 - errno=EPERM (Operation not permitted) : you lack CAP_NET_RAW
 - errno=EACCES : sometimes indicates policy or network namespace restrictions

Notes:
 - The kernel enforces CAP_NET_RAW at socket creation: look for a check like
     if (sock->type == SOCK_RAW && !capable(CAP_NET_RAW)) return -EPERM;
   in net/packet/af_packet.c (this is why PACKET_RX_RING is unreachable without that socket).
 - If you run this program as root or with CAP_NET_RAW, the RAW socket will succeed and
   setsockopt(PACKET_RX_RING) will attempt to configure the ring (it may still fail with EINVAL
   if your parameters are invalid, but you will have invoked packet_set_ring()).

=== Done ===
<..SNIP..>

Exemple de sortie pour une exécution en tant que sudo / root :

root@kitploit:~
<..SNIP..>
=== AF_PACKET privilege probe ===
UID=0  EUID=0

CapEff (hex) = 0x000001ffffffffff
 -> CAP_NET_RAW (bit 12) = YES

Stage 1: try AF_PACKET + SOCK_DGRAM (no CAP_NET_RAW required by kernel check)
socket(AF_PACKET, SOCK_DGRAM, ETH_P_ALL) => OK (fd=3)

Stage 2: try AF_PACKET + SOCK_RAW (kernel checks CAP_NET_RAW for SOCK_RAW)
socket(AF_PACKET, SOCK_RAW, ETH_P_ALL) => OK (fd=3)
Since RAW socket creation succeeded, we likely have CAP_NET_RAW (or are root).

Stage 3: try setsockopt PACKET_RX_RING (this invokes packet_set_ring in kernel)
setsockopt(PACKET_RX_RING) => OK

Notes:
 - The kernel enforces CAP_NET_RAW at socket creation: look for a check like
     if (sock->type == SOCK_RAW && !capable(CAP_NET_RAW)) return -EPERM;
   in net/packet/af_packet.c (this is why PACKET_RX_RING is unreachable without that socket).
 - If you run this program as root or with CAP_NET_RAW, the RAW socket will succeed and
   setsockopt(PACKET_RX_RING) will attempt to configure the ring (it may still fail with EINVAL
   if your parameters are invalid, but you will have invoked packet_set_ring()).

=== Done ===
<..SNIP..>

Télécharger l’outil