Skip to content

BasisTI/treinamento-seguranca-web

Repository files navigation

Treinamento Segurança Web:

Treinamento Estendido com Demonstrações ao Vivo

Visão Geral

A arquitetura do nosso ambiente de treinamento simula um ecossistema de microsserviços moderno, compreendendo cinco componentes distintos que interagem entre si. Esta configuração é projetada especificamente para expor as vulnerabilidades que iremos explorar.

  1. Banco de Dados PostgreSQL (Docker): A única fonte de verdade para nossas aplicações, contendo dados de usuários, produtos e pedidos.

  2. shop-api (Spring Boot): Um backend de e-commerce "legítimo" rodando na porta 8080. Será usado para as demonstrações de Bypass de Validação, SQL Injection, IDOR (visualização), Path Traversal e XSS.

  3. user-api (FastAPI): Um backend de gerenciamento de usuários rodando na porta 8000. Será usado para as demonstrações de CORS/CSRF e IDOR (modificação).

  4. legit-shop-ui (Angular): A interface de frontend legítima do e-commerce, rodando na porta 4200 e se comunicando com ambas as APIs.

  5. malicious-ui (Angular): Um site aparentemente inofensivo rodando na porta 4300, projetado para lançar um ataque CSRF contra a user-api.

Segue um diagrama para representar a aplicação que usaremos:

Visão geral

plantuml::docs/diagrama-geral.puml[format=png]

Tópicos/Falhas abordados

  1. O Preço Não Confiável - Contornando a Validação do Lado do Cliente

  2. A Consulta Excessivamente Confiante - SQL Injection

  3. O Vizinho Enganoso - CORS, Cookies e CSRF

  4. A Identidade Roubada - Referência Insegura e Direta a Objeto (IDOR - Modificação)

  5. A Espionagem de Pedidos - IDOR (Visualização)

  6. O Caminho Enganoso - Path Traversal

  7. O Eco Malicioso - Cross-Site Scripting (XSS) Refletido

Tecnologias utilizadas

  • docker e docker compose para executar o banco de dados PostgreSQL

  • Os dois frontends usam Angular versão 19 com NodeJS versão 22

  • O backend shop-api utiliza o Spring Boot e Spring Data JPA com JDK 21

  • O backend user-api utiliza o FastAPI com Python 3.12

Execução dos serviços

  • Iniciar o banco de dados com docker compose up -d na pasta raiz

Verificar se o banco está rodando:

docker compose ps --format "table {{.Service}}\t{{.Status}}\t{{.Ports}}"
SERVICE      STATUS                        PORTS
postgresql   Up About a minute (healthy)   127.0.0.1:5432->5432/tcp

No status deve aparecer healthy.

  • Subir o backend shop-api executando mvn spring-boot:run na pasta shop-api

Verificar a saída:

2025-07-25T11:23:25.493-03:00  INFO 61246 --- [Backend de e-commerce "Legitimo"] [           main] b.com.basis.websec.shop_api.Application  : Started Application in 1.296 seconds (process running for 1.393)
  • Subir o backend user-api executando uv run uvicorn main:app --reload na pasta user-api:

As seguintes linas de log devem aparecer:

uv run uvicorn main:app --reload
INFO:     Will watch for changes in these directories: ['/home/cedric/Projetos/Basis/treinamentos/treinamento-seguranca-web/user-api']
INFO:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO:     Started reloader process [73412] using WatchFiles
INFO:     Started server process [73414]
INFO:     Waiting for application startup.
INFO:     Application startup complete.
  • Para os dois frontends: legit-shop-ui e malicious-ui rodar npm run start

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published