Page 1

Seguridad en servidores y aplicaciones Web 18 y 19 de Agosto de 2004

Rodolfo Baader rbaader@arcert.gov.ar

Coordinaci贸n de Emergencias en Redes Teleinform谩ticas en la APN


Transparencias del Curso Disponibles en el sitio web de ArCERT.

http://www.arcert.gov.ar/

Coordinaci贸n de Emergencias en Redes Teleinform谩ticas en la APN


Temario del Curso • Introducción a conceptos relacionados con la Web. • Autenticación, autorización, validación de entrada, SQL Injection, ejecución de comandos, XSS. Ataques a las aplicaciones. • Desarrollo seguro de aplicaciones web. • Ataques al servidor. • Configuración segura de servidores web.

Coordinación de Emergencias en Redes Teleinformáticas en la APN


Temario Parte 1

• Historia de la web • Introducción a HTML, HTTP, Javascript, Java Applets, Cookies, etc • Logs • Herramientas • Mitos • Presentación de temas a tratar el resto de los días.

Coordinación de Emergencias en Redes Teleinformáticas en la APN


La web

Al abrir los ojos, vi el Aleph. El lugar donde están, sin confundirse, todos los lugares del orbe, vistos desde todos los ángulos. J.L. Borges, “Narraciones”, Salvat, 1982.

Coordinación de Emergencias en Redes Teleinformáticas en la APN


Un poco de Historia • 1989 - Tim Berners-Lee escribe "Information Management: A Proposal." • 1991- Anuncio de la World Wide Web. • 1993 - NCSA Mosaic 0.10 (Web browser gráfico), soporta imágenes y bookmarks • 1994 - webcrawler ; Creación del W3C. • 1995 - Internet Explorer 1.0 ; Apache 1.0 • 1998 - Primera mención pública de google

Coordinación de Emergencias en Redes Teleinformáticas en la APN


Objetivo Atractivo Hoy en día, las aplicaciones web tienen acceso a información valiosa: • • • • • •

Números de tarjetas de crédito Información de cuentas bancarias Información clasificada Información personal Historias médicas Correo electrónico Existe una aplicación web para casi todo!! Coordinación de Emergencias en Redes Teleinformáticas en la APN


HTML

