피드로 돌아가기
PicoCTF Web Challenge Writeup: Failure Failure
Dev.toDev.to
Security

Global Rate Limit를 이용한 HAProxy Failover 유도로 Backup Server 플래그 탈취

PicoCTF Web Challenge Writeup: Failure Failure

Yogeshwar Peela2026년 5월 27일3intermediate

Context

HAProxy Load Balancer가 Primary(s1)와 Backup(s2) 서버를 관리하며, s1의 Health Check 상태에 따라 트래픽을 제어하는 구조. Global Rate Limit 설정으로 인해 특정 사용자의 과도한 요청이 전체 시스템의 응답 상태에 영향을 주는 설계적 결함 존재.

Technical Solution

  • Global Rate Limit 임계치인 분당 300회 요청을 초과하는 트래픽 유도
  • Rate Limit 초과 시 발생하는 HTTP 503 응답을 HAProxy Health Check 실패로 연결
  • 2회 연속 실패 시 s1을 Down 상태로 처리하는 HAProxy의 fall 2 설정 활용
  • 트래픽이 Backup 서버(s2)로 자동 전환되는 Failover 메커니즘 트리거
  • IS_BACKUP=yes 환경 변수가 설정된 s2 서버에서 민감 데이터(Flag) 노출 유도

1. Rate Limit 설정을 Global 방식이 아닌 Per-IP 방식으로 적용하여 서비스 가용성 확보

2. Health Check 전용 엔드포인트를 구축하고 일반 사용자 Rate Limit 적용 대상에서 제외

3. Backup 서버를 포함한 클러스터 내 모든 노드에 대해 동일한 보안 수준의 접근 제어 적용

4. 5xx 에러 응답이 Load Balancer의 상태 판정(Health Check)에 미치는 영향 분석

원문 읽기