sábado, 31 de enero de 2015

Usar Mutillidae en metasploitable 2

Cuando intento usar la aplicacion Mutillidae, registrandome, me da errores de que la tabla en la base de datos metasploit no existe, después de mirar desde phpMyAdmin he visto que la mensionada base de datos no contiene ninguna tabla, pero hay una "sospechosa" de ser la que verdaderamente usa para crear los nuevos usuarios, y es la "owasp10", pues contiene las tablas que supuestamente está buscando la aplicación pero en la base de datos equivocada.

  Visto esto, paso a configurar la aplicación con esta base de datos, para ello voy al path /var/www/mutillidae y en el está el archivo de configuración "config.inc", el cual abro con vim de esta forma

$ sudo vim config.inc

me pide la contraseña, que es msfadmin, eso lo sabrás pues estarás ya dentro del sistema :).

Y ahora paso a editar la linea donde pone:

$dbname = 'metasploit'

para poner en ella owasp10, asi:

$dbname = 'owasp10'

Con esto, ya puedo volver a la aplicación y registrarme para poderla usar


phpMyAdmin en Metasploitable 2

No se como entrar en phpMyAdmin pues he probado con direfentes login y pass y nada, asi que por la tremenda me he creado un usario con privilegios para poder entrar y así ver las bases de datos y tablas.

 Desde la consola de metasploitable me conecto con mysql asi:

$ mysql -u root -p

y cuando me pide password pulso enter, ya estoy conectado. Puedo mirar que bases de datos hay y tambien sus respectivas tablas. Pero lo que me interesa es crear un usuario con privilegios, con lo cual hago:

mysql> GRANT ALL PRIVILEGES ON *.* TO 'user'@'localhost'
-> IDENTIFIED BY 'pass' WITH GRANT OPTION; 

De esta forma entro en phpMyAdmin con user y pass, como login y password respectivamente y puedo ver que hay configurado.


PD: Este paso lo doy para poder usar la aplicacion web Mutillidae, pues me da unos errores en la base de datos que quiere usar llamada metasploit, la cual existe pero no contiene ninguna tabla.



sábado, 24 de enero de 2015

Teclado en español para Metasploitable 2

   Desde el ordenador donde uso virtualbox (Kali-linux), vuelco el  mapa de teclado con este comando

# dumpkeys > es.map

comprimo el archivo

# gzip es.map

   Metasploitable (la máquina virtual) debe estar operativo en la red, bien para poder conectarse a nuestro anfitrion o a internet, en mi caso lo hago directamente en la red local, me explico. Tengo instalado virtualbox en el SO Kali-linux, y como este tiene servidor apache instalado, lo lanzo desde:

Aplicaciones->Kali Linux->Servicios del sistema->HTTP->apache2 start

   Copio el archivo creado es.map.gz en el directorio /var/www raiz del servidor apache. A continuación desde la maquina virtual Metasploitable ejecuto el comando wget de esta forma

$ sudo wget http://XXXXXX/es.map.gz

   XXXXXX es la ip de nuestro anfitrion y ya tenemos el archivo en nuestra maquina, ahora solo nos queda cargarlo en el sistema con loadkeys asi:

$ sudo loadkeys es.map.gz

   Y listo, aunque la próxima vez tenemos que volver a cargarlo, pero podemos crear el archivo .bashrc y meter el comando dentro, con lo cual al entrar en el sistema se "activará" de nuevo.

   Saludos :)

martes, 20 de enero de 2015

Buscador para archivos base de datos CVS

   Hola, de nuevo con un script en bash. Es muy simple, sirve para buscar dentro de un archivo CVS en texto plano separados por algún caracter especial, bien "#", ";", etc.. depende de como lo hayamos construido o exportado desde Excall por ejemplo, vete a saber...
 
  El procedimiento es el siguiente:
En esta primera pantalla una vez lo hemos ejecutado con
$ sh busca.sh
o bien
$ ./busca.sh
si le hemos dado permisos de ejecucion   "chmon +x busca.sh"
Se trata de escribir el path incluido el archivo en la entrada para texto, pero se puede ir autocomplementando con la barra espaciadora una vez de ha metido los dos o tres primeros caracteres del directorio o archivo. Una vez pillado el funcionamiento es bastante sencillo. A continuación se trata de :
elegir el separador que tenemos en nuestro archivo de base de datos, en este caso es un ",", pero se trata de introducir el que tenemos como separador de campos en nuestro archivo. Despues:
Metemos la cadena a buscar en nuestra base de datos, puede ser un nombre (como en este caso), un teléfono, ciudad, etc... depende de lo que queramos buscar ¿verdad?:

