[하루한줄] Access files uploaded by employees to internal CDNs
URL
Target
Explain
일반 페이스북 유저가 비공개로 돌리거나 삭제한 콘텐츠나 직원이 업로드한 파일을 다운로드할 수 있는 취약점이 발견되었습니다. 해당 취약점을 통해 유효한 파일 URL이 존재하더라도 일반 유저가 접근할 수 없는 interncache-cln.fbcdn.net
과 같은 내부 CDN으로부터 파일을 받아올 수 있습니다.
다운로드할 파일은 파일(핸들)의 id를 표현하는 암호화된 문자열을 통해 식별할 수 있습니다. 이전 URL이나 파일 핸들을 알면 내부 CDN에 직원이 업로드한 파일에 접근이 가능합니다. 취약점을 악용하기 위한 세팅은 다음과 같습니다.
https://www.facebook.com/collabsmanager/start/
에서 Creator 등록합니다.- 승인되면,
https://www.facebook.com/collabsmanager/
에 접속하여 로그인합니다.https://business.facebook.com/collabsmanager/creator/creator_portfolio/{ID}/
와 유사한 URL로 리다이렉트 되어야 합니다.
Creator 등록이 완료되면, 다음 순서로 취약점을 트리거할 수 있습니다.
- request 반복을 위해 BurpSuite 같은 프록시 실행
- “Introduction”에서 “Edit” 클릭
- “Add Video”를 클릭하여 비디오 업로드
- 업로드가 완료되면 “Delete” 버튼을 눌러 업로드된 비디오 삭제
- BurpSuite history에서 다음과 같은 3개의 엔드포인트 획득
https://vupload-edge.facebook.com/ajax/video/upload/requests/start/
https://vupload-edge.facebook.com/ajax/video/upload/requests/receive/
https://business.facebook.com/branded_content/creator_profile/pitch_deck_video/async/save/
file_extension
파라미터 값을jpg
로 수정 후https://vupload-edge.facebook.com/ajax/video/upload/requests/start/
에 request를 보내면 response의video_id
XXXXXXXX를 받을 수 있습니다.video_id
파라미터 값을 XXXXXXXX로 수정 후https://vupload-edge.facebook.com/ajax/video/upload/requests/receive/
에 request를 보냅니다.fpuploader_video_file_chunk
파라미터 값을 다음과 같은 값으로 변경합니다.1:dW5kZWZpbmVk:application/octet-stream:GBapFAFK2bAstIUBAAAAAACthEIbbj07AACa:e:1568148336:ARa5BNCPUwoIKBVqyao
GBapFAFK2bAstIUBAAAAAACthEIbbj07AACa
는 파일의 HANDLE이며, CDN에 업로드된 파일을 나타냅니다. 이 핸들 값을 수정하여 다운로드할 파일을 지정할 수 있습니다.(ex.GFxcvkCRANjMRgABANB4MEoAAAAAbnsvAAAB
) 핸들 값을 수정한 후 start_offset
과 end_offset
값을 얻기 위해 response를 받습니다.
video_id
를 XXXXXXX로 바꾼 후https://business.facebook.com/branded_content/creator_profile/pitch_dec_video/async/save/
에 request를 보냅니다.https://business.facebook.com/collabsmanager/creator/creator_portfolio/{ID}/
에 접속하여 비디오 플레이어 source tag의src
값을 확인하면 수정된 핸들 값에 해당하는scontent.*.fbcdn.net
도메인을 가진 파일 URL을 찾을 수 있습니다. 해당 파일 URL은 내부 CDN에 존재하는 파일이 공용 CDN에서 접근할 수 있는 파일로 복사된 것입니다.
본 글은 CC BY-SA 4.0 라이선스로 배포됩니다. 공유 또는 변경 시 반드시 출처를 남겨주시기 바랍니다.