#!/bin/bash # setup_lab.sh – Script khởi động lab CVE-2026-24136 tự động set -e RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' CYAN='\033[0;36m' NC='\033[0m' echo -e "${CYAN}" echo "╔══════════════════════════════════════════════════════╗" echo "║ CVE-2026-24136 Lab Setup ║" echo "║ Saleor IDOR – Unauthenticated PII Exfiltration ║" echo "╚══════════════════════════════════════════════════════╝" echo -e "${NC}" # ── 1. Kiểm tra dependencies ────────────────────────────────────────────────── echo -e "${YELLOW}[1/5] Kiểm tra dependencies...${NC}" for cmd in docker python3 curl; do if command -v $cmd &>/dev/null; then echo -e " ${GREEN}✓ $cmd${NC}" else echo -e " ${RED}✗ $cmd chưa được cài đặt${NC}" exit 1 fi done # Detect docker compose command (v2: "docker compose", v1: "docker-compose") if docker compose version &>/dev/null 2>&1; then DOCKER_COMPOSE="docker compose" echo -e " ${GREEN}✓ docker compose (v2)${NC}" elif command -v docker-compose &>/dev/null; then DOCKER_COMPOSE="docker-compose" echo -e " ${GREEN}✓ docker-compose (v1)${NC}" else echo -e " ${RED}✗ Không tìm thấy docker compose / docker-compose${NC}" echo -e " ${YELLOW}→ Mở Docker Desktop → Settings → Resources → WSL Integration → bật distro của bạn${NC}" exit 1 fi # ── 2. Khởi động containers ─────────────────────────────────────────────────── echo -e "\n${YELLOW}[2/5] Khởi động Docker containers...${NC}" $DOCKER_COMPOSE up -d echo -e "${CYAN} Đang chờ Saleor API khởi động (có thể mất 2-3 phút)...${NC}" for i in {1..40}; do if curl -sf http://localhost:8000/health/ &>/dev/null; then echo -e " ${GREEN}✓ Saleor API đã sẵn sàng!${NC}" break fi echo -n "." sleep 5 done # ── 3. Tạo superuser ────────────────────────────────────────────────────────── echo -e "\n${YELLOW}[3/5] Tạo admin account...${NC}" docker exec cve_saleor_api python manage.py shell -c " from django.contrib.auth import get_user_model User = get_user_model() if not User.objects.filter(email='admin@example.com').exists(): User.objects.create_superuser('admin@example.com', 'admin') print('Admin created: admin@example.com / admin') else: print('Admin đã tồn tại') " # ── 4. Populate sample data ─────────────────────────────────────────────────── echo -e "\n${YELLOW}[4/5] Populate sample data...${NC}" docker exec cve_saleor_api python manage.py populatedb --createsuperuser || \ echo -e " ${YELLOW}populatedb đã chạy trước đó, bỏ qua${NC}" # ── 5. Chạy seed data ───────────────────────────────────────────────────────── echo -e "\n${YELLOW}[5/5] Tạo victim accounts và orders...${NC}" pip install requests -q python3 scripts/seed_data.py echo -e "\n${GREEN}" echo "╔══════════════════════════════════════════════════════╗" echo "║ Lab đã sẵn sàng! ║" echo "╠══════════════════════════════════════════════════════╣" echo "║ Saleor API : http://localhost:8000/graphql/ ║" echo "║ Dashboard : http://localhost:9000 ║" echo "║ Admin login : admin@example.com / admin ║" echo "╠══════════════════════════════════════════════════════╣" echo "║ Chạy PoC: ║" echo "║ cd scripts ║" echo "║ python3 poc_cve_2026_24136.py explain ║" echo "║ python3 poc_cve_2026_24136.py enumerate ║" echo "║ python3 poc_cve_2026_24136.py file order_ids.json ║" echo "╚══════════════════════════════════════════════════════╝" echo -e "${NC}"