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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
CVE-2022-22965 | Kitploit
أدوات/GitHubGitHub/helsecert/cve-2022-22965
التحليل الثابتماسحات الثغرات الأمنيةتحليل الثغرات الأمنيةتحليل الكودأمن الويبالتعلم والتعليمموارد منسقة
GitHubhelsecert/cve-2022-22965

CVE-2022-22965

عرض المستودع
1منذ 4 سنواتلم تتم المراجعة بعد

الأكثر شعبية

عرض الكل →

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

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

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

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

ثغرات إطار عمل Spring - CVE-2022-22965

قائمة البرمجيات المعرّضة / غير المعرّضة للثغرة

https://github.com/NCSC-NL/spring4shell/blob/main/software/README.md

العثور على الكود المعرّض للثغرة

شروط التعرّض لثغرة CVE-2022-22965:

1) استخدام إطار عمل Spring Framework

انظر إلى سكربتات PowerShell و bash أدناه.

2) يجب أن تكون إصدارات Spring Framework معرّضة للثغرة، وينطبق هذا أساسًا على جميع الإصدارات الأقدم من 5.3.18 و 5.2.20.

نشر Hilko Bengen ماسحًا يبحث عن إصدارات معرّضة للثغرة من CachedIntrospectionResults.class استنادًا إلى الإصدارات هنا: https://github.com/hillu/local-spring-vuln-scanner

3) استخدام JDK 9 أو أحدث، وأن يكون JRE 9 أو أحدث قيد التشغيل.

يمكن معرفة ذلك عن طريق تشغيل:

root@kitploit:~
java -version

على الأنظمة المعنية.

لاحظ أن تطبيقات Java يمكن تشغيلها بطرق مختلفة عديدة، وقد يكون لديك عدة إصدارات مختلفة مثبتة في نفس الوقت. للتأكد من إصدار Java قيد التشغيل، يمكنك أولاً تحديد المسار الذي يُشغَّل منه ملف Java الثنائي، ثم الاطلاع على إصدار ملف Java الثنائي المعني.

في Linux يمكن فعل ذلك بتشغيل:

root@kitploit:~
ps aux | grep java

حيث يمكنك مثلًا العثور على /usr/lib/jvm/java-11-openjdk-amd64/bin/java، ومن ثم يمكنك تشغيل الأمر التالي باستخدام المسار المطلق للملف:

root@kitploit:~
$ /usr/lib/jvm/java-11-openjdk-amd64/bin/java -version
openjdk version "11.0.14.1" 2022-02-08
OpenJDK Runtime Environment (build 11.0.14.1+1-Ubuntu-0ubuntu1.18.04)
OpenJDK 64-Bit Server VM (build 11.0.14.1+1-Ubuntu-0ubuntu1.18.04, mixed mode, sharing)

بالمثل في Windows، يمكنك العثور على المسار المطلق لعمليات java قيد التشغيل إما باستخدام WMI أو PowerShell:

root@kitploit:~
WMI: C:\> wmic process where "name='java.exe'" get ExecutablePath
PowerShell: PS C:\> Get-Process java | Select-Object Path

4) يجب أن يستخدم الكود الذي يعتمد على Spring Framework أيضًا طرقًا معينة بمعاملات معينة حتى يتمكن المهاجم من استغلال الثغرة.

نشرت JFrog كود Python يحدد استخدام ذلك، ويمكن استخدامه مباشرة على برامج Java المترجمة بحيث لا تحتاج إلى فك ضغط ملفات .jar/.war: https://github.com/jfrog/jfrog-spring-tools

فيما يتعلق بتحديد وجود Spring Framework على النظام، يعتمد ذلك على نظام التشغيل المستخدم:

Windows

سكربتات PowerShell التالية للعثور على التطبيقات التي يُحتمل أن تكون معرّضة للثغرة، أي التطبيقات التي تستخدم إطار عمل Spring Framework أو مبنية عليه. لاحظ أن هذه السكربتات لن تفرّق بين الإصدارات المحدَّثة وغير المحدَّثة، لكنها ستحدد الأنظمة التي يُرجَّح أن تحتوي على الثغرة حاليًا، وفقًا للنقطة 1 أعلاه.

