.

.

viernes, 3 de agosto de 2018

SecTalks: BNE0x03 - Simple


En esta entrada, vamos ha realizar un hackeo de la siguiente máquina de Vulnhub:


  • SecTalks: BNE0x03 - Simple

Web Oficial: https://www.vulnhub.com/entry/sectalks-bne0x03-simple,141/

Descarga: https://github.com/sectalks/sectalks/tree/master/ctfs/BNE0x03


En la web oficial podemos ver las siguientes instrucciones:
Una vez que cargue la máquina virtual, trátela como una máquina que puede ver en la red, es decir, no tiene acceso físico a esta máquina. Por lo tanto, no se permiten trucos como editar el BIOS de la VM o la configuración de Grub. Solo se permiten ataques remotos./root/flag.txt es tu objetivo final.


Vamos a ello.

Realizo un nmap:









Solo tiene el puerto 80 abierto




















Pruebo credenciales por defecto: admin/admin, root/root, etc., y nada.


También pruebo con : -'/-' , ‘or ’1'='1

Inspecciono el código fuente y no veo nada raro:



























Hago un escaneo con "dirb"




Pruebo con el directorio:
http://192.168.0.22/core/




No encuentro nada.

Otro: http://192.168.0.22/docs




Son artículos sobre PHP que tampoco tienen nada.

Seguimos:
http://192.168.0.22/skins/




Después de revisar todos los directorios y no encontrar nada vuelvo a la página inicial:




Como me da la opción de registrarme, voy a probar




Pongo la contraseña: D123456n

Una vez acepto el registro, estoy directamente dentro:








Se puede subir un archivo




Voy a intentar subir una shell.

Teniendo la versión de la web: "CuteNews 2.0.3", decido por mirar en BBDD de Exploit, a ver si me encuentro alguna.

Me encuentro con un Exploit adecuado a la versión:
https://www.exploit-db.com/exploits/37474/




Pasos indicados en el exploit:

1 - Registrarse como nuevo usuario


2 - Iniciar sesión


3 - Vaya a Opciones personales


4 - Seleccione Subir Avatar / Ejemplo: Evil.jpg


5 - Use los datos de sabotaje y cambie el nombre del archivo Evil.jpg a Evil.php

----------------------------- 2847913122899 \ r \ nContenido-Disposición: form-data; name = "avatar_file"; filename = "Evil.php" \ r \


6 - Su Shell: http://127.0.0.1/cutenews/uploads/avatar_Username_FileName.php

Ejemplo: http://127.0.0.1/cutenews/uploads/avatar_toxic_Evil.php



Ahora busco una shell en PHP

En pentestmonkey.net






Me descargo la que aquí observamos: ph-reverse-shell-1.0.tar.gz

Edito el texto y cambio los parámetros que me indica, que son la IP desde la que vamos a escuchar la comunicación (nuestro terminal de linux) y el puerto.



Una vez que ya lo tengo, guardo, y lo subo.




No me ha hecho falta cambiar la extensión, coge sin problema el .php

Guardo.

El siguiente paso, antes de ejecutar o comprobar la shell subida a la web, es poner en nuestro terminal de Linux o Kali, Netcat en escucha al puerto indicado.



Ahora sí, podemos ir al navegador, y poner la ruta a la que se sube el avatar del perfil de usuario, o lo que es lo mismo, la shell en PHP que hemos subido.

http://192.168.0.26/uploads/avatar_DANIEL_rshell.php

La escucha al puerto 5000 da sus frutos:



Estoy dentro.

WHOAMI / PWD



IFCONFIG




Ls –lah




Uname –a



Cat etc/passwd




Despúes de probar a entrar en los diferentes directorios, veo que no tengo acceso a ninguno, es un usuario muy limitado.

Intento hacer "sudo su", pero me encuentro ante un terminal sin TTY.

Ejecuto el comando de python: python -c 'import pty; pty.spawn("/bin/sh")'




Ya tengo un terminal con TTY

Intento hacer "sudo su" con claves por defecto (admin, root, vacio, etc.)

No consigo entrar.

Voy a ver si encuentro algún exploit para la versión del kernel o el sistema operativo.

El "uname –a" me devolvió:



V 3.16.0

