우리는 sudoedit를 사용하는 것이 더 안전하다는 것을 알고 있습니다*. 하지만 sudoers에서 다음을 사용하면 어떤 나쁜 일이 일어날까요?
Cmnd_Alias FOO = /bin/ed, /usr/bin/ed, /usr/bin/vi
foouser LOCALHOST = NOPASSWD: NOEXEC: FOO
"fouser"를 루트 프롬프트로 이스케이프할 수 있습니까? - 틀림없이와는 별개로이제 그는 /etc/shadow 파일을 편집하고, 사용자 정의 pwd 해시를 루트로 보내고, 약 3초 안에 루트가 될 수 있습니다.
어쩌면 LD_PRELOAD와 ed를 사용하는 마법이 있을까요? 정확히 어떻게요?
*=sudo ed는 루트로 실행됩니다. 그러나 sudoedit는 지정된 사용자로 실행되며 편집된 파일은 편집 전/후에 복사됩니다.
답변1
"fouser"를 루트 프롬프트로 이스케이프할 수 있습니까?
아마도 foouser는 이제 모든 시스템 바이너리를 열고 완전히 다른 것으로 "편집"할 수 있으므로 foouser가 상상할 수 있는 모든 유형의 보안 허점을 남길 수 있습니다. 예를 들어 setuid 바이너리에 대해 이 작업을 수행하면 passwd
루트가 아닌 사용자가 이를 사용하여 의도하지 않은 권한 있는 작업을 수행할 수 있으므로 특별한 잠재력이 있습니다.
이 외에도 이제 /etc/shadow 파일을 편집하여 사용자 정의 비밀번호 해시를 배치할 수 있습니다.
또는 해시를 제거하면 루트로 로그인하는 데 비밀번호가 필요하지 않습니다.
답변2
수정할 수 있는 파일의 수가 엄청나게 많습니다"백도어 설치"시스템에서(편집이 /etc/group
가장 쉽지만 이를 달성하는 더 미묘한 방법이 많이 있습니다). 이 보호 기능은 noexec
파일을 편집하여 비활성화 할 수도 있습니다 /etc/sudoers
!NOEXEC
나는 "sudo $editor"를 안전하게 만드는 것에 의존하지 않을 것입니다 . 안전하지 않습니다.대신 sudoedit를 사용하십시오. (루트 권한을 얻기 위해 많은 파일을 사용할 수 있으므로 매우 주의하십시오!)
또한 sudo의 noexec 래퍼는 (천천히) 움직이는 대상을 추적합니다(참조:sudo_noexec.c 기록그리고fork(), vfork(), exec() 및 clone()의 차이점). 따라서 sudo_noexec
래퍼는 일부 Unix 변형에서 사용자를 보호하지 못할 수 있으며 새로운 시스템 호출을 제한하지 않을 수도 있습니다(편집기가 이러한 새 API를 사용한다고 가정).
귀하의 질문에 구체적으로 답변하기 위해 LD_PRELOAD
sudo 프로필은 env_reset
기본적으로 활성화되어 있습니다.새로운 최소 환경에서 명령이 실행되도록 합니다.. 그래서 그것이 악용될지는 의문이다.
추신: 저도 비슷한 질문을 게시했습니다.https://unix.stackexchange.com/q/200411/16640!
답변3
문제는 "무슨 일이 일어날 수 있었는가"가 아니라 "무엇이 일어났는가"입니다.할 수 없다발생하다. 내 말은, vi
이는 매우 강력한 도구이며 권한이 있는 사용자가 이를 사용하면 공격 및 악용을 위한 많은 잠재적인 경로가 열리게 된다는 것입니다.
당신이 그것을 해서는 안 되는 이유는 다음과 같습니다. 왜냐하면 당신은 크고 오래된 집에서 "쥐구멍 꽂기" 놀이를 하고 있기 때문입니다.
모든 상호작용은 "위험"합니다. 공격 경로:
- Shell Escape - NOEXEC가 도와드리겠습니다.
- 시스템 구성 파일 편집 - 등과 같은 "명백한" 범인이 많이 있지만
/etc/passwd
CGI 스크립트를 Apache 인스턴스에 삽입하고 해당 경로의 권한을 높이는 등 이를 수행할 수 있는 곳도 있습니다. 또는 scrontab 에 의해 호출되는 스크립트를 수정하세요root
. (NFS가 마운트되어 있다면 특히 흥미로울 것입니다!) - 시스템 스크립트를 편집합니다(예: content
/etc/rc
). - 심볼릭 링크 순회 공격 - 심볼릭 링크를 생성한
/etc/passwd
후 편집저것모든 유형의 파일 화이트리스트를 우회합니다.
NOPASSWD: ALL
당신이 실제로 의존하는 것은 사용자가 루트처럼 어리석은 일을 하지 않는다는 것이기 때문에 직접 제공할 수도 있습니다.
참고로 많은 사람들이 좋아하는 편집자를 갖고 있습니다. 나는 필요할 때 그리고 최근에는 대부분의 시간을 ed
사용했습니다 . vim
그러나 모두가 그들을 좋아하는 것은 아닙니다. 이것의 가장 큰 장점 중 하나는 sudoedit
무엇이든 사용할 수 있다는 것입니다.