Skip to content
KitploitKITPLOIT
ToolsBlog
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
POC-CVE-2022-30600 — Ein Proof-of-Concept für CVE-2022-30600 | Kitploit
Tools/GitHubGitHub/boonjune/poc-cve-2022-30600
PasswortangriffeSchwachstellenanalyseExploitationWebanwendungs-ExploitationPenetrationstestsAuthentifizierung
GitHubboonjune/poc-cve-2022-30600

POC-CVE-2022-30600

Ein Proof-of-Concept für CVE-2022-30600

Repository anzeigen
311vor 3 JahrenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

Proof of Concept für CVE-2022-30600

Übersicht

Dieses Repository enthält 2 Implementierungen für einen Proof of Concept, der CVE-2022-30600 ausnutzt.

CVE-2022-30600 ist eine Sicherheitslücke, die es einem Angreifer ermöglicht, die Kontosperrschwelle in der Moodle-Webapp zu umgehen.

Wie im folgenden Eintrag in der NVD-Datenbank https://nvd.nist.gov/vuln/detail/CVE-2022-30600 beschrieben, sind die unten aufgeführten Versionen bekanntermaßen anfällig für diesen Exploit.

3.9 - 3.9.13

3.10 - 3.10.10

3.11 - 3.11.6

Angriffsdetails

Wie im Commit, der zum Patchen dieser Schwachstelle verwendet wurde, beschrieben, liegt das Problem in der Logik, die zum Zugriff auf und zum Inkrementieren des Werts login_failed_count in der Datenbank verwendet wird.

https://git.moodle.org/gw?p=moodle.git;a=commitdiff;h=59b5858da200f63ecb59a9113af2b99ef1496fe5;hp=a0f47c8bc4d6f5971025de7d63f22475701d2f86

Wenn mehr als eine gleichzeitige Anmeldeanfrage auftritt, kann die Moodle-Webapp den Anmeldewert in der Anwendung möglicherweise nicht korrekt überprüfen und aktualisieren. Dies führt dazu, dass 2 oder mehr fehlgeschlagene Anmeldeversuche nur als 1 fehlgeschlagener Anmeldeversuch gezählt werden.

Zum besseren Verständnis zeigt das folgende Diagramm eine allgemeine Aufschlüsselung einer fehlgeschlagenen Anmeldeanfrage aus der Perspektive des Clients, der Webapp und der Datenbank.

root@kitploit:~
sequenceDiagram 
    participant C as Client 
    participant W as Webapp 
    participant D as Database 
    C->>W: Login Request 
    W->>D: Requests failed_login_attempt 
    D->>W: failed_login_attempt = 0 
    W->>W: local failed_login_attempt  = 0 
    W->>W: local failed_login_attempt  = 1 
    W->>D: failed_login_attempt = 1 
    W->>C: Login Failed

Das Ergebnis ist, dass der Wert failed_login_attempt in der Datenbank korrekt ist und nachfolgende Anmeldeversuche den Wert korrekt aktualisieren.

Wenn ein Angreifer eine Reihe gleichzeitiger Anmeldeanfragen sendet, tritt das folgende Problem auf.

root@kitploit:~
sequenceDiagram 
    participant C as Client 
    participant W as Webapp 
    participant D as Database 
    C->>W: Login Request (session 1) 
    C->>W: Login Request (session 2) 
    W->>D: Requests failed_login_attempt (session 1) 
    W->>D: Requests failed_login_attempt (session 2) 
    D->>W: failed_login_attempt = 0 (session 1) 
    D->>W: failed_login_attempt = 0 (session 2) 
    W->>W: local failed_login_attempt = 0 (session 1) 
    W->>W: local failed_login_attempt = 0 (session 2) 
    W->>W: local failed_login_attempt = 1 (session 1) 
    W->>W: local failed_login_attempt = 1 (session 2) 
    W->>D: failed_login_attempt = 1 (session 1) 
    W->>D: failed_login_attempt = 1 (session 2) 
    W->>C: Login Failed (session 1) 
    W->>C: Login Failed (session 2)

Das Ergebnis dieser Interaktion ist, dass der Datenbankwert failed_login_attempt trotz zweier fehlgeschlagener Anmeldeanfragen nur um 1 erhöht wird. Dies kann auf Hunderte von Anfragen skaliert werden, wobei die Grenzen durch die Anzahl der gleichzeitigen Anfragen, die der Client stellen kann, und die Anzahl der Anfragen, die der Webserver gleichzeitig verwalten kann, gesetzt werden.

