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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2022-0847-Container-Escape — CVE-2022-0847을 사용하여 컨테이너 이스케이프 달성 CVE-2022-0847 (Dirty Pipe)을 이용한 컨테이너 이스케이프 | Kitploit
도구/GitHubGitHub/greenhandatsjtu/cve-2022-0847-container-escape
Privilege EscalationContainer SecurityVulnerability AnalysisExploitationContainer Escape
GitHubgreenhandatsjtu/cve-2022-0847-container-escape

CVE-2022-0847-Container-Escape

CVE-2022-0847을 사용하여 컨테이너 이스케이프 달성 CVE-2022-0847 (Dirty Pipe)을 이용한 컨테이너 이스케이프

저장소 보기

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
3764년 전Kitploit 검토 완료

CVE-2022-0847

CVE-2022-0847은 컨테이너 탈출을 달성하는 데 사용됩니다 (호스트의 읽기 전용 파일 덮어쓰기)

슬라이드 (중국어)는 여기에서 확인 가능

利用CVE-2022-0847 (Dirty Pipe) 实现容器逃逸(效果为覆写宿主机上任意只读文件)

中文汇报PPT在这里

소개

커널이 CVE-2022-0847에 취약한 경우, 공격자는 읽기 전용 파일을 덮어쓸 수 있습니다 (비영구적! 자세한 내용은 https://dirtypipe.cm4all.com/ 참조). 그러나 컨테이너는 컨테이너 내부의 파일에만 접근할 수 있습니다. 다행히 CAP_DAC_READ_SEARCH가 주어지면 공격자는 호스트의 파일을 덮어쓸 수 있습니다!

설명

https://dirtypipe.cm4all.com/ 에서 설명하듯이, 읽기 전용 파일을 덮어쓰려면 해당 파일을 파이프로 splice() 해야 합니다. splice()를 사용하려면 먼저 대상 파일을 O_RDONLY 플래그로 열어 파일 디스크립터를 얻어야 합니다.

이때 CAP_DAC_READ_SEARCH가 떠올랐습니다. Linux 매뉴얼에 따르면, CAP_DAC_READ_SEARCH가 주어지면 컨테이너 내부의 공격자는:

  • 파일 읽기 권한 검사 및 디렉터리 읽기/실행 권한 검사를 우회할 수 있습니다.
  • open_by_handle_at(2)를 호출할 수 있습니다.

CAP_DAC_READ_SEARCH 능력을 통해 호스트 파일 시스템을 탐색하고 open_by_handle_at(2)를 사용하여 컨테이너에서 호스트의 모든 파일을 읽기 전용으로 열 수 있으며, 그 파일 디스크립터를 얻을 수 있습니다 (자세한 내용은 http://stealth.openwall.net/xSports/shocker.c 참조).

이제 호스트의 대상 파일에 대한 파일 디스크립터를 얻었으므로, splice()를 사용하여 대상 파일 내용을 파이프로 보낸 다음 덮어쓸 수 있습니다!

사용법

root@kitploit:~
cp /etc/password . # back up /etc/password
gcc dp.c -o dp
docker run --rm -it -v $(pwd):/exp --cap-add=CAP_DAC_READ_SEARCH ubuntu
/exp/dp /etc/passwd 1 ootz: # overwrite /etc/password on host from offset 1
/etc/dp /etc/passwd # dump /etc/passwd on host

예제

먼저, 호스트에서 root 사용자가 읽기 전용 파일 /home/vagrant/flag.txt를 만들고, 내용은 hello world입니다:

그런 다음, CAP_DAC_READ_SEARCH 능력을 가진 컨테이너를 시작하고, 먼저 호스트의 /home/vagrant/flag.txt를 덤프하면 hello world가 나옵니다:

그런 다음 오프셋 1부터 내용 abcdefghij로 대상 파일을 덮어씁니다:

대상 파일을 다시 덤프하면 이제 내용이 habcdefghij입니다! 컨테이너를 종료하고 호스트에서 /home/vagrant/flag.txt를 확인하면 내용이 habcdefghij입니다.

네, 컨테이너에서 호스트의 파일을 덮어썼습니다!

참고 자료

  • https://dirtypipe.cm4all.com/
  • http://stealth.openwall.net/xSports/shocker.c
도구 다운로드