---->QUESTO E' IL MONDO DEGLI HACKER!<----

Benvenuti nel Forum. =D Saluti il vostro Admin Very Happy

    [scopo informativo] Come Hackerare Un Sito [scopo informativo]

    Condividere
    avatar
    Admin
    Admin
    Admin

    Messaggi : 109
    Reputazione : 0
    Data d'iscrizione : 27.03.10
    Località : A casa mia :D xD

    [scopo informativo] Come Hackerare Un Sito [scopo informativo]

    Messaggio Da Admin il Dom Mar 28, 2010 3:39 pm

    Oggi vi spiego come hackerare un sito
    in modo semplificato per evitare l'aggiunta di post del tipo: "Come faccio a distruggere un sito?"
    Sò che non è roba facile anche perchè ho imparato a fare queste cose in un modo inimmaginabile per scarsità di guide o altri fattori. Quindi oggi voglio alleggerirvi il lavoro scrivendo questa guida.

    Iniziamo:


    Come già detto da qualcuno questo tipo di vulnerabilità è chiamata SQL Injection in quanto inietta codice sql.

    Prima di tutto bisogna però capire cos'e' un linguaggio di formattazione, un linguaggio di scripting server side, un linguaggio di interrogazione database, i loro ruoli e come interagiscono tra essi.

    I linguaggi di formattazione (o markup) sono linguaggi che permettono UNICAMENTE di dare un formato a dei contenuti: colore, posizione, grandezza etc.
    Essi vengono interpretati dal nostro browser (il programma che utilizziamo per navigare in internet), ed esso elaborandoli ci mostra quelle che sono le pagine web che visualizziamo giornalmente.
    I form (o moduli che compiliamo quando facciamo una ricerca, un login etc) non sono nient'altro che il risultato dell'interpretazione del browser di codice di markup.


    I linguaggi di scripting lato server (es. php,asp etc), sono veri e propri linguaggi di programmazione, quindi permettono l'utilizzo di variabili, costrutti, iterazioni (for, while etc).
    L'unica differenza da altri linguaggi è che sono interpretati ed eseguiti ogni volta nel server, ossia di solito dove risiede il sito internet.
    In un'applicazione web il loro compito è quello di gestire i dati passati dagli utenti e di riprodurre output in base agli input degli utenti.

    I linguaggi di interrogazione(il più famoso il SQL) non sono altro che linguaggi che hanno il compito di ottenere dati dai database.
    Immaginiamo un database come una tabella:

    Codice:

    TabellaUtenti: -------------------------------------------- | Nome | Cognome | Password | -------------------------------------------- | Luca | Rossi | asdfòlkna | | Gianni | Verdi | asgahherg | --------------------------------------------

    Esempio codice sql:
    Codice:

    SELECT Nome FROM TabellaUtenti WHERE Nome='Luca' AND Password='asdfòlkna'



    -----------------------

    Come funziona quindi un'applicazione web?

    1. Il Browser effettua la richiesta di una pagina, presente sul server, contenente linguaggio di scripting server side (mettiamo php)
    2. Il WebServer riceve la richiesta della pagina e chiede all’interprete di eseguire il codice server-side presente all’interno della pagina
    3. L’interprete esegue il codice (interazione database, modifiche alla pagina etc), creando così una pagina HTML statica con dentro i dati ricavati dal database o da altre fonti
    4. La pagina viene inviata al Browser
    5. Il Browser interpreta i codici di formattazione/markup facendo così la pagina web richiesta


    Prestiamo attenzione alle parti più importanti in questo tipo di vulnerabilità:

    1. Richiesta pagina php/asp:
    Quando noi quando clicchiamo su un link, scriviamo un indirizzo sul browser oppure premiamo "Cerca" su un form di ricerca, non facciamo altro che inviare in richiesta di una pagina. In questa richiesta possiamo includere anche dei dati che potrebbero servire al linguaggio di scripting server side per elaborare la nostra richiesta (es: form di ricerca o login).
    Quando facciamo un login non facciamo altro che inviare un richiesta includendo il nostro nome utente e la nostra password.
    2. Interpretazione pagina php/asp:
    E' in questo momento che può avvenire l'interazione con il database.
    Il linguaggio di scripting può utilizzare un linguaggio di interrogazione ed i dati da noi inviati (es: username, password,valore da ricercare) per formare una query per ottenere i dati che gli servono.
    I dati così ottenuti vengono così utilizzati per creare una pagina di markup (html).




    ------------------------------

    La query di base per un login è appunto:
    Codice:

    SELECT Nome FROM TabellaUtenti WHERE Nome='' AND Password=''

    E tra gli apici vengono aggiunte dal linguaggio di scripting server side, i valori da noi passati durante la richiesta.
    Quindi se noi inseriamo come nome "mario" e come password "ciao" la query risulterà così:
    Codice:

    SELECT Nome FROM TabellaUtenti WHERE Nome='mario' AND Password='ciao'

    Se invece inseriamo in entrambi i campi:
    Codice:

    ' OR '1'='1

    osserviamo come diventerebbe la query
    Codice:

    SELECT Nome FROM TabellaUtenti WHERE Nome='' OR '1'='1' AND Password='' OR '1'='1'

    Osserviamo l'espressione booleana ora creata
    Codice:

    Nome='' OR '1'='1' AND Password='' OR '1'='1'

    Il nome non sarà mai di valore nullo, quindi il valore di Nome='' sarà FALSO per ogni riga del database.
    Idem per la password.
    Mentre come 1=1 è SEMPRE vera, quindi avremo verò per ogni riga del database.
    Ora rivediamo la query:
    Codice:

    SELECT Nome FROM TabellaUtenti WHERE FALSO OR VERO AND FALSO OR VERO

    Falso OR Vero = Vero, quindi:
    Codice:

    SELECT Nome FROM TabellaUtenti WHERE VERO AND VERO

    Vero AND Vero, come detto prima, è uguale a vero quindi:
    Codice:

    SELECT Nome FROM TabellaUtenti WHERE VERO



    Morale della favola, la query troverà corrispondenza fin dalla prima riga della tabella quindi il linguaggio di scripting server side ci farà loggare come il primo utente della tabella, che si solito è l'amministratore.

    Ovviamente è impossibile trovare ai tempi d'oggi una vulnerabilità di questo tipo su un form di login in quanto ogni programmatore ha un minimo di intelligenza per filtrati l'input degli utenti.

    Fine. Fatene buon uso
    Ciao ciao, alla prossima!By Admin Cool

      La data/ora di oggi è Lun Mar 27, 2017 9:25 pm