Docker release_agent cgroups escape
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
자세한 내용은 원본 블로그 게시물을 참조하십시오. 이것은 요약입니다:
Original PoC:
The proof of concept (PoC) demonstrates a method to exploit cgroups by creating a release_agent
file and triggering its invocation to execute arbitrary commands on the container host. Here's a breakdown of the steps involved:
환경 준비:
cgroup의 마운트 지점으로 사용할 /tmp/cgrp
디렉토리가 생성됩니다.
RDMA cgroup 컨트롤러가 이 디렉토리에 마운트됩니다. RDMA 컨트롤러가 없는 경우, memory
cgroup 컨트롤러를 대안으로 사용하는 것이 좋습니다.
자식 Cgroup 설정:
마운트된 cgroup 디렉토리 내에 "x"라는 이름의 자식 cgroup이 생성됩니다.
"x" cgroup에 대한 알림이 notify_on_release 파일에 1을 작성하여 활성화됩니다.
릴리스 에이전트 구성:
호스트의 컨테이너 경로는 /etc/mtab 파일에서 가져옵니다.
그런 다음 cgroup의 release_agent 파일을 구성하여 획득한 호스트 경로에 위치한 /cmd라는 스크립트를 실행합니다.
/cmd 스크립트 생성 및 구성:
/cmd 스크립트는 컨테이너 내에서 생성되며 ps aux를 실행하도록 구성되어 있으며, 출력은 컨테이너 내의 /output이라는 파일로 리디렉션됩니다. 호스트에서 /output의 전체 경로가 지정됩니다.
공격 시작:
"x" 자식 cgroup 내에서 프로세스가 시작되고 즉시 종료됩니다.
이로 인해 release_agent
(즉, /cmd 스크립트)가 트리거되어 호스트에서 ps aux를 실행하고 출력을 컨테이너 내의 /output에 기록합니다.
AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE) GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE)