Qui è stato necessario fare un poco di mente locale e capire cosa stava avvenendo.

Ho caricato la homepage di timvision.it nel mio browser e tra le varie request che l’applicazione faceva via ajax vi era la POST del primo screen. Come response di quest’ultima ricevevo dal server di TimVision un JSON contenente vari dati, tra cui l’indirizzo @tim.it associato alla mia linea fissa, quello che TIM mi ha permesso di creare in quanto io titolare di linea fissa.

Bene, ma non benissimo. Ritornando alla POST, vi era un campo che non riuscivo a dimenticare nel URL della request, il campo ip. Come il nome suggerisce questo è un indirizzo IP, ma quale indirizzo potrebbe mai essere? Un velocissimo $ curl ipinfo.io e scopro che il mio indirizzo ip pubblico è proprio quello presente come valore del campo ip della POST (79.42.x.x), e l’isp è proprio Telecom Italia S.p.a.

Mi è quindi venuto spontaneo modificare l’indirizzo ip nel parametro e vedere cosa succedeva.

Enumerando manualmente l’indirizzo tramite il repeater di Burp Suite ho iniziato a ricevere json contenenti indirizzi email @tim.it e @alice.it di terzi, quindi di persone titolari di linea fissa TIM che possedevano l’IP x che ho enumerato assegnato al loro modem in quel momento:

Result di quattro richieste con quattro IP TIM diversi

È necessario tuttavia evidenziare che non tutti gli indirizzi ip enumerati producevano una response contenente un indirizzo email, alcuni restituivano il campo tan semplicemente vuoto o contenente <numero_linea_fissa>@alice.it; questo avviane poiché la creazione della casella alice o tim è facoltativa il più delle volte.

Sfruttando questa grave vulnerabilità vi era la possibilità di risalire all’indirizzo email @alice/@tim di un cliente a partire semplicemente dal indirizzo IP assegnatogli in quel momento, qualora esso avesse creato per la sua utenza un indirizzo email @alice/@tim.

La vicenda non è ancora finita però. Nella request incriminata vi era anche un altro campo molto interessante, AllowLogin, settato a false. E se lo volessi a true?