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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
أدوات/GitHubGitHub/hienkiet/cve-2022-21445-for-12.2.1.3.0-weblogic
تحليل الثغرات الأمنيةتحليل الكودالاستغلالاستغلال تطبيقات الويباختبار الاختراقأداة الوصول عن بعدتطوير الحمولات
GitHubhienkiet/cve-2022-21445-for-12.2.1.3.0-weblogic

CVE-2022-21445-for-12.2.1.3.0-Weblogic

استغلال تنفيذ التعليمات البرمجية عن بُعد بدون مصادقة مسبقة لـ Oracle WebLogic ADF Faces (CVE-2022-21445, CVSS 9.8). يتضمن إعداد بيئة مفصلة، إنشاء حمولة، وتعليمات التصحيح عن بُعد لاختبار الاختراق.

عرض المستودع
5347منذ 2 سنواتلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

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

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

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

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

نظرة عامة

CVE-2022-21445 (نقاط CVSS 9.8)، الثغرة هي إلغاء تشفير بيانات غير موثوق، تم تحديدها في مكون ADF Faces، ويمكن استغلالها عن بُعد دون الحاجة إلى مصادقة (pre-authentication) لتنفيذ RCE.

تم اكتشاف الثغرة بواسطة خبيرَي أمن سيبراني: PeterJson من VNG Corporation و Nguyen Jang من VNPT. ثم تلقت Oracle هذا التقرير في أكتوبر 2021، واستغرق الأمر 6 أشهر، أي حتى أبريل 2022، لإصدار التصحيح.

في هذه المقالة، يركز الاستغلال على Oracle Business Intelligence الإصدار 12.2.1.4.0

التحليل - إعادة إنتاج الثغرة

إعداد البيئة

جانب جهاز الضحية/الهدف

المتطلبات: تثبيت Windows 10+ Pro أو Windows Home (x64) مع ترخيص نشط، أو استخدام Windows Server (يفضل استخدام إصدارات Oracle)

الخطوة 1: تثبيت Java، الإصدار jdk 8u112 أو أحدث (8Ux)، رابط التحميل: JDKv8U112

  • إضافة JAVA_HOME مع المسار指向 مجلد jdk (وليس jre) صورة 1.1: تثبيت Java

