|
Введение
Нас заинтересовало сетевое хранилище, которое недавно побывало в нашей лаборатории, - Linksys NSLU2. Компактный корпус, бесшумная работа, низкая цена и все необходимые функции по сетевому хранению и резервированию файлов - чего ещё может желать пользователь?
К сожалению, согласно документации, устройство может работать только с клиентами под управлением Microsoft Windows, и, кроме того, использует собственную файловую систему.
Подсоединив внешний жёсткий диск, мы вышли в web-интерфейс NSLU2 с помощью браузера и настроили устройство. Вопреки документации Linksys, сетевое хранилище можно использовать и с системами под управлением MacOS X и Linux, поскольку обе они поддерживают протокол Microsoft SMB. Но это было только начало.
Дело в том, что внутри этой маленькой коробочки работает Linux - а раз так, то можно по максимуму использовать весь потенциал NSLU2. Устройство с двумя портами Hi-Speed USB и портом 10/100, определённо, способно на большее. Как насчёт NFS? Или сервера печати?
Переходник с USB на последовательный порт позволит автоматизировать некоторые домашние функции. Сетевая карта USB преобразует NSLU2 в маршрутизатор, а беспроводная карта USB 802.11b/g - в беспроводную точку доступа. Возможность полноценной работы с портами USB позволит открыть новые горизонты использования устройства, осталось только узнать, как это сделать.
Предупреждение. Исследование NSLU2 через просмотр внутренней структуры файлов любым способом, который не изменяет код, не повлечёт за собой лишение гарантии. Однако любое изменение структуры автоматически лишает гарантии.
Сайт Tom's Hardware Guide Russia и авторы не несут ответственности за повреждение оборудования. Вы используете приведённые ниже инструкции на свой страх и риск.
Перед тем, как начинать, советуем скачать
"Потайная дверь"
Сканирование портов не показало ничего интересного. Просмотр всех стандартных меню также оказался бесплоден.
Стандартным способом входа в такие устройства являются "потайные двери" (back door). Разработчикам они нужны для контроля параметров системы при её настройке и тестировании. Иногда для этого требуется специальное оборудование, но в ряде случаев разработчики пользуются тем же сетевым интерфейсом.
Первое, с чего стоит начать, - web-интерфейс. Мы заметили, что страницы администрирования находятся в папке "Management". Мы знаем, что web-серверы иногда позволяют просматривать содержимое каталога, поэтому мы решили перейти по адресу http://192.168.3.77/Management/. Сработало! Мы увидели все файлы этого каталога.
Примечание. Возможность просмотра каталогов была устранена в прошивке V2.3R25 NSLU2.
Среди множества картинок и html-файлов мы смогли обнаружить telnet.cgi. Потенциальная точка входа найдена! После запуска скрипта мы увидели следующий экран.
Посмотрев на предупреждение, мы нажали на кнопку "Enable Telnet". Страница обновилась, и мы увидели сообщение о том, что Telnet активирован! Переходим к следующему этапу.
Получаем доступ к Telnet
В окне терминала мы попробовали использовать учётную запись, заданную при настройке NSLU2.
# 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. Тем не менее, это уже говорит о том, что учётные записи, заданные через web-интерфейс, являются учётными записями Linux, но их права ограничены. Это традиционный подход, когда пользователи могут работать со службами, но не могут выполнять вход в систему.
Мы попробовали выполнить вход под именем root (стандартная учётная запись в Linux), но не удалось - пароль был неизвестен и не был из серии простейших (admin, root и другие). Настало время взглянуть на проблему под другим углом.
В документации Linksys утверждалось, что жёсткий диск, инициализированный NSLU2, может использоваться только с паре с устройством. Мы решили это проверить. Файловая система - достаточно сложная штука, и вряд ли Linksys создала для NSLU2 новую. Многие источники указывали на то, что в NSLU2 используется файловая система Linux ext3 (это, кстати, подтвердил представитель Linksys), но никто не пытался её подключить.
Конечно, можно было подключить диск к системе Mandrake Linux, но мы скачали драйверы ext2 (подмножество ext3) для MacOs X iBook и подключили диск к порту USB.
Совет.Драйверы для Mac OS X ext2 можно скачать с сайта
Мы увидели два раздела: большой с нашими данными и маленький с файлами конфигурации, включая passwd.
Как мы и ожидали, в файле passwd содержались сведения о созданных нами учётных записях с каталогом по умолчанию /dev/null. Но там же мы увидели ещё две нормальные учётные записи: root и весьма интересную - ourtelnetrescueuser, которая нам показалась именно тем, что нужно, то есть учётной записью для отладки и восстановления.
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 |
Конечно, для того, чтобы воспользоваться ими, необходимо знать пароли. Мы решили не заниматься взломом, а просто отредактировать файл passwd, заменив зашифрованный хэш одним из созданных нами! Можно было также добавить оболочку к нашим учётным записям, но мы решили просто задать новый пароль для администратора, а всё остальное оставить, как есть.
Как успехи?
При перезагрузке устройства мы опасались, что внесённые изменения будут перезаписаны, или сработает какая-либо защита. NSLU2 мог бы отказаться подключать диск или, к примеру, переформатировать его.
Но, всё прошло гладко, и мы услышали звуковой сигнал, сообщивший о том, что система готова к работе. После активации 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. # |
Готово! Мы получили командную строку, что полностью раскрыло перед нами устройство. Теперь можно расширить набор функций. Поскольку NSLU2 использует жёсткий диск, то можно создавать собственные сценарии, файлы и устанавливать необходимые драйверы.