Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
esp32_esp8266_attacks — ESP32/8266 Wi-Fi 漏洞的概念验证(CVE-2019-12586、CVE-2019-12587、CVE-2019-12588) | Kitploit
工具/GitHubGitHub/matheus-garbelini/esp32_esp8266_attacks
嵌入式系统安全Wi-Fi审计漏洞分析漏洞利用模糊测试无线安全渗透测试硬件与物联网安全

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
GitHub
matheus-garbelini/esp32_esp8266_attacks

esp32_esp8266_attacks

ESP32/8266 Wi-Fi 漏洞的概念验证(CVE-2019-12586、CVE-2019-12587、CVE-2019-12588)

查看仓库
8206947年前Kitploit 审核通过

ESP32/ESP8266 Wi-Fi 攻击

本仓库是 ASSET 研究组 的研究成果的一部分。 attack_logo

本仓库演示了针对流行的 ESP32/8266 IoT 设备的 3 种 Wi-Fi 攻击:

  • Zero PMK 安装 (CVE-2019-12587) - 劫持连接到企业网络的 ESP32/ESP8266 客户端;
  • ESP32/ESP8266 EAP 客户端崩溃 (CVE-2019-12586) - 使连接到企业网络的 ESP 设备崩溃;
  • ESP8266 信标帧崩溃 (CVE-2019-12588) - 使 ESP8266 Wi-Fi 设备崩溃。

有关更多详情和乐鑫(Espressif)的补丁,请点击每个漏洞对应的链接。

这些漏洞是在 ESP32 和 ESP8266 的 SDK 中发现的。发现时,它们的版本分别为 ESP-IDF v4.0-dev-459-gba1ff1692 和 NONOS-SDK v3.0-103-g7a31cb7。

虽然提供了一个定制版 hostapd 用于测试前两个漏洞,但对于最后一个漏洞,则是使用一个 ESP8266 来注入伪造的 802.11 信标帧,以使其同类设备崩溃(无意双关!)。

PoC 构建与运行说明
运行预编译二进制文件
root@kitploit:~
如果你运行的是 Debian 或 Ubuntu,可以直接执行 `hostapd-2.8_binary` 文件夹中已编译好的 hostapd。运行 `hostapd-2.8_binary/run_hostapd_exploit.sh` 即可启动访问点来测试漏洞,或运行 `hostapd-2.8_binary/run_zero_pmk_EAP.sh` 启动时不进行此测试。请注意,你需要使用 `service network-manager stop` 停止网络服务,以释放你的 Wi-Fi 接口。
TLDR:
root@kitploit:~
service network-manager stop
./run_zero_pmk_EAP.sh # to test against CVE-2019-12587 (remember to restart ESP first)
./run_crash_esp_EAP.sh # to test against CVE-2019-12586
从源码运行
root@kitploit:~
如果出于某种原因该二进制文件在你的系统上无法运行,你可以通过执行脚本 `./buid.sh` 来编译项目 `hostapd-2.8_source`。该脚本会在运行工具前安装以下依赖:`build-essential pkg-config git libnl-genl-3-dev libssl-dev libnl-route-3-dev`。

构建成功后,你可以运行脚本 `./run_zero_pmk_EAP.sh` 启动访问点以测试漏洞,或运行 `./run_hostapd_normal.sh` 启动时不进行测试。
TLDR:
root@kitploit:~
./build
./run_zero_pmk_EAP.sh # to test against CVE-2019-12587 (remember to restart ESP first)
./run_crash_esp_EAP.sh # to test against CVE-2019-12586
测试信标帧崩溃 (CVE-2019-12588)

为了编译 beacon_frame_crasher 文件夹中用于 esp8266 的代码,需要遵循 ESP8266 Deauther 中的步骤。这是一个修改版的 ESP8266 板级支持包,允许注入原始 802.11 帧。如果你有闲置的 wemos d1 mini 开发板,beacon_frame_crasher/ESP8266Crasher.ino.d1_mini.bin 中还提供了一个二进制文件用于快速测试。请注意,该代码硬编码为让一个配置为 ssid=TEST_KRA 接入点的 ESP8266 崩溃。“beacon frame crasher” 设备一启动,连接到该接入点的其他 ESP8266 设备应会间歇性重启。

或者,如果你的 Wi-Fi 硬件支持监听和注入,可以运行以下 Python 脚本:

root@kitploit:~
sudo apt-get install -y aircrack-ng
sudo airmon-ng check kill
sudo airmon-ng wlan0 start # wlan0 is your wifi interface name
pip install scapy
python beacon_frame_crasher/ESP8266Crasher.py

PoC 输出

如果你的 ESP 设备 SDK 存在 CVE-2019-12587 漏洞,你应该会从 hostapd 收到如下输出:

zero_pmk

如果你的 ESP 设备 SDK 存在 CVE-2019-12586 漏洞,你应该会从 hostapd 收到如下输出:

eap_crasher

在这种情况下,由于设备每次尝试与 hostapd 连接时都会重启,你应该会收到大量表示重新连接的日志。如果你正在监视设备的串口,还可以收到跟踪日志。

配置

默认情况下,该 PoC 接入点具有以下默认配置:

  • ssid=TEST_KRA
  • channel=9
  • bssid=28:c6:3f:a8:af:c5
  • interface=wlan0
  • server_cert=wpa2_server.pem
  • private_key=wpa2_server.key
  • user=matheus_garbelini
  • user_password=testtest
  • EAP method=PEAP

要更改这些选项,请修改 hostapd 根目录中的 hostapd.conf 文件(hostapd-2.8_binary/hostapd.conf 或 hostapd-2.8_source/hostapd/hostapd.conf)。请将 interface 参数改为与你的 Wi-Fi 网卡匹配;如果你希望测试 ESP32/8266 客户端测试代码,建议将其余参数保持默认。仓库中也包含了正确的证书(与 ESP-IDF 仓库中的相同),因此无需在 hostapd 文件夹中更改它们。

如果你想更改 EAP 方法或用户名凭据,只需更改 hostapd.eap_user

注意

检查你的 openssl 库是否允许使用 TLS 1.0 版本。你通常可以在 /etc/ssl/openssl.cnf 中更改此配置,将最后几行改为:

root@kitploit:~
[system_default_sect]
MinProtocol = TLSv1.0
CipherString = DEFAULT@SECLEVEL=1

测试客户端代码(可选)

用于测试易受影响设备的代码位于 esp_client_test_codes 文件夹中。

ESP32_Arduino_EAP_Client 和 ESP8266_Arduino_EAP_Client 可以使用各自的 Arduino 板级支持包(arduino-esp32 和 arduino-esp8266)进行编译。至于非 Arduino 代码,则需要 ESP-IDF 和 ESP8266_NONOS_SDK 来编译 ESP8266_EAP_Client 和 ESP32_EAP_Client。请注意,你需要使用与前文所述相同或更早的 SDK,才能触发所描述的所有漏洞。

致谢

本研究部分得到了 Keysight Technologies 的支持。

下载工具