Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

ЛентыКонтактыКонфиденциальность© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
tiandy-research — Этот репозиторий содержит результаты моего исследования прошивок IPC/NVR от Tiandy, проведённого в августе 2020 года. Я обнаружил две уязвимости, которые можно использовать для удалённого восстановления пароля администратора и получения root-доступа к устройству. | Kitploit
Инструменты/GitHubGitHub/zb3/tiandy-research
Безопасность встроенных системВзлом паролейПовышение привилегийАнализ уязвимостейЭксплуатацияТестирование на ПроникновениеАутентификацияСтатьи и ИсследованияRed TeamingАнализ Прошивок
GitHub
302446 лет назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться
zb3/tiandy-research

tiandy-research

Этот репозиторий содержит результаты моего исследования прошивок IPC/NVR от Tiandy, проведённого в августе 2020 года. Я обнаружил две уязвимости, которые можно использовать для удалённого восстановления пароля администратора и получения root-доступа к устройству.

Репозиторий

tiandy-research

Этот репозиторий содержит результаты моего исследования прошивок IPC/NVR от Tiandy, проведённого в августе 2020 года (эти устройства также продаются под брендом OMNY). Это «исследование» не было исчерпывающим, но я нашёл несколько способов удалённо восстановить пароль администратора, включить telnet и изменить пароль root.

Трудно сказать, какие именно версии затронуты, поскольку мы можем скачать только недавно выпущенные. Все эти загружаемые версии затронуты:

DVRS_V9.12.7.20200422
DVRS_V11.7.4.20200721
NVSS_V13.6.1.20200723
NVSS_V22.1.0.20200722

Существуют не только разные ветки прошивок для разных устройств, но и некоторые компоненты имеют собственные версии и обновляются отдельно, например веб-API, в котором я нашёл обход аутентификации, работающий только для версий, выпущенных с середины 2019 года, независимо от номера версии прошивки. Если вам известно больше о затронутых версиях, буду признателен за помощь.

Я публикую здесь полное раскрытие, но в разумных пределах. Патч от вендора (маловероятный, поскольку они не отвечают) не заставил бы проблему исчезнуть, особенно когда ни одно устройство в интернете не имеет последней прошивки (даже близко). Настоящая уязвимость заключается в том, что эти устройства открыты в интернет. И это то, что должны исправить конечные пользователи, а не Tiandy.

В качестве бонуса я также прилагаю распаковщик прошивки и немного информации о том, как получить доступ к потокам через RTSP/RTMP (удачи найти это в руководстве).

Что здесь есть

Сначала я представляю скрипты:

  • Восстановление пароля
  • Получение root

Затем я кратко объясняю, что делают эти скрипты и почему. Я не повторяю код, но стараюсь дать достаточно контекста, чтобы вы могли понять код:

  • Обзор
  • Уязвимости
  • За пределами восстановления пароля

Наконец, материал становится относительно техническим:

  • Распаковка прошивки
  • Поиск устройств Tiandy в интернете
  • Бонус: URL RTSP и RTMP

Восстановление пароля

Вам понадобится Python 3 с PyCrypto.

Сначала попробуйте recover.py. Для этого требуется доступность порта 3001:

python3 recover.py [HOST]

если всё пройдёт хорошо, будут выведены учётные данные администратора.

Если этот порт недоступен, может сработать веб-порт. Для этого понадобится URL:

python3 cgi_recover.py http://123.45.67.89
python3 cgi_recover.py https://123.45.67.89

Если ничего из вышеперечисленного не работает, проверьте, включён ли telnet. Если он включён, вы можете получить root на устройстве напрямую, просто взломав этот хэш:

support:$1$$AErA9BQgLjrxTJB1748k71:501:501:Linux User,,,:/home/support:/bin/sh

(обязательно откройте PR, если вам действительно удастся его взломать :D)

Получение root

Старая прошивка

В более старой прошивке NVR V7 вы можете выполнять команды напрямую:

python3 ftpupdate.py [host] [adminpass] '[cmd]'

но она не выводит результат. Чтобы упростить задачу, я включил этот сокращённый вариант:

python3 ftpupdate.py [host] [adminpass] adduser [username] [password]

Это добавит ещё одного пользователя с uid 0.

Более новая прошивка

Сначала включите telnet с помощью:

