nmap
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.2 (FreeBSD 20161230; protocol 2.0)
| ssh-hostkey:
| 2048 e3:3b:7d:3c:8f:4b:8c:f9:cd:7f:d2:3a:ce:2d:ff:bb (RSA)
| 256 4c:e8:c6:02:bd:fc:83:ff:c9:80:01:54:7d:22:81:72 (ECDSA)
|_ 256 0b:8f:d5:71:85:90:13:85:61:8b:eb:34:13:5f:94:3b (ED25519)
80/tcp open http Apache httpd 2.4.29 ((FreeBSD) PHP/5.6.32)
|_http-title: Site doesn't have a title (text/html; charset=UTF-8).
|_http-server-header: Apache/2.4.29 (FreeBSD) PHP/5.6.32
Service Info: OS: FreeBSD; CPE: cpe:/o:freebsd:freebsd
웹 서버를 확인
web server
접속하면 다음과 같은 웹페이지가 나온다.
테스트 할 수 있는 페이지들이 적혀있다.
info.php를 입력하면 다음과 같이 표시된다. 버전 정보와 FreeBSD를 확인.
listfiles.php를 입력하면 파일들의 리스트가 나오는데, 화면에는 보이지 않던 pwdbackup.txt 파일이 적혀있다.
url로 파일을 확인.
This password is secure, it's encoded atleast 13 times.. what could go wrong really.. Vm0wd2QyUXlVWGxWV0d4WFlURndVRlpzWkZOalJsWjBUVlpPV0ZKc2JETlhhMk0xVmpKS1IySkVU bGhoTVVwVVZtcEdZV015U2tWVQpiR2hvVFZWd1ZWWnRjRWRUTWxKSVZtdGtXQXBpUm5CUFdWZDBS bVZHV25SalJYUlVUVlUxU1ZadGRGZFZaM0JwVmxad1dWWnRNVFJqCk1EQjRXa1prWVZKR1NsVlVW M040VGtaa2NtRkdaR2hWV0VKVVdXeGFTMVZHWkZoTlZGSlRDazFFUWpSV01qVlRZVEZLYzJOSVRs WmkKV0doNlZHeGFZVk5IVWtsVWJXaFdWMFZLVlZkWGVHRlRNbEY0VjI1U2ExSXdXbUZEYkZwelYy eG9XR0V4Y0hKWFZscExVakZPZEZKcwpaR2dLWVRCWk1GWkhkR0ZaVms1R1RsWmtZVkl5YUZkV01G WkxWbFprV0dWSFJsUk5WbkJZVmpKMGExWnRSWHBWYmtKRVlYcEdlVmxyClVsTldNREZ4Vm10NFYw MXVUak5hVm1SSFVqRldjd3BqUjJ0TFZXMDFRMkl4WkhOYVJGSlhUV3hLUjFSc1dtdFpWa2w1WVVa T1YwMUcKV2t4V2JGcHJWMGRXU0dSSGJFNWlSWEEyVmpKMFlXRXhXblJTV0hCV1ltczFSVmxzVm5k WFJsbDVDbVJIT1ZkTlJFWjRWbTEwTkZkRwpXbk5qUlhoV1lXdGFVRmw2UmxkamQzQlhZa2RPVEZk WGRHOVJiVlp6VjI1U2FsSlhVbGRVVmxwelRrWlplVTVWT1ZwV2EydzFXVlZhCmExWXdNVWNLVjJ0 NFYySkdjR2hhUlZWNFZsWkdkR1JGTldoTmJtTjNWbXBLTUdJeFVYaGlSbVJWWVRKb1YxbHJWVEZT Vm14elZteHcKVG1KR2NEQkRiVlpJVDFaa2FWWllRa3BYVmxadlpERlpkd3BOV0VaVFlrZG9hRlZz WkZOWFJsWnhVbXM1YW1RelFtaFZiVEZQVkVaawpXR1ZHV210TmJFWTBWakowVjFVeVNraFZiRnBW VmpOU00xcFhlRmRYUjFaSFdrWldhVkpZUW1GV2EyUXdDazVHU2tkalJGbExWRlZTCmMxSkdjRFpO Ukd4RVdub3dPVU5uUFQwSwo=
base64로 보이는 해쉬가 있다. 13번 인코딩 했다한다.
디코드를 13번하니 비밀번호 같은 게 나왔다.
비밀번호를 알았으니 유저명을 찾아야하는데 웹사이트에는 나와있지 않다.
비밀번호를 다시 보니 첫부분이 유저명 같다.
ssh 성공.
권한상승
홈 디렉토리에 secret.zip 파일이 있다.
압축을 풀어봤더니 비밀번호가 채워져있다.
zip2john
비밀번호를 풀기위해 scp로 kali에 가지고 왔다.
zip2john secret.zip > hash
로 해쉬파일을 만든 후 크랙킹해보았으나,
시간이 많이 지나도 나오지가 않았다.
꽤 시간을 들인 후 혹시나해서 ssh에 사용한 비밀번호를 재사용했더니 압축이 풀렸다.
secret파일이 나오지만, 문자가 깨져서 내용물을 읽을 수가 없다.
vnc
갈피를 못잡고 다시 타겟머신으로 돌아와서 좀 더 살펴봤다.
netstat -an
로 리스닝 중인 포트를 확인해봤다.
5901 포트가 열려있다.
정보에 의하면 5800, 5801, 5900, 5901은 모두 vnc의 포트라고 한다.
vnc는 리모트 데스크톱 같은 서비스다.
로컬호스트로 리스닝 중이기 때문에 포트포워딩을 연결한다.
ssh -N -L localhost:5901:localhost:5901 charix@$IP
포트포워딩 후 kali에서 vncviewer라는 프로그램을 실행.
vncviewer localhost::5901
Connected to RFB server, using protocol version 3.8
Enabling TightVNC protocol extensions
Performing standard VNC authentication
Password:
연결을 됐지만 비밀번호가 요구된다.
역시 아까 찾은 secret파일과 관련이 있나보다.
내용물을 어떻게 확인할지 고민하다가 man vncviewer
의 설명을 읽어보니 -passwd
옵션으로 비밀번호 파일이 지정 가능한 것을 알았다.
secret 파일 자체가 비밀번호 파일이었다!
vncviewer localhost::5901 -passwd secret
root 쉘 획득.
저 상태로는 플래그의 내용이 복붙이 안되서 charix의 홈 폴더로 복사한 후 확인했다.