الخطوة 2: تثبيت Oracle Database 19c، رابط التحميل: Oracle 19c

  1. جهّز مجلدًا لتثبيت قاعدة البيانات، وأنشئ مسارًا كما يلي، ثم قم بفك ضغط ملف قاعدة البيانات الذي تم تحميله في هذا المسار C:\app\oracle\product\19c\db_home1

  • شغّل ملف setup.application بصلاحيات المسؤول صورة 2.1: تشغيل إعداد DB

  • اتبع التعليمات خطوة بخطوة كما في دليل تثبيت DB

  • ملاحظة مهمة جدًا: في الخطوة 8/17، تأكد من تحديد Create as Container database لإنشاء قاعدة بيانات قابلة للتوصيل (pluggable db) لخدمة عملية تثبيت Fusion Middleware القادمة صورة 2.2: إنشاء Pluggable Database

  • في الخطوة 9/17، اختر ترميز الأحرف Unicode (AL32UTF8) صورة 2.3: اختيار Unicode

    1. بعد اكتمال عملية التثبيت، تحقق جيدًا من خدمات Windows للتأكد من أن الخدمات الأربعة الرئيسية كما في الصورة أدناه في حالة RUNNING صورة 2.4: التثبيت بنجاح

    صورة 2.5: التحقق من الخدمات

    1. إنشاء حساب جديد في Oracle Database حسب الخطوات التالية:
    • Terminal Administrator -> sqlplus / as sysdba
    • إنشاء مستخدم النظام system: alter user system identified by system_password account unlock;
    • التحقق من وجود المستخدم system: select username from dba_users;
    • إعداد البيئة: alter session set "_oracle_script"=true;
    • إنشاء مستخدم عادي hr: create user hr identified by user_password;
    • منح الصلاحيات: grant all privileges to hr;
    • فتح الحساب – تغيير كلمة المرور: alter user hr identified by hr_pass account unlock;
    • إنشاء حساب نظام جديد: alter user sys identified by sys_pass account unlock;

    الخطوة 3: تثبيت SQL Developer، الإصدار no-jre، رابط التحميل: SQLDev-NoJRE صورة 3.1: تحميل SQL Developer

    • شغّل ملف sqldeveloper.application بصلاحيات المسؤول صورة 3.2: تشغيل SQL Developer

    • قم بتعيين المعلمات لاتصال جديد كما في الصورة أدناه، مع تغيير اسم المستخدم وكلمة المرور (كما في المثال أعلاه hr)، واسم المضيف (الافتراضي localhost)، والمنفذ (الافتراضي 1521)، وSID (وهو اسم قاعدة البيانات العام الذي تم تثبيته في الخطوة 2) صورة 3.3: تعيين معلمات SQL Developer

    • إذا ظهرت رسالة Success عند النقر على Test، فهذا يعني أن الاتصال ناجح، ثم انقر Connect

    الخطوة 4: تثبيت Fusion Middleware Infrastructure (FMW) الإصدار 12.2.1.3.0، رابط التحميل FMW_ver_12.2.1.3.0 صورة 4.1: تحميل FMW

    • أنشئ مسارًا لمجلد تثبيت FMW على النحو C:\Oracle\Middleware\Oracle_Home
    • اتبع الخطوات بالتسلسل حسب الدليل: دليل تثبيت FMW

    الخطوة 5: تثبيت Oracle Business Intelligence (OBIEE) الإصدار 12.2.1.4.0، رابط التحميل: OBIEE_ver_12.2.1.4.0

    • شغّل ملف setup_bi_platform-12.2.1.4.0_win64.exe بصلاحيات المسؤول صورة 5.1: تشغيل ملف تثبيت OBIEE

    • اتبع التعليمات خطوة بخطوة حسب دليل تثبيت OBIEE

    • ملاحظة: يجب أن يكون مسار BI مطابقًا للمسار الذي تم تثبيت FWM عليه، مثلاً هنا Oracle/Middleware/Oracle_Home صورة 5.2: مسار BI يجب أن يكون مطابقًا لـ FWM

    الخطوة 6: إعداد مخطط BI باستخدام أداة Repository Creation Utility (RCU)

    • في المسار C:\Oracle\Middleware\Oracle_Home\oracle_common\bin، شغّل ملف rcu.bat بصلاحيات المسؤول

    • اتبع الخطوات التالية بالتسلسل

    صورة 6.1: إنشاء Repository

    صورة 6.2: تفاصيل اتصال قاعدة البيانات

    صورة 6.3: تحديد المكونات

    صورة 6.4: كلمة مرور المخطط

    • في النهاية، انقر Create ليقوم النظام بإنشاء مخطط BI

    الخطوة 7: إعداد متغيرات البيئة لـ OBIEE

    • اذهب إلى Control Panel > System > Advanced system settings > Advanced > Environment Variables > New System Variable صورة 7.1: متغيرات البيئة

    الخطوة 8: إنشاء مجال BI (BI Domain)

    1. في المسار C:\Oracle\Middleware\Oracle_Home\bi\bin، شغّل ملف config.cmd بصلاحيات المسؤول

    صورة 8.1: تشغيل ملف config

    1. في الخطوة 1: اختر المكونات الثلاثة، حيث Essbase هو خادم OLAP، وBusiness Intelligence Enterprise Edition هو BI Analytics، وBusiness Intelligence Publisher هو BI Publisher

    صورة 8.2: اختيار المكونات

    1. في الخطوة 3: قم بإعداد مجال جديد كما في الصورة أدناه، !! تذكر كلمة مرور المجال لأنه سيكون من الصعب استعادتها. واجعل المجال bi لأنه الافتراضي.

    صورة 8.3: حساب المجال

    1. في الخطوة 4: تحديث معلومات المجال لقاعدة البيانات

    صورة 8.4: تحديث المعلومات

    1. في الخطوة 8: إذا سارت العملية بنجاح، ستظهر النتيجة كما في الصورة أدناه

    صورة 8.5: تكوين ناجح

    1. إذا كان كل شيء Done، فاحفظ ملف معلومات OBIEE للخطوة التالية، ثم سجل الدخول إلى عناوين URL التالية:
    • http://localhost:9500/console*
    • http://localhost:9500/em*
    • http://localhost:9502/xmlpserver*
    • http://localhost:9502/analytics*
    1. بعض الأخطاء المحتملة
    • في الخطوة 4، إذا أبلغ النظام عن فشل تسجيل الدخول، فتأكد من صحة كلمة مرور المجال

    • في الخطوة 8، إذا أظهر النظام خطأً كما في الصورة أدناه، فتحقق مما إذا كنت قد قمت بتنشيط ترخيص Windows وما إذا كان Windows يلبي المتطلبات الموضحة في قسم الشروط.

    صورة 8.6: خطأ الترخيص

    • خطأ عدم إضافة BI_HOME_PRODUCT، راجع الخطوة 7
    • تحديث الأخطاء ...

    الخطوة 9: بعد الانتهاء من الإعداد، ادخل إلى مجال BI الذي تم إنشاؤه في المسار $Oracle_Home\user_projects\domains\bi\servers\AdminServer\tmp_WL_user\adf.oracle.domain.webapp\i83uao

    • انسخ جميع ملفات jar الموجودة هنا إلى مجلد منفصل، وشاركها مع جهاز الهجوم (في بيئة المختبر، افعل ذلك، أما في الهجوم الفعلي، فيجب على جهاز الهجوم أيضًا تثبيت البيئة مثل جهاز الضحية للحصول على الكود المصدري)

    • أضف أيضًا مكتبة coherence.jar من المسار $Oracle_Home\coherence\lib إلى هذا المجلد.

    • هذا المجلد مهم جدًا لنجاح الحمولة (payload) لأن كل إصدار من FMW أو BI أو بيئة كل جهاز يختلف عادةً، لذا يلزم وجود الإصدار الصحيح لتقليل المخاطر أو الاستثناءات التي قد تظهر أثناء نقل الحمولة.

    الخطوة 10 (فقط إذا كنت بحاجة إلى تصحيح الأخطاء عن بُعد (remote debug)، مع الإشارة إلى أنه في حالة الاختبار في بيئة حقيقية، لا يمكن إعداد جهاز الضحية حسب الرغبة، لذلك يحتاج المهاجم إلى إعداد جهاز الهدف على جهازه الخاص أيضًا لتمكين التصحيح عن بُعد والتحقق من الأخطاء)

    • تثبيت mozilla، إضافة Burp Proxy على المنفذ 8181

    • تشغيل Remote Debug من جانب خادم BI

      الوصول إلى localhost:9500/console

      في Domain Structure -> اختر bi -> Environment -> Servers

    صورة 10.1: Domain Structure

    سيظهر خادمان: AdminServer الخاص بـ Weblogic و bi_server1 الخاص بـ BI

    صورة 10.2: قائمة الخوادم المعروضة

    اختر Lock & Edit في الزاوية اليسرى العليا، وحدد bi_server1 لتعديل التكوين. ثم انتقل إلى Configuration -> Server start -> اسحب لأسفل إلى النهاية، اختر Advanced (إن وجد) -> اختر إدخال الوسائط (Arguments) -> أدخل معلمات التصحيح:

    -Xdebug -Xnoagent – Xrunjdwp:transport=dt_socket,address=5005,server=y,suspend=n

    (يمكنك تجربة 0.0.0.0:5005 إذا حدث خطأ لاحقًا ولم يتم إعادة تشغيل bi_server1)

    أدخل كلمة مرور Weblogic (التي تم تعيينها سابقًا في قسم تكوين BI Domain) -> Apply change & Restart

    افتح Terminal Administrator -> انتقل إلى المسار $Oracle_Home\user_projects\domains\bi\bitools\bin وشغّل ./stop.cmd ثم ./start.cmd لإعادة تشغيل bi_server1. إذا لم يحدث خطأ أثناء إعادة التشغيل، فهذا يعني أن التصحيح قد تم فتحه وأنه يستمع على المنفذ 5005 كما هو موضح أعلاه. إذا حدث خطأ، فتحقق من معلمات التصحيح أعلاه للتأكد من عدم وجود مسافات زائدة أو خطأ في جزء العنوان.

    جانب جهاز الهجوم

    الخطوة 1: قم بتحميل IntelliJ IDEA Ultimate، وقم بتنشيطه باستخدام كود موجود على GitHub.

    الخطوة 2 (قم بهذه الخطوة فقط إذا ظهر خطأ أثناء الهجوم مثل 500 Server Error, ...، والذي يكون بسبب استثناء في الحمولة)

    1. قم بتغيير إصدار jdk – sdk للمشروع ليتطابق مع إصدار جهاز الهدف (طريقة التثبيت كما في قسم جهاز الهدف - الخطوة 1)

    2. أنشئ مشروعًا فارغًا لتحليل الكود المصدري، لخدمة التصحيح عن بُعد، 3. أضف جميع ملفات jar من المجلد المستلم من جهاز الهدف إلى هذا المشروع

      Project Structure -> Modules -> اختر علامة + -> 1 JARS or Directories -> أضف مجلد jar بأكمله.

    صورة 11.1: إضافة ملفات jar

    صورة 11.2: النتيجة

    1. إعداد التصحيح عن بُعد

      Run -> Edit Configurations -> + -> Remote JVM Debug

    صورة 12.1: إعداد التصحيح عن بُعد

    شغّل التصحيح عن بُعد، إذا ظهرت رسالة في وحدة التحكم: Connected … فهذا يعني النجاح.

    صورة 12.2: تشغيل التصحيح عن بُعد

    الخطوة 3:

    • انسخ الكود من هذا المستودع إلى جهازك، واحذف ملف coherence.jar القديم في مجلد lib واستبدله بالملف الذي تلقيته من جهاز الهدف في الخطوة السابقة.

    • بعد ذلك، أضفه إلى مشروع يعمل بـ IntelliJ، وأضف ملفات jar الموجودة في lib مع اختيار Add as library

    • تحقق من اسم الفئة LambdaIdentity$.... بحيث يتطابق مع إصدار Weblogic، إذا كان هناك تغيير، فقم بإعادة تسمية الملف وتعديل اسمه.

      Weblogic 12.2.1.3: LambdaIdentity$E12ECA49F06D0401A9D406B2DCC7463A

      Weblogic 12.2.1.4: LambdaIdentity$423B02C050017B24DB10DFF759AA56BF

    • قم بتعديل المسار إلى ملف LambdaIdentity$....class في ملف Main.java. للحصول على المسار الصحيح، هناك طريقتان: يمكنك تشغيل javac على ملف jar لتوليد ملف .class؛ أو يمكنك التعليق على كود الدالة main، ثم تشغيل المشروع بشكل طبيعي، ويمكن العثور على مسار ملف class في مجلد target.

    • تحقق من أن إصدار jdk و sdk للمشروع متطابق مع إصدار جهاز الهدف.

    تحليل كود BI وكود توليد الحمولة

    تحليل كود BI

    1. في المسار $Oracle\Middleware\Oracle_Home\user_projects\domains\bi\servers\AdminServer\tmp_WL_user\em\fw8wi5\war\WEB-INF

    نجد ملف web.xml، يصف هذا الملف علاقات التعيين المتعلقة بـ servlet-mapping. "resources" هو servlet مرتبط بموارد النظام، ويحتوي على بيانات ومعلومات مهمة، لذا غالبًا ما يستهدفه المهاجمون.

    صورة 13.1: علاقة servlet-mapping

    1. بالتعمق في فئة ResourceServlet، تحديدًا org.apache.myfaces.trinidad.webapp.ResourceServlet، سنرى الدالة doGet التي تعالج طلبات GET المرسلة إلى الخادم.

    صورة 13.2: الدالة doGet

    • هنا، من خلال طريقة _getResourceLoader()، يتم إنشاء محمل جديد من الطلب الوارد. في الوقت نفسه، يتم تهيئة resourcePath يتلقى قيمة servletPath و servletInfo عبر طريقة getResourcePath مع تمرير الطلب كمعامل. يقوم هذا المحمل باستدعاء الدالة getResource(resourcePath)، محاولًا تحميل المورد من الطلب الوارد والعثور عليه عبر الدالة org.apache.myfaces.trinidad.resource.ResourceLoader.getResource.findResource()، وفي النهاية يتم تمرير القيمة التي تم العثور عليها إلى مثيل url من فئة URL.class.

    صورة 13.3: الدالة getResource

    • _getResourceLoader يحتفظ بـ ConcurrentMap لتخزين علاقة التعيين بين servletPath والمحملات. هذه العلاقة محددة بوضوح في oracle.adfinternal.view.resource.rich.RenderKitResourceLoader

    صورة 13.3: فئة RenderKitResourceLoader

    • يتم استدعاء طريقة _register في الدالة RenderKitResourceLoader() وتمرير regex + المحمل المقابل، ثم إرجاع super.register وهي الدالة الأم. تضيف هذه الدالة إلى concurrentmap_loaders قيمة الزوج pattern والمحمل المقابل. لذلك، عندما يتم تهيئة المحمل في الدالة doGet() ويتلقى معامل الطلب الوارد، يتم أخذ قيمة servletPath من عنوان URL للطلب المرسل لتمريرها إلى _loader.get() لاستخراج servlet المقابل.

    صورة 13.4: طريقة _register

    صورة 13.5: طريقة register (الطريقة الأم)

    • يعتقد مؤلف الثغرة أنه من بين الفئات التي تحتوي على طريقة override لـ findResource()، فإن oracle.adfinternal.view.resource.rich.RemoteApplicationResourceLoader هي الفئة التي تحمل خطرًا يؤدي إلى إلغاء التسلسل (deserialization). دعنا نحللها للبحث عن السبب.

    تحليل الدالة findResource() في RemoteApplicationResourceLoader.class

    صورة 13.6: الدالة findResource()

    ترجع هذه الدالة طريقة تحتوي على بروتوكول مخصص RAStreamHandler(). يقوم RAStreamHandler بإنشاء كائن URLConnection بقيمة جديدة RAURLConnection

    صورة 13.7: طريقة RAStreamHandler()

    الدالة RAURLConnection تستدعي _getPathBean

    صورة 13.8: طريقة RAURLConnection()

    تحتوي الدالة _getPathBean على كائن bean يتم إنشاؤه عن طريق استدعاء الدالة getInstanceFromString() التي تعالج السلسلة النصية المستلمة لاستخراج المفاتيح المقابلة (filter).

    صورة 13.9: الدالة _getPathBean

    سيتم تحويل سلسلة bean المدخلة عبر فئة SerializationUtils من تنسيق URL encoded إلى كائن URLEncoderPathBean. إذا كان كل شيء على ما يرام، فسيتم تمرير الإدخال التالي إلى الدالة fromURLEncodeString().

    صورة 13.10: الدالة getInstanceFromString()

    صورة 13.11: الدالة fromURLEncodedString()

    في حالة حدوث خطأ في سلسلة الإدخال، سيتم إلقاء استثناء. يأتي الاستثناء بشكل أساسي من المكتبة المستخدمة في الحمولة، إما بسبب اختلاف الإصدار أو بسبب مسار ملف Lambda الخاطئ.

    في الدالة fromURLEncodedString()، يتم إرجاع دالة fromString مع معامل url، وكودها كما يلي:

    صورة 13.12: الدالة fromString()

    في الدالة fromString، تتم قراءة البيانات عبر readObject() وإعادتها. يمكن ملاحظة أن الإدخال من البداية لا يتم تصفيته. يمر عبر العديد من الدوال ويتم في النهاية إلغاء تسلسله (deserialize) في fromString(). هذا هو sink الذي يخدم الاستغلال. بعد وجود sink، نحتاج الآن إلى إيجاد source.

    1. إيجاد source: كما تم تحليله أعلاه، للعثور على source، يجب تحديد عنوان URL للطلب الوارد. نلاحظ أنه لاستدعاء الدالة findResource()، يجب أن يكون لدينا صلاحية التوجيه إلى الفئة RemoteApplicationResourceLoader. في الفئة RenderKitResourceLoader، تم تعريف ذلك بوضوح:```bash this._register("/./remote/(.)", new RemoteApplicationResourceLoader());
    root@kitploit:~
    لذلك، لاستدعاء الفئة المذكورة أعلاه، نحتاج إلى تعبير نمطي بالشكل “/.*/remote/(.*)”. وبناءً عليه، عندما يكون المسار أو عنوان URL المدخل بالشكل /em/afr/foo/remote/payload فإنه سيتطابق مع البنية المحددة في هذا الملف، وعندها سيتم استخدام RemoteApplicationResourceLoader كـ loader في doGet، وسيستدعي ملف الفئة المقابل oracle.adfinternal.view.resource.rich.RemoteApplicationResourceLoader الدالة findResource() التي تم تجاوزها فيه. لذلك، إذا تم إرسال الحمولة إلى العنوان الصحيح، فسيتم نقل البيانات بسهولة دون مواجهة أي فلتر.
    
    هذا هو عنوان URL النهائي المستخدم للاستغلال: __hostname:port/contextApp/afr/foo/remote/payload/__
    
    حيث أن contextApp هو أحد المسارات التي تظهر عند تثبيت OBIEE حديثًا مثل /em; /bicomposer; ….
    
    Foo عبارة عن سلسلة عشوائية.
    
    Payload هي السلسلة الناتجة عن تشغيل الدالة Main للمشروع الهجومي المُعد.
    
    ### تحليل الكود المستخدم لإنشاء الـ payload
    
    يتبع هذا المشروع سلسلة الأدوات (gadget chain) لـ CVE-2020-14644
    
    ![file Lambda](https://raw.githubusercontent.com/hienkiet/CVE-2022-201145-12.2.1.3.0-Weblogic/main/image/payload2.png)
    
    الفئة LambdaIdentity$E12ECA49F06D0401A9D406B2DCC7463A الموروثة من AbstractRemotable تُستخدم للتفاعل مع النظام عن بُعد.
    
    باستخدام Java Reflection API، يمكن للمهاجم بسهولة الحصول على WorkAdapter من سلسلة التنفيذ الحالية.
    
    ثم سيحصل على الحقل connectionHandler الخاص بـ WorkAdapter ويقوم باستعلام للحصول على ServletRequest و ServletResponse من connectionHandler.
    
    بعد ذلك، يحصل على قيمة الرأس "cmd" من الطلب (ServletRequest)، ثم يتحقق إذا كانت "cmd" غير فارغة، ويقوم بتنفيذ أمر شل يتوافق مع نظام التشغيل الحالي (Windows أو Linux/Unix).
    
    يقرأ النتيجة من أمر الشل ويرسل هذه النتيجة إلى الرد (ServletResponse).
    
    إذا حدث أي خطأ أثناء التنفيذ، فسيتم طباعته على وحدة التحكم عبر طريقة printStackTrace().
    
    المعرف الموجود خلف اسم الفئة LamdaIdentity يعتمد على إصدار خادم WebLogic، وهو سلسلة مشفرة وفقًا لقيمة تجزئة MD5 للفئة com.tangosol.internal.util.invoke.ClassIdentity، ولأن هذه الفئة تختلف في كل إصدار، كما ذكرنا، لضمان عدم حدوث خطأ في الـ payload، يجب التحقق من ذلك بعناية.
    
    هنا، يتم أخذ متغير cmd من الرأس في الطلب الوارد، ثم يتم إضافته إلى الأمر Runtime.getRumtime.exec() أدناه، ويتم تشفيره وفك تشفيره بصيغة MD5 السداسية، وبعد إرساله إلى نظام OBIEE، سيعيد قيمة تم إلغاء تسلسلها (deserialized).
    
    أخيرًا، في الدالة Main، يتم إنشاء كائن RemoteConstructor، ومن خلال مكتبة SerializationUtils يتم تحويله إلى سلسلة مشفرة بعنوان URL. سيتم إرسال هذه السلسلة مباشرة إلى عنوان URL المصدر، مما يتيح للمهاجمين إدراج الأمر __cmd__ حسب الرغبة.
    
    ![Hàm Main](https://raw.githubusercontent.com/hienkiet/CVE-2022-201145-12.2.1.3.0-Weblogic/main/image/payload1.png)
    
    ## إعادة إنتاج الاستغلال
    
    ![استغلال /em](https://raw.githubusercontent.com/hienkiet/CVE-2022-201145-12.2.1.3.0-Weblogic/main/image/exploit1.png)
    
    ![استغلال /em](https://raw.githubusercontent.com/hienkiet/CVE-2022-201145-12.2.1.3.0-Weblogic/main/image/exploit2.png)
    
    ## المراجع
    
    1. https://peterjson.medium.com/miracle-one-vulnerability-to-rule-them-all-c3aed9edeea2
    
    2. https://testbnull.medium.com/oracle-access-manager-pre-auth-rce-cve-2021-35587-analysis-1302a4542316
    
    ## مؤلف الثغرة: Jang Nguyen & Duc PeterJson
    
    تنزيل الأداة