Nmap 에서 민감한 설정 파일 찾기 및 악용을 통한 권한 상승

Beginner

소개

이 랩에서는 Linux 시스템에서 민감한 설정 파일을 찾아 악용하여 root 권한으로 권한을 상승시키는 방법을 배우겠습니다. 목표는 웹 서비스 설정 파일과 사용자 관련 설정 파일에 대한 더 깊은 이해를 얻고, 이를 권한 상승에 활용하는 방법을 배우는 것입니다. 웹 취약점을 통해 www-data 사용자와 같은 낮은 권한의 셸을 이미 얻었다고 가정하고, root 권한으로 접근 권한을 높이는 기술을 탐구할 것입니다.

웹 서비스 설정 파일 조사

웹 서비스 설정 파일은 데이터베이스 자격 증명과 같은 민감한 정보를 포함할 수 있으며, 관리자가 비밀번호를 재사용하는 경우 권한 상승에 사용될 수 있습니다.

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

    cd /home/labex/project
    

    랩 환경을 초기화하는 것으로 시작해 보겠습니다.

    ./env_setup_1.sh
    

    초기화 후, 우리는 웹 취약점을 통해 얻은 낮은 권한의 셸을 시뮬레이션하여 www-data 사용자로 작동합니다.

  2. Linux 의 웹 서비스는 일반적으로 /var/www 디렉토리에 저장됩니다. 다음 파일에 집중해야 합니다.

    • database.php
    • user.php
    • *.config
    • config.php

    다음 명령을 사용하여 이러한 파일을 검색할 수 있습니다.

    find /var/www -type f \( -iname "user.php" -o -iname "database.php" -o -iname "config.php" -o -iname "*.config" \) 2> /dev/null
    

    예상 출력:

    /var/www/wordpress/wp-admin/includes/user.php
    /var/www/wordpress/wp-includes/user.php
    /var/www/wordpress/wp-content/plugins/akismet/views/config.php
    

    또한, 대상 시스템이 콘텐츠 관리 시스템 (CMS) 을 사용하는 경우, 해당 특정 CMS 에 대한 기본 데이터베이스 연결 파일 위치를 검색할 수 있습니다.

  3. 이 랩 환경에서 서버는 WordPress CMS 를 사용하고 있습니다. 검색을 통해 WordPress 데이터베이스 구성이 /var/www/wordpress/wp-config.php 파일에 저장되어 있음을 알 수 있습니다.

    more /var/www/wordpress/wp-config.php
    

    이 파일에는 MySQL root 계정 자격 증명이 포함되어 있습니다.

    /** MySQL database username */
    define( 'DB_USER', 'root' );
    
    /** MySQL database password */
    define( 'DB_PASSWORD', 'cD8M2M8fMiDHu4m1' );
    
  4. 관리자의 비밀번호 재사용 가능성을 고려하여, 이 비밀번호를 사용하여 시스템 root 사용자로 로그인해 볼 수 있습니다.

    su -
    

    불행히도, 이 비밀번호는 root 사용자에게 작동하지 않습니다.

  5. 다음으로, MySQL 데이터베이스에 로그인하여 더 많은 정보를 검색할 수 있습니다.

    mysql -u root -p -h 127.0.0.1
    

    wp-config.php 파일에서 비밀번호를 입력합니다.

    cD8M2M8fMiDHu4m1
    

    MySQL 데이터베이스 내에서, 더 많은 정보를 수집하기 위해 다음 명령을 실행할 수 있습니다.

    사용 가능한 데이터베이스를 확인합니다.

    show databases;
    

    ROB 데이터베이스를 선택합니다.

    use ROB;
    

    ROB 데이터베이스의 테이블을 나열합니다.

    show tables;
    

    rob_user 테이블을 선택합니다.

    select * from rob_user;
    

    데이터베이스에서 두 개의 자격 증명 세트를 더 얻습니다.

    root:CMPc5MoAGf
    alice:psoj9apv4u
    

    MySQL 데이터베이스를 종료합니다.

    exit
    
  6. 비밀번호 CMPc5MoAGf를 사용하여 root 사용자로 로그인해 볼 수 있습니다.

    su -
    

    데이터베이스에서 얻은 비밀번호를 입력합니다.

    CMPc5MoAGf
    

    이번에는 root 접근 권한을 성공적으로 얻었습니다!

  7. 성공적인 권한 상승을 증명하기 위해 /root 디렉토리에 proof.txt라는 파일을 생성합니다.

    echo "Success" > /root/proof.txt
    

    파일이 생성되었는지 확인합니다.

    ls /root/proof.txt
    

    이 단계에서, 우리는 권한을 상승시키기 위해 웹 서비스 설정 파일에서 민감한 정보를 찾고 악용하는 방법을 배웠습니다. 핵심 아이디어는 서버에서 인증 자격 증명을 검색하고 권한 상승을 위해 잠재적인 비밀번호 재사용을 활용하는 것입니다.

