[하루한줄] 헤더 수정을 통한 Slack infra metadata 유출

URL

Header modification results in disclosure of Slack infra metadata to unauthorized parties

Target

  • Slack

Explain

클라우드 기반 팀 협업 도구 Slack의 files.slack.com 도메인에서 호스트 헤더 대신 X-Forwarded-Host 헤더를 사용하여 infra metadata를 유출할 수 있는 취약점이 발견되었습니다.

호스트가 files.slack.com이 아닐 때, 해당 URL은 500 Internal server error를 반환하는 유효성 검사가 존재합니다. 하지만 호스트 이름의 끝 부분에 ‘@’를 추가하여 해당 검사를 우회할 수 있습니다. 또한 해당 request는 프론트 엔드가 아닌 백 엔드로 전달되어 Blind SSRF 취약점이 존재하면 인트라넷에 arbitrary request를 전송하여 응답 시간을 통해 다양한 정보를 확인할 수 있습니다.

이를 통해 인트라넷에 열려있는 포트를 확인하는 과정은 다음과 같습니다.

  1. 슬랙에 파일을 업로드하고 “Open original”을 통해 원본 이미지 경로를 찾아 burp suite로 가져옵니다.
  2. repeater로 전송하고 클릭하여 정상적으로 접근되는지 확인합니다.
  3. X-Forwarded-Host: xxx.com을 헤더에 추가하여 500 error가 발생하는지 확인합니다.

  4. X-Forwarded-Host: file.slack.com@YOUR_DOMAIN으로 헤더를 수정하고 302 response가 오는지 확인합니다. 경로는 YOUR_DOMAIN/files-pri/...로 지정합니다.

  5. 도메인에 request가 전송되었는지 확인하고 도메인을 인트라넷 IP로 변경합니다. 포트를 바꿔가며 응답 시간을 확인합니다.