Skip to content
iCSeeU exploit

iCSeeU exploit

Sploitus September 19, 2026

![](

Это набор инструментов/PoC/эксплойтов, которые можно использовать для видеозвонков камер iCSee через локальную сеть (а возможно, и для камер без видеозвонков). Это можно легко использовать для прошивки альтернативных прошивок в качестве замены метода обновления через SD-карту.

**Примечание:** Любой эксплойт повреждения памяти будет работать только в том случае, если версия прошивки вашей камеры — `V5.00.R02.000949U5.10000.141324.0000010` или `V5.00.R02.000807E5.10000.346724.0000010` — эти эксплойты полагаются на фиксированные смещения, которые меняются при каждой сборке прошивки.

[0] Разведка, разбор и извлечение прошивки

[2] Поиск бесполезных целочисленных переполнений + несколько полезных ошибок

[3] Смерть от переполнения стека + забавы с канарейками

[6] Подтверждение + полный эксплойт повреждения памяти на второй камере

* `pycryptodome` : Для шифрования входа RSA

Использует метод `get_system_info` для получения информации о камере через порт 34567.

"DeviceModel": "IPC_GK7201V300_G2-WR-V_S38",

"HardWare": "IPC_GK7201V300_G2-WR-V_S38",

"SoftWareVersion": "V5.00.R02.000949U5.10000.141324.0000010",

Использует оставшуюся текстовую функциональность для извлечения журналов с устройства (журналы оказываются в `FTPTestDir/Test`).

Эксплуатирует уязвимость записи файлов на SD-карту и уязвимость выполнения бинарного файла _iperf_ , что позволяет удаленно выполнить бинарный файл, находящийся на SD-карте, чтобы получить обратную оболочку и запустить отладчик GDB, который подключается к основному процессу `App`.

**Примечание:** Не останавливайте программу более чем на 30 секунд, иначе сторожевой таймер сработает, и процесс `App` перезапустится!

**Примечание 2:** Возможно, вам потребуется изменить жестко заданные IP-адреса в полезной нагрузке (`GDB_Revshell/remote_mgmt.c`) на IP-адрес вашей машины в локальной сети и пересобрать полезную нагрузку.

Эксплуатирует уязвимость записи файлов на SD-карту и уязвимость внедрения команд _iperf_ , что позволяет удаленно выполнить бинарный файл, находящийся на SD-карте, чтобы получить обратную оболочку и запустить отладчик GDB, который подключается к основному процессу `App`.

Это полезно для устройств, на которых уже присутствует бинарный файл `iperf`, что препятствует использованию другого метода.

**Примечание:** Не останавливайте программу более чем на 30 секунд, иначе сторожевой таймер сработает, и процесс `App` перезапустится!

**Примечание 2:** Возможно, вам потребуется изменить жестко заданные IP-адреса в полезной нагрузке (`GDB_Revshell/remote_mgmt.c`) на IP-адрес вашей машины в локальной сети и пересобрать полезную нагрузку.

Эксплуатирует внедрение команд _iperf_ для установки обратной оболочки.

**Примечание:** Возможно, вам потребуется изменить жестко заданные IP-адреса в полезной нагрузке (`Revshell_Inject/remote_mgmt.c`) на IP-адрес вашей машины в локальной сети и пересобрать полезную нагрузку.

### Эксплойт переполнения стека для GOKE GK7201

Это эксплойты для второго переполнения стека в обработчике сообщений типа _0x7d8_. Это переполнение интересно тем, что позволяет обойти стековую канарейку и получить выполнение кода.

Вам потребуется собрать полезную нагрузку диспетчера, прежде чем они заработают (выполните `make` в каталоге `PayloadDispatcher`), и полезную нагрузку, которую вы хотите запустить на камере, выполнив `make` в соответствующих каталогах (например, `ImageDisplay`).

* Версия прошивки камеры должна быть _V5.00.R02.000949U5.10000.141324.0000010_ (я не могу гарантировать, что она будет работать для других).

Демонстрирует, что у нас есть выполнение кода, мигая экраном.

python3 icseeu.py exploit_goke screenflash

![](

Демонстрирует, что у нас есть контроль над экраном, мигая цветами RGB.

![](

Использует запись файла для загрузки сырого изображения RGB 5:6:5. Выполните `ffmpeg -i image.jpg -vf scale=240:320 -c:v rawvideo -pix_fmt rgb565 -f rawvideo image.raw` на изображении в каталоге, чтобы получить файл `image.raw` в каталоге `ImageDisplay`. Изображение будет отображено на экране.

python3 icseeu.py exploit_goke imagedisplay

![](

Демонстрирует, что мы можем считывать состояние кнопок: мигает цветом, когда обнаруживается нажатие одной из кнопок.

python3 icseeu.py exploit_goke buttontest

![](

Минимальная реализация игры Pong, которая демонстрирует, что у нас есть контроль над экраном и передними кнопками, а также демонстрирует немного более сложную полезную нагрузку.

![](

Перенесенный эмулятор NES, который может запускать `rom.nes`, помещенный в каталог `GOKE_Payloads/nes`. Выполните `make` в `GOKE_Payloads/nes/smolnes` и `GOKE_Payload/nes` для генерации бинарных файлов.

### Эксплойт переполнения стека для XM530V200WX1

Это эксплойт для переполнения стека на другой камере без стековых канареек, но с NX. Я написал ROP-цепочку для поворота стека и выполнения большой ROP-цепочки. Эта ROP-цепочка отображает исполняемую память, загружает содержимое файла в память, создает поток, который выполняет его, затем восстанавливает состояние стека и продолжает выполнение.

Вам потребуется собрать полезную нагрузку, прежде чем они заработают. Выполните `make` в соответствующих каталогах (например, `ImageDisplay`).

* Этот эксплойт довольно ненадежен, он работает примерно в 40-50% случаев (по неизвестным причинам он совершенно не любит создавать потоки).

* Версия прошивки камеры должна быть _V5.00.R02.000807E5.10000.346724.0000010_ (я не могу гарантировать, что она будет работать для других).

Демонстрирует, что у нас есть выполнение кода, мигая экраном.

python3 icseeu.py exploit_xm530 screenflash

![](

Демонстрирует, что у нас есть контроль над экраном, мигая цветами RGB.

![](

Использует запись файла для загрузки сырого изображения RGB 5:6:5. Выполните `ffmpeg -i image.jpg -vf scale=240:320 -c:v rawvideo -pix_fmt rgb565be -f rawvideo image.raw` на изображении в каталоге, чтобы получить файл `image.raw` в каталоге `ImageDisplay`. Изображение будет отображено на экране.

python3 icseeu.py exploit_xm530 imagedisplay

![](

Более подробная информация об этих доказательствах концепции (и их основных причинах) содержится в блогах в верхней части этого файла readme.

Это PoC вызывает сбой из-за целочисленного переполнения вниз в HTTP-сервере.

Это PoC выполнит файл, хранящийся на SD-карте по пути `iperf/iperf` (либо ash-скрипт, либо бинарный файл).

Это PoC выполнит команду `reboot` через внедрение команд; файл `iperf/iperf` должен существовать на SD-карте, чтобы это сработало.

Это PoC вызывает утверждение (assert) из-за большого выделения памяти в обработчике сообщений типа _0x41a_ (вызывая сбой).

Это PoC вызывает сбой из-за целочисленного переполнения, которое приводит к странному чтению за пределами буфера в обработчике сообщений _0x41a_.

Это PoC вызывает сбой из-за переполнения стека в обработчике сообщений типа _0x43a_.

Это PoC вызывает сбой из-за первого переполнения стека в обработчике сообщений типа _0x438_.

Это PoC вызывает сбой из-за второго переполнения стека в обработчике сообщений типа _0x438_.

Это PoC вызывает сбой из-за переполнения стека в обработчике сообщений типа _0xdac_.

Это PoC вызывает сбой из-за переполнения стека в обработчике сообщений типа _0x5a4_.

Это PoC вызывает сбой из-за переполнения стека в обработчике сообщений типа _0x414_.

Это PoC вызывает сбой из-за первого переполнения стека в обработчике сообщений типа _0x410_.

Это PoC вызывает сбой из-за второго переполнения стека в обработчике сообщений типа _0x410_.

Это PoC вызывает сбой из-за переполнения стека в обработчике сообщений типа _0x5a8_.

Это PoC вызывает сбой из-за переполнения стека в обработчике сообщений типа _0x41e_.

Это PoC вызывает сбой из-за первого переполнения стека в обработчике сообщений типа _0x7d8_.

Это PoC вызывает сбой из-за второго переполнения стека в обработчике сообщений типа _0x7d8_.

Это PoC вызывает сбой из-за переполнения стека в обработчике сообщений типа _0x8a6_ (присутствует не во всех камерах).

Extracted Entities