principal2.jpg
Blog HbS

RCE con Powershell

iStock-674228128-600x337

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. 

Entrevista a Chema Alonso

By accepting you will be accessing a service provided by a third-party external to https://www.hackbysecurity.com/

Logo_blanco_web.png

fbintwtwtw

Pida más información en: info@hackbysecurity.com
o
Contáctenos

Agrega tu email para recibir novedades de seguridad
Estoy de acuerdo con el Términos y Condiciones