G A C E T A   D E   L I N U X
...haciendo a Linux un poco más divertido!
Revisión del libro: "Hacking web: Ataques y Defensa"
Por John B Cole
Traducción al español por José Gregorio Del Sol Cobos
el día 23 de Junio 2003, para La Gaceta de Linux
 
Los chicos de Addison-Wesley son buenos en el sentido de que me dan los libros LUG gratis, y juzgando por los títulos que hemos recibido últimamente, la seguridad de los sitios web es algo que los lectores no pueden obtener suficiente. No me voy a molestar en regurgitar la propaganda sin significado de la contraportada, ni las largas credenciales de los autores; en su lugar, me voy a centrar en una sencilla cuestión:¿este libro puede enseñar lecciones útiles a un desarrollador web? Si lo hace, el precio de 49.99 dólares está bien pagado, y si no, lo puedo usar para mi chimenea. Soy bastante crítico con los libros caros que se exceden sumamente en su alcance, y que como resultado son insatisfactorios para todos los lectores. Veamos cómo se porta "Web Hacking" ...

"Web Hacking" está dividido en cuatro secciones principales: "El patio de recreo del comercio electrónico", "Las direcciones web desenmarañadas", "¿Cómo lo hacen?" y "Kung Fu avanzado para web". Los autores están lejos de un buen comienzo, se dan cuenta (a diferencia de un porcentaje sobre el 99 % de los posteadores de Slashdot) de que "URLs" no requiere un apóstrofe. Esto es suficiente para toda una estrella incluso si el resto del libro está copiado, con errores gramaticales incluidos, de los archivos de Usenet (aunque el Amable Lector debería notar que no estoy haciendo esa afirmación). Los autores utilizan un estilo de prosa de charla, de conversación sobre un estilo académico, lo cual es apropiado para este libro.

"El patio de recreo del comercio electrónico" empieza con un caso de estudio sencillo demostrando un ataque efectivo sobre un pqueño sitio web comercial usando sólo HTTP. El atacante explotaba un script de Perl pobremente escrito en el ataque, y espero que todos nos demos cuenta de que hay más Perl mal escrito que no en el mundo (el Revisador debe admitir a regañadientes que en ocasiones ha contribuido a ese gran problema). Los autores apuntan que los cortafuegos y los sitemas de detección de intrusos son bastante inservibles, y continúan enfatizándolo a lo largo del libro. Todos nosotros deberíamos recordar bien esta lección. Seguramente, el ataque del caso de estudio no funcionaría contra Amazon o Dell, pero hay un montón de sitios web pequeños que están listos para la siega... y uno de esos sitios puede tener el número de su tarjeta de crédito. El Capítulo 1, "Lenguajes web" cubre todo desde Perl a ASP en pocas palabras. La idea aquí es más demostrar que cada lenguaje (incluso el HTML) tiene vulnerabilidades que pueden ser explotadas por un hacker con conocimientos. La mayoría de los desarrolladores web y administradores de sistemas no aprenderán nada nuevo aquí, pero rece para que su jefe no se salte este capítulo antes de que elija el Lenguaje Perfecto para el Sitio Web de su compañía de Mañana. El Capítulo 2, "Servidores web y de bases de datos", es muy breve y sólo discute sobre Apache e IIS en el frente de los servidores web, y de MS SQL Server y Oracle en el frente de las bases de datos. Supongo que no hay una gran mejora en discutir otros servidores web, pero está bien hacer notar que hay muchos diferentes servidores HTTP, y se encuentran en los más extraños lugares (¿qué está corriendo sobre sus servidores de producción?¿Está seguro?). Un capítulo sobre seguridad, escrito para clientes a nivel empresarial, de los que efectivamente poseen licencias para Oracle y MS SQL Server, estaría mejor para este libro. Estoy disgustado al no ver ninguna discusión de MySQL ni PostgreSQL aquí. Más sitios de los que se piensa, particularmente de negocios familiares, están corriendo con MySQL en el fondo, y hay un montón de instalaciones de MySQL inseguras en el mundo (estrella -1/2). El Capítulo 3, "Carritos de la Comprea, y Pasarelas de Pagos", era material bastante nuevo para mí. Estaba bastante familiarizado con ataques más antiguos sobre sistemas que usaban cookies del lado del cliente y variables GET para almacenar información importante (p. ej., el precio). No había considerado algunos de los ataques concirnientes a los sistemas de validación de pagos, y los ejemplos del libro recalcan las consecuencias del diseño descuidado. El Capítulo 4, "HTTP y HTTPS: Los protocolos del hacking", se incluye en gran medida para enfatizar el hecho de que todo lo que necesita un atacante es una URL para hacerle a usted lamentar la elección de la carrera. Aparte de esto, su modo de abarcar los protocolos HTTP y HTTPS es útli como un esbozo, pero el capítulo será de dudoso valor para un novicio de las redes. El Capítulo 5, "URL: la espada del hacker de webs", finaliza la Sección 1. En el prefacio de este capítulo aparece una cita de "Star Wars Episode IV: A New Hope", que demuestra claramente la meritosa deformación profesional de los autores. El Capítulo 5 efectivamente cubre los ataques a las URLs, como la estructura y codificación de las URLs, así como las diabluras de los metacaracteres y los formularios HTML. Algunos de los ataques descritos funcionarán sólo con variables GET, que son visibles para el usuario a través de la URL. Así pues, una sencilla indicación para evitar los ataques web fáciles podría ser: use sesiones para datos persistentes y pase datos desde el navegador al servidor en variables POST. Ya ha sido avisado. El material sobre los metacaracteres y el procesamiento de formularios se enfoca en el asunto del procesamiento de la entrada de usuario. He trabajdo en universidades durante mucho tiempo, así que créame cuando le digo que nunca debería confiar en la entrada de usuario. Nunca. Globalmente, la Sección 1 del libro es útil para administradores noveles y desarrolladores o manejadores; los profesionales experimentados no encontrarán fácilmente algo nuevo aquí,

