Ci sono molti diversi attacchi informatici a cui siamo esposti, in questo tutorial parleremo del Attacco informatico Cross-Site Scripting (XSS). Questo attacco consiste nell'iniettare codice indesiderato nelle applicazioni web. Con questo, un utente malintenzionato può modificare il comportamento dell'applicazione, che può danneggiare i dati, perdere informazioni, negare il servizio (DoS), ecc.
Ad esempio, un utente malintenzionato potrebbe far reindirizzare il traffico a una pagina Web vulnerabile, con conseguenze negative sia per il proprietario della pagina che per gli utenti.
Quali conseguenze potrebbe avere?
Vario e serio, ma immagina che Facebook abbia una vulnerabilità di questo tipo, l'attaccante la sfrutta e falsificando la pagina originale crea un clone di questa pagina, emulando così Facebook. Gli utenti accedono e l'attaccante conserva le proprie credenziali, quindi li reindirizza semplicemente alla pagina ufficiale, quindi l'utente raramente lo scopre.
Dove possiamo verificare se un sito Web è vulnerabile?
Puoi farlo in molti modi, ma il più comune è nei forum o nei luoghi in cui consentono commenti in caso di attacco persistente, o negli URL in caso di attacco non persistente.
Qual è la causa di questa vulnerabilità?
Perché le pagine non verificano correttamente gli input di dati effettuati dagli utenti e anche l'output non è codificato. Quindi se hai una pagina web diffida sempre degli utenti che convalidano i loro dati, i linguaggi di programmazione portano già funzioni che consentono, ad esempio la funzione strip_tag PHP rimuove i tag HTML (ma guarda le avvertenze che ha).
Tipi di attacco XSSTipo non persistente o speculareIn questo attacco, alla vittima viene fornito un URL manipolato, che conterrà il codice da iniettare come parametro.
Tipo persistente o direttoI dati inseriti dall'utente verranno archiviati sul server, interessando tutti gli utenti che si collegano al web.
Vedremo esempi di come verrà condotto l'attacco d'ora in poi.
NotaLo scopo del tutorial è che tu possa testare le applicazioni web che crei o quelle delle persone che ti danno il permesso, non in modo da compiere atti "maligni".
1. Esempio XSS non persistente
Vogliamo reindirizzare una persona a una pagina che controlliamo, ma facendogli credere che stia visitando la pagina originale, possiamo inviargli un'e-mail con il collegamento abbreviato (o meno), che ha il seguente contenuto:
http://www.paginadeseada.com/?search=Con questo esempio è chiaro quanto sia facile sfruttare una vulnerabilità di questo tipo.
2. Esempio XSS persistente
In un commento possiamo inserire un codice HTML o JavaScript, che viene salvato sul server, e che ogni volta che viene caricata la pagina contenente il commento reindirizza alla nostra pagina web, per questo esempio può essere inserito il seguente codice HTML:
Ci rivolgiamo a un esempio diverso da quelli che abbiamo visto ora. Ora vedremo esempi utilizzando DVWA, un'applicazione web sviluppata con PHP e MySQL. Questa applicazione è già disponibile in Metasploitable 2, che puoi montare in una macchina virtuale.
Ci permetterà di testare vari attacchi web, e possiamo modificare il grado di sicurezza (per gli esempi usiamo quello basso), saremo anche in grado di vedere i codici PHP che vengono attaccati, così puoi vedere cosa no da utilizzare nei tuoi codici.
3. Esempi XSS riflesso DVWA
In questa sezione vedremo diversi esempi, cominciamo. Se mettiamo un nome normale, lo stesso Test, l'applicazione funziona bene, vediamo l'immagine:
INGRANDIRE
Se inseriamo il seguente codice come nome:
TestSi vede che il nome diventa in grassetto (forse nell'immagine non si apprezza molto bene):
INGRANDIRE
E se inseriamo un input, funzionerà? Per testarlo inseriamo il seguente codice:
E vediamo nell'immagine seguente che ha funzionato:
INGRANDIRE
Passiamo a XSS memorizzato (immagazzinato).
4. Esempi DVWA memorizzati XSS
Stiamo per eseguire diverse prove di concetto, la prima cosa che faremo è inserire un breve testo accompagnato da uno script come commento, vediamo cosa succede, lo script è il più semplice possibile, è il seguente:
Ciao e arrivederci.
INGRANDIRE
Quando lo inseriamo come nella foto precedente, clicchiamo su Sign Guestbook, il commento viene inviato, non succede nulla di strano, si vede la stringa di testo, non ci sono segni dello script, come possiamo vedere di seguito:
INGRANDIRE
Allora, non è successo niente? Bene, controlliamo, aggiorniamo la pagina e vediamo che l'avviso salta:
INGRANDIRE
Puoi anche apprezzare che il commento ha solo Hello, ecco perché lo script è stato inserito tra il testo, quindi puoi vedere che lo legge, si ferma all'avviso e quando fai clic su OK avrai il resto del testo e il resto della pagina che mancava (così come i collegamenti verdi che erano sotto la parte dei commenti).
Ora inseriremo un form nel commento, puoi vedere che il numero di caratteri che si possono inserire è limitato a 50, perché andremo a ispezionare il codice HTML della textarea del commento (tasto destro, Ispeziona):
INGRANDIRE
Vediamo lunghezza massima = "50", aggiungeremo un altro 0 alla fine, rimanendo in 500, come vediamo di seguito:
INGRANDIRE
E ora commenteremo il seguente codice HTML:
Scrivi il tuo nome:Vediamo che lo accetta già, quindi diamo a Firma il libro degli ospiti e vediamo quanto segue:
INGRANDIRE
Il modulo è stato inserito, come abbiamo verificato. Infine, se vuoi esercitarti con il livello medio in XSS memorizzato, prova quanto segue:
1°. Modifica il numero massimo di caratteri che il campo Nome accetta, proprio come abbiamo fatto prima.
2°. Aggiungi il seguente nome:
Test
3°. Come commento metti quello che vuoi.
4°. Invia il commento e aggiorna lo schermo, vedrai che è stato salvato.
Se volessi rimuovere il cookie, cambierei lo script per quanto segue:
Vedrai quanto segue:
Successivamente lascio il collegamento a un framework chiamato XSSer che ci aiuterà a rilevare, sfruttare e segnalare le vulnerabilità XSS.
Sulla sua pagina arriva così come è installato (in Kali Linux 2016 arriva già) ed esempi di utilizzo.
Abbiamo visto le possibilità che un utente malintenzionato ha quando si presenta con una pagina Web vulnerabile, evitare questi attacchi non è difficileOggi in qualsiasi linguaggio di programmazione abbiamo funzioni che ci semplificano la vita. È importante che prima di avviare una pagina web controlli questi errori, poiché possono rovinare la tua attività.
Se vuoi vedere un tutorial in cui viene utilizzata questa applicazione, ma vengono eseguiti altri tipi di attacchi: Pentesting con DVWA.
Infine, verrà fornito un collegamento, nel caso in cui si desideri vedere un altro tipo di attacco, che si occupa anche dell'iniezione di codice: SQL injection.
Ti è piaciuto e hai aiutato questo Tutorial?Puoi premiare l'autore premendo questo pulsante per dargli un punto positivo