Краткий обзор уязвимостей:1) CVE-2017-8224 - Backdoor account -
https://pierrekim.gith….html#backdoor-accountЭто при старте чебурашки работающий телнет с известным нам логином и паролем (т.е. любой может подключиться).
Фикс:
Два варианта:
Первый: ставим свой пароль на telnet -
WiFi IP камеры на процессоре Ingenic T10 (I21AG, HX-I2110T2, HW0036 и другие) (Пост Gosudar #63229494)Второй:
Файл /system/init/ipcam.sh после
/system/system/bin/wifidaemon & добавить:
# kill telnetd
killall telnetd
# disable TelnetSwitch=1 in system.ini
printf "\x01" > /tmp/patch_system_ini
dd if=/tmp/patch_system_ini of=/system/www/system.ini obs=1 seek=3983 conv=notrunc
rm -f /tmp/patch_system_ini
Последние 3 строчки нужны для того чтобы программы типа дигма или запросы через cgi не путались, показывая , что телнет вроде есть, но на самом деле мы вручную убили процесс. Мы просто изменяем флаг телнета в файле system.ini
p.s. Флаг Telnetswitch находится в system.ini по смещению 0x0F8F по крайней мере это относится к моей чебурашки, в других я не знаю, не видел, не патчил....
2)Details - CVE-2017-8222 - RSA key and certificates -
https://pierrekim.gith…ead-0day.html#rsa-lulzВ прошивке находится закрытый ключ шифрования, т.е. тот у которого есть вторая часть ключа, автоматически авторизуется.
Фикс Просто удалим этот ключик
rm -f /system/www/pem/ck.pem
3)CVE-2017-8225 - Pre-Auth Info Leak (credentials) within the custom http server -
https://pierrekim.gith…auth-info-leak-goaheadПростым get запросом злоумышленник получает все настройки чебурашки, в том числе пароль и логин на админку. И потом он делает с не всё что хочет
Фикс в ipcam.sh после строки /system/system/bin/wifidaemon & добавляем
sleep 30
rm -f /tmp/web/network.ini
rm -f /tmp/web/network-b.ini
rm -f /tmp/web/system.ini
rm -f /tmp/web/system-b.ini
rm -f /tmp/web/factory.ini
rm -f /tmp/web/factoryparam.ini
И для надежности патчим encoder и wifidaemon , т.е. там где создаются эти сим-линки
#---------------------------------------------------------------------------
#patch encoder & wifidaemon & updata & upgrade path network.ini & system.ini
echo 'patch encoder & wifidaemon path network.ini & system.ini...'
/usr/bin/unzip -o /system/system/bin/encoder.zip -d /mnt/DCIM/
cp -f /system/system/bin/wifidaemon /mnt/DCIM/
mkdir -p /tmp/cfg/
# network.ini
sed -i -e 's/\/tmp\/web\/network\.ini/\/tmp\/cfg\/network\.ini/g' /mnt/DCIM/encoder
sed -i -e 's/\/tmp\/web\/network\.ini/\/tmp\/cfg\/network\.ini/g' /mnt/DCIM/wifidaemon
# network-b.ini
sed -i -e 's/\/tmp\/web\/network\-b\.ini/\/tmp\/cfg\/network\-b\.ini/g' /mnt/DCIM/encoder
sed -i -e 's/\/tmp\/web\/network\-b\.ini/\/tmp\/cfg\/network\-b\.ini/g' /mnt/DCIM/wifidaemon
# system.ini
sed -i -e 's/\/tmp\/web\/system\.ini/\/tmp\/cfg\/system\.ini/g' /mnt/DCIM/encoder
sed -i -e 's/\/tmp\/web\/system\.ini/\/tmp\/cfg\/system\.ini/g' /mnt/DCIM/wifidaemon
# system-b.ini
sed -i -e 's/\/tmp\/web\/system\-b\.ini/\/tmp\/cfg\/system\-b\.ini/g' /mnt/DCIM/encoder
sed -i -e 's/\/tmp\/web\/system\-b\.ini/\/tmp\/cfg\/system\-b\.ini/g' /mnt/DCIM/wifidaemon
# factory
sed -i -e 's/\/tmp\/web\/factory\.ini/\/tmp\/cfg\/factory\.ini/g' /mnt/DCIM/encoder
sed -i -e 's/\/tmp\/web\/factory\.ini/\/tmp\/cfg\/factory\.ini/g' /mnt/DCIM/wifidaemon
# factoryparam.ini
sed -i -e 's/\/tmp\/web\/factoryparam\.ini/\/tmp\/cfg\/factoryparam\.ini/g' /mnt/DCIM/encoder
sed -i -e 's/\/tmp\/web\/factoryparam\.ini/\/tmp\/cfg\/factoryparam\.ini/g' /mnt/DCIM/wifidaemon
Этот код можно оформить в виде патча, как предложил уважаемый
kDnZP,Обратите внимание в патче указаны пути на флешку( у меня DCIM)/ Т.е. флешка должна быть вставлена. В tmp свободного места просто не хватит, поэтому лучше использовать флешку, либо в /tmp/ удалять вебморду для освобождения места.
4) Authenticated RCE as root -
https://pierrekim.gith…ead-0day.html#root-rceСложный вопрос, но сделать можно. Для этого правится в encoder функция , которая запускает дырявый файл ftpupload.sh
После правки запускаться будет не уязвимый ftpupload.sh , а наш файл без этой уязвимости.
Править те-же файлы, как и в предыдущей уязвимости, лучше в виде патча.
Фикс Изменяем вызов файла ftpupload.sh на другой, с которым мы можем делать всё что захотим. Для этого патчим encoder
# install hackme.sh
echo 'Now install /system/hackme.sh'
echo '#! /bin/sh' > /system/hackme.sh
echo '' >> /system/hackme.sh
echo '/tmp/ftpupload.sh &' >> /system/hackme.sh
echo 'echo $(date +%Y%m%d_%H%M%S) hackme.sh is alive > /tmp/hackme.log' >> /system/hackme.sh
chmod a+x /system/hackme.sh
# patch encoder ftpupload.sh
echo 'patch ftpupload...'
sed -i -e 's/\/tmp\/ftpupload\.sh \> \/tmp\/ftpret.txt/\/system\/hackme\.sh \> \/tmp\/ftpret.txt/g' /mnt/DCIM/encoder
p.s. Ну и конечно можно изменить команду set_ftp.cgi на какой-либо другой, но это вопрос интимный. Конечно в веб-морде упраление ftp потеряется, но ради безопастности можно изменять настройки ftp и вручную, через cgi, введе не set_ftp.cgi , а что-нибудь другое_интимное.cgi
5) Pre-Auth RCE as root -
https://pierrekim.gith…html#pre-auth-root-rceЭта уязвимость вытекает из предыдущих, если ранее мы уже пропатчились, то нам это не грозит.
Фикс - Читать с начала.
6) Details -- CVE-2017-8223 - Misc - Streaming without authentication -
https://pierrekim.gith…ay.html#open-streamingВозможность смотреть видеопоток без авторизации
Фикс - менять порт rtsp потока, и вроде бы китайцы пытались сделать там авторизация, но я не пробовал. Не знаю как она там работает и работает ли вообще.
7) CVE-2017-8221 - Misc - "Cloud" (Aka Botnet) -
https://pierrekim.gith…oahead-0day.html#cloudМоё любимое - китайский облачный сервис. В гугле полно ипкамер с паролями и девайсидом, для просмотра.
Фикс - пока нет. В работе
Внимание! Перед тем как исправлять все уязвимости, убедиться в соответствии всех путей, имени флешки, и т.д. и т.п.И как всегда - на свой страх и рискСобрал всё в один архив, перед тем как патчить читать файл install
patch.zip ( 1.72 КБ )
Отдельное спасибо уважаемому
kDnZP, т.к. патч сделан на основе его трудов.
Сообщение отредактировал Gosudar - 17.07.17, 09:10