Con mi compañero
@c4fdez a.k.a sniffer, estábamos tratando de solucionar un reto propuesto por uno de nuestros compañeros, ademas integrante del grupo de investigación
@InterCEPTeam. Esta primera etapa se basa en el protocolo HTTP, el cual genera el estudio (en ocasiones profundo) de este protocolo.
El reto comienza en un servidor web, con un encabezado que da algunas pistas para orientarnos por donde comenzar, al momento de dar clic en el enlace ver login obtenemos el siguiente mensaje.
"No Existe el login, value no encontrado"
Con este mensaje podemos pensar y orientar un poco la consulta hacia los
Headers Http (cabeceras http), que son los valores que envía el browser y responde el servidor cuando se acceda a una url o recurso web. A partir de esto se comienza con las cabeceras que envía nuestro navegador hacia el servidor web y las cabeceras que envía el servidor web a nuestro browser, esto lo podemos analizar con plugins para nuestro navegador o frameworks web debug (
zaproxy,
fiddler,
charlesproxy).
En este caso utilizare zaproxy para analizar todas las cabeceras. Comenzamos con la descarga e instalación, luego configuramos como proxy en nuestro navegador el localhost en el puerto 8080 y así todas las peticiones pasaran a través de zaproxy y capturara todos los resultados obtenidos.
Vemos a través de zaproxy la petición y respuesta enviadas por las partes involucradas.
Luego hacemos clic en el link Ver Login y volvemos a zaproxy para ver las capturas. En esta imagen me interesa saber la respuesta que ha enviado el servidor web
En este punto debemos jugar con la modificación de los valores de las cabeceras que van en nuestra petición desde el browser, para que el servidor web responda con el contenido que nosotros esperamos que sea mostrado. Para esto haremos uso de los
BreakPoint que podemos insertar a través de zaproxy.
El breakpoint lo insertaremos sobre el index.php que fue solicitado cuando presionamos el link "Ver Login" para modificar la cabecera referer con valor "login"en la petición enviada por nuestro navegador (esto después de probar el envío de varias cabeceras con valores modificados aleatorios). En la siguiente imagen se ilustra el proceso de modificación de la cabecera.
Luego de esto presionamos el botón play que se encuentra en la parte superior para que zaproxy envíe la petición con nuestra cabecera modificada a través del navegador, y ahora si podemos ver "lo oculto" que la pista mencionaba.
Hasta aquí esta parte del reto ya que nuestro compañero
@killr00t no ha codeado el resto :-)
Intentando llegar a conclusiones, puedo decir que el code php (que se ejecuta del lado del servidor) esta a la espera que en las cabeceras http solo la "Referrer" sea igual a "login" para que así muestre este formulario de lo contrario veríamos "No Existe el login, value no encontrado".
En algún momento creíamos un poco loco al desarrollador ya que mediante el code y la inserción de cabeceras podría estar a la espera de cual valor y cabecera que se pudiera enviar.
Que me corrija el coder si estoy mal pero como dije antes, estoy tratando de llegar a conclusiones de funcionamiento