ابحث عن spring-beans*.jar و cachedintrospectionresults.class داخل ملفات *.war-ملفات` على النظام:

root@kitploit:~
$SearchName = "*.war"
$Drives = Get-WmiObject Win32_LogicalDisk -Filter 'DriveType=3' | Select -ExpandProperty DeviceID
#$Drives = Get-CimInstance Win32_LogicalDisk -Filter 'DriveType=3' | Select-Object -ExpandProperty DeviceID 
#powershell version 6

$Vulnerable = $false
$entries = @()
$hits = @()
$search1 = "spring-beans*.jar"
$search2 = "cachedintrospectionresults.class"
Foreach ($drive in $drives) {
    $SearchDir = "$drive\"
    $wars= (&cmd /c pushd $searchDir `& robocopy /l "$searchDir" null "$searchName" /ns /njh /njs /np /nc /ndl /xjd /mt /s)  -replace '^\s+|\s+$'
        
    Foreach ($war in $wars){
        If($war) {
            #$war
            Add-Type -AssemblyName System.IO.Compression
            Add-Type -AssemblyName System.IO.Compression.FileSystem
            $entries = ([System.IO.Compression.ZipArchive](https://github.com/helsecert/cve-2022-22965/blob/HEAD/%5BSystem.IO.Compression.ZipFile%5D::OpenRead($war))).Entries
            foreach ($entry in $entries){
                if ($entry.Name -like $search1) {
                    "$($war)\$($entry.FullName)"
                    $hits = $hits +1
                    }
                if ($entry.Name -like $search2) {
                    "$($war)\$($entry.FullName)"
                    $hits = $hits +1
                    }
                }
            
        }
    
    }
    
}
If ($hits){ "Vulnerable" }
Else { "Compliant" }

علاوة على ذلك، من المفيد البحث عن cachedintrospectionresults.class في جميع ملفات .jar، ونحن نعلم أن spring-beans*.jar ليس دائمًا هو الذي يحتوي على هذه الفئة.

root@kitploit:~
$SearchName = "*.jar"
$Drives = Get-WmiObject Win32_LogicalDisk -Filter 'DriveType=3' | Select -ExpandProperty DeviceID
#$Drives = Get-CimInstance Win32_LogicalDisk -Filter 'DriveType=3' | Select-Object -ExpandProperty DeviceID 
#powershell version 6

$Vulnerable = $false
$entries = @()
$hits = @()
$search1 = "cachedintrospectionresults.class"
Foreach ($drive in $drives) {
    $SearchDir = "$drive\"
    $wars= (&cmd /c pushd $searchDir `& robocopy /l "$searchDir" null "$searchName" /ns /njh /njs /np /nc /ndl /xjd /mt /s)  -replace '^\s+|\s+$'
        
    Foreach ($war in $wars){
        If($war) {
            #$war
            Add-Type -AssemblyName System.IO.Compression
            Add-Type -AssemblyName System.IO.Compression.FileSystem
            $entries = ([System.IO.Compression.ZipArchive](https://github.com/helsecert/cve-2022-22965/blob/HEAD/%5BSystem.IO.Compression.ZipFile%5D::OpenRead($war))).Entries
            foreach ($entry in $entries){
                if ($entry.Name -like $search1) {
                    "$($war)\$($entry.FullName)"
                    $hits = $hits +1
                    }
                }
            
        }
    
    }
    
}
If ($hits){ "Vulnerable" }
Else { "Compliant" }

Linux

للبحث في Linux، يمكنك البحث عن الفئة cachedintrospectionresults.class في جميع ملفات .jar و .war على القرص، وكذلك البحث عن spring-beans*.jar في ملفات *.war:

root@kitploit:~
find / -name '*.jar' -exec grep -Fi 'cachedintrospectionresults.class' {} \;
find / -name '*.war' -exec grep -Ei 'cachedintrospectionresults\.class|spring-beans.*\.jar' {} \;

وكذلك البحث عن اسم الفئة نفسه في ملفات .jar الموجودة داخل ملفات .war:

root@kitploit:~
#!/bin/bash

find / -name '*.war' -print0 2>/dev/null -print0 | while read -d $'\0' spring; do
        echo -en "${spring}: "$(unzip -p "${spring}" '*.jar' | strings | grep -Fi 'cachedintrospectionresults.class' | awk '{ print $NF }')"\n"
done
exit 0

الموارد

https://spring.io/blog/2022/03/31/spring-framework-rce-early-announcement

https://www.praetorian.com/blog/spring-core-jdk9-rce/

https://bugalert.org/content/notices/2022-03-30-spring.html

https://www.rapid7.com/blog/post/2022/03/30/spring4shell-zero-day-vulnerability-in-spring-framework/

https://www.lunasec.io/docs/blog/spring-rce-vulnerabilities/

تنزيل الأداة