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

Server-Side Request Forgery (SSRF)

CVSS Score
8.6
high

서버가 공격자가 제어하는 URL로 요청을 보내도록 유도해, 내부 네트워크나 클라우드 메타데이터에 접근하는 취약점입니다.

💥 공격 시 영향

  • 내부 서비스(localhost, 192.168.x.x) 접근
  • AWS/GCP 메타데이터 서버에서 IAM 자격증명 탈취
  • 내부 관리 API, Redis, DB 등 접근

🎯 이 사이트에서 실습하기

SSRF - 내부 API 접근
http://127.0.0.1:3000/api/users 입력
실습 페이지 →

💻 취약 코드 vs 안전한 코드

❌ 취약한 코드
// ❌ 취약: URL 검증 없는 외부 요청
router.post('/price-fetch', async (req, res) => {
  const { url } = req.body;
  const response = await axios.get(url); // 어떤 URL이든 요청
  res.json(response.data);
  // http://169.254.169.254/ → AWS 메타데이터 접근
});
✅ 안전한 코드
// ✅ 안전: 허용 도메인 화이트리스트
const ALLOWED = ['api.coindesk.com', 'api.bithumb.com'];
const { hostname } = new URL(url);
if (!ALLOWED.includes(hostname)) {
  return res.status(403).json({ error: '허용되지 않는 도메인' });
}

// ✅ Private IP 차단
const ip = await dns.resolve(hostname);
if (isPrivateIP(ip)) {
  return res.status(403).json({ error: '내부 IP 접근 차단' });
}

🛡️ 대응 방안

📚 참고 자료

OWASP A10:2021 CWE-918: SSRF PortSwigger SSRF Labs