Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
af_packet.c — إثبات المفهوم للتحقق من صلاحيات af_packet.c للتحقق من الصلاحيات التي يكتسبها أي مخترق عند الاستغلال الناجح لـ CVE-2021-22600 | Kitploit
أدوات/GitHubGitHub/chinmay1743/af_packet.c
تصعيد الامتيازاتتحليل الثغرات الأمنيةالاستغلالاختبار الاختراقتحليل الملفات الثنائيةالتعلم والتعليم
GitHubchinmay1743/af_packet.c

af_packet.c

إثبات المفهوم للتحقق من صلاحيات af_packet.c للتحقق من الصلاحيات التي يكتسبها أي مخترق عند الاستغلال الناجح لـ CVE-2021-22600

عرض المستودع
11منذ 11 أشهرلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة

af_packet.c

إثبات مفهوم للتحقق من صلاحيات af_packet.c للتحقق من الامتيازات التي يكتسبها أي مخترق عند استغلال ناجح لـ CVE-2021-22600


إنه مجرد نموذج إثبات مفهوم تم إنشاؤه بواسطة LLM ولا يغطي جميع الحالات. الفكرة الأساسية وراء هذا الإثبات هي التحقق من نوع الصلاحيات التي يعمل بها الكود المستهدف (سواء في مساحة المستخدم أو مساحة النواة، على سبيل المثال) لفهم تداعيات استغلاله مع أي استغلال مبني حول CVE-2021-22600. هذا الكود ليس بأي حال من الأحوال استغلالاً للثغرة المذكورة. لقد جربته على Ubuntu داخل جهاز افتراضي. قد تختلف النتائج حسب البيئة.


خطوات تجميع الكود وتشغيله:

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

مخرجات نموذجية عند التشغيل كمستخدم عادي:

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..>

مخرجات نموذجية عند التشغيل كمستخدم 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..>

تنزيل الأداة