Está en la página 1de 6

CAP 3

INTRODUCTION
Existen múltiples formas de transferir un archivo entre dos hosts (ordenadores) de la misma
red. Uno de estos protocolos se estudia en este ejemplo, y es SMB (Server Message Block).
Este protocolo de comunicación proporciona acceso compartido a archivos, impresoras y
puertos serie entre puntos finales de una red. La mayoría de las veces vemos servicios SMB
ejecutándose en máquinas Windows.

Durante la exploración, normalmente veremos el puerto 445 TCP abierto en el objetivo,


reservado para el protocolo SMB.

Normalmente, SMB se ejecuta en las capas de Aplicación o Presentación del modelo OSI, como
se muestra a continuación. Debido a esto, se basa en protocolos de nivel inferior para el
transporte. El protocolo de capa de transporte con el que más se utiliza el protocolo SMB de
Microsoft es NetBIOS. es NetBIOS sobre TCP/IP (NBT). Por eso, durante los análisis, lo más
probable es que veamos ambos protocolos con puertos abiertos ejecutándose en el equipo.
protocolos con puertos abiertos ejecutándose en el objetivo. Veremos esto durante la fase de
enumeración del informe.

INTRODUCTION TO NETWORKING
Mediante el protocolo SMB, una aplicación (o el usuario de una aplicación) puede acceder a
archivos en un servidor remoto, junto con otros recursos como impresoras. Así, una aplicación
cliente puede leer, crear y actualizar archivos en el servidor remoto. También puede
comunicarse con cualquier programa servidor que esté configurado para recibir una solicitud
de cliente SMB.

Un almacenamiento habilitado para SMB en la red se denomina share (recurso compartido). A


ellos puede acceder cualquier cliente que tenga la dirección del servidor y las credenciales
adecuadas. Como muchos otros protocolos de acceso a archivos, SMB requiere algunas capas
de seguridad para funcionar adecuadamente dentro de una topología de red. Si SMB permite a
los clientes crear, editar, recuperar y eliminar archivos de un recurso compartido, existe una
clara necesidad de un mecanismo de autenticación. A nivel de usuario, los clientes SMB deben
proporcionar una combinación de nombre de usuario y contraseña para ver o interactuar con
el contenido del recurso compartido SMB.

A pesar de tener la capacidad de asegurar el acceso al recurso compartido, un administrador


de red a veces puede cometer errores y permitir accidentalmente inicios de sesión sin ninguna
credencial válida o utilizando cuentas de invitado o inicios de sesión anónimos. Seremos
testigos de esto en las siguientes secciones.

ADMIN$ - Los recursos compartidos administrativos son recursos compartidos de red ocultos
creados por la familia de sistemas operativos Windows NT que permiten a los administradores
del sistema tener acceso remoto a todos los volúmenes de disco de un sistema conectado en
red. sistema conectado a la red. Estos recursos compartidos no pueden eliminarse
permanentemente, pero pueden desactivarse.

C$ - Compartición administrativa para el volumen de disco C:\. Aquí se aloja el sistema


operativo.

IPC$ - El recurso compartido de comunicación entre procesos. Se utiliza para la comunicación


entre procesos a través de tuberías con nombre y no forma parte del sistema de archivos.

WorkShares - recurso compartido personalizado.

Si la salida del terminal es la misma que la anterior, significa que ya tiene instalada la última
versión de smbclient. Si no es así, puede continuar con la instalación. Nuestro siguiente paso es
empezar a enumerar el contenido del recurso compartido encontrado en nuestro objetivo en
ambos casos.

Smbclient intentará conectarse al host remoto y comprobar si se requiere autenticación. Si la


hay, nos pedirá una contraseña para nuestro nombre de usuario local. Debemos tomar nota de
esto. Si no especificamos un nombre de usuario específico a smbclient cuando intente
conectarse al host remoto, simplemente utilizará el nombre de usuario de tu máquina local. Es
decir, el nombre de usuario con el que ha iniciado sesión en su máquina virtual. Esto se debe a
que la autenticación SMB siempre requiere un nombre de usuario, por lo que al no darle uno
explícitamente para intentar iniciar sesión, sólo tendrá que pasar su nombre de usuario local
actual para evitar lanzar un error con el protocolo.

