Hacking e test di sicurezza con DE-ICE

Il test di penetrazione è l'atto di testare una rete per le vulnerabilità della sicurezza prima di essere sfruttata da un utente malintenzionato o hacker. DE-ICE è una macchina virtuale che contiene un'installazione Linux Slax e serve per esercitarsi sia per i principianti fino ai praticanti avanzati.

Slax è un Live CD del sistema operativo GNU/Linux basato sulla distribuzione Slackware. Slax è un sistema operativo Linux portatile, non occupa molto spazio e fornisce prestazioni veloci.

Slax fornisce un repository di software preinstallato ed è ampiamente utilizzato dagli amministratori per creare piattaforme di test, distribuzioni specifiche e utili per creare strumenti di ripristino, penetration test, sicurezza e simulazioni di rete con macchine virtuali per amministratori di sistema e sviluppatori di software o esperti di sicurezza, il sistema occupa circa 190 MB. Un'interfaccia grafica può essere installata o meno, ma ciò occuperebbe molto spazio e rallenterà il sistema.

De-ICE può essere installato in VirtualBox o masterizzato su CD da utilizzare come LiveCD. Esistono diverse versioni che presentano diversi livelli di difficoltà, la versione per principianti è DE-ICE1.100 e la più complessa attualmente è DE-ICE1.140. Per questo tutorial utilizzeremo la versione DE-ICE 1.120 disponibile su https: //www.vulnhub… .e-ice-s1120,10 /.

Questa macchina virtuale è appositamente preparata per testare le nostre conoscenze e applicare qualsiasi tecnica o strumento di test di penetrazione.

Pentest di De-ICE PenTest Lab 1.120
Per le procedure di test di penetrazione installa la versione DE-ICE.1.120 e io uso Linux Mint e VirtualBox per installare DE-ICE. Può essere utilizzato da qualsiasi sistema operativo che permetta di creare una macchina virtuale.

Comincio a cercare il mio ip attuale da terminale usando il comando ifconfig e il risultato è il seguente:

 IP: 192.168.0.11

Successivamente utilizzo un software diverso a mia scelta, ma possono provarne altri per soddisfare l'utente.

A) io uso Zenmap per scansionare tutti gli host tra 1-254


Nei tutorial:
  • Strumento visivo Zenmap per i test di sicurezza delle porte
  • Come usare Nmap per scansionare le porte aperte sul tuo VPS e il framework Metasploit per testare la sicurezza del server

Abbiamo visto alcuni strumenti per la scansione delle porte e come usarli.

Apriamo Zenmap, assegno l'IP e i parametri in modo che scansioni l'intera rete e mi mostri le apparecchiature collegate e gli IP.

L'IP 192.168.0.1 corrisponde all'IP del Gateway del router con la porta 80 aperta e all'IP del router 192.168.0.10 con tutte le porte chiuse.

Guardando la topologia e le caratteristiche di ciascun host, determino che l'ip 192.168.0.38 è l'ip WiFi della macchina virtuale e l'ip 192.168.0.40 è la connessione ethernet è la macchina virtuale.

Accedo all'IP della macchina virtuale o del VPS e trovo un sito web per registrare i prodotti.

In linea di principio [color = # b22222] un grave errore [/ color] sarebbe che questo sito Web non ha alcun tipo di controllo dell'accesso utente, in questo modo avrebbe accesso a tutti gli utenti della rete, non importa quanto sia in una intranet.

Da Zenmap osservo anche le porte scansionate per questo host.

Trovo diverse porte aperte per provare attacchi di forza bruta all'accesso forzando utente e password con strumenti come Hydra o John the Ripper, tra gli altri.

Possiamo anche vedere la topologia per analizzare ogni host e con chi è connesso.

Quindi in questo modo possiamo vedere le caratteristiche dell'apparecchiatura, come è configurata la rete e quali sono gli host che possiamo attaccare.

B) Scansione delle vulnerabilità