사용자 관련 설정 파일 조사

이 단계에서는 민감한 정보를 포함할 수 있는 사용자 관련 설정 파일에 집중합니다.

이전 단계 후, 여전히 root 셸에 있을 수 있습니다. 이 단계에서는 다음 명령을 실행하여 labex 사용자로 다시 전환합니다.

su - labex
  1. 먼저, /home/labex/project로 이동합니다.

    cd /home/labex/project
    

    랩 환경을 초기화하는 것으로 시작해 보겠습니다.

    ./env_setup_2.sh
    

    초기화 후, 우리는 이제 user001 사용자로 작동합니다.

  2. 조사해야 할 두 가지 주요 사용자 관련 설정 파일은 다음과 같습니다.

    • ~/.bash_profile: 환경 변수 및 시작 프로그램을 구성하는 데 사용됩니다. 이 파일은 사용자가 로그인할 때 (login) 실행됩니다.
    • ~/.bash_history: 각 사용자 홈 디렉토리에 있는 파일로, 사용자의 셸 명령 기록을 기록하며, 일반적으로 마지막 1000 개의 명령을 저장합니다 (이 기능은 일부 Linux 배포판에서 비활성화될 수 있습니다).
  3. ~/.bash_profile 파일을 확인하는 것으로 시작해 보겠습니다.

    cat ~/.bash_profile
    

    예상 출력:

    cat: /home/user001/.bash_profile: No such file or directory
    

    이 경우, user001 사용자는 ~/.bash_profile 파일을 사용하지 않는 것으로 보입니다.

  4. 다음으로, ~/.bash_history 파일을 확인해 보겠습니다.

    cat ~/.bash_history
    

    여기에서 기록된 명령을 찾을 수 있습니다.

    ...
    echo user001:09FMWNFS7n | chpasswd
    ...
    

    이 명령은 user001 사용자의 비밀번호가 09FMWNFS7n으로 변경되었음을 나타냅니다.

  5. 이 비밀번호를 사용하여 권한을 상승시키려고 시도할 수 있습니다.

    sudo whoami
    

    그리고 ~/.bash_history 파일에서 찾은 비밀번호를 입력합니다.

    09FMWNFS7n
    

    비밀번호가 작동하며, sudo 권한으로 명령을 실행할 수 있습니다.

  6. root 셸을 얻으려면 다음 명령을 사용할 수 있습니다.

    sudo /bin/bash -p
    

    사용자의 명령 기록에서 정보를 악용하여 root 셸을 성공적으로 얻었습니다.

  7. 마지막으로, 랩을 완료하기 위해 /root 디렉토리에 success.txt라는 파일을 생성합니다.

    echo "Congratulations" | sudo tee /root/success.txt
    

요약

이 랩에서는 Linux 시스템에서 권한을 상승시키기 위해 웹 서비스 설정 파일 및 사용자 관련 설정 파일에서 민감한 정보를 찾고 악용하는 방법을 배웠습니다. 데이터베이스 연결 파일, 사용자 명령 기록 및 기타 설정 파일과 같이 인증 자격 증명을 포함할 수 있는 파일을 검색하는 기술을 탐구했습니다. 잠재적인 비밀번호 재사용을 활용하여 root 접근 권한을 얻을 수 있었습니다.

핵심적인 내용은 권한 상승으로 이어질 수 있으므로 시스템에 저장된 민감한 정보를 항상 주시해야 한다는 것입니다. 이 랩에서는 특정 유형의 파일에 초점을 맞췄지만, 권한 상승 목적으로 악용될 수 있는 모든 파일이나 정보를 지속적으로 검색하는 사고방식을 유지하는 것이 중요합니다.