La Sección 2, "Las URLs, desenmarañadas", comienza con el estudio de otro caso. Éste demuestra cómo un hacker inteligente podría analizar un sitio web basándose en las direcines mostradas al público, y usar ese conocimento para lanzar un ataque. Este caso de estudio sirve para motivar el resto de la sección. El Capítulo 6, "Web: bajo (la) cubierta", proporciona una supervisión de la estructura de las aplicaciones web, así como de los métodos usados por los hackers para diseccionar los sistemas objetivo. Hay una rara manera de pensar en todo esto, incluyendo APIs de servidores web, ODBC y JDBC. Incluso hay una útil tabla para ayudarle a emparejar extensiones y plataformas deservidor. Los autores incluso mencionan algunas cosas que usted puede hacer para limitar su exposición, y una de las mejores ideas (IMHO) es prevenir la fuga de mensajes de error al navegador. Eche una ojeada a este capítulo y mire los ejemplos. El Capítulo 7, "Leyendo entre líneas", se enfoca en los métodos de analizar el código HTML (mediante "Ver código fuente") para identificar vulnerabilidades y desarrollar ataques. Buen material aquí, que puede ser fácilmente pasado por alto durante los ciclos de desarrollo cortos y rápidos. Incluso hay un ejemplo de algunos usos demoníacos de wget y grep. El Capítulo 8, "Análisis del enlazamiento de sitios", continúa la exploración de los métodos de análisis de sitios. Este capítulo se enfoca principalmente en los usos de alguna herramietas de software para el análisis de sitios, todas las cuales son herramientas Windows (salvo wget). Estoy dividido sobre esta sección. Mucho del material me parece bastante obvio, pero eso es porque ya estaba familiarizado con él. Sin embargo, siento que todos los noveles y muchos profesionales experimentados pueden aprender del material de esta sección. Sin deducción.