HyperText Markup Language (HTML). Lenguaje de marcas inventado por Tim Berners-Lee en 1989. Todo sitio web utiliza el lenguaje HTML para mostrar texto, grรกficos, sonidos y animaciones. La especificaciรณn de las distintas versiones del mismo estรก a cargo del World Wide Web Consortium (W3C) (http://www.w3.org).

Coordinaciรณn de Emergencias en Redes Teleinformรกticas en la APN


HTML – Ejemplo <html> <head> <title>Página de Inicio</title> </head> <body> <h1>Título principal</h1> Este es el texto de la pagina. </body> </html> Coordinación de Emergencias en Redes Teleinformáticas en la APN


HTML FORMS <form method=POST action="/cgi-bin/login.cgi"> <table border=0> <tr><td>Usuario:</td> <td> <input name=user type=text width=20> </td></tr><tr><td>Clave:</td> <td> <input name=pass type=password width=20> </td></tr> </table> <input name=admin type=hidden value=“yes"> <input type=submit value="login"> </form>

Coordinación de Emergencias en Redes Teleinformáticas en la APN


HTTP El HyperText Transfer Protocol es un protocolo de aplicación para sistemas de información hipermediales, distribuidos y colaborativos. Es el lenguaje que utilizan los clientes y servidores web para comunicarse entre sí. Es un protocolo simple, basado en texto, que no maneja estados. Esto significa que cada solicitud que el cliente envía al servidor es independiente de las solicitudes anteriores.

Coordinación de Emergencias en Redes Teleinformáticas en la APN


HTTP

Arquitectura de red

Coordinaci贸n de Emergencias en Redes Teleinform谩ticas en la APN


HTTP

Protocolo cliente servidor

Coordinaci贸n de Emergencias en Redes Teleinform谩ticas en la APN


HTTP Request

• El protocolo HTTP es un protocolo de pedido/respuesta. Un cliente envía una solicitud a un servidor. En dicha solicitud incluye un método, URI y versión de http. Luego incluye una serie de encabezados y modificadores. Opcionalmente, puede incluir un cuerpo adicional con contenidos.

Coordinación de Emergencias en Redes Teleinformáticas en la APN


Métodos HTTP • GET - Solicita la entidad identificada por el URI incluido en el pedido. • HEAD - De funcionalidad similar al GET, pero el servidor debe devolver solo los headers, y no el contenido. • POST - Para que el servidor destino reciba la entidad incluida en el request, subordinada al URI indicado. • PUT - Para que el servidor almacene en el URI indicado, la entidad incluida en la solicitud. • OPTIONS - Solicita información acerca de los mecanismos de comunicación disponibles, métodos habilitados, etc. • DELETE - Para borrar del servidor el URI indicado. • TRACE - Para que el servidor responda con la solicitud, tal cual la recibió. Se utiliza para debugging.

Coordinación de Emergencias en Redes Teleinformáticas en la APN


URI y URL Las URIs proveen una forma de localizar un recurso en internet. Diferencia: URI es un concepto genérico, URL es un concepto informal (no se usa más en las especificaciones técnicas) asociado con algunos esquemas populares como HTTP, FTP, MAILTO, etc.

Coordinación de Emergencias en Redes Teleinformáticas en la APN


Ejemplo URL

Coordinaci贸n de Emergencias en Redes Teleinform谩ticas en la APN


Ejemplo URL (2)

Coordinaci贸n de Emergencias en Redes Teleinform谩ticas en la APN


URI http://myname:mypass@httphandbook.org:80/ mydir/myfile.html?myvar=myvalue#myfrag Esquema http (protocolo) Usuario Myname (opcional) Clave Mypass (opcional) Servidor httphandbook.org Puerto de red 80 (opcional) Directorio y recurso /mydir/myfile.html Cadena de pedido:”myvar=myvalue (opcional) Fragmento Myfrag (opcional) Coordinación de Emergencias en Redes Teleinformáticas en la APN


HTTP Request Ejemplo Request: GET /index.html HTTP/1.0 User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0) Opera 7.20 [en] Host: fs.arcert.gov.ar Accept: text/html, application/xml;q=0.9, application/xhtml+xml;q=0.9, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1 Accept-Language: en Accept-Charset: windows-1252, utf-8, utf-16, iso-88591;q=0.6, *;q=0.1 Coordinaci贸n de Emergencias en Redes Teleinform谩ticas en la APN


HTTP Response El servidor responde con una línea de status, que indica la versión del protocolo HTTP del mensaje, el código numérico de respuesta que indica éxito o fracaso, y un texto que describe dicho código, para que el mismo pueda ser comprendido por el usuario. A continuación, el servidor devuelve un mensaje en el que incluye información del servidor, información de la entidad solicitada, y posiblemente el contenido de la misma.

Coordinación de Emergencias en Redes Teleinformáticas en la APN


Content-Type

El encabezado Content-Type brinda informaci贸n acerca del tipo de recurso que va a ser transmitido. Ejemplos: Content-type: text/html Content-type: image/gif

Coordinaci贸n de Emergencias en Redes Teleinform谩ticas en la APN


HTTP Response HTTP/1.1 200 OK Date: Mon, 06 Oct 2003 18:16:10 GMT Server: Apache/1.3.28 Last-Modified: Fri, 20 Jun 2003 21:03:05 GMT ETag: "1c28a-21a-3ef37689" Accept-Ranges: bytes Content-Length: 538 Connection: close Content-Type: text/html <HTML><HEAD><TITLE>Web interno de ArCERT</TITLE> <BODY bgcolor="#CCCC66"> <p><img src="arcert.jpg" width="400" height="40"> </p> <font face="Verdana, Arial, Helvetica, sans-serif"> <p><b>Web Interno de ArCERT</b></p> Coordinaci贸n de Emergencias en Redes Teleinform谩ticas en la APN


HTTP – Códigos de Respuesta Rango

Categoría

100-199

Informativo

200-299

Exitoso

300-399

Redirección

400-499

Error Cliente

500-599

Error Servidor

Coordinación de Emergencias en Redes Teleinformáticas en la APN


HTTP – Códigos de Respuesta Código Significado 200

