PDA

Ver la versión completa : Desbordamiento de búfer en el cmd.exe de Windows NT/2000



|RooT|
25-02-2003, 12:02
cmd.exe se ve afectado por un fallo al procesar el comando cd con un
nombre de ruta largo. En Windows NT 4.0 esto puede provocar un
desbordamiento de búfer, mientras que bajo Windows 2000 provocará un
fallo en el proceso del archivo batch.

cmd.exe es el intérprete de comandos para la familia de sistemas
operativos Windows NT. También se emplea para procesar archivos .bat y
.cmd.

El sistema de archivos NTFS permite la creación de rutas de longitud
prácticamente ilimitada, pero la API de Windows no permite rutas mayores
de 256 bytes. Según la documentación de la API de Windows se puede
evitar la comprobación de la ruta solicitada con el prefijo \\?\ para el
nombre de archivo.

El cmd.exe de Windows NT 4.0 se ve afectado por un desbordamiento de
búfer en el comando CD si la ruta destino es mayor de 256. Esta
vulnerabilidad puede ser explotada fácilmente para lograr la ejecución
de código.

El cmd.exe de Windows 2000 no se ve afectado por un desbordamiento de
búfer, sin embargo si se cambia a un directorio mayor de 256 caracteres
cmd.exe quedará encerrado en dicho directorio, impidiendo cambiar a
cualquier otro (fallará incluso el comando cd..). Esto puede provocar un
ataque de denegación de servicio contra scripts de mantenimiento.

Se puede realizar una prueba de concepto con el siguiente archivo batch:

@echo off
SET
A=AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAA
SET B=BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB BBBB
mkdir \\?\c:\%A%
mkdir \\?\c:\%A%\%A%
mkdir \\?\c:\%A%\%B%\
c:
cd \
cd AAAAAAAAAAAA*
cd AAAAAAAAAAAA*
cd BBBBBBBBBBBB*
cd ..

Fuente :
http://www.hispasec.com/unaaldia/1571