README.md
Rendering markdown...
#!/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='[email protected]').exists():
User.objects.create_superuser('[email protected]', 'admin')
print('Admin created: [email protected] / 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 : [email protected] / 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}"