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

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

martes, 13 de junio de 2017

¿Cómo podemos bloquear ataques web común y proteger nuestro sitio web?



R: Inyección SQL

-> Tipos
Formulario de acceso Anulación
de inyección SQL UNION

B: Cross Site Scripting

-> Cross Site Request Falsificación

C: File Inclusion

Tipos-> Inclusión de archivos remotos y ejecución remota de código

En este post les digo unos cinco tipos de ataques web comunes, que se utilizan en la mayoría de tipos de desfiguraciones o vertederos de bases de datos.

Los cinco vulnerabilidades mencionadas anteriormente son la inyección de SQL, XSS, RCE, RFI y LFI. La mayoría de las veces, nos perdimos algunas etiquetas de código de página web ..

coz de este obtenemos ataques de sitios web y permite al hacker para el ataque en el sitio web vulnerables.

R: Inyección SQL

-> INICIO DE FORMA ANULACIÓN

Este es un ejemplo del código vulnerable que podemos pasar por alto fácilmente:

archivo index.html:
<form action = método de”login.php” =”POST” />
<p> Contraseña: <input type = nombre de “pase””texto” = /> <br />
<input type =”submit ”value =” Autenticar”/> </ p>
</ form>

login.php archivo:
<? php
// EJEMPLO DE CÓDIGO
$ ejecutar = “SELECT * desde la base de datos donde password = '{$ _POST [' pass'])”;
$ resultado = mysql_query ($ ejecutar);
?>

Simplemente podemos evitar esto mediante el uso 'o '1 = 1', que ejecutará ‘password =’ o' 1 = 1” ;”.

Alternativamente, el usuario también puede eliminar la base de datos ejecutando “' gota base de datos de la tabla; - “.

PREVENCIÓN:

Utilizar mysql_real_escape_string en el código php.

Ejemplo:

<? php
$ badword = “ 'OR 1'”;
$ badword = mysql_real_escape_string ($ badword);
$ mensaje = “SELECT * desde la base de datos donde password =‘ '$ badword'’;
echo “bloqueados”. $ mensaje. “;
?>

-> UNION SQL Injection

inyección SQL UNION es cuando el usuario utiliza el comando UNION. Los controles de usuario para la vulnerabilidad mediante la adición de una garrapata al final de un “= .php? Id” archivo. Si se vuelve con un error de MySQL, el sitio más probable es vulnerable a la inyección SQL UNION. Se procede a utilizar ORDER BY para encontrar las columnas, y al final, utilizan la UNION ALL comando SELECT. Un ejemplo se muestra a continuación.

http://www.site.com/website.php?id=1 '

Usted tiene un error en su sintaxis SQL cerca”en la línea 1 SELECT SUM (cantidad)
como el tipo de las órdenes de donde (estado = 'completado' O estado = 'confirmados' O estado = 'pendiente') Y user_id = 1 '

Sin error-> http://www.site.com/website.php?id=1 ORDER BY 1-

Dos columnas, y se vuelve con un error! Esto significa que hay una columna.
http://www.site.com/website.php?id=1 ORDER BY 2-

Selecciona las todas las columnas y ejecuta el comando version () en la única columna.
http://www.site.com/website.php?id=-1 versión UNION SELECT ALL () -

SOLUCIÓN:

Añadir algo parecido a continuación para evitar la inyección SQL UNION.

$ = malo “(eliminar) | (actualización) | (unión) | (inserto) | (gota) | (http) | (-) | (/ *) | (seleccionar)”;
$ parche = eregi_replace ($ mal “”, $ parche);

B: Cross Site Scripting

Cross site scripting es un tipo de vulnerabilidad utilizada por los hackers para inyectar código en páginas web vulnerables.

Si un sitio es vulnerable a este tipo de ataque, más probables los usuarios tratan de inyectar el sitio con javascript malicioso o tratan de usuarios de estafa mediante la creación de un formulario donde los usuarios tienen que escribir su información en.

Dos tipos de XSS (cross site scripting) son XSS persistente y no persistente XSS.

Ejemplo:
http://www.site.com/search.php?q=”>