OK

204

No content

301

Moved permanently

403

Forbidden

404

Not Found

405

Method not allowed

500

Internal Server Error

Coordinación de Emergencias en Redes Teleinformáticas en la APN


Javascript

Se ejecuta del lado del cliente. Es un lenguaje interpretado de scripting desarrollado originalmente por Netscape. No permite acceder a informaci贸n local del cliente, como ser archivos, ni puede conectarse a otros equipos.

Coordinaci贸n de Emergencias en Redes Teleinform谩ticas en la APN


Javascript <html> <head><title>Simple JavaScript Example</title> <script language="Javascript"> function popup(){ alert("Hello and welcome world!");} </script></head> <body><h1 align=center>My JavaScript example</h1> <div align=center> <form><input type="button" value="Hello World Me!" onclick="popup()"></form> </body></html>

Coordinaci贸n de Emergencias en Redes Teleinform谩ticas en la APN


Java Applets Un Applet es un programa escrito en el lenguaje de programación Java que puede ser incluido en una página HTML. Cuando se utiliza un cliente JAVA-Habilitado para ver una página que contiene un applet, el código del mismo se transfiere al cliente y se ejecuta dentro de la Maquina Virtual de Java del cliente.

Coordinación de Emergencias en Redes Teleinformáticas en la APN


Java Applets En general, los applets no pueden leer o escribir archivos del cliente, y solo pueden hacer conexiones de red al host que envió el applet. Existen técnicas para que los applets tengan mayores permisos. Pueden estar basadas en la firma del código por entidades confiables. Más info: http://java.sun.com/j2se/1.3/docs/guide/security/spec/securityspec.doc1.html

Coordinación de Emergencias en Redes Teleinformáticas en la APN


