Это репозиторий с примером многостраничного корпоративного лендинга на Next.js 15.0.0 + React 19.0.0. Сайт имитирует структуру вроде t1.ru: главная, продукты, кейсы, медиа, о компании, контакты. Используем React Server Components (RSC), Tailwind CSS, Framer Motion для анимаций, lucide-react для иконок, shadcn/ui для бейджей и Prisma с SQLite для базы (форма контактов сохраняет сообщения).
Проект специально сделан уязвимым для демонстрации PT-2025-48817 — JSON injection через форму контактов, которая может привести к RCE/SSRF из-за unsafe deserialization в react-server-dom-webpack
Клонируйте репу:
git clone <url-репы>
cd <директория>
Установите зависимости:
npm install
Если проблемы с версиями (например, build errors), попробуйте:
npm install --legacy-peer-deps
Или обновите Node.js:
sudo apt remove --purge nodejs npm -y
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt update
sudo apt install -y nodejs
node -v # должно быть v20.x.x
rm -rf node_modules package-lock.json
npm install
Инициализируйте Prisma (если нужно заново):
npx prisma init
npx prisma migrate dev --name init
В .env должно быть: DATABASE_URL="file:./prisma/dev.db".
Дев-режим:
npm run dev
Откройте http://localhost:3000.
Билд и прод:
npm run build
npm run start
Просмотр БД:
npx prisma studio
{ "type": "system", "payload": { "action": "ls" } }, то exec выполнит команду. Это симуляция deserialization attack для RSC