En esta pantalla elegimos las campos que queremos que nos muestre la búsqueda, como máximo son 9, aunque el archivo tenga mas campos, solo elegir hasta 9, y son muchos!!! mejor dos a tres, solo lo que nos interese.
Y nos dará la salida de la búsqueda, simple....
Y aquí el codigo:

#!/bin/bash

# (c) sierra21
function archivo(){
FILE=`dialog --stdout --title "Por favor elige un archivo" --fselect $HOME/ 14 48`
case $? in
 0)
        if [ -f $FILE ];then
            clear
        else
            archivo
        fi
;;
 1)
  echo "Cancel presionado."
        exit 0
;;
 255)
  echo "Caja cerrada."
        exit 0
;;
esac
}

function separador(){
SEPA=`dialog --stdout --title "Elije el separador de campos del archivo" --inputbox "Elije separador" 0 0 ""`
case $? in
 0)
        if [ -z $FILE ];then
            separador
        else
            clear
        fi
;;
 1)
  echo "Cancel presionado."
        exit 0
;;
 255)
  echo "Caja cerrada."
        exit 0
;;
esac
}

function busqueda(){
BUSQUEDA=`dialog --stdout --title "Texto a buscar en el archivo" --inputbox "Texto" 0 0 ""`
case $? in
 0)
        if [ -z $BUSQUEDA ];then
            busqueda
        else
            clear
        fi
;;
 1)
  echo "Cancel presionado."
        exit 0
;;
 255)
  echo "Caja cerrada."
        exit 0
;;
esac
}

archivo
separador
busqueda

let campos=`cat $FILE | awk -F $SEPA '{ print NF }'|head -n 1`
campos_dialog="cat $FILE |head -n 1|awk -F $SEPA '{print "

for i in  $(seq 1 $campos) ; do
    campos_dialog=${campos_dialog}" \" $i \\\"\""\$$i" ""\"\\\"\"  \" on\"  "
done
campos_dialog=${campos_dialog}\}\'\|sed' '\'s/^\\s//\'
campos_final=$(eval ${campos_dialog})
campos_fin=`echo $campos_final |sed 's/\s/_/g'|sed 's/1_/1 /g'|sed 's/_on_2_/ on 2 /g'|sed 's/_on_3_/ on 3 /g'|sed 's/_on_4_/ on 4 /g'|sed 's/_on_5_/ on 5 /g'|sed 's/_on_6_/ on 6 /g'|sed 's/_on_7_/ on 7 /g'|sed 's/_on_8_/ on 8 /g'|sed 's/_on_9_/ on 9 /g'|sed 's/_on/ on/g'`

dialog --checklist "Que campos quieres ver de los registros? Max 9" 0 0 $campos $campos_fin 2> /tmp/salida.txt
#camp=`cat /tmp/salida.txt |awk -F " " '{ print NF }'`
read g g2 g3 g4 g5 g6 g7 g8 g9 <<<$(IFS=" "; echo `cat /tmp/salida.txt |sed 's/"//g'`)

parte=""
if [[ -n $g ]]; then
    parte=${parte}""\$$g"\"\t\""
fi
if [[ -n $g2 ]]; then
    parte=${parte}""\$$g2"\"\t\""
fi
if [[ -n $g3 ]]; then
    parte=${parte}""\$$g3"\"\t\""
fi
if [[ -n $g4 ]]; then
    parte=${parte}""\$$g4"\"\t\""
fi
if [[ -n $g5 ]]; then
    parte=${parte}""\$$g5"\"\t\""
fi
if [[ -n $g6 ]]; then
    parte=${parte}""\$$g6"\"\t\""
fi
if [[ -n $g7 ]]; then
    parte=${parte}""\$$g7"\"\t\""
fi
if [[ -n $g8 ]]; then
    parte=${parte}""\$$g8"\"\t\""
fi
if [[ -n $g9 ]]; then
    parte=${parte}""\$$g9"\"\t\""
fi
clear
echo "---------------------------------------------------------"
cat $FILE |grep -i "$BUSQUEDA" |awk -F $SEPA '{print '"$parte"'}'
echo "---------------------------------------------------------"


