小米路由器404错误页面美化功能将用户访问链接提交到服务器已是毫无疑问,那么就请大家回答一下这个问题:
出于什么样的目的,小米路由器404错误页面美化功能将用户访问链接提交到小米服务器? - 小米科技“404错误页面美化”不仅仅是响应页面被修改,更严重的问题是用户访问链接被发送到了小米的服务器,这就涉及个人隐私泄露问题。我做了一个实验,通过在小米路由器上抓包,获取了页面重定向和美化页面相关的HTTP请求信息。
以PlayBoy官网为例,先在浏览器地址栏输入网址,发现现在PlayBoy主页很素。于是想试探一下,有没有隐藏的内容,于是把首页地址后面加了naked/。(思想不健康)
然而naked目录并不存在,于是出现了小米的“404错误美化页面”。
用wireshark打开tcpdump抓包文件,看到了HTTP请求报文:
在重定向页面请求报文中发现向小米服务器提交的URL中含有刚才访问的链接信息。
这是最终的404错误美化页面请求报文,链接中含有一段BASE64编码的信息,在浏览器地址栏里也能看到这段信息。
通过在线解码网站得到BASE64解码信息,其中包含了用户的路由器设备ID和访问链接。
通过以上实验,我们可以看出:小米路由器向服务器报告了用户访问的链接,并与唯一的设备ID关联。如果用户正在访问了敏感网站,或者链接中含有敏感信息,遇到404错误时,这些信息将被发送到小米服务器,导致个人隐私泄露。这才是小米路由器“404错误页面美化”功能最危险之处。
7月1日补充一个实验:
某网站没有使用https协议,某天网站维护员在升级时出现差错,导致用户登录时出现404错误,我们来看看小米路由器是如何美化网页。
测试的网站是:
http://www. weixinto.com/,在登录页面里输入用户名:admin,密码:1234567890,如下图所示。
点击“Login”按钮后出现了小米路由器的404错误美化页面,我们留意到页面链接的域名
api.miwifi.com,是小米公司的服务器。完整链接是:
http:// api.miwifi.com/error-pa ge.html?data=ZGV2aWNlX2lkPWZhNjlkMmMzLTIwNTktNGIxOC1hYThmLWE2ZmM4NThjZDdiNiZyb209JmhhcmR3YXJlPSZjaGFubmVsPSZlcnJvcl90eXBlPTEmc2M9NDA0JnVybD1odHRwJTNBJTJGJTJGd3d3LndlaXhpbnRvLmNvbSUyRmxvZ2luJTJGJTNGdXNlciUzRGFkbWluJTI2cGFzcyUzRDEyMzQ1Njc4OTAmdHBsPWRlZmF1bHQ&error_type=1404错误页面截图如下:
将链接中从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稳定版固件为例,分析其工作原理。
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函数【实战】...老实说,业内并不太提所谓“流量明星”。
泛娱乐行业的链条大概是这个样子:
明星IP——内容创意制作执行——宣发播出平台——用户
明星是内容和平台方的上游,
业内不提什么流量明星,
划分一般是头部明星、一线明星、二三线明星、夕阳明星这样的,
标准就一个,出场费多少钱。
而内容和平台方采购明星的时候,谁来决定明星的价格呢?
其实,是最终的用户来决定明星的价格的。
泛娱乐行业赚钱就是那么几个套路:广告费、用户付费(门票、电影票、会员费等)、游戏、打赏、衍生品。
头部明星,能够带来更高的用户消费规模,内容和平台方才能赚钱,生态链上面不赚钱的话,整个行业吃什么?
所以,记住这句话,明星值多少钱赚多少钱,是用户决定的。
别再傻傻的问为什么戏子能赚那么多钱,问为什么政府不出来管管之类的。
当年新英体育,雄心勃勃的买下英超版权,准备大干一场,IDG也投了不少钱,结果呢,愿意付费观看英超的人聊聊,本都收不回来。
去年市场大谈特谈的知识付费,现在你看还提吗?
不愿意付钱,谈个锤子哟。
所以知乎上好多人,一边看不起为娱乐业花钱的粉丝,说别人是付智商税;
一边呢,又看不上头部明星,觉得是靠脸吃饭的流量明星。
那您倒是无条件的为喜欢的明星或者内容掏钱呀,而且要掏大钱才行,因为您曲高和寡嘛,俗人10个人每人掏1块您这边要1个人掏10块才能打平对吧。
比如,你愿意为看世界杯付多少钱?100、1000?
你愿意为看有詹俊张璐解说的世界杯付多少钱?100、1000、10000?
或者换个角度,
广告主愿意为你的注意力花多少钱?
前些年互联网有一个价值鄙视链还有印象吧,
少女》儿童》少妇》老人》狗》男人,
和前面所讲的一样道理。