Blog sobre seguridad informática, privacidad, anonimato, hacking ético, programación y sistemas operativos en general.

martes, 5 de septiembre de 2017

Realizando pruebas de Hacking WiFi usando WifiPhisher, parte 1.



WifiPisher (como su nombre lo indica) es una herramienta automatizada que realiza ataques de suplantación de puntos de acceso WiFi ya sea para robar credenciales o enviar malware. Esta herramienta sigue el principio propio de la Ingeniería Social sin necesidad de recurrir a otro tipo de ataques (Bruteforce / fuerza bruta) por ejemplo. WifiPisher es de código abierto y se distribuye bajo la licencia GPL, puede ser descargada aquí o desde github.

Cómo funciona WifiPhiser.

Después de lograr una posición de Man-In-The-Middle usando el ataque de Twin o KARMA Evil, Wifiphisher redirecciona todas las solicitudes HTTP a una página de phishing controlada por el atacante.

Desde la perspectiva de la víctima, el ataque se utiliza en tres fases:

1) La víctima es desautenticada de su punto de acceso . Wifiphisher congela continuamente todos los dispositivos Wi-Fi del punto de acceso objetivo dentro del rango forjando paquetes "Deauthenticate" o "Disassociate" para interrumpir las asociaciones existentes. 

2) La víctima se une a un punto de acceso falso. Wififhiff olfatea el área y copia la configuración del punto de acceso de destino. A continuación, crea un punto de acceso inalámbrico que es modelado por el objetivo. También configura un servidor NAT / DHCP y reenvía los puertos correctos. Por consiguiente, debido al bloqueo, los clientes eventualmente empezarán a conectarse al punto de acceso falso. Después de esta fase, la víctima es MiTMed. Además, Wifiphisher escucha los marcos de solicitud de sondeo y falsifica las redes abiertas "conocidas" para causar asociación automática. 

3) La victima se está sirviendo una página de phishing realista especialmente personalizada . Wifiphisher emplea un servidor web mínimo que responde a las solicitudes HTTP y HTTPS. Tan pronto como la víctima solicite una página de Internet, wifiphisher responderá con una página falsa realista que pide credenciales o sirve malwares. Esta página será diseñada específicamente para la víctima. Por ejemplo, una página de configuración router contendrá logotipos del proveedor de la víctima. La herramienta admite plantillas creadas por la comunidad para diferentes escenarios de suplantación de identidad. A continuación una imagen de cómo funciona: 



Requisitos de instalación:

* La herramienta está especialmente diseñada para Kali Linux, todas las nuevas características que se añadan se probarán primero en la distribución mencionada por lo tanto si deseas tenerlas, instala Kali Linux.

Nota: Si has seguido nuestros post y tienes ArchLinux configurada como tu distribución de pentesting o en su caso BlackArch, puedes instalarla usando el comando: pacman -S wifiphisher.

* Un dispositivo WiFi que soporte el modo AP (Acces Point Mode) o modo de punto de acceso, es necesaria para crear nuestra red inalámbrica falsa.
* Un dispositivo WiFi que soporte el modo Monitor para poder capturas todas las señales y el tráfico que haya en las redes WiFi disponibles. Si no tienes una segunda tarjeta WiFi, puedes correr el script usando la opción --nojamming, aunque esta también desactivará el ataque de desauteticación a las victimas.

Instalación:

Para realizar el proceso de instalación lo podemos hacer de dos maneras:

Desde el gestor de paquetes:

Kali Linux/Parrot Securtiy: apt install wifiphisher
ArchLinux*/BlackArch: pacman -S wifiphisher

*Para poder realizar la instalación en un sistema ArchLinux, primero debes configurar ArchLinux como una distribución de pentesting.

Desde el código fuente:

git clone https://github.com/wifiphisher/wifiphisher.git
cd wifiphisher
sudo python2 setup.py install

Hasta aquí la primera parte de este post, en el siguiente post explicaremos el uso y las diferentes tácticas de ataque que se pueden realizar con esta herramienta. 

Síguenos en Facebook, Twitter y unete a nuestra charla en Riot. También puedes dejar su donación a nuestra cuenta Paypal.

lunes, 4 de septiembre de 2017

Ncrack es una herramienta de craqueo de autenticación de red



Ncrack es una herramienta de craqueo de autenticación de red de alta velocidad. Fue construido para ayudar a las compañías a proteger sus redes probando proactivamente todos sus hosts y dispositivos de red contra las contraseñas pobres. Los profesionales de la seguridad también confían en Ncrack al auditar a sus clientes. Ncrack fue diseñado utilizando un enfoque modular, una sintaxis de línea de comandos similar a Nmap y un motor dinámico que puede adaptar su comportamiento basado en la retroalimentación de la red. También permite una auditoría a gran escala rápida y confiable de múltiples hosts.

