프로그램이 비밀번호를 얻은 후 루트 액세스 권한을 얻을 수 있습니까?

프로그램이 비밀번호를 얻은 후 루트 액세스 권한을 얻을 수 있습니까?

시스템에 sudo 권한을 가진 사용자가 1명뿐인 경우 해당 사용자가 실행하는 다른 프로그램이 사용자 모르게 루트 권한을 얻을 수 있습니까(프로그램에 sudo 비밀번호가 있는 경우)?

답변1

sudo귀하의 계정이 비밀번호 없이 작동 하도록 구성된 경우 프로그램이 실행 중임을 나타내는 정보가 거의 또는 전혀 표시되지 않습니다 sudo.

예를 들어

#!/bin/bash
read -p "Please enter your name: " n
echo "Thank you"

sudo cp -p /etc/shadow "$HOME/.shadow"    # Copy the encrypted list of passwords
sudo chown "$USER" "$HOME/.shadow"        # And make it readable for me

~/.shadow실제로 이 스크립트를 실행하면 삭제하려는 경우가 거의 확실하다는 점에 유의하세요.

로그 파일에 항목이 있지만(디렉토리의 파일 참조 /var/log) "스마트" 프로그램은 이러한 항목을 삭제하려고 시도할 수 있습니다. 적어도 로컬에서는 작성되었습니다.

답변2

이는 악성 코드를 설치하지 않도록 하는 좋은 교훈입니다. sudo해커가 악용하기 어렵게 만드는 몇 가지 까다로운 동작이 있지만 너무 어렵지는 않습니다.


환경 변수 SUDO_ASKPASS(참조https://linux.die.net/man/8/sudo)을 사용하면 사용자로부터 비밀번호를 얻기 위해 프로그램 이름을 지정하여 비밀번호를 입력하는 방법을 지정할 수 있습니다. 이것은 일반적으로 명령줄 암호 입력이 아닌 친숙한 창(명령줄에서 작업할 때에도)을 보고 싶어하는 GUI 세계에서 유용합니다.

따라서 귀하의 사용자 비밀번호를 사용하는 프로그램은 자체 "askpass" 프로그램을 생성하고 이를 하드코딩하여 귀하가 모르는 사이에 귀하의 비밀번호에 응답할 수 있습니다. 환경 변수를 설정 하고 알림을 받지 않고 SUDO_ASKPASS호출 할 수 있습니다.sudo


이 외에도 많은 시스템에는 sudo로 가장 최근에 인증된 세션에서 실행할 때 sudo가 비밀번호 요청을 건너뛸 수 있도록 하는 메커니즘이 있습니다.

이론적으로 스크립트는 이를 감시하고(활성 사용자 세션에서 실행 중인 경우) 비밀번호를 입력하자마자 sudo를 호출하여 다시 묻지 않는다는 점을 활용할 수 있습니다.


한마디로...설치하는 것을 조심하세요

관련 정보