百科问答小站 logo
百科问答小站 font logo



如何看待小米路由进行 404 网页劫持? 第1页

  

user avatar   carabob 网友的相关建议: 
      

小米路由器404错误页面美化功能将用户访问链接提交到服务器已是毫无疑问,那么就请大家回答一下这个问题:

出于什么样的目的,小米路由器404错误页面美化功能将用户访问链接提交到小米服务器? - 小米科技

“404错误页面美化”不仅仅是响应页面被修改,更严重的问题是用户访问链接被发送到了小米的服务器,这就涉及个人隐私泄露问题。我做了一个实验,通过在小米路由器上抓包,获取了页面重定向和美化页面相关的HTTP请求信息。

以PlayBoy官网为例,先在浏览器地址栏输入网址,发现现在PlayBoy主页很素。于是想试探一下,有没有隐藏的内容,于是把首页地址后面加了naked/。(思想不健康)

然而naked目录并不存在,于是出现了小米的“404错误美化页面”。

用wireshark打开tcpdump抓包文件,看到了HTTP请求报文:

在重定向页面请求报文中发现向小米服务器提交的URL中含有刚才访问的链接信息。

这是最终的404错误美化页面请求报文,链接中含有一段BASE64编码的信息,在浏览器地址栏里也能看到这段信息。

通过在线解码网站得到BASE64解码信息,其中包含了用户的路由器设备ID和访问链接。

通过以上实验,我们可以看出:小米路由器向服务器报告了用户访问的链接,并与唯一的设备ID关联。如果用户正在访问了敏感网站,或者链接中含有敏感信息,遇到404错误时,这些信息将被发送到小米服务器,导致个人隐私泄露。这才是小米路由器“404错误页面美化”功能最危险之处。

7月1日补充一个实验

某网站没有使用https协议,某天网站维护员在升级时出现差错,导致用户登录时出现404错误,我们来看看小米路由器是如何美化网页。

测试的网站是:

weixinto.com/

,在登录页面里输入用户名:admin,密码:1234567890,如下图所示。

点击“Login”按钮后出现了小米路由器的404错误美化页面,我们留意到页面链接的域名

api.miwifi.com

,是小米公司的服务器。完整链接是:

api.miwifi.com/error-pa

404错误页面截图如下:

将链接中从data=后到&error_type=1之间的字符串复制,然后贴到在线

Base64编码/解码器

里解码,得到:device_id=fa69d2c3-2059-4b18-aa8f-a6fc858cd7b6&rom=&hardware=&channel=&error_type=1&sc=404&url=http%3A%2F%2Fwww.weixinto.com%2Flogin%2F%3Fuser%3Dadmin%26pass%3D1234567890&tpl=default

看到了在登录页面中输入的admin和1234567890,还有路由器的设备ID,这些信息已提交到了小米的服务器。

6月29日更新:

上面的实验只是通过抓包了解到小米路由器404错误页面劫持情况,接下来以1T硬盘版小米2.2.9稳定版固件为例,分析其工作原理。

  • 启动脚本 /etc/rc.d/S99http_status_stat 符号链接到 /etc/init.d/http_status_stat,在这个脚本文件的start()中加载几个与404错误页面相关的内核模块(.ko文件)。
  • start()首先判别http_status_stat.settings.enabled参数是否为1,如果不为1就退出。也就是通过这个参数关闭404错误页面劫持。
  • start()接着判断nvram参数CountryCode (国家代码)是否为CN,如果不是CN就退出。由此可见,小米不敢在其他国家使用404错误页面劫持。
       start() {     config_load "http_status_stat"     local switch     switch=`uci get http_status_stat.settings.enabled -q`     if [ $switch -ne "1" ]; then         return 0     fi     local cc=$(nvram get CountryCode)     cc=${cc:-"CN"}     if [ $cc != "CN" ]; then         echo "http_stat: Bad Country!"         return 0     fi      fastpath=`uci get misc.http_proxy.fastpath -q`     [ -z $fastpath ] && return 0      if [ $fastpath == "ctf" ]; then         if [ -f $APP_CTF_MGR ]; then             $APP_CTF_MGR http_stat http on         fi     elif [ $fastpath == "hwnat" ]; then         echo "http status can work with hw_nat."     else         echo "http_status_stat.init: unknown fastpath type! Treat as std!"     fi     insmod nf_conn_ext_http >/dev/null 2>&1     insmod nf_tcp_proxy >/dev/null 2>&1     #echo "open and set proxy action to kernel"     echo "ADD 5 $LIP $PROXY_PORT" > $CFG_PATH     # ensure start switch     echo "1" > $SWITCH_PATH     insmod http_status_code_proxy >/dev/null 2>&1     [ -f $REFERER_PATH ] && echo $REFERER_STR > $REFERER_PATH 2>/dev/null     return 0 }      

下一步要弄清楚三个内核模块在干什么?

nf_conn_ext_http.ko

nf_tcp_proxy.ko

http_status_code_proxy.ko

先看看文件里有哪些字符串?

这些字符串含有hijack,请英语达人给翻译一下hijack的中文意思。

       tcp_hijack_func security_hijack http_response_hijack http_response_hijack security_hijack %s, security hijack successd! %s, security hijack failed for some reason! %s, syn ack but can NOT hijack!!      

nf_tcp_proxy.ko的大致功能:

向内核的netfilter挂钩子,监视经过路由器的TCP报文。将HTTP报文通知

http_status_code_proxy,http_identify,http_match,http_content_type_mark这些模块。这些模块解析http报文,如果需要劫持,就调用nf_tcp_proxy中的相关函数,让nf_tcp_proxy生成相关TCP报文,然后注入到TCP会话中。由此可见,这就是TCP会话劫持

下面是在nf_tcp_proxy.ko中发现的一段字符串,这是跳转404错误页面时注入的HTTP响应报文的模板。

       GET /error-page?error_type=1&sc=     Host: api.miwifi.com Connection: keep-alive Cache-Control: no-cache Accept: */* Pragma: no-cache User-Agent:   HTTP/1.1 Padding:       

调用nf_register_hooks函数,注册2个钩子函数:

NF_IP_PRE_ROUTING ipv4_tcpproxy_pre_hook

NF_IP_POST_ROUTING ipv4_tcpproxy_post_hook

这2个钩子函数位于netfilter的最前和最后,前端用于监视,后端用于注入或重定向。借用一张图来说明钩子函数所处的位置。



关于netfilter hook,可参考:

(十五)洞悉linux下的Netfilter&iptables:开发自己的hook函数【实战】...

user avatar   libiubiu 网友的相关建议: 
      

老实说,业内并不太提所谓“流量明星”。

泛娱乐行业的链条大概是这个样子:

明星IP——内容创意制作执行——宣发播出平台——用户


明星是内容和平台方的上游,

业内不提什么流量明星,

划分一般是头部明星、一线明星、二三线明星、夕阳明星这样的,

标准就一个,出场费多少钱。


而内容和平台方采购明星的时候,谁来决定明星的价格呢?

其实,是最终的用户来决定明星的价格的。

泛娱乐行业赚钱就是那么几个套路:广告费、用户付费(门票、电影票、会员费等)、游戏、打赏、衍生品。

头部明星,能够带来更高的用户消费规模,内容和平台方才能赚钱,生态链上面不赚钱的话,整个行业吃什么?

所以,记住这句话,明星值多少钱赚多少钱,是用户决定的。

别再傻傻的问为什么戏子能赚那么多钱,问为什么政府不出来管管之类的。


当年新英体育,雄心勃勃的买下英超版权,准备大干一场,IDG也投了不少钱,结果呢,愿意付费观看英超的人聊聊,本都收不回来。

去年市场大谈特谈的知识付费,现在你看还提吗?

不愿意付钱,谈个锤子哟。


所以知乎上好多人,一边看不起为娱乐业花钱的粉丝,说别人是付智商税;

一边呢,又看不上头部明星,觉得是靠脸吃饭的流量明星。

那您倒是无条件的为喜欢的明星或者内容掏钱呀,而且要掏大钱才行,因为您曲高和寡嘛,俗人10个人每人掏1块您这边要1个人掏10块才能打平对吧。


比如,你愿意为看世界杯付多少钱?100、1000?

你愿意为看有詹俊张璐解说的世界杯付多少钱?100、1000、10000?

或者换个角度,

广告主愿意为你的注意力花多少钱?

前些年互联网有一个价值鄙视链还有印象吧,

少女》儿童》少妇》老人》狗》男人,

和前面所讲的一样道理。




  

相关话题

  小米手机真的可以吗? 
  新上市的小米10怎么样? 
  现在小米平板5出来了,感觉无脑吹matepad的人越来越多了,真的有啥好的? 
  针对频发的网络劫持,是否有相关法律规范网络提供商的行为? 
  如何看待雷军「毛利率高其实是一条不归路」的言论? 
  小米的 Mimoji 和苹果的 Memoji 一样吗? 
  ov和小米谁更有未来? 
  如何看待小米向小米手机 1 首批用户发放 1999 元红包? 
  你会抢首发小米12吗? 
  如何看待小米 MIX4 在双十一叠加 88VIP 再降 300,仅 3699 元起? 

前一个讨论
如何评价知乎在 2015 年投放的户外广告?
下一个讨论
我让老公的两个儿子(由前妻抚养)睡地板做错了吗?





© 2024-05-20 - tinynew.org. All Rights Reserved.
© 2024-05-20 - tinynew.org. 保留所有权利