Aprobación de aplicaciones web: al enumerar directorios y archivos de sitios web, ¿cómo saber si HTTP 200 es una página válida o una página de error?

3

Supongamos que se está probando una aplicación web donde toda la funcionalidad está detrás de un inicio de sesión.

Una de las pruebas que se ejecutarán es verificar si alguna de las páginas está disponible sin iniciar sesión.

Probamos la URL real de la página a la que queremos llegar y vemos si nos redirige a la página de inicio de sesión o, si nos muestra el contenido sin inicio de sesión (incorrecto).

Para automatizar este proceso, tenemos una lista de (supuestamente) todas las URL válidas y ejecutamos un script que intenta cada página y registra el código de respuesta.

Si la respuesta es 200, entonces obtuvimos acceso sin inicio de sesión, sin embargo, si la respuesta es 301, 403, etc., estamos bien con esa URL.

El problema es que esta aplicación web está devolviendo 200 códigos, incluso cuando se redirige a la página de inicio de sesión.

¿Hay otra forma de detectar la redirección?

    
pregunta pzirkind 04.12.2017 - 20:28
fuente

3 respuestas

6

Aplicaciones web y códigos de estado HTTP

Si está devolviendo 200 tanto en una página no autorizada (302 Redirecciones a 200 páginas de inicio de sesión) como en una página autorizada (página autorizada descubierta), hay algunas cosas que puede hacer:

  1. Puede buscar lo que sucede en un inicio de sesión exitoso. Cree una cuenta falsa, inicie sesión. Vea qué no se incluye en la página real y qué no. Así es como encontrarás tu cadena única.
    • Recuerde: si hay un WAF o algo así, podría comenzar a redirigir todas sus solicitudes entrantes a 3xx / 4xx, ya sea para solicitudes válidas o no válidas.
  2. Analice la respuesta HTTP para el código HTML o una cadena que no aparecería en la página de inicio de sesión , O una cadena que SOLO aparece en la página de inicio de sesión.
    • Por ejemplo, podría aparecer la cadena "No autorizado" o "Iniciar sesión". Desearía excluir respuestas con esas cadenas.

Ambos pueden hacerse usando Python, o cualquier lenguaje de programación / scripting que quieras usar, incluyendo bash. Bash será, sin embargo, mucho más lento.

¿Podría dar un ejemplo, por favor?

Claro. Vea abajo.

1. Utilizando Python

Tendrás que editar esto. Es un código de ejemplo rápido.

import pycurl
import urllib
import sys
from StringIO import StringIO 

c = pycurl.Curl()
html = StringIO()
c.setopt(pycurl.WRITEFUNCTION, html.write)
c.setopt(c.VERBOSE, 0)

def send_req(url):
    field = urllib.urlencode(payload)
    c.setopt(c.URL, url)
    c.setopt(c.VERBOSE, 0)
    c.perform()
    if "successful non-login-page string to search for" in html.getvalue():
        html = StringIO() # Reset
        return True
    return False

with open("dir-or-file-list.txt") as f:
    for line in f:
        if send_req("http://haxlogin.page/" + line + ") == True:
            print "[!] Found a valid page: %s" % line

No tengo tiempo para verificar si este Python funciona, es solo un ejemplo general de cómo podrías hacerlo funcionar con Python, por lo que necesitarás editarlo.

2. Utilizando Burp Suite Pro

Con Burp Intruder , en el diálogo de ataque , puedes usar filter . Imagine 2xx devuelve "No autorizado" como el único código / cadena. Deseará excluir "No autorizado" de la búsqueda, de este modo:

Filter:

  1. Filtrar por término de búsqueda "No autorizado", búsqueda negativa
  2. Filtrar por código de estado: 2xx [éxito]

3. Usando OWASP Dirbuster

Options -> Advanced Options -> Scan Options -> Fail Case String -> Enter a string that appears only on the login page

302 Redirecciones

Tenga en cuenta: muchas aplicaciones realizan un redireccionamiento 302 después de publicar algo con éxito.

Eso no significa necesariamente que una redirección 302 sea mala o que no hayas encontrado nada. Usa curl -L para seguir la redirección y ver dónde te lleva.

Es probable que también quieras revisar el contenido de la página redirigida para no perderte nada.

    
respondido por el Mark Buffalo 04.12.2017 - 20:59
fuente
2

Si el servidor está redireccionando con un 200, es probable que estén realizando una meta actualización . Deberá revisar el cuerpo de la respuesta HTTP 200 y buscar algo como esto:

<head>      
    <meta http-equiv="refresh" content="0;URL='https://www.example.com/login'" />    
</head>   
    
respondido por el gowenfawr 04.12.2017 - 20:53
fuente
1

Si la aplicación está devolviendo 200 cuando se está redirigiendo, tendrá que analizar el contenido de la respuesta. Puede analizar la URL, o si eso no le dice lo que necesita saber, analizar el contenido de los campos de inicio de sesión.

    
respondido por el user52472 04.12.2017 - 20:33
fuente

Lea otras preguntas en las etiquetas