Summary: FFmpeg is a video and audio software that is used for generating previews and for converting videos. Your current installation allows HLS playlists that contain references to external files, which leads to local file disclosure.
Steps to Reproduce:
1.Download the attached file. READ__etc_passwd.avi (F413554)
2.Go to https://www.flickr.com/photos/upload/ and upload the attached file.
3.Now go to https://www.flickr.com/cameraroll and you should be able to see contents of /etc/passwd.
해당 취약점은 flickr.com에서 발생하였다. 바운티는 $2,000을 수령하였고 제보자는 FFmpeg 타입에서 HLS 파서를 통해 임의의 파일을 읽는것을 증명하였다. 1번에 명시되어있는 파일을 다운로드 받아 내용을 살펴보면 다음과 같은 내용이 존재한다.
해당 파일은 EXTINF:1.0 밑에 임의의 코드를 삽입하였고 해당 사이트는 삽입한 코드를 읽어들여 실행한것으로 보인다.
여기서 사용된 단어 중 HLS는 HTTP Live Streeaming 을 의미한다(HLS는 애플에서 만들어졌다고 한다)
또한 박스내부에서 사용된 m3u 라는것은 멀티미디어 재생목록의 파일 포맷이며 , 하나, 또는 여러 개의 미디어 파일의 패스를 플레인 텍스트(텍스트 파일)로 기재한 것이다. 이 파일을. ".m3u" 또는 ".m3u8"의 확장자로 저장한다.
- 절대 경로(예시: C:\My Music\Heavysets.mp3)
- 상대 경로 (예시: Heavysets.mp3)
- URL
(출처:https://ko.wikipedia.org/wiki/M3U)
또한 m3u는 여러가지의 메타데이터를 지원하는데 그 목록은 다음의 주소에서 확인할 수 있다.
https://en.wikipedia.org/wiki/M3U
https://d2.naver.com/helloworld/7122
일단 위의 POC에서 사용된 메타데이터는 다음과 같다.
1) EXTM3U
- 파일 헤더, 파일의 첫 번째 행이어야한다.
2) EXT-X-MEDIA-SEQUENCE:0
- 제일 먼저 플레이해야하는 파일의 일련번호이며 명시되지않으면 0부터 진행된다.
3) EXTINF
- 이 지시어의 다음에 명시된 콘텐츠의 재생 시간과 제목을 명시한다
4) EXT-X-ENDLIST
- 매개변수가 없는 최종 종료 지점
해당 파일에서는 /etc/passwd를 불러오는 모습을 확인 할 수 있다.
또한 파일을 로드하는것외에도 URL을 삽입 시킬 수도 있다. SSRF 공격 또한 가능한것이다. 해당 자료는 다음의 주소에서 확인 할 수 있다. (25번째 슬라이드)
'Web' 카테고리의 다른 글
Fiddler Inspectors(response tab) 주석모음, beautifier (0) | 2019.11.28 |
---|---|
php 5.3+ 에서 strcmp 구문 0 리턴 (0) | 2019.10.15 |