Historique d'une vulnérabilité NOT

Il y a quelque temps, j'ai eu l'occasion d'expérimenter les paramètres d'un routeur ordinaire. Le fait est que le 1er avril m'a obligé à jouer mes camarades de l'université. L'université avait un réseau Wi-Fi. J'ai décidé de créer un faux réseau sur mon routeur (définir un nom, un mot de passe et définir l'adresse MAC de l'un des points d'accès légitimes), démarrer mon propre serveur Web DNS sur l'ordinateur portable. Tous ceux qui se sont accidentellement connectés à mon réseau et ont essayé d'accéder à n'importe quel site doivent être redirigés vers ma page avec une photo d'April Fools. Mais l'histoire n'est pas à ce sujet. Quand je fouillais dans les paramètres du routeur, j'ai trouvé un bug intéressant, je vais vous en parler aujourd'hui.

image

Au stade de la configuration, le routeur était connecté à Internet. Mais pour une raison quelconque, les appareils connectés au Wi-Fi ne recevaient pas Internet. Je dois comprendre. Il y avait un onglet dans le panneau du routeur avec la possibilité d'utiliser l'utilitaire ping, donc telnet ne peut pas être activé (j'espère que tous les lecteurs comprennent le danger que telnet soit ouvert sur l'extérieur?). Le formulaire ressemblait à ceci:



Cette fonctionnalité est implémentée comme suit. Le programme du routeur reçoit de l'utilisateur une chaîne contenant l'adresse, puis substitue la commande ping à la chaîne d'appel:

ping -c < > <> 

Dans quelle mesure le routeur vérifie-t-il la chaîne contenant l'adresse? C'est cette question qui s'est posée dans ma tête. J'ai ensuite remplacé l'esperluette et la commande ls . J'ai compris ceci:



Pour ceux dans le réservoir


Sur les systèmes UNIX, nous pouvons forcer bash à exécuter une commande en arrière-plan, en lui substituant une esperluette. Dans le même temps, nous pouvons substituer une commande après l'esperluette, et elle sera exécutée simultanément avec la première. Ce que j'ai utilisé dans ce cas. En remplaçant "8.8.8.8 & ls", j'ai obtenu "ping -c 3 8.8.8.8 & ls". Le routeur a exécuté les commandes ping et ls simultanément. Puis apporté le résultat.

Si ce bug était autorisé ailleurs, il deviendrait une menace très sérieuse. Après tout, une telle vulnérabilité aiderait un attaquant à forcer le routeur à exécuter n'importe quelle commande, ou même à obtenir un contrôle complet sur l'appareil. Ces vulnérabilités sont classées CWE-78 (OS Command Injection) .

Je ne me suis pas assis, et je me suis empressé d'écrire au fabricant au sujet du bug trouvé. J'ai décrit en détail le modèle du routeur, la version du firmware et le script de lecture du bug. A laquelle j'ai reçu une réponse intéressante:

image
Traduction (textuellement)

Pourriez-vous vérifier la version matérielle sur l'étiquette inférieure du produit?
Nous n'avons pas le rév. Px. Connaissez-vous la source ou le lieu d'achat de cet appareil?
Il s'est avéré qu'ils n'ont pas tenu compte de ce que j'écrivais de Russie. Ce modèle de routeur a été distribué uniquement dans notre pays. La correspondance s'est terminée avec un nouveau firmware qui m'a été envoyé, ce qui a éliminé toutes les lacunes du précédent et ajouté de nombreuses fonctionnalités, mais pour une raison quelconque, il n'était pas dans le domaine public.

Source: https://habr.com/ru/post/fr449376/


All Articles