G00g

2FA apache_2fa google auth LFI arj suid sudoers

  • Nom machine : G00g

  • Difficulté : intermédiaire

  • OS : Linux

Enumération

NMAP

Host discovery disabled (-Pn). All addresses will be marked 'up' and scan times may be slower.
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-08-10 08:53 EDT
Initiating Parallel DNS resolution of 1 host. at 08:53
Completed Parallel DNS resolution of 1 host. at 08:53, 0.00s elapsed
Initiating Connect Scan at 08:53
Scanning 192.168.235.144 [65535 ports]
Discovered open port 80/tcp on 192.168.235.144
Discovered open port 22/tcp on 192.168.235.144
Completed Connect Scan at 08:53, 27.93s elapsed (65535 total ports)
Nmap scan report for 192.168.235.144
Host is up, received user-set (0.034s latency).
Scanned at 2024-08-10 08:53:01 EDT for 28s
Not shown: 65533 closed tcp ports (conn-refused)
PORT   STATE SERVICE REASON
22/tcp open  ssh     syn-ack
80/tcp open  http    syn-ack

HTTP (80)

Nous testons admin:admin.

Nous arrivons sur cette page. Ce qui nous intéresse : apache_2fa... Précieux indice. Nous allons donc chercher plus d'informations dans ce dépôt github.

Nous avons tout téléchargé pour essayer de comprendre le fonctionnement. Cela n'est pas obligatoire. La lecture du readme.md est en revanche primordiale. Il faut télécharger une application (Google Authenticator) puis scanner le QR Code (ou reprendre le code). Un nombre à 6 chiffres apparaît, c'est celui-ci qui va nous permettre de bypass la page.

Accès initial

LFI

Nous allons exploré le site et cliquer sur "view result". Nous allons tester si nous pouvoir lire "/etc/passwd", et effectivement cela fonctionne. Nous avons un user : fox.

Nous n'avons pas trouvé de fichier ssh pour fox, nous n'avons pas trouvé non plus de fichier log pouvant nous permettre d'obtenir une RCE. Nous avons réfléchi à quels fichiers pouvant nous servir, et nous nous sommes rappelé du github précédent : /opt/apache_2fa/apache_credentials /opt/apache_2fa/tokens.json

Nous allons cracker les hash

Nous allons tenter de nous connecter en SSH. Après avoir rentrer le mot de passe THERESE pour l'utilisateur fox, on nous demande un code de vérification. Nous avons laclef pour l'utilisateur fox, il nous suffit donc de générer une clef à 6 chiffre avec celui-ci, comme nous avons faire précédemment. et cela fonctionne !

Elévation des privilèges

Arj n'est pas habituel

Nous allons procéder de la manière suivante :

  • Lire un fichier dont nous avons normalement pas l'accès /etc/sudoers : nous allons le placer dans une archive que nous pouvons lire

  • Faire une copie de ce fichier en ajoutant une ligne nous permettant de passer root sans password

  • Archiver ce même fichier pour ensuite l'extraire dans /etc et écrire par dessus l'original

Nous allons archiver le fichier /etc/sudoers sous le nom de athenax.

Nous allons lire les fichiers se trouvant dans athenax.arj (donc /etc/sudoers)

Nous avons créer un nouveau fichier sudoers et ajoutant une ligne pour l'user fox

Nous allons archiver le fichier sudoers dans une archive du même nom

Nous allons l'extraire dans /etc afin d'écrire au dessus de l'original

Nous sommes root !

Mis à jour