Domnul.Do Posted April 7, 2013 Report Posted April 7, 2013 (edited) In mare parte acesta metoda este mai mult un design bug care are un potential foarte mare . Se baseaza mai mult pe un "delay" comparativ si se foloseste in cryptologie sau in aplicati offline/online:-Cu un delay in logica executie a unei anumite functi intr-o aplicatie se poate identifica functia respectiva.Dar am gasit o alta intrebuinta pentru testarea api-urilor de tip web care se bazeaza pe un echo din server side.Avem urmatorul caz fictiv:Parametri:===============================var api = 'domeniu-fictiv.biz/api/echo.php?nume=Popescu'var Draspuns = 'orasul=fictiva&strada=fictiva&nr=fictiva&bloc=fictiva&scara=fictiva&judet=fictiva'var Nraspuns = 'Nume incorect'var logat = 'domeniu-fictiv.biz/account.php'var nelogat = 'domeniu-fictiv.biz/main.php'Perspectiva user-ului:===============================Domnul Popescu isi viziteaza site-ul de matrimoniale ,apeland din broswer bookmark-ul cu adresa 'logat' .-Daca nu este autentificat , site-ul il redirectioneaza catre 'nelogat' pentru a se autentifica (timpul redirectionari este de 4 sec ) dupa care mai face un redirect spre 'logat' .-Daca este autentificat (onload-ul pagina este de 1 sec ) , nu face nici un redirect in plus.Odata autentificat site-ul apeleaza 'api' pentru sustragerea informatilor 'Draspuns':-Daca are numele Popescu , va afisa 'Draspuns' (timpul echo-ului 10 sec)-Daca nu are numele Popescu , va afisa 'Nraspuns' (timpul echo-ului 5 sec)Perspectiva atacatorului:===============================Verificarea user-ului daca este autentificat se face :1) efectuand un request prin user , catre 'logat' verificand daca face un redirect spre 'nelogat'Prin redirectionare se poate verifica daca este logat prin "load time"-ul redirectionari . Daca "load time"-ul este de 4 sec atunci nu este autentificat. Daca este de 1 sec. atunci este autentificat.2) al 2-lea request va fi catre 'api' dar cu parametru: "nume=Smith'La acest request echo-ul de la 'api' va fi 'Nraspuns' si "load time"-ul procesari de catre server este de 5 secunde. Aceasta variatie se poate masura din nou prin "load time" procesari echo-ului.Atacatorul continua cu un "dictionary attack" sa ghiceasca numele .Concluzie:===============================Orice discrepante in logica executiei a unui api poate sa fie masurata daca variatia este mare sau constanta.Aflarea "Load Time"-ul este una mai delicata,metoda mea este pornirea unui javascript timer la incarcarea pagini (prima valoare T0) , requestul sa il introduc intr-un < img scr > si cu onerror pentru oprirea timer-ul (a 2-a valoare T1).T1 - T0 = "load-time"-ulAcesta este un caz fictiv harmless , mai mult este incadrat pe "Information Disclosure" dar se poate face mult mai multe . Aceasta metoda nu are un standart , este egala cu clickjacking sau XSSI . Depinde de api-ul respectiv si de parametri pentru stabilirea rezultatului final.Note:Aceasta metoda depinde foarte mult de:- browser , deoarece nu este cross browser - extentile instalate in browser , poate sa influente mult "load time"-ul- arhitectura os-ul (cpu/gpu)Sfaturi:-Pentru prima valoarea,eu am ajuns la concluzia ca este o metoda buna de a face multe refresh-uri pentru cache-uirea pagini . -Evitarea a multor iframe-uri .-Pornirea timer-ului trebuie sa fie simultan cu incarcarea pagini. Edited April 7, 2013 by Domnul.Do 2 Quote