. Это можно легко использовать для прошивки альтернативных прошивок в качестве замены метода обновления через 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
.
* Этот эксплойт довольно ненадежен, он работает примерно в 40-50% случаев (по неизвестным причинам он совершенно не любит создавать потоки).
* Версия прошивки камеры должна быть _V5.00.R02.000807E5.10000.346724.0000010_ (я не могу гарантировать, что она будет работать для других).
Демонстрирует, что у нас есть выполнение кода, мигая экраном.
python3 icseeu.py exploit_xm530 screenflash
 содержится в блогах в верхней части этого файла 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_ (присутствует не во всех камерах).
The full story
This article is one source in a clustered incident — the cluster page carries the summary, timeline and every other outlet covering it.