python3 telnet.py [host] [adminpw]

или для недавних устройств:

python3 cgi_recover.py [host] telnet

Затем вы можете перезаписать /etc/passwd (предполагаю, вы знаете, как это работает). Сначала попробуйте filetransport.py (для NVR):

python3 filetransport.py [host] [adminpass] put /etc/passwd <[source_file]

это не даёт обратной связи, нужно проверить, попытавшись войти...

Для моделей IPC, где filetransport.py не работает, попробуйте upgrade_rw.py:

python3 upgrade_rw.py [url] [adminpass] /etc/passwd <[source_file]

(это тоже не даёт обратной связи)

Наконец, для ещё более новых устройств это можно сделать через веб-API:

python3 cgi_recover.py [url] write /etc/passwd <[source_file]

Если ни один из вышеперечисленных способов не сработал (проверьте, можете ли вы войти), повторите все эти методы, но перезапишите вместо этого /config/etc/passwd. В некоторых версиях прошивки /etc/passwd — это симлинк на него. Наконец, можно также попробовать перезаписать /tdfs/etc/passwd, но после этого, возможно, потребуется перезагрузка устройства; чтобы перезагрузить его, используйте:

python3 reboot.py [host] [adminpass]

Обзор

Старая прошивка V7 (IPC и NVR), судя по всему, не затронута, но если у вас есть пароль администратора, для NVR существует аутентифицированная RCE (ftpupdate.py), а для IPC скрипт upgrade-rw.py может использоваться для перезаписи /etc/passwd.

В более поздних версиях прошивки NVR (V9 и V11) есть учётная запись по умолчанию, которая в сочетании с «пассивным» повышением привилегий позволяет восстановить пароль администратора. Затем мы можем перезаписать /etc/passwd с помощью filetransport.py.

Хотя в прошивке IPC нет учётной записи по умолчанию, появляется другой метод восстановления — метод PSW. Это механизм восстановления пароля, в котором нет вообще никакой безопасности. Он присутствует во всех загружаемых версиях прошивки, начиная с V9. В то время как filetransport.py работает только на NVR, upgrade_rw.py достигает той же цели на IPC, используя механизм обновления, так что мы всё равно можем получить root-доступ.

Прошивка 2019 года представляет ещё один вектор атаки — обход аутентификации через веб-API. Экспортировав файл конфигурации без аутентификации, мы можем восстановить пароль и подготовить пакет обновления для перезаписи произвольных файлов.

Что касается уязвимостей, их четыре:

  • Вшитые учётные данные telnet (старая прошивка NVR)
  • Аутентифицированное повышение привилегий (любой пользователь может прочитать пароль администратора)
  • Небезопасное восстановление пароля (ключ симметричного шифрования, встроенный в бинарник)
  • Обход аутентификации веб-API (добавление определённых строк к пути URL отключает аутентификацию)

Обратите внимание, что я не исследовал «облачные» функции, то есть возможность перечисления устройств и, соответственно, подключения к устройствам, не открытым в интернет (как это делается с устройствами Xiongmai).

Уязвимости

Вшитые учётные данные telnet для старой прошивки

В старых версиях telnet включён по умолчанию, и вот что мы можем найти в файле /etc/passwd:

support:$1$$AErA9BQgLjrxTJB1748k71:501:501:Linux User,,,:/home/support:/bin/sh

(пароль root обновляется динамически; кроме того, я не взломал этот хэш, так что пул-реквесты более чем приветствуются :D)

Пользователь support (на самом деле присутствующий во всех версиях прошивки) может показаться непривилегированным, но, разумеется, у него достаточно прав, чтобы прочитать пароль Admin и перезаписать доступные для записи всеми init-скрипты в /etc/init.d или даже создать новые :)

Учётная запись по умолчанию + аутентифицированное повышение привилегий

Концептуально метод очень прост. Мы просто отправляем пакет входа и читаем ответ. И всё, потому что ответ об успешном входе содержит учётные данные всех пользователей, независимо от наших привилегий. Хотя так было и в V7, практически этот метод стал полезен только после появления учётной записи по умолчанию в прошивке NVR. Неудаляемая учётная запись «Default» не имеет удалённых привилегий, так что с ней ничего нельзя сделать. Ну, разве что прочитать пароль администратора...

Скачать инструмент