Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
POC-CVE-2022-30600 — Una prova di concetto per CVE-2022-30600 | Kitploit
Strumenti/GitHubGitHub/boonjune/poc-cve-2022-30600
Attacchi alle PasswordAnalisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebPenetration TestingAutenticazione
GitHubboonjune/poc-cve-2022-30600

POC-CVE-2022-30600

Una prova di concetto per CVE-2022-30600

Vedi Repository
3113 anni faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

Proof of concept per CVE-2022-30600

Panoramica

Questo repository contiene 2 implementazioni per un proof of concept che sfrutta CVE-2022-30600.

CVE-2022-30600 è una vulnerabilità di sicurezza che consente a un attaccante di bypassare la soglia di blocco dell'account all'interno del webapp moodle.

Come indicato dalla seguente voce nel database NVD https://nvd.nist.gov/vuln/detail/CVE-2022-30600, le versioni seguenti sono note per essere vulnerabili a questo exploit.

3.9 - 3.9.13 3.10 - 3.10.10 3.11 - 3.11.6

Dettagli dell'attacco

Come descritto nel commit utilizzato per correggere questa vulnerabilità, il problema risiede nella logica utilizzata per accedere e incrementare il valore login_failed_count nel database.

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

Se si verifica più di 1 richiesta di login concorrente, il webapp moodle potrebbe non riuscire a controllare e aggiornare correttamente il valore di login all'interno dell'applicazione. Ciò comporta che 2 o più fallimenti di login vengano conteggiati come un solo fallimento.

Per comprendere meglio, il diagramma seguente è una suddivisione ad alto livello di una richiesta di login fallita dal punto di vista del client, del webapp e del database.

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

Il risultato è che il valore failed_login_attempt nel database è corretto e i successivi tentativi di login aggiorneranno correttamente il valore.

Se un attaccante invia un numero di richieste di login concorrenti, si verifica il seguente problema.

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)

Il risultato di questa interazione è che il valore failed_login_attempt nel database viene incrementato solo di 1 nonostante siano avvenute 2 richieste di login fallite. Questo può essere scalato fino a centinaia di richieste, con i limiti rappresentati da quante richieste concorrenti il client può effettuare e dal numero di richieste che il server web può gestire contemporaneamente.

Inoltre, se un attaccante ha accesso a più client (ad esempio un botnet) ed è in grado di sincronizzare il momento in cui queste richieste vengono effettuate, può superare i limiti dell'utilizzo di un singolo client e rendere l'attacco più difficile da mitigare.

Implementazione Python3

Descrizione

poc.py è l'implementazione python3 di questo attacco. Utilizza i thread per effettuare le richieste concorrenti. Sebbene questo proof of concept funzioni, il global interpreter lock presente in python3 ostacola il vantaggio dell'uso di più thread in queste circostanze. Raccomando vivamente di utilizzare l'implementazione C++ in quanto funziona meglio quando l'attacco viene eseguito da un singolo client.

Utilizzo

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

options: -h, --help
 mostra questo messaggio di aiuto
-u USERNAME, --username USERNAME
 Il nome utente dell'account preso di mira
-url TARGET, --target TARGET
 URL di base del webapp moodle preso di mira
-w WORDLIST, --wordlist WORDLIST
 Il percorso del file wordlist utilizzato
-t THREADS, --threads THREADS
 Il numero di thread creati per ogni tentativo
-a ATTEMPTS, --attempts ATTEMPTS
 Il numero di tentativi che si desidera effettuare. Il valore predefinito è 1
-d DELAY, --delay DELAY  La quantità di secondi tra ogni tentativo. Il valore predefinito è 2

Esempio

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

targeting : https://moodle/
account username : admin
wordlist : /usr/share/wordlists/rockyou.txt
threads : 15 login requests saranno effettuate in ogni tentativo
attempts : l'attacco si ripeterà 8 volte per un totale.

In questo esempio verranno effettuate un totale di 120 (8 * 15) richieste di login. Ci sarà un ritardo di 2 secondi tra ogni tentativo.

Implementazione C++

Descrizione

poc.cpp è l'implementazione C++ dell'attacco che utilizza la libreria curl per eseguire l'attacco. Pertanto, necessita di alcune flag del compilatore per poter compilare l'applicazione. In generale, questa implementazione funziona meglio della versione python3 poiché i thread sono in grado di utilizzare tutti i core del dispositivo client, consentendo più connessioni concorrenti in un tempo più breve. Ciò significa che l'exploit può funzionare in modo più consistente.

Flag del compilatore

g++ poc.cpp -o poc -lcurl

Utilizzo

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

 Il numero di volte in cui viene eseguito l'attacco.
-t, --threads

 Il numero di thread da utilizzare in ogni tentativo.
-n, --username
 L'utente dell'account che stai prendendo di mira
-u, --URL
 URL di base del webapp moodle
-d, --delay
 Il ritardo temporale tra i tentativi. Il valore predefinito è 5
-v, --version
 Mostra la versione
-h, --help
 Mostra il messaggio di aiuto
-w, --wordlist arg
 Wordlist delle password.

Esempio

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

wordlist : /usr/share/wordlists/rockyou.txt
URL : https://moodle/
account username : admin
attempts : 3 tentativi verranno effettuati
threads : 5 thread verranno utilizzati in ogni tentativo
delay : ci sarà un ritardo di 2 secondi tra ogni tentativo

Ambiente di test

Per sviluppare, testare e debuggare questi script ho creato una macchina virtuale. Questa macchina virtuale utilizzava il seguente software e versioni.

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

Avviso

Non approvo l'uso del mio codice sorgente in attività illegali.

Scarica lo strumento