Encuentro en la base de datos de exploit:
https://www.exploit-db.com/exploits/37292/




Como no consigo ser root, voy a intentar descargar mediante wget el exploit, pero en un directorio que me lo permita.

Mi opción /tmp




Se ven las letras de manera doble, no sé porqué, pero el terminal me las está doblando.




Busco como compilar en c









Soy root!!











martes, 8 de agosto de 2017

Red Team & Blue Team Field Manual (RTFM & BTFM)


En estas semanas han llegado a mis manos dos libros imprescindibles para todos los que nos dedicamos a la seguridad y el hacking, dos pequeñas biblias de comandos que te facilitaran la vida más de lo que piensas y que totalmente recomiendo.

¿Cuantas veces en medio de una tarea hemos tenido que buscar un comando que hace tanto que no usamos que ya no recordamos?
O simplemente, estamos utilizando una herramienta que no conocíamos y queremos saber el comando que utilizar para conseguir un resultado concreto.

En estos dos libros se separan los comandos y utilidades, en tareas de ataque y defensa, así dando lugar a:

- "RTFM" Read Team Field Manual.
- "BTFM" Blue Team Field Manual.


No son dos libros en los que podamos leer teoría sobre la materia. Son dos "chuletarios" muy bien editados, donde se separan todos los comandos básicos que se pueden utilizar en Red & Blue Team, por sistemas operativos, herramientas, tipos de tarea, etc.

A modo de ejemplo podemos echar un pequeño vistazo a una parte de la tabla de contenidos del "BTFM".



BLUE TEAM

Ejemplo de lo que podemos encontrar.
Queremos trabajar con los logs en linux y hay comandos que no recordamos.

Capítulo 3 = DETECT (VISIBILITY)
Apartado de Linux

Look at Samba activity:
# grep -i samba /var/log/syslog

Look in Apache Logs for 404 errors:
# grep 404 <LOG FILE NAME> | grep -v -E "favicon.ico | robots.txt"

Monitor for new created files every 5 min:
# watch -n 300 -d ls -lR / <WEB DIRECTORY>


RED TEAM

Apartado WEB.
SQLMAP

Sql Injection and collect DB Version, name, and user:
./sqlmap.py -u "http://<url>" --data="id=1&str=val" -p "id" --tables -D "testdb"


________________

RTFM - Autor: Ben Clark
BTFM - Autores: Alan White & Ben Clark

*Puedes encontrarlo en plataformas como Amazon.



martes, 27 de junio de 2017

Python (3ª Parte)- Textos y Operadores

Seguimos con Python en la tercera entrada consecutiva al respecto.
Recuerdo, que esto no es un manual paso a paso, sino un breve repaso de este lenguaje de programación donde iremos viendo pinceladas, que espero os ayude y colabore en el gusto por la materia.

En la entrada anterior nos quedamos viendo en tratamiento de texto, asi que vamos a seguir viendo alguna función que nos ayudará mucho.

Como ya vimos en las entradas anteriores, una cadena lleva una asignación númerica para cada caracter en el siguiente orden:

entrada = [COHETE]
C/0 , O/1, H/2, E/3, T/4, E/5 por delante, o C/-6 , O/-5, H/-4, E/-3, T/-2, E/-1.

De modo que podremos llamar a los diferentes caracteres de la palabra "COHETE":


También podemos llamar a parte de la palabra utilizando [:].
Los dos puntos representarían el de un sitio inicial a un sitio final. Por ejemplo de lugar número 2 al 5: [2:5]. Si dejamos el hueco en blanco dependiendo si es al principio o al final, sería desde el primer carácter al último. Por ejemplo, del caracter 2 hasta el final, sería: [2: ]


Otro comando interesante, sería "len".
Con "len" averiguamos la longitud de una entrada.

len (ejemplo)
6

Pero recordar que siempre la longitud de la entrada que queramos medir, debe de estar asignada a algo, si no dará error.



 Ahora vamos a ver los operadores, algo que tendremos que utilizar casi a diario en la ejecución de nuestros códigos.

  • (==) = ¿Verdad qué?
¿Verdad que 1 + 1 = 2?        1+1 == 2
TRUE

  •  (!=) = ¿Distinto a?