Uso OSWAP ZAP per eseguire una scansione delle vulnerabilità. Abbiamo visto questo strumento nel tutorial:
  • Scansiona una vulnerabilità del sito web con ZAP

Ci consente di scansionare le vulnerabilità di un sito Web presentando report delle vulnerabilità rilevate.
Utilizzando filtri e regole di scansione attiva e passiva possiamo trovare le vulnerabilità del web. Ci mostra anche tutte le pagine che il web contiene, indica anche quali sono quelle che ricevono qualche tipo di parametro tramite url.

Dopo la scansione posso vedere la struttura del web con le pagine programmate in PHP e le vulnerabilità secondo i filtri applicati.

Nel caso della pagina di inserimento del prodotto vediamo che riceve i parametri tramite il metodo POST e possiamo anche vedere i campi o le variabili che riceve.

C) Iniezione codice XSS


Quindi andremo alla pagina per aggiungere un prodotto (Aggiungi prodotto) e applicare Tecniche di iniezione XSS dove inietto codice html e Javascript per vedere se è vulnerabile a questo tipo di attacco.

Come prima prova aggiungo il codice html di un'immagine esterna nella descrizione del prodotto, puoi selezionarne una qualsiasi cercando in Google.

 
Se l'immagine è vulnerabile, verrà salvata nel database e verrà visualizzata nell'elenco dei prodotti che dovremo cercare nella combo per il codice che assegniamo, il risultato è il seguente:

[color = # b22222] È vulnerabile a XSS [/ color] poiché potremmo inserire qualsiasi codice html o javascript inclusi i collegamenti.

Inseriamo un iframe nel campo descrizione e salviamo:


Quindi cerchiamo il prodotto con il codice 003 e possiamo vedere il risultato

Usando questa tecnica possiamo inserire un form con simulare un login e che i dati siano effettivamente salvati in un database esterno. Possiamo disabilitare l'elenco dei prodotti causando un reindirizzamento a un altro sito Web se in qualsiasi campo di registrazione del prodotto aggiungiamo il seguente codice html:

 
Quando qualcuno prova a vedere l'elenco dei prodotti, verrà automaticamente inoltrato al sito web indicato in questo caso Google.

D) SQL Injection Accesso al database


Sqlmap è uno strumento molto utile per testare la sicurezza dei server di database nei tutorial:
  • SQLMAP Strumento SQL Injection e hacking del database etico
  • BadStore: Web per i test pentest.

Uso sqlmap per determinare se sono disponibili database utilizzando i seguenti comandi.

 python sqlmap.py -u "http://192.168.0.40/products.php?id=1" --dbs

Possiamo vedere che il server è Apache 2.2.11, che utilizza php 5.2.9 e che il server del database è MySQL 5.0.12, vengono visualizzati anche tutti i database disponibili, inclusi quelli che sono la configurazione dei dati MySQL del server di base.

Quindi uso il comando per verificare se ci sono tabelle nel database del merch, che è quello che suppongo abbia la tabella dei prodotti che inseriamo sul web.

 python sqlmap.py -u "http://192.168.0.40/products.php?id=1" --tables -D merchandising

Abbiamo trovato la tabella utilizzata dal sito web. Di seguito posso guardare la tabella dei prodotti con il seguente comando

 python sqlmap.py -u "http://192.168.0.50/products.php?id=1" --columns -D merch -T prodotti

Sto cercando di scoprire gli utenti che hanno un account Mysql cercando di trovare un amministratore, per impostazione predefinita utilizzo il dizionario dati sqlmap situato nella cartella sqlmap-dev / txt / wordlist.zip

In questa directory troveremo diversi dizionari, sqlmap si occuperà di decomprimere e utilizzare il file, di cercare utenti e password per testare se riesco a scoprire e ottenere i nomi utente configurati sul server MySQL, per questo uso il seguente comando:

 python sqlmap.py -u "http://192.168.0.40/products.php?id=1" --users --password