La Sección 3, "Cómo lo hacen", pretende ser el verdadero corazón del libro, los "Grandes Trucos Mágicos Revelados". El Capítulo 9, "Ciber graffitti", cubre los ataques de desenmascaramiento de webs informados típicamente por la prensa. Un detallado caso de estudio cubre un número de asuntos de seguridad, incluyendo la configuración de servidores proxy, autentificación por HTTP y navegación de directorios. Buen material. El Capítulo 10, "¿E-ratería?", proporciona un caso de estudio sobre un sistema de comercio electrónico compuesto a partir de varios vendedores (tenga en cuenta esto: un trasfondo de Access...). El ataque básico estaba basado en la validación de formularios del lado del cliente y en el uso de campos ocultos para pasar información de precios. Se detalla un repaso del sitio para localizar los riesgos expuestos por una auditoría. El Capítulo 11, "Acceso a bases de datos", es corto pero menciona algunos ataques interesantes, así como profundas contramedidas. El Capítulo 13, "Java: Ejecución remota de comandos", era un suelo nuevo para mí. Generalmente preferiría tener brasas encendidas pegadas a mis ojos, o programar en COBOL que mirar código fuente Java. Sin embargo, como soy un desarrollador inteligente, estoy bien advertido sobre la popularidad de Java. Aprendí algún material interesante en este capítulo, pero la pieza clave que llevarse a casa es que siempre debería prevenir y dirigir la entrada de usuario. También se discuten las contramedidas basadas en servlets. El Capiítulo 13, "Identificación, trato de sesiones, secuestro de sesiones, y cookies". Este capítulo es interesante, pero a menos que un desarrollador haga algo espectacularmente loco, como usar un sistema que genere identificadores de sesión para invitados o almacene información importante sobre el cliente usando cookies, estos ataques no son una amenaza prominente. De mayor preocupación podría ser la seguridad física para prevenir que fueran robadas las copias de las cookies en la máquina de un usuario. El Capítulo 14, "Sobreflujo de buffer, ¿al vuelo?", podría ser un libro por sí mismo. Casi cualquier vulnerabilidad de las que tengo noticia estos días se debe al sobreflujo del buffer. Este capítulo cubre un bonito material técnico, y el lector temerario podría enfrentarse con algunos fragmentos de código en C o ASM; si se le han puesto los pelos de punta, ya estaba avisado. No estoy seguro de que este capítulo sea muy valioso más que para subrayar el hecho de que no toda vulnerabilidad de una web es debida a una programación pobre o a sistemas de administración en la parte de los sistemas de los consumidores de información. Sun, IBM, Microsoft y los de su calaña han lanzado todos numerosos productos con sobreflujo de buffer que han sido identificados. Incluso los vendedores cometen errores. La Sección 3 es por la que todos abrimos el libro para leer. Globalmente, es de lectura enriquecedora. Los autores hacen un muy buen trabajo diseccionando los ataques y enfatizando contramedidas sencillas como "validar toda la entrada, sea cual sea la fuente".

La Sección 4, "Kung Fu avanzado para la web", animó mis oídos. ¿El contenido de esto es del tipo del "Wau, ¡sé Kung Fu", de Keanu Reeves, o del tipo más pedestre de "Sí, he oído algo en algún sitio"? El Capítulo 15, "Hacking de web: herramientas automatizadas" es simplemente un resumen de alguna herramientas de hacking empleadas habitualmente. Francamente, sólo había oído hablar de netcat, pues es la única herramienta Unix discutida. A este paso nunca voy a golpear a un agente... El Capítulo 16, "Gusanos", es sólo un resumen de algunos famosos gusanos que han arrasado Internet como Alemania Francia. ¡Nunca voy a estar en el "Teatro de Kung Fu"! El Capítulo 17, "Golpeando a los IDS", cubre algunas cosas interesantes que usted puede hacer a los sistemas de detección de intrusiones (IDS), pero es simplemnte una curiosidad. Esta sección es más como "golpear a un tío borracho con un palo de billar cuando no está mirando", que "kung fu avanzado", y es la parte del libro que menos me ha gustado. Parece como tres capítulo breves escritos para PHBs para que se puedan sentir inteligentes al final del día. Lo siento por vosotros, chicos, lo estabais haciendo tan bien (estrella -1).

Hay poca excusa para que cualquier desarrollador competente de hoy día desarrolle una aplicación susceptible a la mayoría de los ataques detallados en este libro (el simple hecho del uso de sesiones habría desbaratado muchos de estos ataques), pero el libro es una lectura enriquecedora para desarrolladores noveles y administradores en general. Los desarrolladores más experimentados deberían leerlo en la tienda en un descanso para el café, o pillarlo de Internet. ¿Vale el libro 29.99 dólares? Me temo que debo decir "no". 24.99 es un precio más razonable, a pesar de la delgadez del libro (492 páginas). (Estrella -1/2).

 

[BIO] John es un científico y programador que ha estado usando Linux desde 1998, cuando un colega trastornado - y algo aterrador - le insistió en que había Un Modo Mejor. John apoya el software libre, y ha escrito varias aplicaciones para apoyar su investigación, y rasguños dolorosos, en PHP y Python. En algunas memorables ocasiones, escribió programas PHP que llamaban a programas Python, parseó las corrientes de salida, y presentó los resultados. Promete no volver a hacerlo.

Actualmente John usa Mandrake 9.1 en su máquina de escritorio, pero va a pasarse a Gentoo para probar su hombría cualquier día de éstos.

John será feliz de contarle sobre su investigación sobre la propagación de los animales y genética cuantitativa justo en el momento en que pueda encontrar un trozo de papel. Como ve, esta próxima pieza es bastante técnica...


Copyright © 2003, John B Cole. Licencia de copia http://www.linuxgazette.com/copying.html
Publicado en el Número 91 de Linux Gazette, Junio de 2003