LINUX.ORG.RU

Сменить рутовый пароль (SquashFS)

 , ,


0

2

Имеется IP камера (девелоперский семпл) на ARM с Linux внутри. Работает. Наружу смотрит только телнет, порт 6688 для доступа к videostream, и фтп на хранилище с видеозаписями. Телнет-запаролен, данные по порту-закриптованы, фтп-анонимен на R/W, но доступ не выше хранилища.

Путем распаковки очередного апдейта системной фирмвари выяснилось, что в /etc/passwd всего лишь одна строчка с рутовой записью, и других юзеров нет. Побрутфорсил неделю-ничего из простых паролей не подошло, далее брутфорсить смысла особого не вижу.

Задача: получить рутовый вход в систему.

Осложняется тем, что:

1) девелопер не предоставляет ни сорцев, ни рутового пароля. Эдакий черный ящик для тестирования, причем шлющий кучу шифрованных данных девелоперу как только прочухивает доступность интернетов.

2) на системном разделе - SquashFS, то есть - R/O, и /etc/passwd просто так не сменить.

3) системная прошивка - подписана сертификатом девелопера, посему пересобрать прошивку системного раздела тоже не вариант.

4) зато есть вторая прошивка (собственно application для камеры, который и пользует порт 6688) - и эта прошивка НЕ подписана, и доступна для изменения\перепаковки. Попробовал вкорячить несколько собственных скриптов перед запуском собственно application, и перепрошить камеру-запускаются и работают, причем под рутом (например, тот же /etc/* можно прекрасно слить на хранилище, и забрать оттуда по фтп). Но основную задачу это все равно особо не решает (не пересобирать же прошивку\перепрошиваться из-за каждого пука) - желателен именно полноценный рут-доступ через телнет путем либо перезаписи пароля на свой (а там R/O), либо узнавание рутового пароля девелопера (а брутить до скончания веков - не радует).

Каковы могут быть дальнейшие действия? Благодарю.



Последнее исправление: testertestertester (всего исправлений: 2)

и как ты форсил? путем неоднократного ввода пароля «маоцзэдун»?

надао хеш забрать оттуда и прогнать его по таблицам для начала.

aol ★★★★★
()
Ответ на: комментарий от Elyas

overlayfs или aufs в ядре нет?

Неа. Там вообще весьма-весьма аскетично...

Есть идея тупо скриптом при каждом запуске копировать весь /etc на R/W хранилище с перезаписью, менять passwd на нужный, и потом делать что-то типа «mount -o bind» всей этой папки туда, и далее как обычно...Но не не знаю, взлетит ли. Неохота закирпичить зверушку - dev экземпляр, в единственном виде-сс, у него даже номера модели еще нет...

testertestertester
() автор топика

Собрать (и статически слинковать) свой экземпляр busybox, а скриптом запускать из него свой telnetd без аутентификации (или даже sshd с аутентификацией только по открытому ключу)?

anonymous
()

Так а зачем тебе рутовый доступ? Чисто по приколу? Вывали все содержимое системы и изучай в свое удовольствие, зачем тебе рут?

Ну или смонтируй /root отдельно и доложи туда rsa ключей по вкусу.

morse ★★★★★
()
Ответ на: комментарий от anonymous

Собрать (и статически слинковать) свой экземпляр busybox, а скриптом запускать из него свой telnetd без аутентификации (или даже sshd с аутентификацией только по открытому ключу)?

Угу, но, может, есть какой-нибудь вариант с меньшим числом телодвижений? Как насчет идеи перемонтирования всей /etc куда-нибудь на R/W парой строчек скрипта?

testertestertester
() автор топика
Ответ на: комментарий от morse

Так а зачем тебе рутовый доступ? Чисто по приколу?

Девелоперам приспичило - отлаживать проект неудобно, когда всё под замком. Приходится пинать собственно вендора жЫлизяки, а у того response time по неделе и больше и вообще «В контракте не прописано», если особо лениво шевелить опой. Конкретных деталей отладки не знаю (не девелопер) - мне просто извучили тему «Как бы было хорошо, если». Ну, а далее банальный challenge.

Ну или смонтируй /root отдельно и доложи туда rsa ключей по вкусу.

А на кой весь /root? Перелинковать только /etc через mount-bind (оставив все остальное на месте) - не взлетит?

testertestertester
() автор топика
Ответ на: комментарий от testertestertester

В смысле «весь /root»? Я не «/» имею в виду, а именно «/root». Домашнюю папку рута. Туда можно доложить authorized_keys и по ним ходить.

morse ★★★★★
()

/etc/passwd всего лишь одна строчка с рутовой записью, и других юзеров нет.

XXI век, пароли хранятся в /etc/shadow в виде хешей, вот его и брутфорсь, если атм пароля не установлено, значит никто под root'ом на твою камеру не залогинится - выдыхай.

Deleted
()
Ответ на: комментарий от morse

Я не «/» имею в виду, а именно «/root»

А, блин. Ступил.

Туда можно доложить authorized_keys и по ним ходить.

Тупой телнет уже умеет authorized_keys?

testertestertester
() автор топика
Ответ на: комментарий от testertestertester

Про тупой телнет не скажу, а вообще по идее должен уметь, я всегда думал что от ssh он отличается только тем не шифрует канал данных.

morse ★★★★★
()
Ответ на: комментарий от Deleted

XXI век, пароли хранятся в /etc/shadow

В данном конкретном случае у китайцев миллениум еще не наступил, судя по всему. Файла /etc/shadow нет (физически). Пароль сидит в /etc/passwd, он установлен, и он - единственный, для рута.

cat /etc/passwd

root:$1$oXQiMrnx$CIC8yUl3Ggwg3qQSRQlVV0:0:0::/root:/bin/sh

Этот хэш, разумеется - и брутил. Классическим Джеком. Неделю, или около того.

testertestertester
() автор топика
Ответ на: комментарий от Deleted

тупой любой telnet не умеет.

В данном случае - именно тупой, скорее всего. Для EmbLinux хрен пойми какой сборки и степени кастрации, весь системный раздел - меньше 2х мегов в .tgz. Имхо, если бы там была хоть капля ума - то там был бы ssh как минимум...

testertestertester
() автор топика
Ответ на: комментарий от Deleted

что за модель камеры, может для нее эксплойты есть?

Она ж еще даже не вышла. Номера модели тоже нет. Пока что dev экземпляр в железе от фабрики имени Ляо, а тутошние к нему фронтенд на дотнете ваяют. Ну, и вот...

PS: а вообще девайс по типу «полведра на стобаксов», так что ума от него ожидать не приходится. Железо - попсовый HiSilicon3518e + какой-то ARM в паре, если интересно.

testertestertester
() автор топика
Ответ на: комментарий от testertestertester

Попробуй использовать dropbear ssh, запускай его своими скриптами.

anonymous
()
Ответ на: комментарий от testertestertester

зато есть вторая прошивка (собственно application для камеры, который и пользует порт 6688) - и эта прошивка НЕ подписана, и доступна для изменения\перепаковки.

Собрать статический sshd, настроить авторизацию по ip(вроде не выкинули еще), закнуть на этот раздел и запускть вместе со скриптами?

Deleted
()
Ответ на: комментарий от Deleted

Осталось научиться собирать чего-нибудь из сорцев вот под ЭТО вот. Учесть то, что опыт сборки есть только под писюк - а ЭТО вообще не от мира сего. И даже SDK и манулов нету, не говоря уж про компиляторы итд...Есть просто коробочка с условно-закрытой архитектурой у меня на столе, и есть сорцы того же sshd где-то там в интернете. Как совокупить оба джва - я пока что не знаю...

testertestertester
() автор топика
Ответ на: комментарий от testertestertester

У sshd существенно больше зависимостей попробуй dropbear.

Вы же собирали как-то application прошивку.

anonymous
()
Ответ на: комментарий от testertestertester

Создай тему про кросскомпиляцию, если звезды сойдутся, то местные умельцы помогут.

Через RouterSploit/Metasploit прогони камеру, может там дыра известная есть.

Deleted
()
Ответ на: комментарий от anonymous

Вы же собирали как-то application прошивку.

Исключительно из того, что там уже было на разделе+bash скрипты (ограниченные по командам тем, что там есть на разделе). Ничего нового (исключая скрипты) туда не добавлял.

testertestertester
() автор топика
Ответ на: комментарий от testertestertester

Стоп.

перепрошить камеру-запускаются и работают, причем под рутом
bash скрипты

Команда passwd есть в составе? Или через echo перезаписать /etc/passwd в уже работающей системе(sfs вроде в ram распаковывается).

Deleted
()
Последнее исправление: log4tmp (всего исправлений: 1)
Ответ на: комментарий от Deleted

Команда passwd есть в составе?

Нету. Узкоглазый брат дальновидно решил, что она в данном случае в камере не нужна.

Или через echo перезаписать /etc/passwd в уже работающей системе

Пробовал самым первым пунктом - не взлетает («Read-only file system»). Так-то бы и всей темы не было бы...

PS: распаковывать в RAM ей нужды нет - всё, что ей нужно в R/W, оно маунтит в отдельный раздел на хранилище (недоступный наружу), тем и живет. Но даже если доступ туда снаружи и появится - это ничего не изменит, так как ничего особо ценного (типа внезапного активного миррора /etc/*) там нет. Там живут всякие /dev, /var/log итд...

testertestertester
() автор топика
Ответ на: комментарий от testertestertester

Тебе придётся достать его initramfs, распаковать, посмотреть как там устроены скрипты и если возможно внести правки в него, потом его же и прошить.

anonymous
()
Ответ на: комментарий от Deleted

Только это нужно делать перед тем как происходит switch_root.

anonymous
()
Ответ на: комментарий от Deleted

Хотя может и нет.

mkdir /tmp/etc
cp -aR /etc/* /tmp/etc/
mount -o bind /tmp/etc /etc
anonymous
()
Ответ на: комментарий от Deleted

После чего перезапустить telnetd.

anonymous
()
Ответ на: комментарий от anonymous

достать его initramfs,
внести правки
прошить.

Прошивка системного раздела подписана производителем тушки, просто так её не прошить. Изменить\прошить можно лишь юзерспейс прошивку. По счастливой случайности её контент тоже стартует под рутом - но это дает не особо много, так как системный раздел всё равно R/O. Поиграться с подменами\ремаунтами на лету под рутом - все еще можно попробовать, но внести постоянные исправления в / без перепрошивки - оппаньки.

testertestertester
() автор топика
Ответ на: комментарий от testertestertester

но внести постоянные исправления в / без перепрошивки - оппаньки.

Сделай подмену /etc/ в своём скрипте, запускаемом из прошивки application.

Затем опять же в скрипте перезапусти telnet сервер.

anonymous
()
Ответ на: комментарий от anonymous

Сделай подмену /etc/ в своём скрипте, запускаемом из прошивки application.Затем опять же в скрипте перезапусти telnet сервер.

Да. Это и было вопросом первого поста. :) Правда, надо будет еще поприседать на тему «Подменять /etc, ЕСЛИ...» найден файл на фтп-хранилище, например.......а то мне только окирпичивания дев-борды на многокилобаксов и не хватало.

PS: кстати, сам telnetd находится в юзерспейсе (доступен для изменения и перепрошивки), да и стартует после основного backend-app для камеры (кой тоже в юзерспейсе, и под рутом). И запускается все это великолепие чем-то типа /root/autostart.sh (менять кой можно с моей стороны путем пересбора\перепрошивки app камеры).

testertestertester
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.