¿Es 6 distinto a 7?                6 != 7
TRUE

  •  >      Mayor que
  • <       Menor que
  • >=     Mayor o igual que
  • <=     Menor o igual que
*Aclaración: El valor TRUE es igual a 1  /  El valor FALSE es igual a 0
Ejemplo: True * 5 = 5   /   False * 5 = 0

jueves, 22 de junio de 2017

Python (Segunda Parte)- Operadores básicos


Muchos se preguntarán, el por qué dedicar una serie de entradas a un lenguaje de programación como es Python. Pues muy fácil, porque se ha convertido en un lenguaje de referencia dentro del hacking y la seguridad informática, gracias a su dinamismo, facilidad de uso y lo intuitivo que es.
Además que Python, es una gran herramienta para automatizar tareas mediante scripts que nos facilitaran la vida a la hora de realizar un Pentesting, o crear herramientas para cualquiera tarea, que nos evitará depender de las de terceros.

Los que empeceis de manera autodidacta, recomiendo que echeis un ojo a muchos tutoriales que se pueden encontrar por Youtube, ya que os pueden servir de gran apoyo y hay algunos realmente completos, como por ejemplo: "pildorasinformaticas"; con hasta veinte videos dedicados a la materia.


Bien, vamos a empezar a ver operadores básicos.
Como ya os aconseje en la primera entrada, para empezar a practicar os recomiendo la instalación de herramientas como "Anaconda" con su multitud de lenguajes de programación, o uno que me gusta mucho por la ayuda que ofrece y lo intuitivo que es: "Sublime".

Como último apunte antes de empezar, decir que todas las funciones y demás cosas que se nombraran aquí están adaptadas a la última versión de Python, o lo que es lo mismo Python3.

Como en otros lenguajes, la almoadilla "#" será señal de comentario y todo lo que vaya detrás de ella no será tomado como código ejecutable.

# EMPEZAMOS

Para ejecutar los resultados, si estamos trabajando como os he aconsejado en Anaconda, para estás primeras prácticas he ir rodando, pulsamos : SHIFT + INTRO
 

A la hora de realizar operaciones complejas, solo tenemos que tener en cuenta los operadores y el orden estructural en que se van a realizar las operaciones.


Algo muy interesante de Python es la asignación de valores.
Podemos operar con cualquier cosa, siempre y cuando le asignemos previamente un valor. Solo tenemos que decirle que x = y.

No os asusteis, es más facil de entender con ejemplos.
A = 5
B = 3

Ahora si operamos y decimos que: A + B  (El resultado será 8).
De esta manera podemos dar valor a por ejemplo:

- Letras: Z = 56
- Números: 0 = 10
- Palabras: Jirafa = 16 / Coche = 3500 / Alquiler = 750

Es algo muy valioso a la hora de realizar operaciones como:




















# TERMINAMOS LA ENTRADA CON LOS TEXTOS

Python reconoce textos, pero debemos de separarlos siempre entre comillas simples (') o dobles (").
Así: 'Hacking' o "Hacking".

En frases largas podemos y debemos alternarlas para no liar a Python, ya que el reconoce el texto en su totalidad que tenemos entre comillas: "Buenas tardes a todos", de manera que si quisieramos remarcar una palabra dentro del texto, lo debemos de hacer de la siguiente manera:
"Buenas tardes a 'tí' amigo", porque si pusiesemos "Buenas tardes a "tí" amigo" python comprendería dos cadenas diferentes.

Veamos el primer comando o función (print), la función de impresión.
En Informática, la "salida" de un programa son los datos que el programa proporciona al exterior. Aunque en los incios de la informática la salida más habitual era una impresora, hace muchos años que el dispositivo de salida más habitual es la pantalla del ordenador.

En los programa, para mostrar texto o variables hay que utilizar la función print().
La función print() permite mostrar texto en pantalla. El texto a mostrar se escribe como argumento de la función:


Print siempre lleva sus paréntesis, entre los que colocará el texto a imprimir: print ()


 También podemos imprimir variables.
Asignamos por ejemplo a algo un valor y lo ejecutamos. Vamos a verlo.

Fecha_Hora = "Hoy es jueves 22 de Junio y son las 21:15"