
واجب CodePath للأسبوعين 7 و8: CVE-2017-14719، CVE-2019-9787 وتعديل محتوى الصفحات/المقالات بدون مصادقة عبر REST API
واجب CodePath للأسبوعين 7 و8: CVE-2017-14719, CVE-2019-9787 وتعديل محتوى الصفحات/المقالات بدون مصادقة عبر REST API
الوقت المستغرق: 16 ساعة في المجمل
الهدف: العثور على الثغرات الأمنية التي تؤثر على إصدار قديم من WordPress وتحليلها وإعادة إنتاجها وتوثيقها
- [ ] خطوات إعادة إنتاج الثغرة: إذا تمكن المهاجم من الوصول إلى حساب مسؤول (Admin)، يمكنه النقر على زر "المكونات الإضافية" لعرض المكونات الإضافية المثبتة. بجانب كل مكوّن إضافي مدرج يوجد زر "حذف"، وعند الضغط عليه، سينتقل المهاجم إلى صفحة يمكن للمسؤول فيها عرض محتويات الدليل الذي يحاول حذفه قبل إجراء التغيير الدائم. من هذه الصفحة، يمكن للمهاجم حذف اسم المكوّن الإضافي من عنوان URL (الموجود مباشرة بعد checked[0]= وقبل '&'). يستبدل المهاجم اسم المكوّن الإضافي بحرف واحد أو أكثر من " ../ " حتى يصل إلى الدليل المحدد الذي يرغب في حذفه.
- [ ] الكود المصدري المتأثر:
- https://core.trac.wordpress.org/browser/tags/3.8/src/wp-admin/plugins.php
#######################################################################################
########################################################################################
استخدمت كود استغلال بلغة بايثون من هذا الرابط: https://www.exploit-db.com/exploits/41223
أثناء العمل على ثغرة 'تعديل محتوى الصفحات/المقالات بدون مصادقة عبر REST API' واجهت خطأ استيراد (import error) في ملف بايثون بسبب عدم تثبيت حزمة lxml.
بعد تثبيت lxml، حاولت تشغيل 'python [exploit_file_name].py http://wpdistillery.vm' مرة أخرى. وهنا واجهت مشكلتي الثانية: تلقيت خطأ UnicodeEncodeError. حللت هذه المشكلة بحذف المقالات الزائدة التي تحتوي على قيمة رقمية (ordinal) خارج النطاق.

أنشأت مقالاً جديداً بمحتوى نصي عادي وشغّلت السكربت مرة أخرى. نُفّذ بنجاح، واكتشف نقاط نهاية REST API (endpoints) وحصل على معرف المقال المتاح وعنوانه ورابطه.
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.