
استغلال إثبات المفهوم لثغرة SQL injection في Joomla 3.7.0 com_fields (CVE-2017-8917)، يُظهر الكشف والتعداد واستخراج البيانات في سير عمل مناسب لـ CTF.
يحتوي هذا المستودع على دليل إثبات مفهوم (PoC) بسيط ومناسب لمسابقات CTF لثغرة حقن SQL في مكون com_fields الخاص بـ Joomla (CVE-2017-8917). الهدف هو الحفاظ على سير العمل خفيفًا مع عرض سلسلة الاستغلال الكاملة: الكشف، والتعداد، واستخراج البيانات.
الضعف: حقن SQL في مكون com_fields الخاص بـ Joomla.
السبب الجذري: لا يتم تنقية معامل list[fullordering] بشكل صحيح، مما يسمح بحقن SQL في الاستعلام المُنشأ. عند صياغته بحمولة تستند إلى الأخطاء (مثل UpdateXML)، يمكن إظهار نتيجة SQL في الرد، مما يتيح استخراج البيانات.
كيفية استغلاله (بمستوى عالٍ):
index.php?option=com_fields&view=fields&layout=modal مع تعيين معامل list[fullordering] إلى حمولة خبيثة.UpdateXML) لإجبار قاعدة البيانات على إظهار النتائج.<title>) واستخراج المخرجات المُحقونة.أدناه المكونات الأكثر أهمية.
parse_args()تحليل وسائط سطر الأوامر إلى كائن args بسيط يحتوي على host و debug. يفترض السكربت HTTP على المنفذ 80 ويبني عنوان URL الأساسي من --host.
run_exploit()run_exploit() هي دالة التنسيق الرئيسية:
requests.Session() بحيث تستمر ملفات تعريف الارتباط والترويسات.request_title(): ترسل طلبًا وتستخرج قيمة <title>. يستخدم الدليل حقن SQL القائم على الأخطاء لتسريب البيانات إلى هذه العلامة، لذا فهذا هو جوهر استخراج البيانات.build_params(): تُنشئ معاملات الطلب المعرضة للخطر مع حقن SQL.sql_list() و dump_table() تُؤتمت التعداد والاستخراج المجزأ._fetch_token()يتم استخراج رمز CSRF من صفحة تسجيل الدخول في Joomla. بينما قد لا تتطلب بعض السيناريوهات ذلك، لا تزال العديد من مسارات Joomla تفرض فحوصات CSRF. تضمينه:
wrap_payload() و encode_sql_string()تولد هذه المساعدات الحمولة الفعلية للحقن:
wrap_payload() تغلف استعلامًا خامًا في UpdateXML(...) لإجبار إخراج قائم على الأخطاء.encode_sql_string() تحول السلاسل إلى تعبيرات CHAR(...) لتجنب مشكلات الاقتباس._dump_table())يتم تسلسل الصفوف باستخدام فاصل وجلبها في سلاسل فرعية لتجنب الاقتطاع. هذا يحافظ على اتساق المخرجات حتى عندما تكون قيم الصفوف طويلة.
python main.py --host <TARGET_IP>
إخراج تصحيح اختياري:
python main.py --host <TARGET_IP> --debug
└─$ python exploit.py --host <TARGET>
]LLLLLLmmmmmLLLLLL[
]LLLLLLLLLLLLLLLLL[
]LLLLLLLLLLLLLLLLL[
]LLLLLLLLLLLLLLLLL[
]LLLLLLLLLLLLLLLLL[
ms. ]LLLLLLLLLLLLLLLLL[ ,m
]LLLLs. ]LLLLLLLL~+LLLLLLL[ _gLLLL
LLLLLLLL_. LLLLLLLL ~~\LLLL[ ,gLLLLLLLi
dLLLLLLLLLLm_ -LLLLLLLo LLL[ _mLLLLLLLLLL.
iLLLLLLLLLLLLLLs. ]LLf` , 'c LLL[ ,gLLLLLLLLLLLLLL
iLLLLLLLLLLLLLLLLLLsgL` 'c- \. LLLLLLLLLLLLLLLLLLLLLL
,LLLLLLLLLLLLLLLLLLLLL! =__/Li iLLLLLLLLLLLLLLLLLLLLLLL
gLLLLLLLLLLLLLLLLLLLLLL imm_.Y~'` LLLLLLLLLLLLLLLLLLLLLLLLL.
dLLLLLLLLLLLLLLLLLLLLLLL 'LL_ dLLLLLLLLLLLLLLLLLLLLLLLLLLi
,LLLLLLLLLLLLLLLLLLLLLLLLLi ~--__LLLLLLLLLLLLLLLLLLLLLLLLLLLLs
'LLLLLLLLLLLLLLLLLLLLLLLLLLs. LLLLLLLLLLLLLLLLLLLLLLLLLLLLL~
'LLLLLLLLLLLLLLLLLLLLLLLLLL_. LLLLLLLLLLLLLLLLLLLLLLLLf
'LLLLLLLLLLLLLLLLLLLLLLLLLLm_ 'LLLLLLLLLLLLLLLLLLLf`
'LLLLLLLLLLLLLLLLLLLLLLLL'Lm_ LLLLLLLLLLLLLLLL`
LLLLLLLLLLLLLLLLLLLLLL 'LL LLLLLLLLLLLLLf
'LLLLLLLLLLLLLLLLLLL L LLLLLLLLLLL~
_LLLLLLLLLLLLLLL !i ] ,LLLLLLLLLLLs.
gLLLLLLLLLLLLLLLLL! 's [ _mLLLLLLLLLLLLLLLs
gmLLLLLLLLLLLLLLLLLLL ~eLLLLLLLLLLLLLLLLLLLLLms
_gLLLLLLLLLLLLLLLLLLLLLL. 'LLLLLLLLLLLLLLLLLLLLLLLs_
_gLLLLLLLLLLLLLLLLLLLLLLLLLL_ !LLLLLLLLLLLLLLLLLLLLLLLLs.
,gLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLm_ YLLLLLLLLLLLLLLLLLLLLLLLLLms
LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLs ]LLLLLLLLLLLLLLLLLLLLLLLLLL`
'LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL 'YL ]LLLLLLLLLLLLLLLLLLLLLLLLf
'LLLLLLLLLLLLLLLLLLLLLLLLLLLf`! f ,LLLLLLLLLLLLLLLLLLLLLLLL!
'LLLLLLLLLLLLLLLLLLLLLLLLL[ LmmLLLLLLLLLLLLLLLLLLLLLLLL`
LLLLLLLLLLLLLLLLLf LLLLi t LLLLLLL LLLLLLLLLLLLLLLLL!
'LLLLLLLLLLLLLf LLLL[ '*LLLLLLL 'LLLLLLLLLLLLL[
!LLLLLLLLLf` LLLLLs 'YLLLLL ~LLLLLLLLLL
LLLLLLf~ LLLLLLLs LLLLL ~LLLLLL`
'LLL~ LLLLLLLLLm iLLLLL ~LLL~
~` LLLLLLLL[LLmLLLLLL '`
LLLLLL`d[ LLLLLLLL
LLLLLLdL[ LLLLLLLL
LLLLLLLLLLLLLLLLLL Juergen Jakubowski
LLLLLLLLLLLLLLLLLL
LLLLLLLLLLLLLLLLLL [email protected]
استغلال بواسطة ztrxwzy.
مستوحى من دليل إثبات المفهوم لـ Baptiste Contreras.
[888] الهدف : http://10.66.187.202:80/index.php
[888] رمز CSRF : 3ec54b1b32b5dc2dd8186537821b8dc1
[888] http://10.66.187.202:80/index.php معرض لـ SQLi
[888] إصدار قاعدة البيانات المكتشف : 5.5.64-MariaDB
[888] قاعدة البيانات الحالية : joomla
[888] الجداول في قاعدة البيانات joomla
رخصة MIT حقوق النشر (c) 2025 Jesús Caldera
يُمنح الإذن hereby، مجانًا، لأي شخص يحصل على نسخة من هذا البرنامج وملفات التوثيق المرتبطة (البرنامج)، للتعامل في البرنامج دون قيود، بما في ذلك دون حصر حقوق الاستخدام والنسخ والتعديل والدمج والنشر والتوزيع والترخيص و/أو بيع نسخ من البرنامج، والسماح للأشخاص الذين يُقدم لهم البرنامج بذلك، وفقًا للشروط التالية:
يجب تضمين إشعار حقوق النشر أعلاه وإذن الإذن هذا في جميع النسخ أو الأجزاء الجوهرية من البرنامج.
يُقدم البرنامج "كما هو"، دون أي ضمان من أي نوع، صريح أو ضمني، بما في ذلك على سبيل المثال لا الحصر ضمانات القابلية للتسويق والملاءمة لغرض معين وعدم الانتهاك. في أي حال من الأحوال لا يكون المؤلفون أو أصحاب حقوق النشر مسؤولين عن أي دعوى أو أضرار أو أي مسؤولية أخرى، سواء كانت ناشئة عن عقد أو تقصير أو غير ذلك، تنشأ عن أو فيما يتعلق بالبرنامج أو استخدامه أو التعاملات الأخرى في البرنامج.