⚠️ 훈련용 취약 웹사이트 — 실제 거래소가 아닙니다
취약점 목록 A07
A07

Identification & Authentication Failures

CVSS Score
8.8
high

인증 관련 취약점으로, 세션 고정·약한 JWT 시크릿·브루트포스 허용 등이 포함됩니다.

💥 공격 시 영향

  • 약한 JWT 시크릿 크래킹 → 토큰 위조
  • 브루트포스로 비밀번호 추측
  • 세션 고정 공격(Session Fixation)

🎯 이 사이트에서 실습하기

JWT 크래킹
토큰 발급 후 hashcat으로 시크릿 크래킹
실습 페이지 →
브루트포스
계정 잠금 없이 무한 시도 가능
실습 페이지 →

💻 취약 코드 vs 안전한 코드

❌ 취약한 코드
// ❌ 취약: 약한 JWT 시크릿
const JWT_SECRET = 'secret'; // 1초 만에 크래킹

// ❌ 취약: algorithm 미지정 (none 공격)
jwt.verify(token, JWT_SECRET); // alg:none 허용 가능

// ❌ 취약: 로그인 시도 제한 없음
router.post('/login', (req, res) => {
  // 횟수 체크 없이 바로 쿼리
});
✅ 안전한 코드
// ✅ 안전: 강력한 랜덤 시크릿 + 알고리즘 명시
const JWT_SECRET = process.env.JWT_SECRET; // 최소 256bit 랜덤
jwt.verify(token, JWT_SECRET, { algorithms: ['HS256'] });

// ✅ 안전: Rate Limiting
const rateLimit = require('express-rate-limit');
const loginLimit = rateLimit({
  windowMs: 15 * 60 * 1000, max: 5,
  message: '로그인 시도 횟수 초과. 15분 후 재시도하세요.'
});
app.use('/login', loginLimit);

🛡️ 대응 방안

📚 참고 자료

OWASP A07:2021 CWE-307: Brute Force CWE-384: Session Fixation