ActiveX ActiveX es una tecnología desarrollada por Microsoft para distribuir software a través de Internet. Igual que los Applets Java, los “controles” ActiveX pueden estar embedidos en una página web. Los controles ActiveX se distribuyen en forma binaria. Ver (http://www.w3.org/Security/faq/wwwsf2.html#CLTQ9)

Coordinación de Emergencias en Redes Teleinformáticas en la APN


Cookies Las Cookies son un mecanismo desarrollado inicialmente por Netscape para solucionar el problema de la naturaleza sin estados del protocolo HTTP. Normalmente, cada vez que un browser solicita un recurso de un servidor web, dicha solicitud es tratada como una interacción nueva. Se pierde la secuencia de recursos solicitados por el cliente. Esto dificulta la creación de sitios como “carritos de compras” que deben recordar las acciones del usuario sobre un periodo de tiempo extendido.

Coordinación de Emergencias en Redes Teleinformáticas en la APN


Common Gateway Interface (CGI) Common Gateway Interface (CGI) es uno de los estándares más antiguos para pasar información desde un web server a una aplicación externa (por ej: escrita en C o en perl) y luego devolver la respuesta de ésta al cliente. Esta tecnología ofreció una de las primeras formas de generar contenido dinámico en la Web. CGI no es un lenguaje como podría ser PHP o VBScript, sino que es una serie de interfaces para ser usadas por otros lenguajes. Coordinación de Emergencias en Redes Teleinformáticas en la APN


Modelo de Capas

Coordinaci贸n de Emergencias en Redes Teleinform谩ticas en la APN


HTTP vs. HTTPS HTTP. Comunicación por canal en claro. Pausible de Sniffing. Por defecto: Port 80/TCP HTTPS: Comunicación con canal encriptado utilizando SSL. Bien implementado, no permite el robo de información en tránsito. Además, permite identificar fehacientemente al servidor y, en algunos casos, al cliente. Puede tener un Overhead importante. Port 443/TCP Coordinación de Emergencias en Redes Teleinformáticas en la APN


HTTP vs. HTTPS

Coordinaci贸n de Emergencias en Redes Teleinform谩ticas en la APN


HTTPS

Criptografía Simétrica Clave

Clave

Criptografía Asimétrica Privada

Pública

Coordinación de Emergencias en Redes Teleinformáticas en la APN

Pública


HTTPS

Certificado digital

Coordinaci贸n de Emergencias en Redes Teleinform谩ticas en la APN


HTTPS

Coordinaci贸n de Emergencias en Redes Teleinform谩ticas en la APN


HTTPS

Cuando un cliente web se conecta a un servidor utilizando una conexión segura, requiere que el certificado SSL del servidor cumpla con tres condiciones: • El nombre de dominio del certificado debe ser el mismo que el solicitado por el cliente web. • El certificado debe ser válido (no debe estar vencido ni revocado) • El certificado tiene que estar firmado por una autoridad certificante en la cual el cliente confía. Coordinación de Emergencias en Redes Teleinformáticas en la APN


Proxies

Coordinaci贸n de Emergencias en Redes Teleinform谩ticas en la APN


¿Por qué usar Proxies?

Web Cache Filtros de contenidos Control de acceso Análisis de aplicaciones web

Coordinación de Emergencias en Redes Teleinformáticas en la APN


Achilles

Web proxy simple Interface Windows

Captura trรกfico entre cliente y servidor y permite modificarlo Permite analizar http y https Permite cambiar headers, cookies, form elements, cuerpo del POST Puede loguear todo el trรกfico a un archivo de texto.

Coordinaciรณn de Emergencias en Redes Teleinformรกticas en la APN


Ejemplo Achilles

Coordinaci贸n de Emergencias en Redes Teleinform谩ticas en la APN


¿Qué loguea el servidor? Los campos más comunes son: • • • • • • • •

Método HTTP Versión HTTP URL del recurso solicitado. Código de status HTTP de la respuesta. Dirección IP del cliente Tamaño de la respuesta Fecha y hora de la transacción Valores de encabezados Referer y User-Agent.

Coordinación de Emergencias en Redes Teleinformáticas en la APN


Análisis de Logs Solicitud válida: 200.32.88.130 - - [01/Sep/2003:08:30:03 -0300] "GET / HTTP/1.1" 200 569 "http://www.pki.gov.ar/" "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)“ Ataque: 200.198.155.144 - - [01/Sep/2003:07:21:08 -0300] "GET / default.ida?XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX%u9090% u6858%ucbd3%u7801%u9090%u6858%ucbd3%u7801%u9090% u6858%ucbd3%u7801%u9090%u9090%u8190%u00c3%u0003% u8b00%u531b%u53ff%u0078%u0000%u00=a HTTP/1.0" 404 323 "-" "-" Coordinación de Emergencias en Redes Teleinformáticas en la APN


Análisis de Logs Solicitud válida que parece inválida: 192.168.36.63 - - [22/Oct/2001:14:07:59 -0700] "GET / _vti_bin/owssvr.dll?UL=1&ACT=4&BUILD=2614&STRMVER=4&CAPRE Q=0 HTTP/1.0" 200 20677 "-" "Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)" 192.168.36.63 - - [22/Oct/2001:14:08:00 -0700] "GET / MSOffice/cltreq.asp?UL=1&ACT=4&BUILD=2614&STRMVER=4&CAPR EQ=0 HTTP/1.0" 200 20677 "-" "Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0)" Solicitudes HTTP generadas por alguien que habilita la barra de discusión de Internet Explorer (Ver-> Barra del explorador -> discutir). Tiene que tener MS Office instalado.

Coordinación de Emergencias en Redes Teleinformáticas en la APN


Servidores Web

Fuente: www.netcraft.com Coordinaci贸n de Emergencias en Redes Teleinform谩ticas en la APN


Servidores Web

Coordinaci贸n de Emergencias en Redes Teleinform谩ticas en la APN


Mitos de seguridad en Servidores Web • Tengo un Firewall. Estoy protegido. • Utilizo SSL. Estoy protegido. • Con este producto usted estará completamente seguro. • No somos interesantes para un atacante. • Uso un lenguaje seguro. Estoy protegido. • Valido la entrada del usuario en el cliente, estoy protegido.

Coordinación de Emergencias en Redes Teleinformáticas en la APN


Temas a tratar a continuación • Descripción del mini laboratorio. • Tipos de ataques que vamos a realizar. • Propuestas para protegerse de dichos ataques.

Coordinación de Emergencias en Redes Teleinformáticas en la APN

Curso Web  

Facundo Costello

Read more
Read more
Similar to
Popular now
Just for you