- info@hackbysecurity.com
- +34605 237 826
Powershell es un lenguaje de scripting muy útil en sistemas Windows para automatizar tareas, realizar instalaciones, … pero tiene algunos bugs que pueden ser aprovechados por un atacante, hoy vamos a ver como podemos ejecutar código sin que nuestra víctima sea consciente.
No voy a contaros como se desarrolla en powershell, simplemente comentaros que las listas se manejan, al igual que en muchos otros lenguajes, por su posición; es decir, dada una lista de 3 elementos lista=[perro, gato, pájaro], el primer elemento seria lista[0], el segundo lista[1] y el tercero lista[2]; pues bien, ¿qué sucede si en lugar de crearnos una variable que funcione como una lista creamos un fichero que parezca una lista?
Respuesta rápida, que podemos ejecutar ficheros externos no deseados, vamos a verlo.
Imaginad que tenemos dos ficheros en powershell en el mismo directorio, Tutoria1.ps1 que contenga:
Write-Output "Hello World!"
Y 1.ps1 que contenga:
Write-Output "Hello World!" start calc.exe
La ejecución del fichero Tutoria1.ps1 será:
Pero, ¿qué sucede si cambiamos el nombre del fichero Tutoria1.ps1 por [Tutoria1.ps1]? Que por un fallo de powershell interpreta que es una lista y en su lugar se ejecuta 1.ps1
En este caso es obvio que nuestra víctima se daría cuenta de la ejecución de la calculadora, pero esa linea de código se puede sustituir por alguna otra, no voy a daros más pistas, pero pensad en el posible potencial dañino que puede tener, ya sabéis estad atentos a lo que os envían u os descargáis.
Y echadle un ojo a las políticas de ejecución de powershell, que se pueden modificar.
Always Learning.
By accepting you will be accessing a service provided by a third-party external to https://www.hackbysecurity.com/
¿Quieres dedicarte a la ciberseguridad y no sabes por dónde empezar?
Chema Alonso te ayuda a identificar tu perfil dentro de la ciberseguridad