Chinaunix首页 | 论坛 | 博客

nas

  • 博客访问: 623165
  • 博文数量: 456
  • 博客积分: 10010
  • 博客等级: 上将
  • 技术积分: 6400
  • 用 户 组: 普通用户
  • 注册时间: 2008-05-08 16:08
文章分类

全部博文(456)

文章存档

2008年(456)

我的朋友

分类: 服务器与存储

2008-05-31 18:53:57

 我第一次看到Linksys被称为“网络存储单元”(NSLU2) 的新产品介绍时,我就一下子被吸引住了,马上对它产生了浓厚了兴趣。它看上去显得那么小巧,运行时声音非常安静,并且价格方面也平易近人,加上灵活多变的用途,足够为我的网络提供备份和文件存储方面的需求了。

  以前我对NSLU2还存有担心,因为据报道,Linksys的这款产品仅仅只支持在Microsoft Windows下工作,并且它出厂时磁盘就被专用的文件系统格式化了。不过后来这一切都不成为问题,所有的担心都被抛到九霄云外去了。我在网上找到了一款这样的产品,马上定购下来,两三天后,它就通过邮寄送到了。

  在安装上一个外置的磁盘器后,我用浏览器连接上了NSLU2,并且所有的配置过程都是通过WEB界面来完成的,很快地,NSLU2在我的网络中就开始它的服务工作了。尽管Linksys的技术文档上说NSLU2并不支持MacOS X和Linux,但实际上它在这两种操作系统下使用都没有任何问题,原因是这两个操作系统都支持NSLU2使用的Microsoft SMB文件服务协议。各位,已安装好了吧?没有,我还只是刚刚开始呢。

  这台NSLU2既安静,外形又美观大方,我看上去都有些爱不释手了。如图一。由于在这个小小的盒子内部运行的是Linux操作系统,因此我想它应该具有更大的潜力可供挖掘。具有又USB 2.0的接口和一个10/100M的以太网连接接口,这个小盒子还应有更多可实用之处。但为什么会是NFS连同SMB一起,我想或许是因为除了文件存储功能外还兼带有打印服务器的功能吧?


图一:Linksys的NSLU2

  如果是使用USB/Serial接口的话,我就可以使用我的X10接口单元来做一些简单的家庭自动化管理了;如果是使用的USB/Ethernet接口,我就可反它变成一台小小的了;或者说是使用USB/802.11bg接口的话,我也就有一台了;USB端口的完全控制与管理还可给真正地给我们带来许多其他的新的应用,但现在的事情是怎样来进入它?

  声明:虽说不讲大家也知道,但我还是要提一下。在不修改NSLU2内部代码的前提下来研究它内部的文件结构是不会失去保修的,但不论用何种何种方法进行修改将得不到保修。

  本人将不会承担因使用本文中介绍的方法而造成你NSLU2损坏或其他任何数据丢失的责任。因此,在开始之前你最好从下载它的firmware副本,免得因NSLU2在这方面受破坏而得不到Linksys的技术支持。

第一部分、查找一个后门

  使用一个快速的端口扫描器对开放的端口进行扫描后,并没有发现什么有兴趣的内容,同样地,通过搜索所有的标准菜单也是一无所获。看样子得采取其他的一些新的方法了。

  为了访问诸如此类设备的内部结构有一个基本的方法就是搜索寻找它的一个后门,这些设备的开发者需要轻松地了解到正在运行系统的内部情况,并且在通常的情况下会在系统中留下一个进入或进行测试的方法。不过,在大多数情况下这需要特殊开发的专用硬件才可访问,但有时也会使用一些常规的方法,方便开发者通过一个网络连接而进入到设备的内部。

  开始搜寻的最明显的地方就是在WEB界面了,我注意到所有的Administrator菜单中的内容全部位于一个名为Management的WEB子目录中,因此我断定依靠这台机器Webserver配置,它可提供一个关于该目录的内容的列表,我决定使用这个简单的方法尝试一下,在浏览器的地址栏中输入“”后,哈哈,我真的获得了一个在该目录下的所示文件的完整的列表清单。注意:在版本号为V2.3R25的Firmware中,NSLU2已经禁止了目录列表的功能。

  在这个文件的列表清单中包含有jpg和html的文件,不过有一个引人注目的文件就是名为telnet.cgi的脚本了,第一步算是完成了,很有可能一个隐藏的后门被发现了。在执行这个脚本程序后出现了如下图二的提示。


图二:Telnet启动操作屏幕

  无需理会这个警告信息,点击“Enable Telnet”按钮,当前的WEB页面被刷新,除了有信息提示Telnet已启动外,这个页面与前面显示的还是相同的内容。到现在为止,第一步总算是完成了。

  在Windows的终端窗口中,我尝试使用在设备初始化时就已设置好的帐号,具体的步骤与提示如下所示:

  # telnet 192.168.1.70
  Trying 192.168.1.70...
  Connected to 192.168.1.70.
  Escape character is ’^]’.
  NSLU2 login: tom
  Password:
  No directory, logging in with HOME=/
  Cannot execute /dev/null: Permission denied
  Connection closed by foreign host.

  从上面的信息可以看出,其实telnet服务已经运行并已接受了我的用户名与密码,但是事与愿违,功亏一篑,这个帐号已有预先就定向到/dev/null下的shell了,不过这些已经提示用WEB界面设置的用户是有效的Linux帐户,不过在存取权限方面是受限的,这是对那些能够使用某些服务,但不允许进行交互式登录的用户进行的一个普通的测试。

  尝试作为root用户(一个标准的Linux帐号)登录却失败了,原因是我不知道密码,而那些默认的用户(如admin、root等等)却根本不能够使用。看样子要使用别的办法、从另外的角度来解决这个难题了。

