<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Htb on Michael Dunn</title><link>https://mdunn99.com/tags/htb/</link><description>Recent content in Htb on Michael Dunn</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><lastBuildDate>Tue, 28 Jul 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://mdunn99.com/tags/htb/index.xml" rel="self" type="application/rss+xml"/><item><title>Writing a Mock Pentest Report</title><link>https://mdunn99.com/posts/writing-a-mock-pentest-report/</link><pubDate>Tue, 28 Jul 2026 00:00:00 +0000</pubDate><guid>https://mdunn99.com/posts/writing-a-mock-pentest-report/</guid><description>&lt;p&gt;A few months ago, my friend and I were inspired by some other peers to take our redteaming HackTheBox exercises a step further: writing a full mock penetration test report.&lt;img src="coverpage.png" alt=""&gt;&lt;em&gt;The cover page generated for us by Claude Sonnet 5&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;They themselves were fascinated by what our school&amp;rsquo;s award winning C3 team does twice per year in their &lt;a href="https://cp.tc/"&gt;CCDC competitions&lt;/a&gt;.
&lt;img src="c32026.png" alt=""&gt;
&lt;em&gt;UCF C3 team earlier this year during the NCCDC competition.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;During the course of 24 hours, a team of no more than 10 people participate in a hackathon-like competition to probe, poke at, and, finally, document vulnerabilities of a multi-machine network that culminates in a typically ~100-page report that simulates a real-world penetration test.&lt;/p&gt;
&lt;p&gt;Myself and my friend, &lt;a href="https://www.linkedin.com/in/stephenmiller05/"&gt;Stephen&lt;/a&gt;, set out to take any HackTheBox machine and do the same thing. In the process, we learned a lot!&lt;/p&gt;
&lt;h2 id="hacking-the-box"&gt;Hacking the Box&lt;/h2&gt;
&lt;p&gt;If you&amp;rsquo;re not already aware, &lt;a href="https://www.hackthebox.com"&gt;HackTheBox&lt;/a&gt; is a free platform that allows users to break into intentionally vulnerable machines and &amp;ldquo;capture the flag&amp;rdquo; that awaits for the user upon successful exploitation. My friends and I use this website a ton to practice our redteaming skills (we even keep a scoreboard on the UCF Discord server).&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.hackthebox.com/machines/silentium"&gt;Silentium&lt;/a&gt; is an easy-rated, CVE-heavy HackTheBox machine that allowed us to focus mostly on the technical writing aspect of this challenge and less of the redteaming part. In the future, I&amp;rsquo;d like to make more mock reports on machines offered by HackTheBox that allow me to go into more detail on specific processes for exploiting the system rather than the technical details (sometimes a bit over our head) offered by the exploit we stumbled across while enumerating the machine for vulnerabilities.&lt;/p&gt;
&lt;h2 id="gathering-inspiration"&gt;Gathering Inspiration&lt;/h2&gt;
&lt;p&gt;The first thing we had to ask before going in and writing was: &amp;ldquo;what does a real, official pentest report look like?&amp;rdquo; Luckily, we didn&amp;rsquo;t have to wonder. There are plenty of resources out in the wild that offered us a glimpse into how pentest reports are structured - textually and visually. So, we spent a lot of time perusing &lt;a href="https://github.com/reconmap/pentest-reports/"&gt;this repository&lt;/a&gt; and compiling visual elements throughout the writing process that we found cool. More importantly, it gave us some insight into the appropriate length of certain sections, where figures should be inserted, and small things like tone selection.&lt;/p&gt;
&lt;h2 id="writing"&gt;Writing&lt;/h2&gt;
&lt;p&gt;It just so happens that the semester in college that we wrote this report was the semester that I was taking a professional writing class, which not only meant that my writing muscles had been worked recently, but also that I understood a key part of writing professional reports. What I had in mind was to balance the report in a &amp;ldquo;PAM&amp;rdquo; triangle, meaning not just prioritizing the Purpose of the report, but also the Message and how it&amp;rsquo;s conveyed, and the Audience it&amp;rsquo;s written for. This appears to be an adaptation of Aristotle&amp;rsquo;s Rhetorical Triangle.
&lt;img src="pamtriad.png" alt=""&gt;
&lt;em&gt;One variation of the Rhetorical Triangle.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Essentially it just reminded us that for the purposes of this &amp;ldquo;assignment&amp;rdquo;, we&amp;rsquo;d be writing so that the report can be understood across a wide spectrum of C-suites, senior-level technicians, and lower-level vulnerability researchers and security engineers. After all, the people at a company that approve a large sum of money to be used for commissioning a pentest report want to understand the value that they received from such an investment. Likewise, the details of a successful exploitation by the pentesters is a useful vector for anybody at the company that works to secure their digital infrastructure.&lt;/p&gt;
&lt;p&gt;To cover each of the roles we were catering to, each section existed for a purpose. For instance, plenty of summaries existed before the meat of the report (findings and their CVSS scores). This provided an introduction to the specifics of the engagement to ground not only potentially tech-unsavvy individuals but also their engineers. Even in the individual finding reports, impact summaries are provided to help an employee understand the scope of a particular issue.&lt;/p&gt;
&lt;p&gt;Providing engineers with clear reproduction steps will go a long way in helping them quickly identify where the issue exists and remediating it, with or without our suggestions.&lt;/p&gt;
&lt;p&gt;Equally (and arguably more) effective for communicating some of these ideas at a high-level are visuals.&lt;/p&gt;
&lt;h2 id="visuals"&gt;Visuals&lt;/h2&gt;
&lt;p&gt;One important aspect of writing an effective report is conveying things visually, like the layout of the network. Below, I documented the attack chain that a threat actor could take to gain root access on the host system, incorporating the network architecture into said path.
&lt;img src="drawio.png" alt=""&gt;&lt;em&gt;A visual that I created with &lt;a href="https://draw.io"&gt;draw.io&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;We also wanted to highlight the most important vulnerabilities that we found in the stack before any others. So, the assessment findings are sorted from highest to least severity and color-coded accordingly. Further, in a heavily-inspired way from a &amp;ldquo;Vuln Table&amp;rdquo; I had seen in the repository mentioned earlier, we kept things brief and &amp;ldquo;compressed&amp;rdquo;. Also, hyperlinks!
&lt;img src="vulntables.png" alt=""&gt;&lt;em&gt;Assessment findings in the report followed by our vulnerability summary table&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Code blocks are presented inside of a 1x1 table in monospace font; censor sensitive information:
&lt;img src="codeblock.png" alt=""&gt;&lt;/p&gt;
&lt;p&gt;Quote blocks are not the same as code blocks:
&lt;img src="quoteblock.png" alt=""&gt;&lt;/p&gt;
&lt;h2 id="conclusion"&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;I gained valuable soft skills throughout this exercise like designing visuals, working with word editors, and conveying complex ideas to a wide range of people. It also tested my understanding of the very engagement that my friend and I spent no longer than a day on (plus one more in the beginning of the CTF). I hope to produce more like this in the future!&lt;/p&gt;</description></item><item><title>HackTheBox Writeup - "Pterodactyl"</title><link>https://mdunn99.com/posts/pterodactyl-htb/</link><pubDate>Fri, 03 Apr 2026 00:00:00 +0000</pubDate><guid>https://mdunn99.com/posts/pterodactyl-htb/</guid><description>&lt;p&gt;Pterodactyl is a medium difficulty Linux HackTheBox machine: &lt;a href="https://app.hackthebox.com/machines/Pterodactyl?sort_by=created_at&amp;amp;sort_type=desc"&gt;https://app.hackthebox.com/machines/Pterodactyl?sort_by=created_at&amp;amp;sort_type=desc&lt;/a&gt;&lt;/p&gt;
&lt;h1 id="reconnaissance"&gt;Reconnaissance&lt;/h1&gt;
&lt;p&gt;I ran a standard nmap service scan:&lt;/p&gt;
&lt;pre tabindex="0"&gt;&lt;code class="language-nmap" data-lang="nmap"&gt;Not shown: 986 filtered tcp ports (no-response), 10 filtered tcp ports (admin-prohibited)
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 9.6 (protocol 2.0)
80/tcp open http nginx 1.21.5
443/tcp closed https
8080/tcp closed http-proxy
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;I navigated to the web server, which had an unresolvable domain name: pterodactyl.htb. I added the IP to my hosts to resolve it in my browser:
&lt;img src="monitorland_page.png" alt=""&gt;&lt;/p&gt;
&lt;p&gt;I did a fuzz using SecList&amp;rsquo;s raft-medium-files on the root directory, adding php and txt extensions just as a standard practice:
&lt;code&gt;ffuf -u http://pterodactyl.htb/FUZZ -w raft-medium-files.txt -e .php,.txt -c&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;The fuzz returned files such as &lt;code&gt;index.php&lt;/code&gt;, &lt;code&gt;phpinfo.php&lt;/code&gt;, &lt;code&gt;global.css&lt;/code&gt;, and &lt;code&gt;changelog.txt&lt;/code&gt;. Some things in changelog included useful version information about the server like: &amp;ldquo;[Installed] Pterodactyl Panel &lt;strong&gt;v1.11.10&lt;/strong&gt;&amp;rdquo;, &amp;ldquo;MariaDB &lt;strong&gt;11.8.3&lt;/strong&gt; backend.&amp;rdquo; We&amp;rsquo;ll also collect information in phpinfo.php &lt;a href="https://www.php.net/manual/en/function.phpinfo.php"&gt;which is a valuable trove of config information&lt;/a&gt; related to the PHP server.&lt;/p&gt;
&lt;p&gt;I also make it a habit to enumerate through subdomains, which returned a panel.pterodactyl.htb:
&lt;img src="panel.pterodactyl.htb.png" alt=""&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;After iterating for a while through various version numbers found in phpinfo.php for vulnerabilities, I found a critical severity exploit titled &lt;a href="https://app.opencve.io/cve/CVE-2025-49132"&gt;CVE-2025-49132&lt;/a&gt; with arbitrary write privileges consistent with changelog.txt&amp;rsquo;s claim of the server&amp;rsquo;s Minecraft Pterodactyl Panel &amp;lt;v1.11.9. A &lt;a href="https://github.com/YoyoChaud/CVE-2025-49132"&gt;PoC published by YoyoChaud&lt;/a&gt;)allowed for easy testing.
&lt;img src="yoyochaud_poc.png%7C781" alt=""&gt;
&lt;img src="pterodactyl_rev_shell.png" alt=""&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Upgrading TTY without Python&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m used to getting a clearer shell by using Python, but that&amp;rsquo;s not installed n this box. We can also use the &lt;code&gt;script&lt;/code&gt; command to effectively do the same thing:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;script /dev/null -c bash
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;And then proceed with the standard backgrounding: &lt;code&gt;Ctrl+Z&lt;/code&gt;, echoing the terminal and bringing the background process to the foreground: &lt;code&gt;stty raw -echo; fg&lt;/code&gt;, using &lt;code&gt;reset&lt;/code&gt; and &lt;code&gt;export TERM=xterm&lt;/code&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h1 id="user-privilege-escalation"&gt;User Privilege Escalation&lt;/h1&gt;
&lt;p&gt;Earlier, in php.info, we discovered that a mysqli server also runs on the server on it&amp;rsquo;s default port, 3306. This is confirmed when we run &lt;code&gt;env&lt;/code&gt; to output environment variables to our terminal (truncated):&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;DB_PORT&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="m"&gt;3306&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;DB_HOST&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;127.0.0.1
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;HASHIDS_SALT&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;pKkOnx0IzJvaUXKWt2PK
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;PWD&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/var/www/pterodactyl/public
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;APP_KEY&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;base64:UaThTPQnUjrrK61o+Luk7P9o4hM+gl4UiMJqcbTSThY&lt;span class="o"&gt;=&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;DB_PASSWORD&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;PteraPanel
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;APP_URL&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;http://panel.pterodactyl.htb
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;DB_USERNAME&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;pterodactyl
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;APP_SERVICE_AUTHOR&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;pterodactyl@pterodactyl.htb
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;SESSION_DRIVER&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;redis
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;DB_CONNECTION&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;mysql
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;DB_DATABASE&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;panel
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nv"&gt;_&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;/usr/bin/env
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;We can connect by using mysql on the box: &lt;code&gt;mysql -u pterodactyl -pPteraPanel&lt;/code&gt;, but:
&lt;code&gt;ERROR 1045 (28000): Access denied for user 'pterodactyl'@'localhost' (using password: YES)&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;I figure I&amp;rsquo;ll manually specify 127.0.0.1 rather than allowing mysql to resolve to localhost using &lt;code&gt;-h 127.0.0.1&lt;/code&gt;, and I can successfully see our databases, notably the locked &lt;code&gt;panel&lt;/code&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-mariadb" data-lang="mariadb"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;MariaDB&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[(&lt;/span&gt;&lt;span class="n"&gt;none&lt;/span&gt;&lt;span class="p"&gt;)]&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;show&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;databases&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;+--------------------+&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;Database&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;+--------------------+&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;information_schema&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;panel&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;test&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="o"&gt;+--------------------+&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;rows&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="k"&gt;in&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kt"&gt;set&lt;/span&gt;&lt;span class="w"&gt; &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="mi"&gt;001&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="n"&gt;sec&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;panel&lt;/code&gt;&amp;rsquo;s &lt;code&gt;users&lt;/code&gt; table contains some hashes (of which I couldn&amp;rsquo;t crack):
&lt;img src="mysql_users_table.png" alt=""&gt;&lt;/p&gt;
&lt;p&gt;I poked around in the root &lt;code&gt;/var/www/pterodactyl&lt;/code&gt; directory and found the &lt;code&gt;artisan&lt;/code&gt; binary, of which I could potentially just create my own user using &lt;code&gt;artisan p:user:make&lt;/code&gt;:
&lt;img src="artisan_user_make.png" alt=""&gt;&lt;/p&gt;
&lt;p&gt;Which is then appended to the mysql users db:
&lt;img src="users_table_after_add.png" alt=""&gt;&lt;/p&gt;
&lt;p&gt;So, I&amp;rsquo;ll try logging into the pterodactyl panel with my new credentials (mdunn99:password). We have direct access to the other users we saw earlier in the database and can change their passwords:
&lt;img src="panel_users.png" alt=""&gt;
&lt;img src="headmonitor_password.png" alt=""&gt;&lt;/p&gt;
&lt;p&gt;Upon numerous SSH attempts, I was still prompted with a password requirement, and &lt;em&gt;overwriting those users&amp;rsquo; passwords was preventing me from using it as a potential duplicate password for the SSH password.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;I revisited the cracking attempt and successfully cracked user &lt;code&gt;phileasfogg3&lt;/code&gt;&amp;rsquo;s bcrypt hash which matched their SSH password, and retrieved the user.txt flag.&lt;/p&gt;
&lt;h1 id="root-privilege-escalation"&gt;Root Privilege Escalation&lt;/h1&gt;
&lt;p&gt;As I&amp;rsquo;m checking out files with capabilities and anything that looks interesting on the file system (including the previously mentioned artisan binary), I&amp;rsquo;m running a &lt;a href="https://github.com/peass-ng/PEASS-ng/tree/master/linPEAS"&gt;linpeas.sh instance&lt;/a&gt;, which notifies me that there are some mail messages on the phileasfogg3 user. Let&amp;rsquo;s read:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;From headmonitor@pterodactyl Fri Nov &lt;span class="m"&gt;07&lt;/span&gt; 09:15:00 &lt;span class="m"&gt;2025&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Delivered-To: phileasfogg3@pterodactyl
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Received: by pterodactyl &lt;span class="o"&gt;(&lt;/span&gt;Postfix, from userid 0&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;id 1234567890&lt;span class="p"&gt;;&lt;/span&gt; Fri, &lt;span class="m"&gt;7&lt;/span&gt; Nov &lt;span class="m"&gt;2025&lt;/span&gt; 09:15:00 +0100 &lt;span class="o"&gt;(&lt;/span&gt;CET&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;From: headmonitor headmonitor@pterodactyl
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;To: All Users all@pterodactyl
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Subject: SECURITY NOTICE — Unusual udisksd activity &lt;span class="o"&gt;(&lt;/span&gt;stay alert&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Message-ID: 202511070915.headmonitor@pterodactyl
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Date: Fri, &lt;span class="m"&gt;07&lt;/span&gt; Nov &lt;span class="m"&gt;2025&lt;/span&gt; 09:15:00 +0100
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;MIME-Version: 1.0
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Content-Type: text/plain&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nv"&gt;charset&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;utf-8&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Content-Transfer-Encoding: 7bit
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Attention all users,
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Unusual activity has been observed from the udisks daemon &lt;span class="o"&gt;(&lt;/span&gt;udisksd&lt;span class="o"&gt;)&lt;/span&gt;. No confirmed compromise at this time, but increased vigilance is required.
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Do not connect untrusted external media. Review your sessions &lt;span class="k"&gt;for&lt;/span&gt; suspicious activity. Administrators should review udisks and system logs and apply pending updates.
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Report any signs of compromise immediately to headmonitor@pterodactyl.htb
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;— HeadMonitor
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;System Administrator
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;grepping systemctl for udisks confirms this service is running:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;phileasfogg3@pterodactyl:~&amp;gt; systemctl &lt;span class="p"&gt;|&lt;/span&gt; grep udisks
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;udisks2.service ... loaded active running &lt;span class="p"&gt;|&lt;/span&gt; Disk Manager
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Per the &lt;a href="https://wiki.archlinux.org/title/Udisks"&gt;Arch Linux wiki:&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://man.archlinux.org/man/udisksd.8"&gt;udisksd(8)&lt;/a&gt; is started on-demand by &lt;a href="https://wiki.archlinux.org/title/D-Bus" title="D-Bus"&gt;D-Bus&lt;/a&gt; and should not be enabled explicitly. It can be controlled through the command-line with &lt;a href="https://man.archlinux.org/man/udisksctl.1"&gt;udisksctl(1)&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Running &lt;code&gt;udisksctl dump&lt;/code&gt; will include the version number for udisks2: &lt;strong&gt;2.9.2&lt;/strong&gt;, which reveals a vulnerability that affects a few operating systems. To confirm if the operating system of the box is vulnerable, I read /etc/os-release: &lt;strong&gt;openSUSE Leap 15.6&lt;/strong&gt;, which is a listed vulnerable target for udisks2 versions &amp;gt;= 2.9.2:
&lt;img src="2025-8067-suse.png" alt=""&gt;
&lt;em&gt;Source: &lt;a href="https://www.suse.com/security/cve/CVE-2025-8067.html"&gt;https://www.suse.com/security/cve/CVE-2025-8067.html&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;A PoC is published by &lt;a href="https://github.com/born0monday/CVE-2025-8067"&gt;born0monday&lt;/a&gt;. After running it, I&amp;rsquo;m unfortunately met with this error:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;gi.repository.GLib.Error: g-io-error-quark: GDBus.Error:org.freedesktop.UDisks2.Error.NotAuthorizedCanObtain: Not authorized to perform operation &lt;span class="o"&gt;(&lt;/span&gt;36&lt;span class="o"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;A &lt;a href="https://seclists.org/oss-sec/2025/q3/143"&gt;published seclists.org mail/blog&lt;/a&gt; provides us with a helpful hint for getting around this issue:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;So really depends how is your session classified and yes, the attack surface is slightly lower for non-local seats. However, combine it with other CVEs, notably CVE-2025-6018, and you have a bigger problem.&lt;/p&gt;
&lt;p&gt;CVE-2025-6018: LPE from unprivileged to allow_active in *SUSE 15&amp;rsquo;s PAM
&lt;a href="https://www.openwall.com/lists/oss-security/2025/06/17/4"&gt;https://www.openwall.com/lists/oss-security/2025/06/17/4&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;which led me to:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;CVE-2025-6018: LPE from unprivileged to allow_active in SUSE 15&amp;rsquo;s PAM
CVE-2025-6019: LPE from allow_active to root in libblockdev via udisks&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;and &lt;a href="https://www.openwall.com/lists/oss-security/2025/06/17/4"&gt;a website&lt;/a&gt; that walks me through the whole process of exploiting openSUSE Leap 15 &amp;ldquo;via the udisks daemon.&amp;rdquo; I successfully create a malicious payload (on the attack machine) and mount it using a loop block (with udisks) on the victim machine, giving me a root shell.&lt;/p&gt;</description></item></channel></rss>