/ etc / passwd를 작성하지만 su에 대한 SUID 권한이없는 권한 에스컬레이션
이것은 연습이 아니며 해결책이 없을 수도 있습니다.
루트가 아닌 사용자가 실행하도록 설계된 Docker 이미지 (CentOS 기반)를 생성하고 있습니다. 그러나이 사용자는 "root"그룹에 있기 때문에 / etc / passwd에 대한 쓰기 권한이 있습니다. 다음은 / etc / passwd 권한입니다.
-rw-rw-r-- 1 root root 692 Dec 16 14:35 /etc/passwd
이것은 중대한 결함이며 권한 상승을 쉽게 할 수 있어야합니다. / etc / passwd에 사용자를 추가 할 수 있습니다.
하지만 su에는 SUID 권한이 없기 때문에이 사용자로 전환 할 수 없습니다.
-rwxr-xr-x 1 root root 32128 Sep 30 17:46 /bin/su
결과적으로 사용자는 성공적인 su 실행을위한 충분한 권한이 없습니다.
su: cannot set groups: Operation not permitted
내가 이해했듯이 대부분의 Linux에서 su 명령은 SUID 권한으로 구성됩니다. 즉, su를 실행하는 사람은 루트 사용자가 실행 한 것으로 간주됩니다. 또 다른 대안은 능력을 가지고 노는 것입니다. CAP_SETGID와 CAP_SETUID가 필요하다고 생각합니다. su가 이러한 기능으로 구성된 경우 SUID 권한이 필요하지 않을 수 있습니다. 그러나 Docker 이미지에는 su에 대한 기능이 없습니다. 따라서 루트 만 su를 제대로 실행할 수있는 것 같습니다.
또한 sudo가 설치되어 있지 않고 sshd / telnetd가 실행되고 있지 않습니다.
그렇다면 / etc / passwd에 추가 된 자격 증명을 어떻게 사용할 수 있습니까? 도움이 될 수 있다면 컬을 사용할 수 있습니다.
답변
당신은에 액세스 할 수있는 경우 (VM 또는 서버) 표준 리눅스 호스트에서 /etc/passwd
또는 /etc/shadow
다음 수정하거나 거기 (분명 심각한 문제가 될 것이다, 계정 자격 증명을 추가 할 수있는 수정을 허용하는 결과에 대한 자세한 /etc/passwd
에서 이 답변
Docker 컨테이너에서는 일반적으로 이러한 파일을 사용하는 소프트웨어가 설치되지 않으므로 Linux PAM, SSHD 또는 인증 데이터베이스를 사용하는 기타 소프트웨어가 없습니다.
이러한 유형의 소프트웨어를 설치하지 않으면 해당 파일에서 작동하는 프로그램이 없기 때문에 할 수있는 일이별로 없습니다.
물론, 컨테이너에서 실행되는 애플리케이션이 활용 /etc/passwd
한다면 수정하면 영향을 미칠 수 있지만 컨테이너가 수행하는 작업에 따라 상황에 따라 달라질 수 있습니다.