Successivamente cerco il tipo di utente per vedere quali sono i privilegi di accesso di ciascun utente per determinare chi sono gli amministratori e quali sono i loro codici di accesso.

 python sqlmap.py -u "http://192.168.0.65/products.php?id=1" -f -b --current-user --is-dba --is-dba --privileges --dbs - dump

Come risultato dell'esecuzione, vengono rivelate le password di ciascun utente per accedere ai database e quali privilegi hanno.

Al termine della scansione, alla fine dell'elenco possiamo vedere i privilegi di ciascun utente e determinare quali utenti sono amministratori.

Trovo che ci siano diversi utenti amministratori, quindi prenderò l'utente jdavenport chi è un amministratore e la sua password è babyl0n, per provare ad accedere al sistema

Successivamente provo a violare la porta SSH 22 con i dati ottenuti:

Si vede che ho ottenuto l'accesso come amministratore e ho il pieno controllo del server. Usando il comando cd /, andiamo nella directory principale e da lì possiamo accedere a qualsiasi settore, come vedere le cartelle e gli account degli altri utenti

Avendo accesso tramite SSH con la combinazione di nome utente e password che abbiamo ottenuto. Il nostro prossimo obiettivo sarà l'escalation dei privilegi, anche se abbiamo già un utente root o amministratore.
Per manipolare i permessi dobbiamo consultare i file che contengono i permessi, gli utenti, i gruppi e i codici di accesso questi file si trovano nella directory /etc

  • Utente e Gruppi con le loro chiavi nella directory: /etc/passwd
  • Gruppi e permessi nella directory: / etc / sudores

Possiamo accedere al file degli utenti e delle chiavi di sistema tramite il seguente comando:

 nano / ecc / password

Possiamo passare attraverso le directory tra di loro, possiamo vedere i file sul web che stavamo analizzando e scaricarli in seguito tramite ftp o dalla console ssh, possiamo copiarli nella nostra directory locale se vogliamo modificarli o rivedere il codice per renderlo più sicuro e testarlo di nuovo.

Ora che conosciamo i dati di accesso di un amministratore possiamo accedere alla macchina virtuale.

Come evitare attacchi SQL injection
La sicurezza del web è molto importante qui a causa di un problema di SQL injection prendiamo l'intero server.

Devi controllare cosa viene inviato come parametro negli URL, ad esempio:

 http://192.168.0.40/products.php?id=1
Quando si esegue la query sql dobbiamo assicurarci che si possano inserire caratteri o parametri che non corrispondono, ad esempio:
 $ sql = SELECT * FROM utenti WHERE utente = 'jose' e password = '12345' OR '1' = '1';
La frase è molto simile a un login utente dove cerchiamo se utente e password esistono, nella tabella utenti, se c'è qualcuno registrato con un nome utente che inviamo come parametro e se la sua password e' 12345 o se 1 è il uguale a 1'.

Questa espressione determina che se la chiave non è corretta, l'espressione 1 uguale a 1 è vera e saremmo in grado di entrare nel sistema senza conoscere la password.

Un metodo è quello di sfuggire alle variabili, ad esempio in PHP:

 mysql_real_escape_string ($ _ POST ['utente']);
Se abbiamo bisogno di inviare parametri tramite url dovremmo crittografarli usando md5, sha1 o base64 e possiamo inviare vari dati crittografati in modo che il formato finale del parametro non sia direttamente correlato ai dati o ai campi nel database.

Inoltre dovrebbe esserci un sistema che eviti la scansione delle porte e connessioni multiple dallo stesso IP, in questo caso basterebbe un firewall con iptables e un rilevatore di intrusioni.

Uno strumento che possiamo usare è PortSentry o Fail2Ban È installato da un repository linux e dobbiamo solo configurare quali porte devono essere protette, se una di quelle porte viene scansionata, bloccherà automaticamente l'IP che ci sta attaccando.

Ti è piaciuto e hai aiutato questo Tutorial?Puoi premiare l'autore premendo questo pulsante per dargli un punto positivo
wave wave wave wave wave