Injection UNIX

Empiler les commandes

Imaginons que nous aillons un formulaire qui lance une commande Linux avec pour argument la saisie de l'utilisateur. L'idée, pour exploiter ce systÚme, est d'essayer de rentrer d'autres commandes en les alignant sur une seule ligne, ce qui permettra par exemple d'afficher un fichier contenant des données privées.

Pour les commandes Linux, il existe 3 moyens :

1. Avec « ; » qui exécute les commandes sans se soucier du succÚs des commandes précédentes

$ commande1 arg1 opts1 ; commande2 arg2 opts2 ; commande3 arg3 opts3

2. Avec « && » qui exécute les commandes seulement si les précédentes ont réussi

$ commande1 arg1 opts1 && commande2 arg2 opts2 && commande3 arg3 opts3

3. Avec « || » qui exécute les commandes seulement si les précédentes ont échoué

$ commande1 arg1 opts1 || commande2 arg2 opts2 || commande3 arg3 opts3

Ainsi, aprĂšs avoir saisi l'argument attendu par le formulaire, on ajoute une autre commande avec le moyen qui vous convient. Si le formulaire demande une IP Ă  ping, alors on pourrait essayer de rentrer la commande :

127.0.0.1 ; sort index.php 

Cette commande va ainsi afficher index.php sans que le fichier soit compilé.

De la mĂȘme maniĂšre, si on devait rechercher un mot clĂ© en particulier dans un fichier, comme un flag, alors on pourrait utiliser la commande grep :

127.0.0.1 ; grep "flag" index.php 

Mis Ă  jour

Ce contenu vous a-t-il Ă©tĂ© utile ?