[하루한줄] Access files uploaded by employees to internal CDNs

URL

Access files uploaded by employees to internal CDNs / Regenerate URL Signature of user uploaded content

Target

  • Facebook

Explain

일반 페이스북 유저가 비공개로 돌리거나 삭제한 콘텐츠나 직원이 업로드한 파일을 다운로드할 수 있는 취약점이 발견되었습니다. 해당 취약점을 통해 유효한 파일 URL이 존재하더라도 일반 유저가 접근할 수 없는 interncache-cln.fbcdn.net과 같은 내부 CDN으로부터 파일을 받아올 수 있습니다.

다운로드할 파일은 파일(핸들)의 id를 표현하는 암호화된 문자열을 통해 식별할 수 있습니다. 이전 URL이나 파일 핸들을 알면 내부 CDN에 직원이 업로드한 파일에 접근이 가능합니다. 취약점을 악용하기 위한 세팅은 다음과 같습니다.

  1. https://www.facebook.com/collabsmanager/start/에서 Creator 등록합니다.
  2. 승인되면, https://www.facebook.com/collabsmanager/에 접속하여 로그인합니다. https://business.facebook.com/collabsmanager/creator/creator_portfolio/{ID}/와 유사한 URL로 리다이렉트 되어야 합니다.

Creator 등록이 완료되면, 다음 순서로 취약점을 트리거할 수 있습니다.

  1. request 반복을 위해 BurpSuite 같은 프록시 실행
  2. “Introduction”에서 “Edit” 클릭
  3. “Add Video”를 클릭하여 비디오 업로드
  4. 업로드가 완료되면 “Delete” 버튼을 눌러 업로드된 비디오 삭제
  5. BurpSuite history에서 다음과 같은 3개의 엔드포인트 획득
    1. https://vupload-edge.facebook.com/ajax/video/upload/requests/start/
    2. https://vupload-edge.facebook.com/ajax/video/upload/requests/receive/
    3. https://business.facebook.com/branded_content/creator_profile/pitch_deck_video/async/save/
  6. file_extension 파라미터 값을 jpg로 수정 후 https://vupload-edge.facebook.com/ajax/video/upload/requests/start/에 request를 보내면 response의 video_id XXXXXXXX를 받을 수 있습니다.
  7. video_id 파라미터 값을 XXXXXXXX로 수정 후 https://vupload-edge.facebook.com/ajax/video/upload/requests/receive/에 request를 보냅니다.
  8. fpuploader_video_file_chunk 파라미터 값을 다음과 같은 값으로 변경합니다.
    • 1:dW5kZWZpbmVk:application/octet-stream:GBapFAFK2bAstIUBAAAAAACthEIbbj07AACa:e:1568148336:ARa5BNCPUwoIKBVqyao

GBapFAFK2bAstIUBAAAAAACthEIbbj07AACa는 파일의 HANDLE이며, CDN에 업로드된 파일을 나타냅니다. 이 핸들 값을 수정하여 다운로드할 파일을 지정할 수 있습니다.(ex.GFxcvkCRANjMRgABANB4MEoAAAAAbnsvAAAB) 핸들 값을 수정한 후 start_offsetend_offset 값을 얻기 위해 response를 받습니다.

  1. video_id를 XXXXXXX로 바꾼 후 https://business.facebook.com/branded_content/creator_profile/pitch_dec_video/async/save/에 request를 보냅니다.
  2. https://business.facebook.com/collabsmanager/creator/creator_portfolio/{ID}/에 접속하여 비디오 플레이어 source tag의 src 값을 확인하면 수정된 핸들 값에 해당하는 scontent.*.fbcdn.net 도메인을 가진 파일 URL을 찾을 수 있습니다. 해당 파일 URL은 내부 CDN에 존재하는 파일이 공용 CDN에서 접근할 수 있는 파일로 복사된 것입니다.