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


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 Instalación de WebScarab

La forma más simple de instalar WebScarab es descargar el JAR disponible en: http://dawes.za.net/rogan/webscarab/#current
En el momento de este escrito es: http://dawes.za.net/rogan/webscarab/webscarab-one-20110329-1330.jar

Como WebScarab fue desarrollado en Java, también necesita un JRE o un JDK, puede descargar de http://www.oracle.com/technetwork/java/javase/downloads/index.html  En el caso de OpenBSD puede instalar JDK 1.7 con: sudo pkg_add jdk

Tras instalar en Windows basta que haga doble pulsación sobre el archivo JAR de WebScarab, o en OpenBSD desde la línea de comandos:

export JAVA_HOME=/usr/local/jdk-1.7.0
/usr/local/jdk-1.7.0/bin/java -jar ./webscarab-one-20110329-1330.jar


 

Por otra parte si prefiere compilar esta aplicación de las fuentes del repositorio GIT, primer instale git, JDK y ant. En OpenBSD adJ sería:

sudo pkg_add jdk git apache-ant

A continuación clone el repositorio con :

cd ~/w
git clone git://dawes.za.net/webscarab.git/

Y compile usando ant:

cd webscarab
ant build

Esto crear un archivo JAR en el mismo directorio.

1.4 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.4.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

2. Ejercicios

  1. Describa el procedimiento que siguió para instalar y usar WebGoat y WebScarab
  2. ¿Cómo le parecieron los ejercicios de los básico de HTTP y división de encabezado HTTP?
  3. En su lenguaje de programación favorito y con su ambiente (framework) favorito ¿cómo previene división de encabezados HTTP?

Lo invitamos a comentar sus respuestas y sobre las respuestas de otros participantes, si responde en un blog por favor referencielo como comentario a esta tarea.

 

3. Bibliografía:

  1. Proyecto WebGoat OWASP. https://www.owasp.org/index.php/Category:OWASP_WebGoat_Project. 2011

 

4. Términos y Condiciones Especiales

Este escrito se cede al dominio público de acuerdo a la legislación colombiana, agradeciendo se de crédito a Pasos de Jesús y a Jessica Ledbetter. 2011.  Ver https://www.pasosdejesus.org/dominio_publico_colombia.html.

Task Discussion