Darüber hinaus kann der Angreifer, wenn er Zugriff auf mehrere Clients (wie ein Botnetz) hat und in der Lage ist, den Zeitpunkt dieser Anfragen zu synchronisieren, die Einschränkungen durch die Verwendung eines einzelnen Clients überwinden und den Angriff schwieriger zu entschärfen machen.

Python3-Implementierung

Beschreibung

poc.py ist die Python3-Implementierung dieses Angriffs. Es verwendet Threads, um die gleichzeitigen Anfragen durchzuführen. Obwohl dieser Proof of Concept funktioniert, beeinträchtigt die in Python3 vorhandene Global Interpreter Lock den Vorteil der Verwendung mehrerer Threads unter diesen Umständen. Ich empfehle dringend die Verwendung der C++-Implementierung, da diese besser funktioniert, wenn der Angriff von einem einzelnen Client aus durchgeführt wird.

Verwendung

poc.py [-h] -u USERNAME -url TARGET -w WORDLIST -t THREADS [-a ATTEMPTS] [-d DELAY]

Optionen: -h, --help
 zeigt diese Hilfemeldung an
-u USERNAME, --username USERNAME
 Der Benutzername des angegriffenen Kontos
-url TARGET, --target TARGET
 Basis-URL der angegriffenen Moodle-Webapp
-w WORDLIST, --wordlist WORDLIST
 Der Pfad zur verwendeten Wortlistendatei
-t THREADS, --threads THREADS
 Die Anzahl der Threads, die für jeden Versuch erstellt werden
-a ATTEMPTS, --attempts ATTEMPTS
 Die Anzahl der Versuche, die Sie durchführen möchten. Der Standardwert ist 1
-d DELAY, --delay DELAY  Dies ist die Anzahl der Sekunden zwischen den einzelnen Versuchen. Der Standardwert beträgt 2

Beispiel

python3 poc.py -u admin -url https://moodle/ -w /usr/share/wordlists/rockyou.txt -t 15 -a 8

Ziel : https://moodle/
Benutzername des Kontos : admin
Wortliste : /usr/share/wordlists/rockyou.txt
Threads : In jedem Versuch werden 15 Anmeldeanfragen gestellt
Versuche : Der Angriff wird 8 Mal wiederholt

In diesem Beispiel werden insgesamt 120 (8 * 15) Anmeldeanfragen gestellt. Es wird eine Verzögerung von 2 Sekunden zwischen den einzelnen Versuchen geben.

C++-Implementierung

Beschreibung

poc.cpp ist die C++-Implementierung des Angriffs, die die Curl-Bibliothek zur Durchführung des Angriffs verwendet. Daher benötigt sie einige Compiler-Flags, damit die Anwendung kompiliert werden kann. Insgesamt funktioniert diese Implementierung besser als die Python3-Version, da Threads alle Kerne des Client-Geräts nutzen können, was in kürzerer Zeit mehr gleichzeitige Verbindungen ermöglicht. Dies bedeutet, dass der Exploit konsistenter funktioniert.

Compiler-Flags

g++ poc.cpp -o poc -lcurl

Verwendung

Verwendung: poc [OPTION...]
-a, --attempts

 Die Anzahl der Male, die der Angriff durchgeführt wird.
-t, --threads

 Die Anzahl der Threads, die in jedem Versuch verwendet werden.
-n, --username
 Der Benutzer des Kontos, das Sie angreifen
-u, --URL
 Basis-URL der Moodle-Webapp
-d, --delay
 Die Zeitverzögerung zwischen den Versuchen. Standardwert ist 5
-v, --version
 Zeigt die Version an
-h, --help
 Zeigt die Hilfemeldung an
-w, --wordlist arg
 Wortliste der Passwörter.

Beispiel

./poc -w /usr/share/wordlists/rockyou.txt -u https://moodle/ -n admin -a 3 -t 5 -d 2

Wortliste : /usr/share/wordlists/rockyou.txt
URL : https://moodle/
Benutzername des Kontos : admin
Versuche : 3 Versuche werden durchgeführt
Threads : In jedem Versuch werden 5 Threads verwendet
Verzögerung : Es wird eine Verzögerung von 2 Sekunden zwischen den einzelnen Versuchen geben

Testumgebung

Um diese Skripte zu entwickeln, zu testen und zu debuggen, habe ich eine virtuelle Maschine erstellt. Diese virtuelle Maschine verwendete die folgende Software und Versionen.

Moodle 3.9.0 PHP 7.2.34 MySQL 8.0.30 Ubuntu 5.15.0-41-generic Apache 2.4.52

Hinweis

Ich befürworte nicht die Verwendung meines Quellcodes für illegale Aktivitäten.

Tool herunterladen