Esto es todo, un saludo, bye!

sábado, 17 de enero de 2015

Escanear puntos de acceso wifi [bash]

Para ver los puntos de acceso wifi que tenemos cerca se puede usar este script, aunque solo sirve para eso :). Está escrito en bash, así que ejecutarlo con

$ sudo sh script.sh

o bien darle permiso de ejecución y ejecutarlo normalmente

$ chmod +x script.sh
$ sudo ./script.sh

#!/bin/bash
# (c) sierra21
# Este script sirve para escanear puntos de accesos wifi
# cada 5 segundos...
trap '/bin/rm /tmp/borrar2.txt /tmp/file.txt /tmp/essid.txt /tmp/level.txt /tmp/canal.txt \
/tmp/wps.txt /tmp/mac.txt /tmp/cliente.txt; exit' SIGHUP SIGINT SIGQUIT SIGTERM

function wps(){
    lineas=`cat /tmp/borrar2.txt |awk '/WPS/ || /SSID:/ {print $1}'`
    contador="0"
    temp=""
    for i in $lineas; do
        if [[ $contador -eq "0" ]]; then
            temp="NO"
            let contador=$contador+1
       else
            if [ "$i" == "WPS:" ]; then
                echo "SI"
                contador="0"
                temp=""
            else
                echo "NO"    
            fi
        fi
    done
    echo $temp
}

while  true; do
    sudo iw dev wlan0 scan > /tmp/borrar2.txt
    cat /tmp/borrar2.txt |awk '$1 ~ /SSID:/ {print $2}' > /tmp/essid.txt
    cat /tmp/borrar2.txt |awk '/signal/ {print $2$3}' > /tmp/level.txt
    cat /tmp/borrar2.txt |awk '/DS Parameter set/{print $5}' > /tmp/canal.txt
    wps > /tmp/wps.txt
    cat /tmp/borrar2.txt |awk '$1 ~ /BSS/ {print $2}' > /tmp/mac.txt
    cat /tmp/borrar2.txt |awk '/^BSS/{print $6}' > /tmp/cliente.txt

    file=`paste /tmp/essid.txt /tmp/level.txt /tmp/canal.txt /tmp/wps.txt /tmp/mac.txt \
/tmp/cliente.txt|awk '{printf "%-20s\t%-10s  %s\t%s  %s  %s\n",$1, $2,$3, $4,$5,$6}' > /tmp/file.txt`
    file2=`cat /tmp/file.txt`
    clear
    echo "------Nombre--------------Level---Canal-PWS-------MAC-----------Cliente--"
    echo -e "$file2"
    echo -e "\nControl+C para terminar"
    sleep 5
done


Antes de ejecutar un scritp o programa, leerlo bien para saber que vamos a hacer.

martes, 13 de enero de 2015

Detectar intrusos en red wifi (3)

Y este es otro tanto de lo mismo, pero escrito en bash, sin comentarios....


#!/bin/bash

# Configurar las ip's de nuestros dispositivos conocidos,
# cuando se verifique que funciona el scripts, aqui un ejemplo
# cambia las direcciones por las de tu dispositivos.
ip_amigas=('192.168.1.128' '192.168.1.129')
gateway=`route | grep default|awk '{print $2}'` 
red=`route | grep default|awk '{print $8}'`
# Por si tenemos mas de un adaptador de red en nuestra maquina
read gateway gateway2 <<<$(IFS=" "; echo $gateway)
read red red2 <<<$(IFS=" "; echo $red)
#Sacamos la dirección ip de nuestra maquina
ip=`/sbin/ifconfig $red | grep inet |awk '{print $2}'|grep '[[:digit:]]\{1,3\}\.[[:digit:]]\{1,3\}\.[[:digit:]]\{1,3\}\.[[:digit:]]\{1,3\}'|cut -c 6-`
# En esta linea de abajo al final de la linea, donde dice "cut -f 1 -d" 
# cambiar el 1 por el 2 en caso de que "NO FUNCIONE"
scaneo=`nmap -sP ${gateway}/24 | grep [Nmap\|Host]|awk '{print $5 "#"$2 }'|grep '[[:digit:]]\{1,3\}\.[[:digit:]]\{1,3\}\.[[:digit:]]\{1,3\}\.[[:digit:]]\{1,3\}'|cut -f 1 -d "#"`
# la lina de abajo es para comprobar que se hace el scan correctamente, sino cambiar 
# el 1 por el 2 en la linea de arriba. una vez comprobado funciona se puede comentar
# o borrar la linea echo "$scaneo"
echo "$scaneo"
# añadimos el gateway y nuestra dir ip para no ser
# tenidas en cuenta como intrusos
ip_amigas=( "${ip_amigas[@]}" "$ip" "$gateway")

