挖坟贴,很多人都说不清楚原理,正好分享一发~
这个就是传说中的,访问网页即可获取你手机号,多用来网站营销等。例如搜索xxx病后,点击进入推广广告,进入网页后,后台即可获取到你手机号。不一会,推广广告和骚扰电话就打进来了。
上网刷高铁相关信息,网页右下角竟然弹出了一个绿色的小球,点进去,是联通上网助手,提醒还有多少流量。我是联通无限流量,能缺这点钱嘛,于是分析一波。网页类似于这个
1.png
这玩意的原理是,http的请求时明文的,也就是请求可以随便被运营商xxoo,流量经过联通的网关后,联通判断为http明文流量,强行在响应中插入自己的内容。如下:
<script charset="UTF-8" src="http://*.*.28.96:8080/get?time=1527064790657&tlbsip=http://*.*.28.96:8080/&website=m.8684.cn&charset=utf-8"></script>
因为我们上网需要经过联通网关进行认证与计费,所以访问相应的联通接口后,联通的接口通过我们手机上网的网关的认证去获取我们的手机号,并在接口中响应。大致原理就是这样,关于如何防御:
使用Wi-Fi
使用vpn
在vpn上,reject 请求联通接口的ip
手机的浏览器肯定没有前端所需的开发者模式,于是我们可以通过电脑浏览器的远程调试模式,去调试手机上打开的网页。在这里,chrome,safari都可以去调试。chrome对应调试安卓上的网页,safari对应调试ios上的网页。由于我的是iPhone手机,所以这里给出ios的设置方法。手机点击设置,Safari浏览器,高级,web检查器,选择打开即可。
手机使用Safari打开网页后,macbook上同样打开Safari,开发,你的iPhone名字,就会显示当前打开的网页。点击进去,直接查看网页的网络连接,如图
看样子,*.*.28.96这个ip很可疑。我们过滤一下请求
可以明显看出,通过jsonp的方式跨域加载资源,其中top.tlbs.msisdn,就是我们的手机号。
我们可以通过script标签来加载这个资源,然后通过alert把我们手机号弹出
<script src="http://*.*.28.96:****/get?charset=utf-8"> </script> <script>alert(top.tlbs.msisdn)</script>
如图