Linksys提供的资料文档声明被NSLU2初始化的磁盘只能由NSLU2来使用,但我可不怎么想念,认为事实可能并不是这样的。一个设备的文件系统是一组复杂的软件,Linksys不见得为了一个小小的NSLU2而新开发一个文件系统的代码,一些软件系统的编写者提示从分区类型来看它的文件系统是Linux的ext3 filesystem,但在我了解这些以前,没有一个人试验“mount”它。开始时由于懒于在我的Mandrake Linux系统下把NSLU2的磁盘初始化,于是我为MacOs X iBook下载了一个ext2(ext3的一个子集)的驱动程序,并把NSLU2插到了它的USB口上。

  注意:我使用的Mac OS X ext2驱动程序可从ext2 for Mac OS X SourceForge project()下载得到,也有针对Windows NT/2000/XP系统的ext2的驱动程序,不过它访问ext2分区时是只读方式的,详情访问。图三所示的内容为使用它时的屏幕截图。有两个已加载的filesystem:大的是用来存放本人所有的数据文件的,小的filesystem是用来存放几个配置文件,如我的收藏夹、passwd文件等。


图三:包含有配置文件的ext2 filesystem

  果不出其然,和预想的一样,passwd文件显示出了用户帐号,就是我以前已建立但因shell执行而被定向/dev/null下的。不过这儿有两个拥有真实路径shell的帐号:root和ourtelnetrescueuser(这可是我最感兴趣的用户帐号了),这个ourtelnetrescueuser用户帐号看上去好像就是被用来调试和作恢复用途的那个后门帐号了。passwd文件的详细内容如下所示,root用户就是定位于root:/root,而ourtelnetrescueuser用户是定位于/home/user。

  看看我机器上passwd文件的内容:

  root:WeeOvKUvbQ6nI:0:0:root:/root:/bin/sh
  bin:x:1:1:bin:/bin:
  lp:x:4:7:lp:/share/spool:
  mail:x:8:12:mail:/var/spool/mail:
  ftp:x:14:50:FTP User:/:
  nobody:x:99:99:Nobody:/:
  ourtelnetrescueuser:scFf7ZMXBMl4I:100:100::/home/user:/bin/sh
  guest:scEPG0VnVyqmE:501:501:::/dev/null
  admin:sclzZZfodiRXY:502:501::/home/user/admin:/dev/null
  test_user:scEPG0VnVyqmE:2000:501:::/dev/null
  test2:scEPG0VnVyqmE:2001:501:::/dev/null
  test3:sc50wKPq.zChw:2002:501:::/dev/null

  可是,要使用这些帐号来登录到NSLU2上,首先我必须知道它们的密码。开始时我下载了一些密码的破解补丁,但这些似乎没什么作用,反面差点把我都搞糊涂了,后来就想到这样的办法来破解这些密码了,编辑passwd文件,在其中,把我看到其中一个帐号的加密的密码替换成另外的加密密码字符,当然,也可以把一个经过修改有效的shell添加到其中的一个帐号中,但为了众多的初级者,决定还是仅仅是给root添加一个新的密码,留下其他的帐号保持不变。

  但到底我们能不能够进入到系统中去呢?当重新启动设备后,我担心对passwd文件的改写会被系统自动改回来,或者修改后的passwd文件会通过比较校验和而被检测出来,如果是那样的话,NSLU2将不会mount驱动器或者干脆要给整个系统来一次重新初始化的操作。在等待的过程中,我听到了熟悉的嘟嘟声,这就意味着一切正常。如前所述,重新启动Telnet后,我又试着进行了telnet操作,结果如下:

  # telnet 192.168.1.70
  Trying 192.168.1.70...
  Connected to 192.168.1.70.
  Escape character is ’^]’.
  NSLU2 login: root
  Password:
  No directory, logging in with HOME=/
  BusyBox v0.60.4 (2004.07.01-03:05+0000) Built-in shell (ash)
  Enter ’help’ for a list of built-in commands.
  #

  成功了!我得到了一个命令提示符,这就有能力通过获得一个shell而完全地把这个设备的内部展现出来了,我现在就能检查这个盒子的软件和硬件体系结构,寻找一个扩展它的办法。由于这个设备使用的是一个硬盘驱动器,这就有可能为这个盒子替换新的script、可执行程序和驱动程序。艰难工作的时候来了。

  在中,我将会详细地说明怎样来为这个令人感兴趣的小盒子添加一些功能。

阅读(1562) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~