Las características de Ncrack incluyen una interfaz muy flexible que otorga al usuario un control total de las operaciones de la red, permitiendo ataques muy sofisticados, plantillas de temporización para facilitar su uso, interacción en tiempo de ejecución similar a Nmap y muchos más.
Los protocolos soportados incluyen RDP, SSH, HTTP (S), SMB, POP3 (S), VNC, FTP, SIP, Redis, PostgreSQL, MySQL y Telnet.

Ncrack se publica como una herramienta independiente y se puede descargar  aquí. Asegúrese de leer la página del manual de Ncrack para entender completamente el uso de Ncrack. Si eres un desarrollador y quieres escribir tus propios módulos de Ncrack, estudiar la Guía del Desarrollador de Ncrack sería el primer paso.

Ncrack es una herramienta de código abierto para el craqueo de autenticación en redes con contraseñas débiles. Fue diseñado para el craqueo paralelo de alta velocidad utilizando un motor dinámico que puede adaptarse a diferentes situaciones de la red. Ncrack también puede ser ampliamente afinado para casos especiales, aunque los parámetros por defecto son lo suficientemente generales como para cubrir casi todas las situaciones. Está construido sobre una arquitectura modular que permite la extensión fácil de soportar protocolos adicionales. Ncrack está diseñado para empresas y profesionales de la seguridad para auditar las grandes redes de incumplimiento o contraseñas débiles de una manera rápida y fiable. También se puede utilizar para llevar a cabo ataques de fuerza bruta bastante sofisticadas e intensivas contra los servicios individuales.

Synopsis de comandos


ncrack [ <Options> ] { <target specification> }

Instalación

Para KaliLinux:

sudo apt-get install ncrack

Para Archlinux:

sudo pacman -S ncrack


 
Síguenos en Facebook, Twitter y unete a nuestra charla en Riot. También puedes dejar su donación a nuestra cuenta Paypal.

Mas de 6 millones de usuarios de Instagram fueron comprometidos con hackeos a sus cuentas



Datos de usuario están vendiendo en la base de datos de Dark Web, incluyendo el número de teléfono, ID de correo electrónico y más información personal.

Los investigadores de seguridad cibernética del Reino Unido encontraron cientos de datos de contacto en la dark web. Sobre todo celebridades detalles están disponibles, incluyendo Emma Watson, Taylor Swift. La semana pasada Selena Gomez cuenta se ha visto comprometida y los criminales cibernéticos publicado sus fotos privadas con su ex novio Justin Bieber.

Daily Beast informó , Instagram inicialmente dijo que un "pequeño porcentaje" de las cuentas se ha visto afectada, aunque los hackers afirman que tienen más detalles sobre nada menos que seis millones de usuarios.

Los hackers han lanzado sitio web con el Instagram filtró la base de datos Los datos, una muestra de la que los hackers proporcionados a The Daily Beast, parece incluir direcciones de correo electrónico y números de teléfono de una selección de usuarios de Instagram de alto perfil, incluyendo políticos, estrellas del deporte, y las compañías de medios . Los datos también parece contener información sobre las cuentas más comunes, también.
“Instagram claramente aún no ha entendido el impacto total de este error,” una de las personas detrás del sitio, conocido como 'Doxagram'.
Mike Krieger Co-fundador y CTO de Instagram escribió una nota sobre la seguridad,
nos preocupan profundamente por la seguridad y la seguridad de la comunidad Instagram, por lo que queremos hacerle saber que recientemente descubrimos un error en Instagram que podría ser utilizado para acceder a algunos dirección de correo electrónico y número de teléfono de la gente, incluso si no eran públicos. No hay contraseñas u otra actividad Instagram fue revelado.

Nos rápidamente corregido el error, y hemos estado trabajando con la aplicación de la ley en la materia. Aunque no podemos determinar qué cuentas específicas pueden haber sido afectados, creemos que fue un bajo porcentaje de cuentas de Instagram.

¿Cómo funciona el ataque?

El error inicial fue descubierto por los investigadores de seguridad Kaspersky. los investigadores encontraron la opción de restablecimiento de contraseña en la aplicación Instagram abriría números de teléfono móvil y direcciones de correo electrónico. El ataque involucró el envío de una solicitud de restablecimiento de contraseña y la interceptación de los datos de teléfono y dirección enviadas.

¿Cómo proteger su cuenta?

  • Para habilitar la autenticación de dos factores.    
  • Para cambiar su contraseña con regularidad.  
  • No haga clic en enlaces sospechosos y adjunto en el correo electrónico.
  • Utilice Herramientas como Google imagen para identificar cuentas falsas.

Fuente: Hackers Online Club, Daily Beast.

domingo, 3 de septiembre de 2017

Acerca de SecHackLabs.


 

 ¿Que es SecHackLabs (Security Hack Labs)?

