Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
practice-22-23 — CVE-2017-9608 분석 | Kitploit
도구/GitHubGitHub/lacinquette/practice-22-23
Container SecurityVulnerability AnalysisExploitationFuzzingBinary AnalysisLearning & Education
GitHublacinquette/practice-22-23

practice-22-23

CVE-2017-9608 분석

저장소 보기
3년 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

프로젝트

실행: ./script.sh

GitHub 저장소 - https://github.com/LaCinquette/practice-22-23

진행 상황

  1. 취약점을 찾기 위해 FFmpeg 프로젝트를 선택했습니다. 요구 사항을 충족하는 커밋을 찾았습니다:

    • CWE-476 유형 - 널 포인터 역참조
  2. 도커파일을 생성했습니다:

    1. 기본 이미지로 Ubuntu 22.04 선택
    2. 패키지 설치 및 기타 명령 중 명령줄 상호작용을 방지하기 위해 DEBIAN_FRONTEND=nointeractive 설정
    3. 공식 위키에 명시된 필수 종속성 설치
    4. 작업 공간 준비 (workdir 폴더)
    5. 아직 수정되지 않은 취약점이 있는 커밋을 다운로드, 압축 해제 및 작업 공간으로 이동
    6. make 유틸리티를 사용하여 프로그램 빌드 실행
    7. 오류가 포함된 필요한 객체 파일을 찾아 workspace/out 디렉토리로 복사하는 copy_out.sh 스크립트 생성
    8. 컨테이너 시작 시 실행될 copy_out.sh 스크립트 실행 지침을 남깁니다
  3. 자동화를 위해 이미지를 빌드하고 컨테이너를 실행한 후 파일을 가져와 현재 디렉토리로 이동하는 script.sh 스크립트를 생성합니다:

    1. 현재 out 폴더 제거 (있는 경우)
    2. ffmpeg_image라는 이름의 이미지 빌드
    3. 빌드된 이미지를 기반으로 컨테이너를 실행하고 다음 매개변수를 전달합니다:
      • --rm 완료 시 컨테이너 자동 삭제
      • -v $PWD/out:/workspace/out 객체 파일이 호스트로 전송되는 임시 디렉토리 마운트
    4. out 폴더에서 필요한 파일 복사
    5. out 폴더 제거

취약점 분석

출처:

  • 커밋 - 수정된 오류
  • GitHub 페이지 - 취약점 관련
  • 보안 연구원의 이메일 - 취약점 관련

분석:

문제:

  1. ffmpeg -c:v dnxhd -i poc.mov -y output.ts 명령을 사용하여 특수하게 제작된 .mov 파일을 프로그램에 입력으로 제공
  2. DNxHD 형식 구문 분석을 위해 dnxhd_parser 파일의 dnxhd_parse 함수 호출
  3. 이 함수는 (같은 파일의) dnxhd_find_frame_end 함수를 호출하며, 특정 조건에서 끝을 찾지 못하고 오류 코드가 아닌 음수를 반환합니다
  4. 이 숫자는 다른 매개변수와 함께 프레임 결합을 위해 (parser 파일의) ff_combine_frame 함수로 전달됩니다
  5. 이 숫자가 오류 코드가 아니므로 ff_combine_frame은 이를 시프트로 인식하고 버퍼에서 해당 바이트를 다시 읽으려고 시도하지만, 버퍼가 비어 있기 때문에 널 포인터 역참조가 발생하여 Segmentation fault가 발생합니다

어셈블리에서:

0x08000d4e - 섹션 시작

  1. movsxd rcx, dword [rbx + 0xc]

    В регистре rcx получаем ссылку на pc->buffer

  2. add rcx, rdi

    Добавляем next к pc->buffer

  3. add rcx, qword [rbx]

    Добавляем pc->last_index к next и pc->buffer

  4. movzx edi, byte [rcx]

    Вычисляем байт по адресу rcx, но так как pc->buffer изначально null - ловим Segmentation fault

해결 방법:

예외 상황을 올바르게 처리하여 할당되지 않은 메모리 영역에 대한 접근을 방지합니다. 남은 바이트 수가 음수로 감지되면 루프를 건너뛰어 파일 처리를 계속합니다.

도구 다운로드