venerdì 5 gennaio 2007

Giocando con strumenti di sicurezza Javascript

Un amico mi ha indirizzato su uno di quei siti che offrono un percorso a livelli in cui si devono trovare password o aggirare protezioni di crescente difficoltà. La maggior parte di queste sono in javascript.
Al momento non sono in vena di dissertare sulla delega a questo linguaggio di scripting delle funzioni di validazione di input o di autenticazione in generale. Non andrò oltre un "non fatelo!" : aggirare javascript è davvero banale, soprattutto con i tool vari per gli sviluppatori in ambito web (per esempio due plugin di firefox: web developer per editare i form (e molto altro), firebug per js debugger e console).. ma di questo parlerò un'altra volta, direi..

oggi sono finito su una paginetta in cui un form fatto a forma di tastierino numerico vi permette di inserire delle cifre, al soddisfacimento di alcune condizioni si verrà reindirizzati sulla pagina .html. Ovviamente i più l33t tra voi ne avranno viste a centinaia, ma visto che il mio amico non sapeva come affrontarlo, spiego il procedimento che ho seguito

La "sicurezza" in un sistema del genere è che ci vogliono molti tentativi per passarlo. ovviamente leggendo il codice javascript si riesce a risolvere qualcosa, del tipo:
il codice deve essere lungo 5 cifre ed il suo prodotto è 3780.

primo passo:
il tastierino numerico va da 1 a 9, per cui cerchiamo i fattori:
riporto 3780 ai numeri primi.. per cui ho 2 2 3 5 7 9. ho una cifra in più.. poco male, gli unici prodotti che stanno ancora in una cifra sono 2*2 e 2*3. per cui le due combinazioni su cui lavorare sono

25679
34579

per calcolare tutte le condizioni ho fatto uno script shell stupido formato da 5 cicli for innestati. Ma questo è ovviamente uno spreco perchè è inutile provare la combinazione 22222 ..
per ovviare a questo ogni ciclo for controlla ad ogni tche l'indice corrente sia diverso dagli indici dei cicli esterni e lancia, nel caso sia verificata la condizione, l'eventuale ciclo interno.

per ora nel ciclo interno (al verificarsi della condizione descritta sopra) c'è ancora un echo per verificare visivamente che le condizioni siano rispettate.
ora arriviamo al dunque: devo verificare la presenza della pagina web. per questo mi servo di curl (ma si potrebbe benissimo usare wget o lynx); indicando con $code la combinazione corrente ho:
curl /$code.html -I 2> /dev/null | egrep '^HTTP.*200' && echo $code

così ho direttamente in output il codice giusto.. ora posso aprire il mio browser preferito ed andare all'indirizzo indicato dal codice.. e passare al livello successivo

Progetti per il nuovo anno

Con il 2007, in ambito web, punto a due progetti:
  • ArabianFenix , un progetto nato da molto tempo, ma che abbiamo lanciato da "poco". Non ha raggiunto ancora la forma e la sostanza che vorrei, ma quest'anno potrebbe essere l'anno decisivo
  • mawk , un nuovo sito che, nelle intenzioni, dovrebbe occuparsi di hacking ed hacktivism, ma potenzialmente potrebbe essere qualsiasi cosa, per cui non dico altro.. dipende da cosa gira nella testa dei due personaggi principali .. maio ed einyx ..
Ovviamente spero che l'università ed il lavoro mi permettano di portare avanti al meglio questi progetti.. in entrambi i casi c'è molto da imparare.
Come primo obiettivo da approfondire (facendone un lavoro simile al documento sull'hacking delle reti wireless pubblicato su AF) c'è il protocollo VNC .. ho installato realVNC in locale e voglio esplorarne il funzionamento e la sicurezza (e magari scrivere un tool di brute force o a dizionario..)

giovedì 4 gennaio 2007

-- Apertura --

Non so perchè ho aperto questo blog.. però è fottutamente comodo aprire in 30 secondi netti un nuovo blog grazie ad un account gmail.
Forse è solo questo il motivo.
Ho forse ho solo voglia di esprimere opinioni ancora più personali di quello che faccio per ArabianFenix
Tra l'altro con un nick secondario dovrei avere ancora un blog su splinder .. aperto alla fine del 2003 .. niente male, eh?