¡Bienvenid@ a Exploitables!

Aquí podrás interactuar y compartir todo lo que desees. ¡Esta es tu comunidad!

¡Regístrate!

Seguridad en aplicaciones Web - Parte 1

nvis

Script Kiddie
Registrado
24/3/22
Mensajes
19
Os traslado a continuación este artículo sobre la seguridad en las aplicaciones web:

En todo proceso de securización de software debemos abordar los defectos y virtudes del código para lograr un equilibrio adecuado entre la usabilidad y la seguridad de la misma, por ello debemos tener en cuenta los siguientes parámetros de Ataque y Defensa de dicho aplicativo web.​
  1. Arquitecturas, vulnerabilidades, incidentes de seguridad y amenazas en aplicaciones Web
  2. Metodología de seguridad en aplicaciones Web
  3. Protocolos Web
  4. Seguridad de la plataforma Web
  5. Herramientas de interceptación de tráfico Web
  6. Desplazamiento por directorios & Inyección de código, contenidos y comandos
  7. Autentificación y autorización
  8. Gestión de sesiones
  9. Inyección SQL (SQLi)
  10. Cross-Site Scripting (XSS)
  11. Cross-Site Request Forgery (CSRF)
  12. Vulnerabilidades Web en dispositivos embebidos
  13. Recomendaciones de la comunidad
Por solo destacar algunos tipos de ataques conocidos SQLi, XSS, CSRF, Man in the Middle, etc., etc. todos y cada uno de dichos tipos de ataques deben ser evaluados cuando nos decidimos a crear una estructura y sino somos quienes deciden la arquitectura, software, etc. lo primero que debemos hacer es conocer las Capas.pngvulnerabilidades CONOCIDAS de dicha arquitectura ya que la misma condicionará la seguridad de la aplicación.
Para ello nos será muy útil primero consultar las versiones, tipo de licenciamiento del software, protocolos, puertos y cualesquiera otros elementos que puedan condicionar el resultado final de la aplicación y todo ello previamente a ni siquiera picar la primera linea del código. Y ¿por qué es útil esto? Pues porque si intentamos corregir eso luego no podremos o lastrará la usabilidad del aplicativo, haciéndolo mas inseguro. Hay un dicho dentro de sector que dice "tu arquitectura/organización/estructura es tan débil, como el eslabón mas débil de la misma" no hay fallo pequeño todos son grandes. O sea podemos disponer de un cifrado AES 256 de 24 caracteres alfanuméricos para evitar los ataques vía Rainbow Tables o cerrar en el firewall todos los puertos excepto el 80 o el 443. Si hay una pequeña vulnerabilidad que afecte a los mismos que sea conocida ya estas trabajando de forma insegura. También es cierto que la seguridad total NO EXISTE, contra un zero day poco podemos hacer, pero contra vulnerabilidades conocidas en la versión, software o arquitectura debemos poner todo de nuestra parte para que no se conviertan en el vector de ataque principal.
Conocer los ataques y sus técnicas ayuda al programador o al SysAdmin a planear mejor las defensas frente a dichos ataques y a plantear el mas que necesario ANÁLISIS de RIESGOS para que nos preparemos ante una incidencia y lo hagamos de forma que seamos capaces de identificar los tiempos inoperativos, los medios de recuperación o Backup, los medios humanos implicados, etc.

Dentro de las distintas capas de una aplicación web debemos identificar las siguientes:​
  1. Capa de presentación - Servidor Web (Apache, IIS, NGINX, COMANCHE, etc.)
  2. Capa de aplicación - Servidor de aplicación (Weblogic, Tomcat, WebSphere, Struts, .NET, PHP, ColdFusion...)
  3. Capa de persistencia - Base de datos (Oracle Database, MS SQL Server, MySQL, PostgreSQL, etc)
  4. Clientes Web - Firefox, Explorer, Edge, Chrome, Brave, etc., etc.
Identificar estas distintas herramientas sus vulnerabilidades, versiones y compatibilidad con el software será determinante para saber que debemos reforzar en nuestra aplicación para hacerla mas segura y confiable.

Elementos.pngPara determinar la profundidad de la aplicación debemos conocer a cuantas capas afecta y si la misma va a participar en la seguridad o la misma va a ser confiada en terceros (por ejemplo recaptca), en dicho caso debemos garantizarnos que la misma sea accesible.

Por ejemplo. Diseñamos una aplicación que corre en entorno corporativo de nuestra empresa, sin embargo el programador ha decidido confiar la seguridad en recaptcha para validar los inicios de sesión, si dicho aplicativo no esta disponible dentro de la red, la aplicación no conseguirá superar el inicio de sesión.

Es por ello que se torna vital conocer toda la infraestructura y a cuantas de dichas capas le va a afectar un comportamiento, ni que decir tiene que dicho comportamiento debe ser evaluado previamente en un laboratorio de desarrollo configurado convenientemente.
A pesar de que cada día las plataformas están mas interconectadas que nunca, existen entornos propicios en los que son más productivos y dan menos problemas las aplicaciones. O sea un servidor IIS de Microsoft, podría albergar una aplicación con JAVA, pero ello va a obligar a implementar un servlet que permita traducir ese código para que el navegador lo ejecute en la parte de cliente. Aun más extraño sería querer instalar un entorno bajo Oracle Solaris con un servidor web de Microsoft, de ahí que se tan importante identificar la plataforma y su software asociado o desarrollado para correr en el. O un entorno de Microsoft con Natural Adabas.
Entornos probables de uso:​
  • LAMP/XAMP (Linux, Apache, MySQL y HPH)​
  • Microsoft (IIS, ASP/.NET o PHP)​
  • Solaris (ODB, J2EE, JSP)​
  • Etc.​
Deberemos distinguir entre dos entornos para la aplicación web:
  • Seguridad del entorno o Framework (PHP, .NET, J2EE, Ruby on Rails, etc.)
  • Seguridad a nivel de aplicación ( Lenguaje de programación, scripts propios, auto análisis o auditoría externa)
FIN PARTE 1
 
Arriba