
El proyecto OWASP NodeGoat proporciona un entorno para aprender cómo los riesgos de seguridad del OWASP Top 10 se aplican a las aplicaciones web desarrolladas con Node.js y cómo abordarlos de manera eficaz.
Al ser ligero, rápido y escalable, Node.js se está convirtiendo en una plataforma ampliamente adoptada para el desarrollo de aplicaciones web. Este proyecto proporciona un entorno para aprender cómo se aplican los riesgos de seguridad del OWASP Top 10 a las aplicaciones web desarrolladas con Node.js y cómo abordarlos de forma eficaz.
OWASP Top 10 para aplicaciones web Node.js:
Esta aplicación incluye una página de tutorial que explica las vulnerabilidades del OWASP Top 10 y cómo corregirlas.
Una vez que la aplicación esté en ejecución, puedes acceder a la página del tutorial en http://localhost:4000/tutorial (o en el puerto que hayas configurado).
A Vulnerable Node.js App for Ninjas para explotar, romper y corregir. Puede que quieras configurar tu propia copia de la aplicación para corregir y probar vulnerabilidades. Pista: busca comentarios en el código fuente.
La base de datos viene precargada con estas cuentas de usuario creadas como parte de los datos semilla:
admin p:Admin_123user1 p:User1_123), (u:user2 p:User2_123)Instala Node.js - NodeGoat requiere Node v8 o superior
Clona el repositorio de GitHub:
git clone https://github.com/OWASP/NodeGoat.git
Ve al directorio:
cd NodeGoat
Instala los paquetes de Node:
npm install
Configura MongoDB. Puedes instalar MongoDB localmente o crear una instancia remota:
Usando MongoDB local:
Usando una instancia remota de MongoDB:
MONGODB_URI con la cadena de conexión de tu clúster, que puedes ver en el
diálogo de conexión. Selecciona «Connect your application»,
define el driver como «Node.js» y la versión como «2.2.12 or later». Esto proporcionará una cadena de conexión con la forma:
mongodb://<username>:<password>@<cluster>/<dbname>?ssl=true&replicaSet=<rsname>&authSource=admin&retryWrites=true&w=majority
Por defecto, la aplicación se alojará en el puerto 4000 y se conectará a una instancia de MongoDB en localhost:27017. Para cambiarlo, define las variables de entorno PORT y MONGODB_URI.
Otros ajustes pueden cambiarse actualizando el archivo de configuración.
El repositorio incluye el Dockerfile y docker-compose.yml necesarios para configurar la aplicación y la instancia de base de datos, y conectarlas entre sí.
Instala docker y docker compose
Clona el repositorio de GitHub:
git clone https://github.com/OWASP/NodeGoat.git
Ve al directorio:
cd NodeGoat
Construye las imágenes:
docker-compose build
Ejecuta la aplicación; esto arranca la aplicación NodeGoat en http://localhost:4000/:
docker-compose up
Esta opción utiliza un servidor node de Heroku gratuito ($0/mes).
Aunque no es imprescindible, se recomienda hacer fork de este repositorio y desplegar el repositorio bifurcado. Esto te permitirá corregir vulnerabilidades en tu propia versión bifurcada y luego desplegarla y probarla en Heroku.
Configura una instancia de MongoDB de acceso público:
Despliega NodeGoat en Heroku haciendo clic en el siguiente botón:
En el diálogo Create New App, define la variable de configuración MONGODB_URI con la cadena de conexión de tu clúster de MongoDB Atlas.
Puedes verla en el diálogo de conexión del clúster.
Selecciona «Connect your application», define el driver como «Node.js» y la versión como «2.2.12 or later».
Esto proporcionará una cadena de conexión con la forma:
mongodb://<username>:<password>@<cluster>/<dbname>?ssl=true&replicaSet=<rsname>&authSource=admin&retryWrites=true&w=majority
Los campos <username> y <password> deben rellenarse con los datos del usuario de base de datos añadido anteriormente. El campo <dbname> define el nombre de la
base de datos que nodegoat utilizará en el clúster (p. ej. «nodegoat»). El resto de campos ya vendrán rellenados con los datos correctos de tu clúster.
Por favor, sigue la guía de contribución
Este proyecto se rige por un Código de Conducta.
Estos son los increíbles colaboradores del proyecto NodeGoat.
Código bajo licencia Apache License v2.0.
<username><password><dbname>Rellena MongoDB con los datos semilla necesarios para la aplicación:
npm run db:seed
Por defecto se usará la configuración «development», pero se puede pasar la configuración deseada como argumento si es necesario.
Inicia el servidor. Puedes ejecutarlo con node o nodemon:
npm start
npm run dev