
ATTENZIONE: questa è un'applicazione vulnerabile per testare l'exploit per il controllo degli accessi non corretto di Jetpack < 13.9.1 (CVE-2024-9926). Eseguila a tuo rischio!
Questa è un'applicazione vulnerabile per testare l'exploit per il controllo di accesso non corretto (broken access control) di Jetpack < 13.9.1 (CVE-2024-9926).
Questa applicazione contiene serie vulnerabilità di sicurezza. Eseguila a tuo rischio! È consigliato utilizzare un ambiente con backup e isolato (come una VM con snapshot recente e networking host-only). Non caricare questa applicazione su server esposti a Internet, poiché verranno compromessi.
DISCLAIMER: non mi assumo alcuna responsabilità per l'uso che chiunque faccia di questa applicazione. L'unico scopo di questa applicazione è essere uno scenario di test per l'exploit del controllo di accesso non corretto (broken access control) di Jetpack < 13.9.1 (CVE-2024-9926) e non deve essere usata in modo dannoso. Se il tuo server viene compromesso tramite un'installazione di questa applicazione, non è colpa mia, ma delle persone che l'hanno caricata e installata.
Ecco i passaggi per configurare l'ambiente:
./up.sh per avviare la composizione.Il contenitore si chiamerà vuln-wp-jetpack.
Per smontare l'ambiente usa il comando ./down.sh oppure il comando ./down_and_delete.sh per rimuovere anche le immagini e il volume del database.
Osservando la correzione, è facile capire che l'unico controllo effettuato, sia dal metodo get_items_permissions_check() che dal metodo get_item_permissions_check(), è l'appartenenza dell'utente al blog.
Entrambi i metodi sono dichiarati nella classe Contact_Form_Endpoint del file automattic/jetpack-forms/src/contact-form/class-contact-form-endpoint.php. Come dice il commento all'inizio della classe, questa classe è...
Usata come parametro
rest_controller_classquando il tipo di postfeedbackviene registrato in\Automattic\Jetpack\Forms\ContactForm\Contact_Form
Questo si può vedere nel file automattic/jetpack-forms/src/contact-form/class-contact-form-plugin.php alla riga 201, dove viene registrato il tipo di post personalizzato feedback.
I tipi disponibili possono essere recuperati tramite le API REST con una richiesta come la seguente.
GET /?rest_route=/wp/v2/types
La risposta contiene il tipo feedback.
Per sfruttare la vulnerabilità, è sufficiente una richiesta come la seguente.
GET /?rest_route=/wp/v2/feedback
La richiesta deve contenere un header di autorizzazione con una Application Password come la seguente.
Authorization: Basic eW91cl91c2VybmFtZTp5b3VyX2FwcGxpY2F0aW9uX3Bhc3N3b3Jk
Uno script di exploit in Python può essere trovato qui.
Questo progetto è concesso in licenza sotto Unlicense - consulta il file LICENSE per i dettagli.