SecHackLabs es un Team dedicado a la búsqueda, estudio, análisis y corrección de vulnerabilidades en sistema informáticos, ofreciendo soporte y solución a la gran mayoría de fallos existentes. En SecHackLabs se sigue el principio del ethical-hacking o Hacking Ético, cada vez que se descubre una falla que coloque en riesgo la integridad de un sitio web, servidor o cualquier infraestructura informática inmediatamente se da aviso a sus administradores usando las vías de comunicación disponibles. El cracking lucrativo no es bienvenido en SecHackLabs (Incluye carding, phishing en ambientes no controlados, robo de credenciales WiFi, etc), adicionalmente SecHackLabs también se dedica al diseño y desarrollo de software libre/privado mediante el cual busca lograr sus objetivos, su código libre está disponible en su repositorio de Github

Además de proveer las soluciones anteriormente mencionadas, SecHackLabs también tiene un servicio que se basa en el modelo de enseñanza/aprendizaje online para todas aquellas personas interesadas en la seguridad informática y que deseen aprender. Se trata de una sala de chat online, usando un servicio y una red descentralizada, anónima y segura conocida como Matrix, para lo cual hace uso de su cliente más completo y con mejores características Riot.im, el cual es de código abierto y multiplataforma. Para ingresar a dicha sala solo debes seguir el link https://riot.im/app/#/room/#securityhacklabs:matrix.org o bien instalarlo en tu computadora/celular siguiendo estas instrucciones. Adicionalmente contamos con una sala de chat en el IRC Freenode, el ingreso por web al IRC es mediante este link: https://webchat.freenode.net/?channels=sechacklabs, los datos para clientes IRC son: Servidor: chat.freenode.net Puertos: 6667/6697, esté último es para conexiones usando SSL (Si deseas conectarte a IRC usando TOR, lee https://freenode.net/news/tor-online) y un grupo en Telegram https://telegram.me/SecHackLabs, las cuales están conectadas entre sí mediante bridges (Puentes de conexión) pudiéndose así hablar en cualquiera de las tres sin perderse de nada.


El bot @matrix_t2bot es el bot es el encargado de conectar nuestra sala principal que usa el protocolo Matrix (Un protocolo totalmente descentralizado y seguro https://matrix.org) usado en la sala de chat https://riot.im/app/#/room/#securityhacklabs:matrix.org con la sala de Telegram (https://telegram.me/SecHackLabs), a su vez la sala https://riot.im/app/#/room/#securityhacklabs:matrix.org está conectada mediante el bot @appservice-irc:matrix.org a nuestra sala de chat en IRC https://webchat.freenode.net/?channels=SecHackLabs y entre estos dos bots se encargan de conectar los tres protocolos: IRC, Matrix (https://matrix.org) y Telegram, de ese modo cualquier cosa que se escriba en una de las tres salas será visible para los miembros de las otras dos. La manera de saber cual usuario es el que escribe, es mediante el nombre que aparece al inicio de cada mensaje que envía el bot @matrix_t2bot (Ej. AngelSHL, Edward, J3ss3). Cabe destacar que el bot también muestra quien entra/sale en las otras dos salas de chat (IRC y Matrix) Aquí unas imágenes demostrativas.

* Cómo se ve en Riot (Cliente para conectarse usando el protocolo Matrix).



* Cómo se ve en Telegram. Se puede observar claramente los nombres de los usuarios que intervienen seguidos de los dos puntos (:) y el mensaje que han enviado.



* Cómo se ve en IRC (Freenode).


¿Quienes conforman SecHackLabs?

En primer lugar sus fundadores y su developer Eduard Tolosa (Edu4rdSHL), Miguel Angel Romero (AngelSHL), Jesse Barrios (J3ss3) y Selinex Carolina Tapia Perez, seguidamente están nuestros participantes y clientes a los cuales ofrecemos cualquier de los servicios mencionados anteriormente ya que ellos son, sin duda, nuestra motivación para seguir.

¿Quienes pueden contactar/acceder a SecHackLabs?

Al ser un Team público y con una flexibilidad tan grande, casi cualquier persona, excepto aquella que infrinja en alguna de las siguientes prohibiciones:

1) Usar el nombre de SecHackLabs para  cometer actos ilegales.
2) Ingresar a SecHackLabs pretendiendo realizar cracking lucrativo.
3) Tratar de infectar con cualquier tipo de código, software, malware a los participantes usando ingeniería social y otras técnicas.
4) Difundir cualquier tipo de software malicioso sin avisar a los participantes el tipo de software que es.*
5) Tratar mal a los participantes de SecHackLabs.
6) Compartir material y/o contenido que incite a las prácticas del cracking
7) No son bienvenidas las siguientes técnicas: Defacing de páginas web, carding, robo de cuentas (Redes sociales, YouTube, etc), ataques DDoS en ambientes no controlados, botnets.

