Vai al contenuto
Home » Il tuo .git su Internet? No, no, no!

Il tuo .git su Internet? No, no, no!

E’ venerdì. Un sole pallido scalda una giornata di Novembre. Tu stai pensando a
quel codice di cui devi fare refactoring e di come limare di qualche secondo i
tempi di esecuzione delle ricerche nel backend.

Ti viene in mente che non hai ancora configurato
Capistrano. Per ora stai spostando le cose sul
server di staging a mano, certo non è il massimo ma per il rilascio di
settimana prossima hai già pianificato di usare un tool per fare deploy e
rollback in automatico.

Stai pensando a tutto questo, quando irrompe il tuo capo.

“Dobbiamo andare in produzione oggi. Il cliente ha deciso di anticipare il
lancio.”

Provi ad obbiettare che sono appena terminati gli UAT e che non hai ancora
configurato Capistrano, ma il tuo capo ha già smesso di ascoltarti. Si è girato
e si sta dirigendo velocemente nella sala riunioni dove c’è il social media
manager
del cliente che aspetta solo di vedere il sito online per iniziare
le campagne sui social media.

Ti arrendi, lanci un rsync di fretta. Il sito è online. Funziona alla
perfezione. Nei giorni seguenti vedi arrivare il crawler di Google. Vedi
popolarsi il database. Qualche bug, certo, chi non li ha. Niente di serio
tuttavia. Il cliente è contento. Il tuo capo, pensa che tu abbia fatto
solamente il tuo dovere.

Ordinaria amministrazione, pensi.

Passano i mesi. Arriva un giorno di Marzo e qualcuno entra nel database, si fa
un export che qualche ora dopo sarà su ghostbin e fa un
deface del sito, sostituendo alla homepage un’immagine politicizzata
inneggiante alla repubblica della Banana Flambé.

Il tuo capo è una furia. Il cliente ancora di più. Mentre il tuo capo cerca di
rabbonirlo e nel mentre ti urla parole di fuoco, a nulla valgono le tue parole
circa i penetration test che lui stesso ha definito un’inutile perdita di
tempo. Intanto, mentre cerchi di venirne a capo, ti domandi: ma come diamine
ha fatto?

La rivincita dei .gith

Lanciate questa query su Google inurl:.git “intitle:index.of e meravigliatevi
di quanta gente ha deciso di distribuire il codice sorgente delle proprie
applicazioni web, direttamente su Internet, a disposizione di chiunque.

Prendete un risultato a caso, diciamo http://victim.acme.com/.git. A questo
punto lanciate il comando:

$ wget -r –no-parent http://victim.acme.com/.git

Dopo un po’, dipende dalla vostra connessione e soprattutto da quanto codice
c’è nel repository, vi ritroverete nella directory corrente, una directory
nascosta .git.

Ora, eseguite il comando:

$ git reset –hard

BUM ora avete una directory victim.acme.com, contenente il codice server
side del sito web in questione. Avete a disposizione i log degli sviluppatori
per ciascun commit fatto e, ancora più interessante, avete a disposizione le
credenziali applicative per accedere al DB. Se siete fortunati, nella
documentazione o nel codice magari riuscite a trovare altri segreti.

Da qui, alla compromissione della macchina, il passo è veramente breve. E le
chiavi, le avete lasciate voi stessi in bella vista.

Enjoy it!

Tag:

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.