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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
shiro-cve-2022-32532 — تطبيق ويب جافا بسيط لإعادة إنتاج CVE-2022-32532، وهو تجاوز للمصادقة في Apache Shiro RegExPatternMatcher عبر أحرف السطر الجديد في عناوين URL. | Kitploit
أدوات/GitHubGitHub/my0113/shiro-cve-2022-32532
المصادقة والترخيصتحليل الثغرات الأمنيةالاستغلالاستغلال تطبيقات الويباختبار الاختراقالتعلم والتعليم
GitHubmy0113/shiro-cve-2022-32532

shiro-cve-2022-32532

تطبيق ويب جافا بسيط لإعادة إنتاج CVE-2022-32532، وهو تجاوز للمصادقة في Apache Shiro RegExPatternMatcher عبر أحرف السطر الجديد في عناوين URL.

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

الأكثر شعبية

عرض الكل →

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

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

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

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

بيئة إعادة إنتاج Apache Shiro CVE-2022-32532

هذا تطبيق ويب مصغر لإعادة إنتاج CVE-2022-32532 (تجاوز المصادقة عبر RegExPatternMatcher في Apache Shiro).

شرح الثغرة

  • CVE: CVE-2022-32532
  • الإصدارات المتأثرة: Shiro < 1.9.1
  • السبب: لم يقم RegExPatternMatcher بتثبيت التعبير العادي بشكل صحيح، مما قد يؤدي إلى تجاوز المسار. تحديدًا، عند استخدام منطق المطابقة العادية الافتراضي لجافا، فإن الرمز . في التعبير العادي يتجاهل الرموز الخاصة مثل \r (%0d) و \n (%0a). يجب استخدام منطق المطابقة العادية القائم على وضع PATTERN.DOTALL صراحةً للتعامل بشكل صحيح مع الرموز \r و \n. والإصدارات الأقل من shiro-1.9.1 تستخدم منطق المطابقة العادية الافتراضي، لذا لا يمكنها التعامل مع \r و \n بشكل صحيح مما يؤدي إلى تجاوز المصادقة.

كيفية إعادة الإنتاج

  1. تشغيل التطبيق

    root@kitploit:~
    启动ShiroCve202232532Application
    
    
  2. رابط URL الذي يعيد الوصول المرفوض (access denied) عبر shiro العادي هو التالي:
    http://localhost:8080/permit/xxx، ويمكن استبدال xxx الأخير بأي حرف.

  3. رابط URL الذي يعيد النجاح (success) عبر تجاوز shiro هو التالي:
    http://localhost:8080/permit/xxx، أي بإدراج حرف السطر الجديد \n (%0a) وحرف الإرجاع \r (%0d) في xxx الأخير.

  4. طريقة الحل

    1. انسخ المحتوى الكامل لـ RegExPatternMatcher.java و PatternMatcher.java من الرابط: https://github.com/apache/shiro/blob/shiro-root-1.9.1/core/src/main/java/org/apache/shiro/util/
    2. قم بتجميع ملفي الجافا هذين باستخدام JDK 11 إلى RegExPatternMatcher.class و PatternMatcher.class.
    3. استخدم WinRAR لوضع هذين الملفين class داخل org/apache/shiro/util/ في ملف shiro-core-1.6.0.jar.
    4. بالنسبة لاختبار الإصلاح، تم نسخ كود RegExPatternMatcher.java من shiro-core-1.9.1 إلى هذه الحالة وأعيدت تسميته إلى ، ثم تم تغيير في السطر 15 من MyFilter والسطر 29 من MyShiroFilterFactoryBean إلى ، وهذا يكفي.
root@kitploit:~
/*
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you 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.
 */
package org.apache.shiro.util;

import java.util.regex.Pattern;
import java.util.regex.Matcher;

/**
 * {@code PatternMatcher} implementation that uses standard {@link java.util.regex} objects.
 *
 * @see Pattern
 * @since 1.0
 */
public class RegExPatternMatcher implements PatternMatcher {

   private static final int DEFAULT = Pattern.DOTALL;

   private static final int CASE_INSENSITIVE = DEFAULT | Pattern.CASE_INSENSITIVE;

   private boolean caseInsensitive = false;

   /**
    * Simple implementation that merely uses the default pattern comparison logic provided by the
    * JDK.
    * <p/>This implementation essentially executes the following:
    * <pre>
    * Pattern p = Pattern.compile(pattern, Pattern.DOTALL);
    * Matcher m = p.matcher(source);
    * return m.matches();</pre>
    * @param pattern the pattern to match against
    * @param source  the source to match
    * @return {@code true} if the source matches the required pattern, {@code false} otherwise.
    */
   public boolean matches(String pattern, String source) {
      if (pattern == null) {
         throw new IllegalArgumentException("pattern argument cannot be null.");
      }
      Pattern p = Pattern.compile(pattern, caseInsensitive ? CASE_INSENSITIVE : DEFAULT);
      Matcher m = p.matcher(source);
      return m.matches();
   }

   /**
    * Returns true if regex match should be case-insensitive.
    * @return true if regex match should be case-insensitive.
    */
   public boolean isCaseInsensitive() {
      return caseInsensitive;
   }

   /**
    * Adds the Pattern.CASE_INSENSITIVE flag when compiling patterns.
    * @param caseInsensitive true if patterns should match case-insensitive.
    */
   public void setCaseInsensitive(boolean caseInsensitive) {
      this.caseInsensitive = caseInsensitive;
   }
}
تنزيل الأداة
RegExPatternMatcher191.java
new RegExPatternMatcher()
new RegExPatternMatcher191()
  • منطق تنفيذ RegExPatternMatcher في shiro-core-1.9.1 هو كما يلي: