Day #19 of
#100DaysOfCyber : Le concept du jour l'
#OS #Command #Injection
Après avoir vu les exécutions de code via les uploads de fichiers, aujourd'hui on va parler d'une autre faille hyper critique : l'OS Command Injection (Injection de commandes système).
Le concept est simple : cette faille arrive quand le backend prend une entrée utilisateur et la passe directement à une fonction qui exécute des commandes sur le terminal du serveur (comme system() ou exec()), sans rien nettoyer.
Imaginez une application web où le dev veut créer une fonctionnalité pour tester la connectivité d'une adresse IP. Côté code backend, il fait ça :system("ping -c 4 " ip_user);
Ce que le dev attend : L'utilisateur tape 8.8.8.8, et le serveur exécute sagement ping -c 4 8.8.8.8.
Ce que fait le pentester : Il sait comment fonctionnent les terminaux. À la place d'une simple IP, il va injecter des opérateurs comme ;, && ou |. Par exemple, il va envoyer : 8.8.8.8 ; whoami.
Du coup, le serveur va exécuter aveuglément deux commandes à la suite : d'abord le ping, puis le ; va forcer le terminal à lancer la commande suivante : whoami.
À partir de là, le pentester a un accès direct au terminal. Il lui suffit d'enchaîner avec un ls -la, un cat pour lire des fichiers confidentiels, ou carrément injecter un Reverse Shell pour prendre le contrôle total de la machine.
#Un dev qui comprend la sécurité.
#Un pentester qui comprend le code.
@_makh0u
#Cybersecurity #WebSecurity #DevSecOps #Backend #CommandInjection #RCE #FullStack