*El malware puede ser enviado a la sala de chat SIEMPRE y cuando se avise a sus participantes sobre el tipo de malware o bien, usando el hashtag #malware. Este puede ser usado por expertos para debuggearlo.

El incumplimiento de cualquiera de las anteriores prohibiciones es motivo para expulsión de cualquiera de los medios sin previa advertencia.

Contacto:

Twitter: @SecHackLabs

¿Cómo puedo pedir ayuda/soporte en SecHackLabs?

Cómo anteriormente escribimos, SecHackLabs está abierta para cualquier persona en un principio. Para garantizar que no se realizan intentos de ayuda infructuosos o bien, para que la ayuda que tu necesitas se brinde de una manera exacta y tu problema sea resuelto en la mayor brevedad posible, siga las siguientes pautas al momento de reportar un problema en las salas de chat:

* Descripción del problema.

En este apartado es donde explicarás brevemente de que trata el bug, por ejemplo: "Tengo un error al intentar actualizar mi sistema".

* Pasos recorridos hasta llegar al bug.

Aquí debes especificar que comando o que intentaste hacer para obtener el error, por ejemplo: "El error es producido cuando intento ejecutar el comando: pacman -Syu".

* Resultado actual.

El error que se está presentando, por ejemplo: "El mensaje que aparece en pantalla es: " pacman: invalid option -- 'a' ".

* Resultado esperado.

Es el resultado que estábamos esperando al momento de ejecutar el comando o la órden, por ejemplo: "Esperaba cambiar la versión de mi kernel linux a la 4.15".

* Pantallazo(s), log(s) y otra información importante para análisis.

Aquí es donde mostraras el problema presentado, un pantallazo o foto de tu problema, así cómo los logs del sistema los cuales deben ser subidos en un servicio de paste cómo por ejemplo https://gist.github.com (Favor abstenerse de hacerlo en pastebin.com). los logs normalmente los puedes ver con los siguientes comandos: #dmesg, #journalctl -x[r,e], #journalctl -r o bien, intentando ejecutar una aplicación (si es el caso) directamente desde la terminal de comandos. Para más información, lee: https://es.wikipedia.org/wiki/Syslog.

Así mismo también es importante conocer la versión del sistema operativo usado y la versión de la aplicación que estás intentando ejecutar (si es el caso).

Nota importante: En el momento que vayas a reportar un error, sea cual sea, hágalo cuando tenga a mano su equipo, sistema operativo, máquina virtual, etc. De nada nos sirve dar posibles soluciones si no puede ser probadas en el sistema que presenta el error, además, eso genera una reescritura de soluciones cuando el usuario que reporta el problema se encuentre de nuevo junto a su equipo.

¿SecHackLabs ofrece cursos de hacking ético?

Es una idea que ya en poco tiempo se hará realidad, por el momento el soporte lo puedes preguntar en nuestras salas de chat.

¿Donde está basado SecHackLabs?

El proyecto es un proyecto virtual actualmente, su base está en Bucaramanga - Colombia,  y se espera tener pronto una sede allí del proyecto cómo tal.

¿Que material ofrece SecHackLabs a sus integrantes?

Una biblioteca con aproximadamente 47 GB en archivos PDF de todo tipo de interés informático, entre otros muchos más aportes que pueden encontrar aquí.

Por supuesto, es un proyecto que aún empieza y que piensa no solo quedarse en este país, sino extenderse a nivel internacional y ofrecer seguridad, confianza y garantía a quienes paguen nuestros servicios.

viernes, 25 de agosto de 2017

Defacement, las habilidades de un hacker


Según wikipedia: 'Defacement es una palabra inglesa que significa desfiguración y es un término usado en informática para hacer referencia a la deformación o cambio producido de manera intencionada en una página web por un atacante que haya obtenido algún tipo de acceso a ella, bien por algún error de programación de la página, por algún bug en el propio servidor o por una mala administración de este'. 

Un método común de para un defacement, es hacer uso de la Inyección SQL a sitios con dicha vulnerabilidad, que permite a los adversarios obtener acceso administrativo o manipular de otra forma las bases de datos inseguras del sitio web. Otro método de defacement es a través de FTP una vez que se obtiene el nombre de usuario y la contraseña.

Un defacement usualmente consta de la modificación de la index principal de una página. Esta página generalmente incluye el seudónimo del  'Hacking Codename.  A veces, quien lo hace se burla del administrador del sistema por no mantener la seguridad del servidor. La mayoría de las veces, el defacements es inofensiva y sólo se hace para mostrar las habilidades de un hacker del sistema o para el hacktivismo; Sin embargo, a veces se puede utilizar como una distracción para cubrir acciones más siniestras, como la carga de malware o la eliminación de archivos esenciales del servidor. Podemos ver en esta pagina espejo los diferente defacements. https://zone-h.org/archive/special=1