texto=""
for linea in $scaneo
do
    reg=""
    for rev in ${ip_amigas[@]}
    do
        if [ "$linea" = "$rev" ]; then
           reg="OK"
        fi
    done
    if [ -z $reg ] ; then
        texto=`echo -e ${texto}"\n"${linea}`
    fi
done

if [ -z "$texto" ] ; then
    echo "No hay intrusos"
else
    salida=`notify-send -t 0 -i wicd-gtk 'Escaneo de la Red' "$texto"`    
fi
# el parametro -i wicd-gtk puede ser cambiado a cualquier otra imagen

jueves, 8 de enero de 2015

Detectar intrusos en red wifi (2)

  Este es un script basado como no en los anteriores, es bastante simple y solo hay que verificar que se haga el scan correctamente, cambiando un solo carácter del script si es necesario (ver en el script). Esto es debido a los cambios en la salida del comando nmap según la versión de este. Ahora está configurado para la version de nmap 6.01 y comprobado que para la versión 5.00 hay que cambiar el numero 1 por el 2 (ver en el script).
  Se pueden meter en la lista "ip_amigas" las direcciones de nuestros dispositivos para que no los tome como "intrusos", no hace falta meter la ip de nuestro pc donde corre el script, ni el gateway/router.
  Una vez se verifica que corre satisfactoriamente, se puede meter en el cron de nuestro sistema y usuario, para lo cual hay que editarlo asi:

$ crontab -e     #nos abrirá nuestro editor

y escribiremos lo siguiente

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DISPLAY=:0

*/5 * * * * python /home/user/alerta-python.py

  Cerramos y listo.
  Se ejecutará cada 5 minutos, y en "user" cambiarlo por nuestro nombre de usuario.

   Si hemos añadido todos nuestros dispositivos, no nos notificará ningún aviso (notify-send) a no ser que tengamos un intruso real.

Aqui el script alerta-python.py:


#!/usr/bin/python
# -*- coding: utf-8 -*-

import commands
import subprocess

# Configurar las ip's de nuestros dispositivos conocidos,
# cuando se verifique que funciona el scripts
#ip_amigas = ['192.168.1.128','192.168.1.129']
ip_amigas = []

gateway_red= commands.getoutput('route | grep default|awk \'{print $2 "#"$8}\'') 
gateway_red=gateway_red.split("\n")[0] 
gateway, red = gateway_red.split("#")
ip = commands.getoutput("/sbin/ifconfig "+red+"| grep inet |awk '{print $2}'|grep '[[:digit:]]\{1,3\}\.[[:digit:]]\{1,3\}\.[[:digit:]]\{1,3\}\.[[:digit:]]\{1,3\}'|cut -c 6-")
# En esta linea de abajo al final de la linea, donde dice "cut -f 1 -d" 
# cambiar el 1 por el 2 en caso de que "NO FUNCIONE"
scaneo=commands.getoutput("nmap -sP "+gateway+"/24|grep [Nmap\|Host] |awk '{print $5 \"#\"$2 }'|grep '[[:digit:]]\{1,3\}\.[[:digit:]]\{1,3\}\.[[:digit:]]\{1,3\}\.[[:digit:]]\{1,3\}'|cut -f 1 -d\"#\"") 
# ATENCION!!!  a la linea de abajo y la de arriba
print scaneo       # comentar esta linea una vez que compruebe funciona correctamente

ip_amigas.append(gateway)       # añadimos el router/gateway
ip_amigas.append(ip)            # tambien nuestra dirección ip

scaneo = scaneo.split('\n')
texto = ''
for linea in scaneo:
    if not linea in ip_amigas:
        texto+="Intruso = "+linea+"\n"
if texto:
    exitCode = subprocess.call(["notify-send",'-t','0','-i','wicd-gtk','Escaneo de la Red',texto])

Si hay alguna duda preguntar :)
Salu2