Paolo Perego
Paolo Perego Specialista di sicurezza applicativa e certificato OSCP. Amo spaccare e ricostruire il codice in maniera più robusta, cintura nera di taekwon-do, marito e papà. Ranger Caotico buono, scrivo su @codiceinsicuro e @the_armoredcode.

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

Il tuo .git su Internet? No, no, no!
495 parole - Lo leggerai in 2 minuti

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!

(Updated: )

Vuoi aiutarmi a portare avanti il progetto Codice Insicuro con una donazione? Fantastico, allora non ti basta che premere il pulsante qui sotto.

Supporta il progetto

comments powered by Disqus
Codice Insicuro, blog di Cyber Security, sviluppo sicuro, code review e altro.   Non perdere neanche un post, iscriviti ora alla mailing list