Una vez aprendido algo de la teoría le enseñare a realizar uno con éxito. la cual comenzare a nuestra index es importante tener conocimiento en html, usare este código que es unos de los mas básico.

1er parte armando el código HTML para index:

<head>
<title>Hacked</title>
<meta charset="utf-8">
<link href='https://fonts.googleapis.com/css?family=Poiret+One' rel='stylesheet' type='text/css'>
<style type="text/css">
body {
background-color: black;
}
h1 {
font-family: "Poiret One";
color: red;
font-size: 36pt;
text-shadow: red 0 0 5px;
}
p {
font-family: "Poiret One";
color: white;
font-size: 16pt;
text-shadow: white 0 0 5px;
}
</style>
</head>
<body>
<center>
<h1>Hacked by Security Hack Labs</h1>
<IMG SRC="https://i.imgur.com/7chFILu.png" WIDTH=600 HEIGHT=400 ALT="Arepa pa todo el mundo">
<p>
<MARQUEE WIDTH=50% HEIGHT=60>Esta es una prueba de un defaced con fines educativo, ustedes con su imaginación pueden mejorar esta index</MARQUEE>
</p>
<iframe id="ytplayer" type="text/html" width="0" height="0" src="https://www.youtube.com/embed/0a-dLVgfpEs?autoplay=1" frameborder="0"/>
</center>
</html>
 


2da parte búsqueda de vulnerabilidad de la pagina web 

Comenzare hablando sobre algunas herramientas como "Vega".  Vega es un escáner gratuito y de código abierto y una plataforma de pruebas para probar la seguridad de las aplicaciones web. Vega puede ayudarle a encontrar y validar SQL Injection, Cross-Site Scripting (XSS), divulgó inadvertidamente información confidencial y otras vulnerabilidades. Está escrito en Java, basado en GUI, y se ejecuta en Linux, OS X y Windows.

Vega incluye un escáner automatizado para pruebas rápidas y un proxy de interceptación para la inspección táctica. El escáner de Vega encuentra XSS (cross-site scripting), inyección de SQL y otras vulnerabilidades. Vega se puede ampliar usando una poderosa API en el lenguaje de la web: Javascript. para mayor información como instalar y configurar Vega https://subgraph.com/vega/

Para vulnerabilidades SQL: Sqlmap es una herramienta de prueba de penetración de código abierto que automatiza el proceso de detección y aprovechamiento de fallas de inyección de SQL y toma de servidores de bases de datos. Viene con un motor de detección potente, muchas características de nicho para el probador de penetración final y una amplia gama de interruptores que van desde la huella dactilar de base de datos, la recolección de datos de la base de datos, el acceso al sistema de archivos subyacente y la ejecución de comandos en el sistema operativo. para mayor información como instalar y configurar Sqlmap. http://sqlmap.org/ adicionalmente puedes descargar nuestra herramienta webhackshl y automatizar la inyección: https://github.com/sechacklabs/webhackshl 

Tamper Scripts: Los firewalls de aplicaciones web se han convertido en la nueva solución de seguridad para varias empresas. Muchas compañías a menudo ignoran las vulnerabilidades reales y simplemente confían en el firewall para su protección. Lamentablemente, la mayoría, si no todos los firewalls pueden ser anulados. "Como datos curioso leer todo lo relacionado a los Tamper Scripts". https://forum.bugcrowd.com/t/sqlmap-tamper-scripts-sql-injection-and-waf-bypass/423

Otra herramienta para buscar vulnerabilidades es  WebHackSHL aquí encontraras mayor información.

3ra parte. Dumpe la base de datos: 

En el siguiente vídeo veremos que es una base de datos.


4ta parte. Descifrar los hashes:

Usaremos nuestra herramienta WebHackSHL la opción f


La opción a identifica el hashes

5ta parte subir la shell:

Que es una shell? Una shell es un interpete de ordenes y comandos. Es una interfaz para comunicar el usuario con el sistema operativo. En esta pagina podemos encontrar varias shell http://www.r57.gen.tr/ 

6ta parte subir nuestra index:  

Una vez que ya hemos subido la shell y descifrado el hashes, entramos al  panel de administración según la escala de privilegios que hemos obtenido tenemos el control total de la pagina.  
También podemos usar WebHackSHL para buscar el panel de administrador
Así quedaría una pagina haciendo un "defacement".

También les dejo el vídeo promocional de nuestra herramienta WebHackSHL.


Dejen sus recomendaciones en los comentarios. Síguenos en Facebook, Twitter y unete a nuestra charla en Riot.

jueves, 24 de agosto de 2017

Parte 1: Montando un servidor LNMP (Linux, Nginx, MySQL, PHP) con protección DDoS y PhpMyAdmin en ArchLinux.














