[하루한줄] 헤더 수정을 통한 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를 전송하여 응답 시간을 통해 다양한 정보를 확인할 수 있습니다.
이를 통해 인트라넷에 열려있는 포트를 확인하는 과정은 다음과 같습니다.
- 슬랙에 파일을 업로드하고 “Open original”을 통해 원본 이미지 경로를 찾아 burp suite로 가져옵니다.
- repeater로 전송하고 클릭하여 정상적으로 접근되는지 확인합니다.
X-Forwarded-Host: xxx.com
을 헤더에 추가하여 500 error가 발생하는지 확인합니다.X-Forwarded-Host: file.slack.com@YOUR_DOMAIN
으로 헤더를 수정하고 302 response가 오는지 확인합니다. 경로는YOUR_DOMAIN/files-pri/...
로 지정합니다.- 도메인에 request가 전송되었는지 확인하고 도메인을 인트라넷 IP로 변경합니다. 포트를 바꿔가며 응답 시간을 확인합니다.
본 글은 CC BY-SA 4.0 라이선스로 배포됩니다. 공유 또는 변경 시 반드시 출처를 남겨주시기 바랍니다.