No obstante, vamos a utilizar nuestro nombre de usuario local ya que no conocemos ningún
nombre de usuario remoto presente en el host de destino con el que potencialmente
podríamos iniciar sesión. A continuación, se nos pedirá una contraseña.

Esta contraseña está relacionada con el nombre de usuario introducido anteriormente.


Hipotéticamente, si fuéramos un usuario remoto legítimo intentando acceder a su recurso,
conoceríamos nuestro nombre de usuario y contraseña e iniciaríamos sesión normalmente
para acceder a nuestro recurso compartido. En este caso, no disponemos de dichas
credenciales, por lo que lo que intentaremos realizar es cualquiera de lo siguiente:

CAP 4

INTRODUCTION
Las bases de datos son una colección de información organizada a la que se puede acceder,
gestionar y actualizar fácilmente. En la mayoría de los entornos, los sistemas de bases de datos
son muy importantes porque comunican información relacionada con sus transacciones de
venta, inventario de productos, perfiles de clientes y actividades de marketing.

Existen diferentes tipos de bases de datos y una de ellas es Redis, que es una base de datos
"en memoria". Las bases de datos en memoria son las que se basan esencialmente en la
memoria primaria para el almacenamiento de datos (lo que significa que la base de datos se
gestiona en la RAM del sistema); en contraste con las bases de datos que almacenan los datos
en el disco o SSD. Como la memoria primaria es significativamente más rápida que la memoria
secundaria, el tiempo de recuperación de datos en el caso de las bases de datos "en memoria"
es muy pequeño, por lo que ofrecen tiempos de respuesta muy eficientes y mínimos.

Las bases de datos en memoria como Redis se suelen utilizar para almacenar en caché datos
que se solicitan con frecuencia para recuperarlos rápidamente. Por ejemplo, si hay un sitio
web que devuelve algunos precios en la portada del sitio. El sitio web puede ser escrito para
comprobar primero si los precios necesarios están en Redis, y si no, a continuación, comprobar
la base de datos tradicional (como MySQL o MongoDB). Cuando el valor se carga desde la base
de datos, se almacena en Redis durante un periodo de tiempo más corto (segundos, minutos u
horas), para gestionar cualquier solicitud similar que llegue durante ese periodo de tiempo.
Para un sitio con mucho tráfico, esta configuración permite una recuperación mucho más
rápida para la mayoría de las solicitudes, al tiempo que mantiene un almacenamiento estable a
largo plazo en la base de datos principal.

Este laboratorio se centra en la enumeración de un servidor Redis de forma remota y luego


volcar su base de datos con el fin de recuperar la bandera. En este proceso, aprendemos sobre
el uso de la utilidad de línea de comandos redis-cli que ayuda a interactuar con el servicio
Redis. También aprendemos sobre algunos comandos básicos de redis-cli, que se utilizan para
interactuar con el servidor Redis y la base de datos clave-valor.

¿Qué es Redis?

Redis (REmote DIctionary Server) es un almacén avanzado de datos NoSQL clave-valor de


código abierto que se utiliza como base de datos, caché y agente de mensajes. Los datos se
almacenan en un formato de diccionario con pares clave-valor. Se utiliza normalmente para el
almacenamiento a corto plazo de datos que necesitan una rápida recuperación. Redis hace
copias de seguridad de los datos en discos duros para proporcionar consistencia.

El servidor

Redis se ejecuta como software del lado del servidor, por lo que su funcionalidad principal se
encuentra en su componente servidor. El servidor espera conexiones de clientes, mediante
programación o a través de la interfaz de línea de comandos.

La CLI

La interfaz de línea de comandos (CLI) es una potente herramienta que te da acceso completo
a los datos de Redis y a sus funcionalidades si estás desarrollando un software o herramienta
que necesite interactuar con él.

Base de datos

La base de datos se almacena en la memoria RAM del servidor para permitir un acceso rápido
a los datos. Redis también escribe el contenido de la base de datos en el disco a intervalos
variables para persistir como copia de seguridad, en caso de fallo.
APACHE – SQL -INJECTION

