참조의 답변을 바탕으로: gdb가 suid 루트 프로그램을 디버그할 수 있나요?
주장: " 디버거가 루트로 실행 중인 경우 에만 프로그램을 setuid
디버깅 할 수 있습니다 setgid
. 커널은 ptrace
추가 권한으로 실행되는 프로그램을 호출하는 것을 허용하지 않습니다. 이렇게 하면 프로그램이 무엇이든 수행하도록 할 수 있습니다. 이는 본질적으로 다음을 의미합니다. 디버거를 호출하여 루트 셸을 실행할 수 있습니다 /bin/su
."
일반 사용자에게 이러한 권한이 부여되었는지 묻고 싶습니다. 디버거 도구를 통해 어떤 이점을 얻을 수 있습니까? 일반 사용자로서 디버거 도구를 사용하여 루트 셸에 어떻게 들어갈 수 있습니까?
Du Wenliang의 저서 "컴퓨터 및 네트워크 보안"(75페이지, 버퍼 오버플로 공격 수행)에 따르면 후속 질문이 있습니다. 그는 다음과 같은 C 언어 프로그램을 컴파일하면 다음과 같이 주장합니다.
$ gcc -z execstack -fno-stack-protector -g -o stack_dbg stack.c
$ sudo chown root stack
$ sudo chmod 4755 stack
프로그램을 일반 사용자가 선택적으로 디버깅할 수 있는 Set-UID 프로그램으로 만듭니다. 단, 일반 사용자는 어떤 권한도 얻지 못합니다. 왜? 사용자가 디버깅 도구에 액세스할 수 있는데 왜 이를 자신에게 유리하게 사용할 수 없습니까?