y0usef
접근을 시도하기 위해 스캔을 시도해봅시다.
ssh, http 포트가 열려있습니다. 대부분의 경우 ssh는 anonymous 로그인을 허용하지 않고 다른 포인트에서 얻은 credential을 통해 로그인을 시도하므로 http부터 살펴보기로 가정하고 접속해봅시다.
http로 접속했으나 특징적인 것은 보이지 않으니 다음으로 해야 될 것은 숨겨진 디렉토리를 찾아봅시다. Directory Brute Forcing을 도와주는 도구는 많이 있지만 gobuster를 사용했고 여러 사전파일(wordlist)를 삽질한 끝에 다음과 같은 결과를 얻을 수 있었습니다.
나머지 Status 값은 403인데 반해 administration이 301이니 administration으로 접근해봅니다.
접근 권한이 없다고 합니다. 하위 경로에 대해 Directory Brute Forcing을 시도해봤지만 특징적인 것은 찾을 수 없었고 "x-forwarded-for" 헤더를 통해 참조 위치를 로컬 환경이 아닌 타겟 환경에서 접속한 것처럼 우회시켜 접속이 가능한 지 시도해봅시다.
Burpsuite를 이용해 administration에 접속할 때 x-forwarded-for 헤더를 지정한 뒤 값을 localhost로 지정해줍시다. 이후 로그인 화면이 나오는 데 지금까지의 과정에서 유용한 Credential을 얻지 못했으므로 테스트로 "admin:admin"을 입력하고 로그인을 시도해봅시다 이 때도 똑같이 x-forwarded-for 헤더를 지정해줘야 합니다.
이 후 업로드가 가능한 페이지로 이동합니다. 파일 업로드 공격이 가능한 것으로 보이며 Kali linux 내에 있는 php-reverse-shell.php 파일을 찾아 업로드해보았으나 다음과 같이 file not allow라는 메시지가 나타납니다.
페이지 소스를 살펴보아도 힌트로 제공되는 코드는 찾을 수 없었고 파일 확장자를 png로 바꿔서 업로드를 시도했더니 다음과 같이 file이 업로드된 경로를 표시해주었습니다.
". png"라는 확장자에 대해서 업로드가 가능한 것을 확인했으니 Burp Suite를 통해 업로드하는 과정에서 ".png"를 지워 서벙는 ".php"파일이 최종적으로 저장되게 하고 nc로 reverse shell을 얻어보려 했으나 실패했습니다. 삽질 끝에 "weevely"라는 도구를 사용해보기로 했습니다.
weevely를 통해 png 파일을 생성했으나 내용을 읽어보니 php 페이로드를 담고 있는 것 같습니다. 그러니 똑같이 파일을 업로드를 하는 과정에서 png 확장자를 php로 바꿔서 업로드해봅시다.
이후 weevely에서 다음과 같이 업로드된 경로를 찾아 지정하고 생성할 때 사용했던 비밀번호를 이용해 reverse shell을 얻을 수 있었습니다.
이후 시스템 내에 존재하는 home 폴더에서 user.txt를 발견할 수 있었습니다.
user.txt를 base64로 decode를 하게 되면 "yousef"에 계정에 대한 비밀번호를 획득할 수 있었습니다 이 정보를 통해 ssh 접속을 시도하면 다음과 같은 화면이 나타납니다.
root 권한을 얻기 위한 첫 번째 방법으로 sudo -l로 root 권한으로 실행할 수 있는 파일이 무엇이 있는지 알아봅시다.
ALL:ALL로 되어있는 걸 보아 적당히 root 권한을 얻을 수 있는 명령어를 실행해봅시다.
이로써 root 권한까지 모두 획득했습니다.
'Pentest > Vulnhub' 카테고리의 다른 글
[Vulnhub] DeathNote (0) | 2021.09.26 |
---|---|
[Vulnhub] Kioptrix Level 1 (0) | 2021.09.25 |
[Vulnhub] Money Box (0) | 2021.03.07 |