H1RD SECURITY

Fiddler, HTTP Proxy

Fiddler es un servidor proxy gratuito que permite depurar código HTTP. Muy facil de usar y muy potente. Una de sus caracteristicas principales es mostrar resquest y responses (no los paquetes). Esta creado en c#. Para descargarlo en Telerik

Usos

Fiddler es muy util en determinadas situaciones:

  • Analisis del sitio
  • Detectar errores en paginas web, faltan ficheros, errores de servidor, objetos mal cacheados, problemas de conexión.
  • Ver el performance de la pagina web.
  • Trabajar con request y responses de HTTP.
  • Pruebas de seguridad, para ver ataques xss, capturar sesiones…
  • Ver el timeline de como se va cargando la pagina web.
  • Puede testear webservices siempre que se ponga a Fidler como proxy.
  • Permite simular diferente velocidades de internet

Funcionamiento

Fiddler funciona como un proxy, es decir cuando se ejecute le dira a la red de WinINET (Libreria dll llamada wininet.dll, esta dll se distribuye desde windows 95, y consite en un conjunto de funciones de alto nivel para el acceso a contenidos de internet) que actuara como proxy para los navegadores. Asi cuando un navegador se ejecute toda la comunicacion web pasara antes por Fiddler.

Incluso Fiddler tiene su propio certificado SSL, que con eso le permite descencriptar el trafico, capturarlo y abrir una conexion al servidor remoto y re-encriptar con el certificado del servidor, un man-in-the-middle. Esta opción esta desactivada por defecto. Puedes activar la opcion en Tools > Telerik Fiddler options y alli en la pestaña de HTTPS activar decrypt. Después de aceptar los certificados, tienes que volver a hacer el proceso para activarlo

Filtros en Fiddler

En la pestaña de Filters tenemos la opción de filtrar e incluso bloquear los request del server, con esto nos puede ayudar a encontrar más rapidamente lo que necesitamos. Por ejemplo podemos esconder las imagenes excepto aquellas que sean mayores a cierto tamaño, eso nos ayudara con el performance, o tambien podemos bloquear css o imagenes y ver como funcionara nuestra aplicación sin ellas.

Breakpoints

Fiddler tiene la posibilidad de parar los request y los responses antes de ser enviados al server o recibidos por el servidor, con eso nos da tiempo de poder hacer modificaciones en los envios y poder testear el comportamiento de la aplicación. Para iniciar los breakpoints ir a _Rules > Automatic Breakpoints __

Autoresponder

Al ser Fiddler un proxy, tiene la capacidad de devolver informacion sin tener que contactar con el servidor web. Con la posibilidad de añadir incluso el tiempo de respuesta. Es bastante interesante para test de aplicaciones.

QuickExec

Es un area dentro de Fiddler donde puedes escribir ciertos comandos, es un tipo de consola. Es el recuadro negro que esta debajo de la lista de request y responses.

  • ?textoAbuscar = Para buscar en las Urls (no en el contenido)
  • size >< size = Más grande o más pequeño que el tamaño dado (en bytes)
  • =Status = Para buscar codigos HTTP (404,200,500..)
  • =Metodos = para buscar GET, POST…
  • cls = limpia sesiones
  • select MIME = busca imagenes, css, js…

Fiddler Script

Esta escrito en JScript.NET, y los metodos más frecuentes que podemos modificar son: OnBeforeResponse(), OnBeforeRequest(), OnExecAction(). Otra funcionalidad es añadir nuestros propios comandos a QuickExec, para poder trabajar mucho más eficientemente. Objetos más comunes a modificar, dentro de Session, tendremos oRequest y oResponse.

Para acceder a la parte de los scripts hay que ir a: Rules > Customized Rules

Por ejemplo, podemos decirle a Fiddler en el script que todas las imagenes nos las subrayecon amarillo, seria tan facil como al metodo OnBeforeRespone, añadir este if.

Añadir un If nuevo a OnBeforeResponse
1
2
3
4
if(oSession.url.toLowerCase().indexOf(".png") > -1)
{
    oSession["ui-color"]="yellow";
}

Para añadir un nuevo comando en QuickExec hay que ir a OnExecutionAction()

Por ejemplo, queremos añadir un comando que al ejecutarlo borre los host que tenga la URL que hayamos dicho. Seria tan facil como añadir este codigo en un case en OnExecutionAction()

Nuevo comando en QuickExec
1
2
3
4
5
6
7
8
9
case "rh":
    if(sPArams.length < 2)
    {
        FiddlerObject.StatusText ="Añade el host a borrar"; 
        return;
    }
    FiddlerOBject.UI.actSelectSessionWithRequestHeaderValue("Host",sParams[1]);
    FiddlerObject.UI.actREmoveSelectedSessions();
    break;

Fiddler Extensions

Las extensiones de Fiddler son dlls de .NET constuidas en .NET 2.0 Documentación oficial y escritas en c#.

Las interfaces a usar:

  • IAutoTamper (para los metodos de AutoTamperRequestBefore() y AutoTamperResponseAfter())
  • IHandleExecAction para QuickExec donde podremos acceder a OnExecAction()

En la pagina web de Telerik, puedes encontrar Extensiones, hay de muchos tipos, oficiales como de terceros. Desde coloreadores de css, des-minificadores de js o css a incluso testing de xss. Bastante recomendables.

Fiddler Core

Fiddler Core te da la posibilidad de añadir funcionalidades de Fiddler en una aplicacion .NET, es muy util sobre todoo cuando quieres usar Fiddler pero no la UI. Para empezar es necesario descargarse el core de FiddlerCore , despues referenciar fiddlerCore.dll y alli ya podremos a crear nuestra app. Funciona con Mono, y frameworks de 2.0 a 4.0.

FiddlerCap

Es una version de Fiddler para los no-tecnicos para poder enviar a desarrolladores y gente tecnica, indicencias mediante capturas de pantalla y capturas de sesion. Es un Fiddler simplicado.