SOLUCIÓN

(JavaScript) (Gracias, Microsoft!):

function RemoveBad(strTemp) {
strTemp = strTemp.replace(/\<|\>|\”|\’|\%|\;|\(|\)|\&|\+|\-/g,””);
return strTemp;
}

C: File Inclusion

Tipos: de inclusión remota de archivos / Inclusión de archivos locales, y la ejecución remota de código

La inclusión de archivos remoto permite a un hacker para incluir un archivo remoto a través de un script (por lo general de PHP). Este código está parcheado sobre todo en los sitios web, pero algunos sitios web siguen siendo vulnerables a la vulnerabilidad. RFI generalmente conduce a la ejecución remota de código Javascript o ejecución.

Ejemplo del código vulnerable:

<? php
include ($ _ [ 'page'] GET);
?>

Explotando sería algo como esto:
http://www.site.com/page.php?page=../../../../../etc/passwd o
http://www.site .com / page.php page = http: //www.site.com/xyz.txt?

SOLUCIÓN:

Validar la entrada.
$ page = $ _GET [ 'página'];
$ permitido = array ( 'index.php', 'games.php' 'ip.php');
$ iplogger = ( 'ip.php');
si (in_array página $, $ páginas)) {
incluir la página $ {
demás
{
incluir $ iplogger
die ( “IP registrada.”);
}

Para la ejecución remota de código, el sitio tendría que tener un php ejecutar comandos. Se podría arreglar esto de hacer la misma cosa.

Si les gustó siguenos en Facebook, Twitter y unete a nuestra charla en Riot.

domingo, 9 de abril de 2017

Bypasseando Cloudflare y detectando el Sistema Operativo, servicios y sus versiones en un servidor Web.


Como la gran mayoría conoce, Cloudflare es un CDN (Content Delivery Network o Red de Distribución de Contenido) gratuito que actúa como un proxy (intermediario) entre los visitantes del sitio y el servidor. Al actuar como un proxy, CloudFlare guarda temporalmente contenido estático del sitio, el cual disminuye el número de peticiones al servidor pero sigue permitiendo a los visitantes el acceso al sitio. CloudFlare tiene servidores proxy localizados alrededor del mundo. Los servidores proxy están localizados cerca de los visitantes, con lo cual estos podrán cargar el sitio más rápido directo de los servidores proxy, Cloudflare es generalmente utilizado para evitar ataques de tipo DDoS o DoS ya que al actuar como intermediario prohibe que el servidor principal sea atacado interponiendo sus proxys durante el ataque. Para realizar una auditoría a cualquier sistema, sitio web, servidor o maquina remota, es indispensable conocer la verdadera identificación (IP) de la maquina, de lo contrario todo lo que hagamos todo será inutil ya que estaría dirigido a otro objetivo que no nos interesa. A continuación explicare las maneras más efectivas y fáciles de Bypassear Cloudflare y seguidamente explicaré la detección de servicios y sus versiones, así como la manera de encontrar y explotar posibles fallos.

NOTA: Durante este post usaré la web https://hispachan.org para realizar la prueba.

* Bypasseando cloudflare.

Es el primer paso que debemos realizar, para ello podemos usar diversas maneras:
Manualmente: Podemos realizarlo mediante la busqueda manual de subdominios y revisando las IP en caso de encontrarse uno, ya que es algo tedioso podemos usar el navegador y un buscador para realizar la busqueda, por ejemplo: site: *.hispachan.org en Google, realizando un ping a cada subdominio encontrado y luego revisando que no pertenezca a cloudflare dicha IP.

Automaticamente (Con hatclud): Hatcloud es una herramienta especializada para realizar la evasión de Cloudflare, escrita en ruby y disponible en Github. Para su instalación basta con descargarla y ejecutar el script usando el comando ruby hatcloud.rb -b $sitioweb, reemplazando sitio web por el deseado, o bien usando el comando pacman -S hatcloud, este ultimo para aquellos que han seguido nuestros post sobre convertir a ArchLinux en una distro de pentesting.


Ahora probamos abriendo la direccion IP "real" que nos arroja el script y vemos que: Usa Nginx 1.11.12!


Usando bruteforce (fierce): Fierce es un script para la enumeración de DNS, el cual puede buscar todos los NS Records para probar tranferencias de zona o Zone Tranfer, realizar ataques de fuerza bruta automaticos y configurados manualmente, entre otras. Está escrito en perl y disponible los repositorios de las principales distribuciones. Se encuentra en los repositorios de la mayoria de distribuciones. Para su instalación lo hacemos desde nuestro gestor de paquetes, o bien usando pacman -S fierce, y su sintaxis básica es la siguiente: fierce.pl -dns $sitioweb, reemplazando el sitio por el deseado. Nota: Si el sistema no reconoce el comando fierce.pl, prueba con fierce.



Como podemos observar, alternativamente a los DNS de Cloudflare, nos arroja otros muy importantes, mail.hispachan.org y smtp.hispachan.org, los cuales apuntan a la misma dirección IP, abrimos esa IP en el navegador y vemos.


Muy bien, todo parece indicar que es la dirección IP real del servidor principal, para asegurarnos podemos probar un pequeño ataque DDoS y verificar si se trata de la dirección real del servidor, para este paso pueden usar la herramienta que deseen de las muchas que existen.





Bien, al parecer si es la dirección del servidor real, ahora probaremos un escaneo con Nmap para ver que podemos encontrar.

[root@SecHackLabs shl]# nmap -sV -T4 -O -v 89.248.171.171

Starting Nmap 7.40 ( https://nmap.org ) at 2017-04-09 01:29 -05
NSE: Loaded 40 scripts for scanning.
Initiating Ping Scan at 01:29
Scanning 89.248.171.171 [4 ports]
Completed Ping Scan at 01:29, 0.19s elapsed (1 total hosts)
Initiating Parallel DNS resolution of 1 host. at 01:29
Completed Parallel DNS resolution of 1 host. at 01:29, 0.33s elapsed
Initiating SYN Stealth Scan at 01:29
Scanning mail.hispachan.org (89.248.171.171) [1000 ports]
Discovered open port 993/tcp on 89.248.171.171
Discovered open port 587/tcp on 89.248.171.171
Discovered open port 110/tcp on 89.248.171.171
Discovered open port 80/tcp on 89.248.171.171
Discovered open port 111/tcp on 89.248.171.171
Discovered open port 21/tcp on 89.248.171.171
Discovered open port 53/tcp on 89.248.171.171
Discovered open port 22/tcp on 89.248.171.171
Discovered open port 143/tcp on 89.248.171.171
Discovered open port 3306/tcp on 89.248.171.171
Discovered open port 25/tcp on 89.248.171.171
Discovered open port 995/tcp on 89.248.171.171
Discovered open port 443/tcp on 89.248.171.171
Discovered open port 2222/tcp on 89.248.171.171
Discovered open port 465/tcp on 89.248.171.171
Completed SYN Stealth Scan at 01:29, 7.14s elapsed (1000 total ports)
Initiating Service scan at 01:29
Scanning 15 services on mail.hispachan.org (89.248.171.171)
Completed Service scan at 01:30, 48.70s elapsed (15 services on 1 host)
Initiating OS detection (try #1) against mail.hispachan.org (89.248.171.171)
Retrying OS detection (try #2) against mail.hispachan.org (89.248.171.171)
NSE: Script scanning 89.248.171.171.
Initiating NSE at 01:30
Completed NSE at 01:30, 13.24s elapsed
Initiating NSE at 01:30
Completed NSE at 01:30, 0.35s elapsed
Nmap scan report for mail.hispachan.org (89.248.171.171)
Host is up (0.16s latency).
Not shown: 979 closed ports
PORT     STATE    SERVICE        VERSION
21/tcp   open     ftp            Pure-FTPd
22/tcp   open     ssh            OpenSSH 6.6.1 (protocol 2.0)
25/tcp   open     smtp           Exim smtpd 4.87
53/tcp   open     domain         ISC BIND 9.9.4
80/tcp   open     ssl/http       Apache/2
110/tcp  open     pop3           Dovecot DirectAdmin pop3d
111/tcp  open     rpcbind        2-4 (RPC #100000)
135/tcp  filtered msrpc
139/tcp  filtered netbios-ssn
143/tcp  open     imap           Dovecot imapd
443/tcp  open     ssl/ssl        Apache httpd (SSL-only mode)
445/tcp  filtered microsoft-ds
465/tcp  open     ssl/smtp       Exim smtpd 4.87
587/tcp  open     smtp           Exim smtpd 4.87
593/tcp  filtered http-rpc-epmap
993/tcp  open     ssl/imap       Dovecot DirectAdmin imapd
995/tcp  open     ssl/pop3       Dovecot DirectAdmin pop3d
2222/tcp open     http           DirectAdmin httpd 1.50.1 (Registered to Ecatel International Network)
3306/tcp open     mysql          MariaDB (unauthorized)
4444/tcp filtered krb524
6129/tcp filtered unknown
Device type: general purpose|storage-misc|firewall|WAP
Running (JUST GUESSING): Linux 4.X|3.X|2.6.X|2.4.X (96%), Synology DiskStation Manager 5.X (87%), WatchGuard Fireware 11.X (87%)
OS CPE: cpe:/o:linux:linux_kernel:4.4 cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:2.6.32 cpe:/o:linux:linux_kernel cpe:/a:synology:diskstation_manager:5.1 cpe:/o:watchguard:fireware:11.8 cpe:/o:linux:linux_kernel:2.4
Aggressive OS guesses: Linux 4.4 (96%), Linux 4.0 (93%), Linux 3.11 - 4.1 (92%), Linux 2.6.32 (92%), Linux 2.6.32 or 3.10 (92%), Linux 3.10 - 3.12 (92%), Linux 2.6.32 - 2.6.35 (90%), Linux 3.13 (90%), Linux 2.6.32 - 2.6.39 (90%), Linux 2.6.32 - 3.0 (89%)
No exact OS matches for host (test conditions non-ideal).
Uptime guess: 2.088 days (since Thu Apr  6 23:23:53 2017)
Network Distance: 14 hops
TCP Sequence Prediction: Difficulty=256 (Good luck!)
IP ID Sequence Generation: All zeros
Service Info: Host: b06s25.novogara.com; OS: Red Hat Enterprise Linux 7; CPE: cpe:/o:redhat:enterprise_linux:7

Read data files from: /usr/bin/../share/nmap
OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 96.57 seconds
           Raw packets sent: 1111 (51.064KB) | Rcvd: 1072 (44.920KB)

Como  podemos observar el equipo usa un sistema GNU/Linux y tiene muchos puertos abiertos, los cuales podemos ir probando cada uno a su gusto en su navegador o realizar un escaneo con nmap a un puerto especifico. Existe un puerto en especial, el 2222 que tiene como descripción DirectAdmin httpd 1.50.1 (Registered to Ecatel International Network), lo abrimos y podemos observar que es un panel Login de Administración!





Este servicio lo provee una compañia con esta pagina web https://www.directadmin.com de hecho podemos realizar un demo en la misma pagina web entrando a https://demo.directadmin.com:2222/ usando las credenciales demo_admin y la passwd demo.



 Ahora regresando a nuestra pagina objetivo, nmap nos arroja que la versión de dicho software es 1.50.1, echemos un vistazo para ver si existen vulnerabilidades disponibles.

Aquí encontramos una, la cual afecta a la mencionada versión. Ver vulnerabilidad.

Como podemos observar, si realizamos un procedimiento correcto podemos hacer las cosas de la manera más sencilla y eficiente, no continuaré con el proceso de explotación ya que estaría convirtiendo esto en un post de estilo black-hat y esa no es nuestra filosofia. Aclaramos que de antes de realizar este procedimiento con la anterior pagina web se pidieron los respectivos permisos. Si tienes alguna duda, sugerencia o pregunta, dejala en los comentarios y si les gustó siguenos en Facebook, Twitter y unete a nuestra charla en Riot.

lunes, 3 de abril de 2017

WordPress Exploit Framework (wpxf), un "Metasploit" para pruebas de penetración a WordPress


WordPress Exploit Framework es una herramienta escrita en Ruby, la cual esta diseñada para el uso y la creación de exploits y modulos que ayudan a realizar pruebas de penetración y ataques a sistemas y sitios web que usan como CMS (Content Management System) WordPress. Wpxf es una herramienta de codigo abierto licenciada bajo GPL y su codigo fuente está disponhible en github.

* Requisitos para ejecutar WordPress Exploit Framework (Wpxf)

Debemos tener instalado Ruby 2.2.6 o posterior en nuestro sistema, para eso vamos a una terminal y escribimos el comando ruby --version y la salida del comando será nuestra versión de ruby.


Otro requisito es tener instalado bundler, si no está instalado lo podemos hacer con el comando gem install bundler && bundle install

* Ejecutando Wpxf

Lo primero que haremos será usar git para clonar la herramienta, ya que la herramienta está en github usamos el comando git clone https://github.com/rastating/wordpress-exploit-framework, seguido esto entramos a la carpeta donde se ha clonado la herramienta y ejecutamos el comando ruby wpxf.rb si tenemos todos los requisitos necesarios nos deberá aparecer esto:


En caso de obtener un error de dependecias de gemas faltantes como colorize, nokogori, mimetypes, etc; lo que debemos hacer es ejecutar gem install bundler && bundle install dentro de la carpeta de descarga de Wpxf. En sistemas Debian asegurate de tener instalados los paquetes build-essential patch ruby-dev zlib1g-dev liblzma-dev.

Nota: Si has seguido nuestros post sobre como convertir ArchLinux en una distribución de Pentesting, solo basta con ejecutar pacman -S wordpress-exploit-framework para realizar la instalación.

* Uso y opciones de Wpxf.

Los  comandos de Wpxf son similares a los de metasploit, con help podemos ver las diferentes opciones para usar, explicaré brevemente cada una de ellas.



* Opciones Generales

back - regresa a la opción inmediatamente anterior.
check - Realiza la comprobación de que el modulo cargado actualmente puede ser usado en el target establecido.
clear - Limpia la pantalla
exit - Finaliza wpxf
gset [opcion] [valor] - Asigna un valor a una variable globalmente la cual es usada para los modulos actuales y futuros con el mismo valor.
gunset [opcion] - Reasignal un valor a una variable que fue modificada con gset.
help - Muestra la ayuda.
info - Muestra información del modulo actual.
quit - Sale de Wpxf.
run - Ejecuta el modulo cargado actualmente.
set [opcion] [valor] - Modifica el valor de una variable para la sesion actual.
search [palabras] - Realiza una busqueda dentro de los modulos de las palabras dadas (Muy util para busquedas especificas de exploits).
show advanced - Muestra opciones avanzadas de configuracion del modulo actual.
show auxiliary  - Muestra los modulos auxiliares disponibles.
show exploits - Muestra los exploits disponibles.
show options - Muestra las opciones de configuración necesarias para ejecutar un modulo (host, path, puerto, etc)
unset [opcion] - Reasigna un valor a una variable modificada con set.
use [modulo/exploit] - Usa el modulo especificado si esta disponible en la ruta especificada.

* Uso y ejecución de modulos.

Diferencia entre los modulos auxiliares y exploit: Un modulo auxiliar no te permite ejecutar payloads en la maquina remota, pero si te permite extraer información, escalar privilegios y realizar ataques tipo DDoS en el target.

Por el contrario los exploits son fragmentos de codigo diseñados especificamente para un tipo de ataque determinado a una vulnerabilidad encontrada, estos necesitan que el usuario especifique un payload, el cual puede ser elegido de acuerdo a lo que necesites, ya sea: ejecutar codigo arbitrario en el target para obtener shells remotas, extraer información y otras cosas que tu desees.



* Payloads disponibles

bind_php - Scrip para obtener una shell remota con wpxf.
custom - Sube y ejecuta un payload que tu hayas creado o descargado.
download_exec - Descarga y ejecuta un archivo remoto.
exec - Ejecuta un comando en la maquina remota
reverse_tcp - Permite establecer una shell usando una conexiónTCP inversa.

Video de instalación y opciones.
  

 


Si les gustó siguenos en Facebook, Twitter y unete a nuestra charla en Riot.
 

jueves, 30 de marzo de 2017

Explorando las herramientas de explotación en ArchLinux (Metasploit).


Anteriormente explicamos los pasos a seguir para la instalación de ArchLinux, además de como convertir ArchLinux en una distribución de Pentesting, hoy vamos a echar un vistazo a una de las más conocidas herramientas de explotación, Metasploit.

1) Metasploit: es un Framework diseñado para desarrollar y ejecutar exploits contra un sistema remoto, así como para auditar vulnerabilidades del mismo. Metasploit fue escrito inicialmente en Perl, pero luego de que rapid7 lo adquiriera fue reescrito completamente en Ruby. Metasploit tiene las siguientes versiones:

* Metasploit Free: La versión gratuita. Contiene una interfaz de línea de comandos, la importación de terceros, la explotación manual y fuerza bruta.

* Metasploit Express: En abril de 2010, Rapid7 libero Metasploit Express, una edición comercial de código abierto, para los equipos de seguridad que necesitan verificar vulnerabilidades. Ofrece una interfaz gráfica de usuario, integra nmap para el descubrimiento, y añade fuerza bruta inteligente, así como la recopilación de pruebas automatizado.

* Metasploit Community: En octubre de 2011, Rapid7 liberado Metasploit Community Edition, una interfaz de usuario basada en la web gratuita para Metasploit. Metasploit community incluye, detección de redes, navegación por módulo y la explotación manual.

* Metasploit Pro: En octubre de 2010, Rapid7 añadió Metasploit Pro, de código abierto para pruebas de penetración. Metasploit Pro incluye todas las características de Metasploit Express y añade la exploración y explotación de aplicaciones web.

Instalación: Para realizar su instalación, basta con escribir el comando pacman -S metasploit y esperar a que finalize el proceso.




Configuración: Teniendo en cuenta que en ArchLinux, todo lo hacemos manualmente (respecto a configuraciones), el siguiente paso que debemos hacer es crear un usuario y una base de datos para metasploit, para ellos seguiremos los siguientes pasos:


1) Iniciar postgresql. Por defecto postgresql se instala junto a metasploit (cuando se instala por primera vez), sin embargo de no suceder lo instalamos usando pacman. Luego de tenerlo en nuestro sistema iniciamos el servicio con systemctl start postgresql. Una vez iniciado, el siguiente paso es cambiar nuestro usuario al usuario de PostgreSql llamado postgres, usamos el comando desde una terminal como root: su postgres


Enseguida creamos el usuario msf, usando el comando createuser msf -P y luego confirmando la contraseña. Nota: Yo usaré el user test, debido a que ya tengo creado el user msf, ustedes deberan hacerlo con msf o el que deseen.




Ahora creamos la Data Base con el comando createdb --owner=msf msfdb y luego escribiendo exit



Ahora vamos a una terminal como root y creamos el archivo /opt/metasploit/database.yml y lo llenamos de la siguiente manera:

production:
   adapter: postgresql
   database: msfdb
   username: msf
   password: (la passwd del usuario msf)
   host: 127.0.0.1
   port: 5432
   pool: 75
   timeout: 5
 
Lo guardamos y lo cerramos.

Escribimos el comando msfconsole y esperamos a que inicie metasploit. Escribimos los siguientes comandos estando dentro de metasploit: db_disconnect, db_connect -y /opt/metasploit/database.yml, db_status, db_rebuild_cache.




Con eso es suficiente para tener nuestro metasploit configurado y listo para empezar a realizar pruebas. Nota: Para borrar un usuario en postgresql o una base de datos que hubiesemos creado por error usamos los comandos dropuser usuario y dropdb database, sustituyendo usuario y database por los que queramos eliminar.

A continuación dejaré un vídeo realizado durante el proceso.


Si les gustó síguenos en Facebook, Twitter y únete a nuestra charla en Riot.