Directorio oculto con 0x0d0x0a

5

Alguien ha ocultado un directorio para engañar a las políticas en una cuenta de FTP. El nombre del directorio era 0x0d0x0a .

¿Cómo creó el usuario una carpeta con ese nombre?

El directorio es casi invisible con ls pero se puede descubrir con find .

    
pregunta hotips 07.02.2013 - 18:06
fuente

1 respuesta

10

El nombre del directorio no es la cadena '0x0d0x0a' (que son ocho caracteres claramente visibles) sino una cadena que consta de exactamente dos caracteres, el ASCII "CR" (retorno de carro) y "LF" (avance de línea), que son codificado como dos bytes de valor 13 (0x0D en hexadecimal) y 10 (0x0A), respectivamente.

Desde el punto de vista del sistema operativo, los nombres de archivos y directorios son solo grupos de bytes, con solo dos valores de bytes especiales: 0x00 (que termina la cadena) y 0x2F (la '/' que separa los nombres de directorios en una ruta) (Estoy asumiendo un servidor similar a Unix aquí, pero la situación sería similar en un sistema Windows). Los bytes de valor 0x0D y 0x0A no tienen ningún significado especial para el kernel. Sin embargo, las herramientas con un resultado basado en texto pueden ser engañadas (por ejemplo, puede mostrar el nombre como una nueva línea, que no sería claramente visible como tal en el resultado).

Con un shell de Linux, puede crear dicho directorio con este comando:

mkdir 'printf '\x0d\x0a''

Para hacer eso desde un cliente FTP, deberías profundizar en la forma en que protocolo FTP para saber cómo codificar el comando MKD correspondiente, pero no veo ninguna imposibilidad conceptual.

    
respondido por el Thomas Pornin 07.02.2013 - 18:22
fuente

Lea otras preguntas en las etiquetas