Cuando hablamos de servidores web, generalmente se nos viene a la cabeza una servidor LAMP con Debian, RedHat o CentOS como Sistema Operativo. Sin embargo, es solo la más común (eso no significa que sea necesariamente la más eficiente) de todas las posibles formas de montar nuestro servidor web. Hoy mostrare paso a paso el procedimiento para montar un servidor Web en ArchLinux, usando LNMP (Sí, LNMP = Linux, Nginx, MySQL, PHP), ádemas de como añadir protección DDoS usando fail2ban y también la instalación y configuración de PhpMyAdmin.

1) Necesitamos tener instalado nuestro ArchLinux (Sin entorno gráfico, ya que no tiene sentido usar recursos en algo que no se usará). Para ello puedes seguir este post de instalación de ArchLinux.

2) Instalamos Nginx. ¿Porqué Nginx en lugar de Apache? Aquí pueden encontrar las razones. Además el mismo equipo de Nginx nos ha hecho un tutorial sobre como "tunear" Nginx para rendimiento, leelo.

pacman -S nginx

El directorio de trabajo de Nginx en ArchLinux es /usr/share/nginx/html/* y el directorio de configuración es /etc/nginx/*. Escribimos el comando
echo "<h1>Esto es una prueba de mi servidor web Nginx</h1>" > /usr/share/nginx/html/index.html. Seguido eso iniciamos el servicio usando  systemctl start nginx y probamos abriendo la dirección http://localhost; nos deberá aparecer esto.




2) Instalación de PHP.


pacman -S php-fpm 

Arrancamos el servicio con systemctl start php-fpm, editamos el archivo /etc/nginx/nginx.conf en el apartado de PHP sobre FastCGI para que quede de la siguiente manera.


        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000

        location ~ \.php$ {
            try_files $uri = 404;
            root           /usr/share/nginx/html;
            fastcgi_pass   unix:/var/run/php-fpm/php-fpm.sock;
            fastcgi_index  index.php;
            fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }







 
Tambien debemos editar la sección location añadiendo "index.php" para que nginx lo reconozca como archivo del indice del directorio de trabajo.

    #gzip  on;

    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   /usr/share/nginx/html;
            index  index.html index.htm index.php;
        }



Ahora vamos a añadir la funcion phpinfo() a un archivo llamado index.php para realizar nuestra prueba de que php está funcionando correctamente junto a Nginx. Escribimos el comando echo -e "<?php\nphpinfo();\n?>" > /usr/share/nginx/html/index.php, reiniciamos el servidor con systemctl restart nginx  y abrimos la URL http://localhost/index.php, si todo ha salido bien nos aparecerá una pestaña con información así:



Una vez comprobado que el modulo PHP está funcionando correctamente, podemos activar el autoarranque del servicio con systemctl enable php-fpm. Seguidamente debemos instalar un gestor de bases de datos, en este caso MariaDB.

Instalación y configuración de MySQL.

El proceso de instalación es sencillo, solo basta con teclear como root pacman -S mysql, nos va a preguntar que queremos si MariaDB u otro gestor, elegimos MariaDB ya que es 100% compatible con el antiguo MySQL el cual fue quitado de los repositorios por problemas con las politicas de software y esperamos a que finalice la instalación.

Hecho esto necesitamos instalar las DB (Bases de datos) propias de MariaDB que necesita para funcionar, en otros sistemas esta instalación se hace por defecto pero estamos en ArchLinux así que ejecutamos el comando mysql_install_db --user=mysql --basedir=/usr --datadir=/var/lib/mysql en una terminal como root. Luego iniciamos el servicio con systemctl start mysqld e iniciamos el script de configuración con mysql_secure_installation.

Primero de todo nos pide la contraseña actual del root de Mysql (distinta del usuario root del sistema). Como acabamos de instalar MySQL, presionamos enter sin proporcionar ninguna contraseña.


Enter current password for root (enter for none):
OK, successfully used password, moving on...
Ahora nos pedira que definamos la contraseña de root, para ello tecleamos Y y presionamos enter. Entonces nos pedirá la contraseña nueva, que le proporcionaremos.
Setting the root password ensures that nobody can log into the MySQL
root user without the proper authorisation.

Set root password? [Y/n] Y
New password:

Ahora nos preguntará si deseamos eliminar un usuario anónimo que se ha creado durante la instalación para hacer pruebas. Respondemos afirmatívamente con un Y:

Remove anonymous users? [Y/n] Y

Todo seguido, nos pregunta si sólo deseamos permitir el login del usuario root desde localhost. En mi caso responderé que si aunque quizás te interese acceder como root desde la LAN o desde Internet.
Disallow root login remotely? [Y/n] Y
Con el usuario anonimo se había creado unas tablas de prueba, cuando nos pregunte si deseamos borrarlas, las eliminamos:
Remove test database and access to it? [Y/n] Y
Finalmente nos preguntará si queremos recargar los privilegios de la base de datos. Respondemos afirmativamente.
Reload privilege tables now? [Y/n] Y
Después de finalizar la configuración, reiniciamos nuestro servidor de base de datos con systemctl restart mysqld, ahora que tenemos MariaDB funcionando lo añadimos al inicio del sistema con systemctl enable mysqld.
Instalación de PhpMyAdmin
Instalamos:

pacman -S phpmyadmin php-mcrypt
Creamos un enlace simbólico entre nuestro servidor web y phpmyadmin:
ln -s /usr/share/webapps/phpMyAdmin /usr/share/nginx/html/phpmyadmin

Editamos el fichero /etc/php/php.ini. Primero añadimos la carpeta /usr/share/webapps/ a la variable open_basedir para que PHP se ejecute al cargar PHPMyAdmin. Nos tiene que quedar algo así:

open_basedir = /srv/http/:/home/:/tmp/:/usr/share/pear/:/usr/share/webapps/

Después descomentamos las lineas siguientes para que PhpMyAdmin pueda acceder a la base de datos. Quitamos el ; inicial:

extension=mcrypt.so
extension=mysqli.so
extension=mysql.so
extension=zip.so
extension=bz2.so


Ahora editamos el fichero /etc/webapps/phpmyadmin/config.inc.php y buscamos estas líneas:

$cfg['blowfish_secret'] = '';
 
Debemos escribir una frase que phpmyadmin usará para encriptar la contraseña en la sessión. Es una medida de seguridad. Por ejempplo puedes poner...

$cfg['blowfish_secret'] = 'sechacklabs32.?';
 
Recomiendo generar esta frase con un generador de contraseñas como por ejemplo la función integrada de KeepassX (un gestor de contraseñas muy bueno).

Ahora esta línea (Sino está la añadimos):

$cfg['Servers'][$i]['connect_type'] = 'tcp';

Substituimos tcp por socket.

$cfg['Servers'][$i]['connect_type'] = 'socket';
Y añadimos esta linea:

$cfg['Servers'][$i]['socket']= '/var/run/mysqld/mysqld.sock';
Guardamos la configuración y reiniciamos el php-fpm:

systemctl restart php-fpm
Finalmente nos tiene que funcionar la interfície de PHPMyAdmin:
Ahora introducimos las credenciales que asignamos en el proceso de configuracion de MariaDB e ingresamos y obtendremos esto:



Ahora que ya tenemos el servidor web con PHP habilitado y la interficie de PhpMyAdmin para poder manejar las bases de datos, puedes subir la página web que desees a tu servidor y configurarla. En este tutorial no he explicado como configurar un servidor FTP porque no me hace falta, usando SSH se pueden subir ficheros con el protocolo SFTP (que no deja de ser FTP sobre SSH).

Con esto finalizamos nuestra primera parte sobre cómo montar un servidor LNMP en ArchLinux,  si tienes algún comentario o recomendación pueden dejarla en los comentarios. Muy pronto estaremos publicando la segunda parte.

Síguenos en Facebook, Twitter y unete a nuestra charla en Riot. También puedes dejar su donación a nuestra cuenta Paypal.

miércoles, 23 de agosto de 2017

Parte 1: Cross Site Scripting (XSS): Robo de cookies y modificación de un sitio web (persistente y reflejado).


El Cross Site Scripting (XSS) es un tipo de vulnerabilidad que normalmente se presenta en páginas web, la cual permite al atacante inyectar y ejecutar códigos maliciosos en el servidor o CMS remoto. El XSS es una de las vulnerabilidades más comúnmente encontradas en sitios web y la principal razón de su existencia es que el administrador de una página confia en lo que el usuario introduce desde el teclado y le brinda información de acuerdo a su consulta, entonces el usuario puede introducir scripts específicos con código malicioso y de esta manera obtener información que el desee para un posterior ataque.

* ¡EL XSS ES PELIGROSO!

Aunque es una de las vulnerabilidades más conocidas y que muchas veces pasa desapercibida, el XSS es realmente una vulnerabilidad peligrosa, permite en ciertos casos cambiar el dominio del sitio web, redireccionarlo, robar credenciales del administrador y comprometer los datos que contenga el sitio web. ¡Todo depende de tus conocimientos y tu ingenio!

* ¿Que puede realizar el atacante por medio de esta vulnerabilidad?

1. Cambiar configuraciones.
2. Robo de cookies.
3. Robar tokens para hacer un CSRF (Cross Site Request Forgery) más fácil.

Como dijimos, debes ser creativo para explotar un XSS.

* TIPOS DE XSS.

1. Reflejado: Es el tipo de XSS menos peligroso y solo permite una modificación parcial del sitio web, para que otros lo vean el usuario debe enviar un link "especial" con el contenido a inyectar. Aquí un ejemplo de un código PHP vulnerable a XSS reflejado:

<?php
if(!array_key_exists("nombre",$_GET) | |$_GET['nombre'] == NULL || $_GET['nombre']==''){
$isempty=true;
}
else{
echo '<pre>';
echo 'Hola!' . $_GET['nombre'];
echo '</pre>';
}
?>

Como podemos ver el parámetro nombre no está definido correctamente ya que este devuelve un "echo" a el usuario, de manera que podemos ingresar un código JS del tipo <script>alert(/xss/)</script> y este lo ejecutará como tal.

2. Persistente: Este tipo de ataque es almacenado en el servidor y por lo tanto es visible a cualquier persona que ingrese al sitio web atacado. Este tipo de vulnerabilidad se presenta cuando los datos recolectados desde el teclado del usuario son guardados en el servidor y que son vistos normalmente en cualquier página que returne el mismo. Un ejemplo claro son los "chan's" o "boards" donde un usuario escribe un comentario que puede ser visto por otros usuarios. Aquí un ejemplo de un código PHP vulnerable a XSS persistente:

<?php
if(isset($_POST['btnSign']))
{
$mensaje=trim($_POST['mtxMensaje']);
$nombre=trim($_POST['txtnombre']);
// Entrada del mensaje
$mensaje = stripslashes($mensaje);
$mensaje = mysql_real_escape_string($mensaje);
// Entrada del nombre
$nombre = mysql_real_escape_string($nombre);
$query = "INSERT INTO guestbook (comentario,nombre) VALUES (
'$mensaje','$nombre');";
$result=mysql_query($query) or die('<pre>'.mysql_error().'</pre>');
}
?>

Las entradas de nombre y mensaje no están declaradas de manera correcta, ya que guardan los datos que reciben en la tabla guestbook y cuando el servidor returna esos datos al cliente este puede ejecutar código JS (JavaScript) malicioso que quedará almacenado en el servidor.


3. XSS basado en DOM (Document Object Model o Modelo de Objetos del Documento): Este tipo de XSS es una variante del XSS persistente. El DOM es un conjunto estandarizado de objetos para representar páginas web con JavaScript, lo cual permite abrir otra página web con código malicioso JavaScript incrustado, afectando el código de la primera página en el sistema local. Cuando el XSS es local, ningún código malicioso es enviado al servidor. El funcionamiento toma lugar completamente en la máquina del cliente, pero modifica la página proporcionada por el sitio web antes de que sea interpretada por el navegador para que se comporte como si se realizara la carga maliciosa en el cliente desde el servidor. Esto significa que la protección del lado del servidor que filtra el código malicioso no funciona en este tipo de vulnerabilidad.

A continuación usaremos la aplicación DVWA para realizar las demostraciones.

* XSS Reflejado.


Esto ocurre el introducir en el espacio "What's your name?" el cual es vulnerable a XSS Reflejado el siguiente texto: <script>alert("Esto+es+un+ejemplo+de+XSS+reflejado+by+SecHackLabs!")<%2Fscript>

* XSS Persistente.


Como vemos, este apartado funciona como un foro donde cada usuario deja su nombre y su mensaje. Pero ahora veamos que pasa si insertamos un nombre cualquiera y en mensaje algo como <script>alert("Aquí hay un XSS persistente!");</script>


Pues obtenemos un XSS persistente, el cual permanecerá ahí aunque recarguemos la página desde otro dispositivo y otra red.

* XSS DOM Based.

Supongamos que el siguiente código es usado para mostrarle a un usuario la opción de elegir su lenguaje preferido. Un lenguaje por defecto también es proporcionado en caso de que no haya elección alguna por parte del usuario, aquí una demostración:

<select>
<script>
document.write("<OPTION value=1>"+document.location.href.substring
(document.location.href.indexOf("default=")+8)+"</OPTION>");
document.write("<OPTION value=2>Spanish</OPTION>");
</script>
</select>

La página es invocada de una manera similar a esta: http://www.Xsitio.com/page.html?default=English

Un atacante puede usar esta web para enviársela a una víctima de la siguiente manera: http://www.Xsitio.com/page.html?default=<script>alert(document.cookie)</script>

El código JS original no esperaba que el parámetro Default tuviera código HTML como tal, por lo tanto este lo ejecuta dentro la página (DOM) y el navegador devuelve la página resultante al ejecutar la sentencia alert(document.cookie) que el atacante envió.
En el próximo post explicaremos técnicas avanzadas sobre cómo bypassear protecciones anti-XSS, firewalls y filtros, así como también dejaremos un par de scripts los cuales nos facilitarán llevar a cabo un robo de sesión, cookies, entre otros.

Dejen sus recomendaciones en los comentarios. Síguenos en Facebook, Twitter y unete a nuestra charla en Riot. También puedes dejar su donación a nuestra cuenta Paypal.