2009/02/25

"Sysinfos" is powned .

Au lendemain de l'article sur les .bss overflow posté par mon ami HyP sur son blog , j'ai eu envie de voir comment bypasser l'authentification de son "Sysinfos" mais avec une approche différente .

Bon , aprés coup je me suis vite rendu compte que ce serait trés classique voir presque triste , je le reconnait mais 24h aprés la publication de son article , ça me tenter donc ...

Code de Sysinfos.c ici

Premiere étape comme souvent , on désassemble a la recherche d'une ou plusieurs intructions intéréssantes ( ici avec objdump) de cette maniere :

objdump -d Sysinfos

et...bingo !

Aprés avoir parcouru les lignes ,on se rend vite compte de la simplicité de la chose lorsqu'on tombe sur un JNE (Jump if Not Egal ) intéréssant.

...........................................
...........................................>

8048410: 55 push ebp
8048411: 89 e5 mov esp,ebp
8048413: 53 push ebx
8048414: 83 ec 04 sub 0x4,esp
8048417: 80 3d bc 98 04 08 00 cmpb 0x0,0x80498bc
804841e: 75 40 jne 8048460 <__do_global_dtors_aux+0x50>
;saut au destructeur si valeur inégale

<..........................................
..........................................


Reste plus qu'a l'éditer a l'aider d'un éditeur hexadécimal pour en modifier la valeur sachant que l'on doit remplacer la valeur 75 par 74 .

Nous avons jne = 75
Nous allons faire en sorte d'obtenir je = 74

Editons donc a l'aide (par exemple ) de Ghex .

Ghex2 Sysinfos

On va rechercher la valeur hexa 75 40 et hop , y'a plus qu'a modifier , enregistrer, faire un chmod +x Sysinfos et lancer le prog pour vérifier.


[root@localhost kmkz]# ./Sysinfos2 i
Vérification de votre mot de passe..
'+) Authentification réussie...
U'r root!

sh 3.0 #


Et voila , le Sysinfos est encore une fois bypasser et ce d'une façon des plus élémentaire mais c'était " just for fun " ;-) .