Si quieres enterarte de todo, y ver las múltiples opciones que vamos a estar usando, sigue leyendo.
Lo habitual al intentar saltarse la restricción de subida de ficheros al encontrarnos ante uno de estos:
Y más cuando nos dice "fichero no permitido" al tratar de subir un PHP cuando solo está permitido subir imágenes (JPG, PNG, etc). En este momento, nos tocan la fibra y nos suena por dentro eso de "veremos si puedo o no" xD.
Voy a listar algunas de las formas en las que puedes intentar saltar dicha restricción. Si crees que me dejo alguna o tienes alguna que aportar, estaré encantado de leerte en comentarios.
Comencemos:
Cuando estamos frente a un servidor que utiliza PHP, si tienes suerte, puede que acepte alguno de los siguientes:
php, .php2, .php3, .php4, .php5, .php6, .php7, .phps, .phps, .pht, .phtm, .phtml, .pgif, .phar, .inc
Si estás antes una web con ASP, igual cuela alguno de estos:
.asp, .aspx, .ashx, .asmx, .aspq, .axd, .soap, .vbhtm, .vbhtml, .asa, .cer,
Si te encuentra con una web con JSP, igual te ayudan estos:
.jsp, .jspx, .jsw, .jsv, .jspf, .wss, .do, .action
También puede ser que encuentres una web con PERL:
.pl, .cgi
O con ColdFusion:
.cfm, .cfml, .cfc, .dbm
Bien, si ya has probado cada uno de ellos en cada lenguaje (puedes probar a jugar con mayúsculas y minúsculas: .pHp4) y sigues sin poder saltar la restricción, veamos que más se puede hacer.
Otro de los métodos habituales es jugar con las dobles extensiones:
archivo.php.jpg
archivo.jpg.php5
Otro truco es probar con caracteres especiales al final, ayudándote de Burp, será más sencillo:
file.php%0d%0a
file.php/
file.php.\
file.
file.php....
file.php%20
file.php%0a
file.php%00
Puedes intentar engañar al "analizador de extensiones" duplicando la extensión como hemos visto o añadiendo los null bytes entre las extensiones:
archivo.php%0a.png
archivo.php%0d%0a.png
archivo.phpCulo123png
archivo.php%00.png
archivo.php\x00.png
Incluso una tercera extensión:
archivo.png.jpg.php
archivo.php%00.png%00.jpg
Como se puede observar, es ir jugando con todo lo visto.
Si te encuentras con un servidor Windows, puedes probar a meter los dos puntos (:) después de la extensión que está prohibida y antes de la permitida, quedando así:
archivo.asax:.jpg
Para luego intentar modificar el nombre con otras técnicas, que ahora mismo, no vienen al caso.
Y se puede usar:
archivo.aspx::$data
Otro método utilizado en las auditorías de pentesting pasa por bypasear la cabecera Content-Type:
Content-Type: image/png , text/plain , application/octet-stream
También se puede jugar con la herramienta exiftool para añadir código PHP utilizando los magic number y añadiendo el código PHP que queremos que nos interprete:
Además, si te encuentras con un servidor en el que puedes subir PHP, quizá sea interesante intentar cargar un .htaccess para ejecutar código. Si por el contrario estás antes un servidor con ASP, puedes hacer algo parecido con el .config.
Otro que puedes probar es con los ficheros .phar, que es algo como los .jar de Java y te pueden valer para ejecutarlos.
También prueba con los archivos .inc, que se usan para importar ficheros, igual algún sysadmin se ha dejado eso xD.
Añadimos también el truco de los "Magic Headers Bytes":
En JPG: "\xff\xd8\xff"
En PNG: "\x89PNG\r\n\x1a\n\0\0\0\rIHDR\0\0\x03H\0\xs0\x03["
No nos olvidemos, que quizá se permita la subida de un fichero comprimido (.zip) y que unido a otra vulnerabilidad, quizá nos permita descomprimir y ejecutarlo.
Por último, os recomiendo probar las extensiones de Burp como UploadScanner Burp extension
Sé que existen más técnicas y más avanzadas, pero bueno, aquí tenéis un buen puñado para que probéis en vuestras próximas auditorías.
Nos vemos en la siguiente.
0 comentarios:
Publicar un comentario