This course will become read-only in the near future. Tell us at community.p2pu.org if that is a problem.

Semana 1. Introducción, herramientas y lo básico de HTTP [Sept. 27, 2011, 12:01 a.m.]


Antes de comenzar lo invitamos a completar su perfil, y su presentación y a revisar la de otros participantes de este grupo de estudio: http://www.p2pu.org/es/groups/seguridad-de-aplicaciones-web/sign-up/

1. Lectura

1.1 Instalación de WebGoat.  

En el caso de Windows las instrucciones disponibles en https://www.owasp.org/index.php/WebGoat_Installation son:

  1. Descomprima WebGoat-OWASP_Standard-5.2.zip en su ambiente de trabajo
  2. Inicie Tomcat, navegando en el directorio descomprimido WebGoat y haciendo doble pulsación sobre "webgoat.bat"
  3. Inicie su navegador y vaya a: http://localhost/WebGoat/attack  Este enlace es sensitivo a capitalización, asegurese de usar  W y una G mayusculas.

En el caso de otros sistemas operativos puede guiarse con las instrucciones de instalación para OpenBSD disponibles en: http://dhobsd.pasosdejesus.org/?id=WebGoat+en+OpenBSD

Si tiene problemas en la instalaci{on coméntelos en esta página y ayude a responder las inquietudes de otr@s  participantes.

 

1.2. Primeras lecciones

Vea las 4 lecciones de la sección introducción. 

Después pase a las lecciones HTTP Basics y HTTP Splitting en la sección General.  Revise la pestaña Lesson Plan antes de intentar cada lección, así como la pestaña Hints varias veces para examinar diversas pistas.   Lo invitamos a publicar traducción de cada Lesson Plan y pistas como comentarios a esta página. Si tiene dificultades con algun ejercicio por favor publique preguntas aqui.

1.3 Prevenir División de Encabezados HTTP

Este tipo de fallas puede ocurrir cuando los encabezados HTTP son modificados por la entrada de un usuario (por ejemplo al redirigir a una URL que el usuario puede especificarse parcial o totalmente) en la que inserta cambios de línea.

Vea más en https://www.owasp.org/index.php/HTTP_Response_Splitting

Para prevenirlo remplace cambios de línea en los encabezados.

1.3.1. Ejemplo en PHP de prevención y detección

Ejemplo adaptado de http://www.securiteam.com/securityreviews/5WP0E2KFGK.html

<?php
  header ("Location: " . $_GET!['page']);
?>

If this script is hrhs.php call from the browser as:

hrhs.php?page=%!0aContent-Type: text/html%0aHTTP/1.1 200 OK%!0aContent-Type: text/html%0a%0a%3Chtml%3E%3Cfont color=red%3Ehey%3C/font%3E%3C/html%3E

Puede eliminar "\n" y "\r" del URL:

<?php
$p = str_replace(array("\n", "\r"), array("", ""), $_GET!['page']);
  header ("Location: $p");
?>

Hemos comprobado que al menos PHP haredened (includo en OpenBSD adJ) con la directiva suhosin.multiheader = On en ==php.ini== no es vulnerable a este tipo de ataque. Según la documentación de PHP PHP desde su versión 5.1.2 evita que se inserten cambios de línea en la función header() (ver documentación de header). Al intentar inyectar un cambio de línea en un encabezado se produce:

[Mon Sep 12 11:42:46 2011] [error] PHP Warning:  Header may not contain more
than a single header, new line detected. in /path/hrs.php on line 2

Para detectar esta vulnerabilidad en fuentes de una aplicación PHP, busque usos de las funcones header() y stream_context_create() y determine si sus parámetros incluyen variables controladas por el usuario