martes, 14 de febrero de 2017

Hackeando WebServices. Herramientas y procedimientos. El comienzo.

Estimados amigos de Inseguros !!!.

Vamos a ponernos un poco retro. Vamos a ponernos en modo pre-internet, o en modo windows 95/98...quizás comienzos de los 2000.

Recuerdo mis primeras clases de programación en Visualbasic. El profesor explicaba que una función es un fragmento de código que recibe uno o varios parámetros, y devolvía uno o más parámetros.

Hacíamos una calculadora que recibía unos valores y operaciones y devolvía otras. Bien. o No, ya no me acuerdo :-)

Para el sistema operativo existía un servicio denominado RPC que hacía lo mismo entre componentes del sistema. Más adelante apareció DCOM (Corba en linux?) para comunicar componentes internos del PC.

Perfecto, pero qué pasa si mi amigo tiene una calculadora en su casa hecha en Foxpro, y yo tengo un interface gráfico hecho en VisualBasic. Quiero integrar las aplicaciones, pero como llamo a una función remota...en otro lenguaje... Apareció SOAP. Una manera de empaquetar peticiones/respuestas en XML bajo tráfico http. Esto es un webservices.


Recuerdo la aparición del .Net y los famosos webservices. Recuerdo mi primer "damedatos.asmx" que precioso!!! También recuerdo a Chema Alonso dando gira por toda España, en concreto en Murcia, con el "padre Parada" y explicando esto , y funcionalidades de ISA 2000. Recuerdo también la época de El Guille.

El futuro la informática iba a cambiar mediante el .net,  lenguaje interpretado en un framework que se puede instalar en casi todos sitios, vamos, en Windows xD y que se puede programar en más de 20 lenguajes, y que vas a poder usar el que más te guste para cada cosa, y podrás ser feliz viendo variables y procedimientos "volar" entre proyectos y proyectos...


Algunos locos ya usaban algo parecido, JAVA... :-)

Volveeeeeeeemos a lo que íbamos. Cuando hacemos test de intrusión o auditorias, muchas veces nos encontramos con servicios web que debemos auditar. No soy experto en esta disciplina, apenas conocedor de lo básico, pero la cuestión es buscar las "mismas" vulnerabilidades que buscamos en las aplicaciones web "clásicas" que conocemos: php, js, .jsp, .asp...en el formato del webservices. Sqli, XSS, malas implementaciones de sesiones, configuraciones inseguras, etc etc.

Para las aplicaciones web solemos usar un proxy intermedio que "detiene" las request que hacemos como las responses que nos llegan para evaluar los datos y permitir manipular inputs-outputs de manera que el programador no tenía contemplado en sus Inputbox o paso de variables por url.

Para el estudio de los webservices se suele usar una herramienta "open source" (hay free y de pago) SOAPUI.

Al estilo de Burp, podemos ver las peticiones, modificarlas, ver respuestas y mil cosas más. Lo que lo hace interesante es que la herramienta implementa test de pruebas con muchas opciones, algunas orientadas a la seguridad. El procedimiento detallado en imágenes es muy sencillo. Cargamos la descripción del webservices, cargamos las opciones por defecto las pruebas de seguridad, y vemos que hace la herramienta por si sola.

La versión siguiente es la completa de prueba para 13 días.







Este caso es un falso positivo porque lanza un Alert ('XSS') y como aparece literalmente en la respuesta, lo interpreta como ejecutado cuando no lo es. Ya sabes que las herramientas de botón gordo tienen lo que tienen, pero si es cierto que hay cosas que ha detectado.

Ahora vamos a la gracia y es que podemos usar la versión gratuita para realizar la misma operación, con dos salvedades, la primera es que no genera report bonito, solo resultados MEJOR !!!. La segunda es que para cada tipo de ataque debemos introducir que parámetro queremos explotar, algo que tampoco es mucho más complicado.






Los resultados para una prueba concreta han sido los mismos, pero lo que si que es cierto es que los procesos que denomina BOMB han efectuado un poco de carga en la CPU. No mucho, apenas quizás !!! pero podrían usarse como vector de ataque para un dos/ddos mejor planificado

Otro aspecto clásico es bajo File-preferences- es introducir un proxy, ya se nuestro proxy Tor para anonimato o nuestro Burp !!! Hay cosas que me gustan hacer en Burp porque las tengo mas o menos controladas y prefiero pasar las peticiones de SOAPUI por Burp.

El amigo Neofito ya peleo bastante con un caso de webservices y ws-security en su blog. Pégale un vistazo y sobre todo mira las dos referencias bibliográficas que menciona el señor de tierras valencianas. Dos pedazo de libros y un pedazo de artículo.

Como he dicho al principio, no soy muy buen auditor y simplemente me voy formando con las cosas que voy necesitando. Se que esta herramienta y procedimientos son habituales para los profesionales del pentesting, pero a mi nadie me lo da hecho :-) y yo a vosotros intento que si :-).

Gracias por leerme !!!