it-swarm-korea.com

이 익스플로잇의 작동을 막는 것은 무엇입니까 (unix SUID)?

Im이 새 파일을 만들 수있는 유닉스 시스템에 사용자가있는 경우 다른 시스템에서 루트로 이미 SUID 된 해당 시스템에 실행 파일을 다운로드 할 수없는 이유는 무엇입니까?

대본:

  • 내 사용자 Karrax (box1)로 셸에 로그인했습니다.
  • 이미 루트 인 다른 시스템 (box2)에서 실행 파일에 SUID 루트를 설정했습니다.
  • 그런 다음 파일을 box1로 전송/복사합니다.

로그인 한 첫 번째 셸에서이 파일이 루트로 실행되지 않도록하는 이유는 무엇입니까?

10
Chris Dale

파일을 다른 파일 시스템에 복사 할 때 내부적으로 일어나는 일은 새 파일을 만들고 내용을 복사하는 것입니다. 파일을 다른 파일 시스템으로 이동하려면 소스를 복사 한 다음 제거합니다. 따라서 파일을 복사 할 때 파일을 생성 할 때보 다 더 많은 권한이 없습니다.

파일을 만들면 사용자 소유입니다. 많은 유닉스 변형은 소유자 (chown)를 루트로 변경하는 것을 제한합니다. 파일 소유자가 파일을 제공 할 수 있도록 허용하는 경우에도 setuid 및 setgid 비트를 지 웁니다. 그룹 소유권 변경 (chgrp)도 루트 권한으로 호출하지 않는 한 setxid 비트를 지 웁니다. 권한을 변경하려면 파일을 소유하거나 루트 여야합니다. 따라서 프로그램을 실행할 권한이없는 사용자 또는 그룹에 대해서는 setxid 파일을 만들 수 없습니다.

Setxid 파일 삽입의 다른 벡터는 파일 시스템 마운트입니다. 대부분의 구성은 루트에 의해 직접 마운트 된 파일 시스템의 setxid 비트 만 허용합니다 (Linux, Samba, Fuse,…에서 user 옵션이있는 /etc/fstab 항목과 반대). 예를 들어 NFS 마운트를 사용하는 경우 파일 시스템이 nosuid 옵션으로 마운트되었는지 확인하는 것은 시스템 관리자에게 달려 있습니다.

업데이트 : 혼란스러운 사람들을 피하기 위해 여기에서 편집 한 이전 잘못된 답변을 무시하십시오. Gilles는 훨씬 더 나은 답을 가지고 있는데, 여기에 통합하거나 다시 말할 수 있지만 그는 그럴 자격이 있습니다 ....

내가 이전에 가지고 있던 것을 정말로보고 싶다면 편집 시간을 클릭하여 편집 기록에서 항상 찾을 수 있습니다.

3
nealmcb

다른 사람의 tarball을 다운로드하고 추출 할 때이 동작에 가까워집니다. uid가 7544이면 '소유권/권한 보존'이 루트 인 경우 압축을 푼 파일에 대한 uid가 표시되고 권한이없는 사용자 인 경우 오류가 발생할 수 있습니다.

3
hpavc