Appointment es una caja orientada principalmente a las aplicaciones web. Más


concretamente, vamos a averiguar cómo realizar una inyección SQL contra una
aplicación web habilitada para bases de datos SQL. Nuestro objetivo es ejecutar un
sitio web con capacidades de búsqueda contra una base de datos back-end que
contiene elementos de búsqueda vulnerables a este tipo de ataque. No todos los
elementos de esta base de datos deben ser vistos por cualquier usuario, por lo que
diferentes privilegios en el sitio web le otorgará diferentes resultados de búsqueda.
Hipotéticamente, un administrador del sitio web buscará usuarios, sus correos
electrónicos, información de facturación, dirección de envío, etc. Por el contrario, un
simple usuario o visitante no autenticado sólo podría tener permiso para buscar los
productos en venta. Estas tablas de información estarán separadas. Sin embargo, para
un atacante con conocimientos en vulnerabilidades de aplicaciones web -
específicamente SQL Injection, en este caso - la separación entre esas tablas no
significará nada, ya que será capaz de explotar la aplicación web para consultar
directamente cualquier tabla que se encuentre en la base de datos SQL del servidor
web.

Un excelente ejemplo de cómo funciona normalmente un Servicio SQL es el proceso de


inicio de sesión utilizado para cualquier usuario. Cada vez que el usuario desea iniciar
sesión, la aplicación web envía la entrada de la página de inicio de sesión (combinación
de nombre de usuario y contraseña) al Servicio SQL, comparándola con las entradas
almacenadas en la base de datos para ese usuario específico. Supongamos que el
nombre de usuario y la contraseña especificados coinciden con alguna entrada de la
base de datos. En ese caso, el servicio SQL informará de ello a la aplicación web, que, a
su vez, iniciará la sesión del usuario, dándole acceso a las partes restringidas del sitio
web. Tras el inicio de sesión, la aplicación web otorgará al usuario un permiso especial
en forma de cookie o token de autenticación que asocia su presencia en línea con su
presencia autenticada en el sitio web. Esta cookie se almacena tanto localmente, en el
navegador del usuario, como en el servidor web.
Después, si el usuario quiere buscar algo en particular en la lista de elementos de la
página, introducirá el nombre del objeto en una barra de búsqueda, lo que hará que el
mismo servicio SQL ejecute la consulta SQL en nombre del usuario. Supongamos que
existe una entrada para el elemento buscado en la base de datos, normalmente en una
tabla diferente. En ese caso, la información asociada se recupera y se envía a la
aplicación web para presentársela al usuario en forma de imágenes, texto, enlaces y
otros tipos, como comentarios y reseñas.

La razón por la que los sitios web utilizan bases de datos como MySQL, MariaDB u
otras es que los datos que recopilan o sirven deben almacenarse en algún lugar. Los
datos pueden ser nombres de usuario, contraseñas, publicaciones, mensajes o
conjuntos más sensibles como la PII (Personally Identifiable Information), que está
protegida por las leyes internacionales de privacidad de datos. Cualquier empresa que
haga caso omiso de la protección de la IPI de sus usuarios se expone a multas muy
elevadas por parte de los reguladores internacionales y las agencias de protección de
datos.
La inyección SQL es una forma común de explotar páginas web que utilizan sentencias
SQL que recuperan y almacenan datos introducidos por el usuario. datos introducidos
por el usuario. Si se configura incorrectamente, se puede utilizar este ataque para
explotar la conocida vulnerabilidad SQL Injection que es muy peligrosa. Hay muchas
técnicas diferentes para protegerse de las inyecciones SQL Algunas de ellas son la
validación de entradas, las consultas parametrizadas, los procedimientos almacenados
y la implementación de un WAF (Web Application Firewall). implementar un WAF
(Web Application Firewall) en el perímetro de la red del servidor. Sin embargo, se
pueden encontrar casos en los que ninguna de estas soluciones está implementada, de
ahí la prevalencia de este tipo de ataque, según la lista OWASP Top 10 de
vulnerabilidades web.

También podría gustarte