Publisher v2.1

SPIP shell limité

  • Nom machine : Publisher v2.1

  • Difficulté : Facile

  • OS : Linux

Enumération

NMAP

PORT   STATE SERVICE REASON  VERSION
22/tcp open  ssh     syn-ack OpenSSH 8.2p1 Ubuntu 4ubuntu0.10 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   3072 44:5f:26:67:4b:4a:91:9b:59:7a:95:59:c8:4c:2e:04 (RSA)
| ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDMc4hLykriw3nBOsKHJK1Y6eauB8OllfLLlztbB4tu4c9cO8qyOXSfZaCcb92uq/Y3u02PPHWq2yXOLPler1AFGVhuSfIpokEnT2jgQzKL63uJMZtoFzL3RW8DAzunrHhi/nQqo8sw7wDCiIN9s4PDrAXmP6YXQ5ekK30om9kd5jHG6xJ+/gIThU4ODr/pHAqr28bSpuHQdgphSjmeShDMg8wu8Kk/B0bL2oEvVxaNNWYWc1qHzdgjV5HPtq6z3MEsLYzSiwxcjDJ+EnL564tJqej6R69mjII1uHStkrmewzpiYTBRdgi9A3Yb+x8NxervECFhUR2MoR1zD+0UJbRA2v1LQaGg9oYnYXNq3Lc5c4aXz638wAUtLtw2SwTvPxDrlCmDVtUhQFDhyFOu9bSmPY0oGH5To8niazWcTsCZlx2tpQLhF/gS3jP/fVw+H6Eyz/yge3RYeyTv3ehV6vXHAGuQLvkqhT6QS21PLzvM7bCqmo1YIqHfT2DLi7jZxdk=
|   256 0a:4b:b9:b1:77:d2:48:79:fc:2f:8a:3d:64:3a:ad:94 (ECDSA)
| ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBJNL/iO8JI5DrcvPDFlmqtX/lzemir7W+WegC7hpoYpkPES6q+0/p4B2CgDD0Xr1AgUmLkUhe2+mIJ9odtlWW30=
|   256 d3:3b:97:ea:54:bc:41:4d:03:39:f6:8f:ad:b6:a0:fb (ED25519)
|_ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFG/Wi4PUTjReEdk2K4aFMi8WzesipJ0bp0iI0FM8AfE
80/tcp open  http    syn-ack Apache httpd 2.4.41 ((Ubuntu))
| http-methods: 
|_  Supported Methods: OPTIONS HEAD GET POST
|_http-server-header: Apache/2.4.41 (Ubuntu)
|_http-title: Publisher's Pulse: SPIP Insights & Tips
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Nous allons énumérer le port 80

HTTP (80)

Nous tombons sur une page web, nous comprennons rapidement que ce site utilise SPIP.

En allant sur la page on récupère deux bases de données, nous allons les récupérer.

Nous trouvons ceci dans spip.sqlite. Un nom d'user possiblement et le hash d'un mot de passe. Nous avons tenté de le cracker mais sans succès.

En suivant spip/local, nous trouvons aussi un fichier intéressant : config.txt.

Celui-ci indique le numéro de version : 4.2.0

Nous allons chercher un exploit.

Accès initial

La lecture de l'exploit nous permet de trouver le chemin : http://10.10.172.230/spip/spip.php?page=spip_pass&lang=fr

Celui-ci nous mène à la page "mot de passe oublié" d'une page de login. Le formulaire est vulnérable. Nous allons l'attaquer manuelle à l'aide de Burp Suite.

Le payload a envoyé au paramètre oubli est le suivant : s:22:"<?php+system('id');+?>

s:22 signifie la longueur de la chaîne de caractère.

Nous avons énumérer la machine, en modifiant toujours notre payload selon sa taille. Nous retrouvons l'utilisateur think, et par chance, celui-ci à une clef id_rsa stocké dans .ssh.

Nous la copions sur notre machine, changeons ses permissions puis nous connectons en ssh.

Elévation des privilèges

Nous avons shell limité, dans un premier temps nous allons devoir nous en echapper.

Nous avons la liste des répertoires bloqués. Un point import : /dev/shm/** ne l'est pas.

Nous en profiter pour copier bash.

Nous avons enfin un shell normal.

run_container est intéressant

Nous mène vers /opt/run_container.sh ... Que nous pouvons écrire !

Nous sommes root !

Mis à jour