<?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: Frank A</title>
    <description>The latest articles on DEV Community by Frank A (@frank_a_64393c6f49a90e428).</description>
    <link>https://dev.to/frank_a_64393c6f49a90e428</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%2F3536761%2Fb40a19d4-d597-41a4-b334-3e1b3eb8fceb.png</url>
      <title>DEV Community: Frank A</title>
      <link>https://dev.to/frank_a_64393c6f49a90e428</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/frank_a_64393c6f49a90e428"/>
    <language>en</language>
    <item>
      <title>TryHackMe Brains Challenge Walkthrough</title>
      <dc:creator>Frank A</dc:creator>
      <pubDate>Wed, 20 May 2026 09:25:43 +0000</pubDate>
      <link>https://dev.to/frank_a_64393c6f49a90e428/tryhackme-brains-challenge-walkthrough-4cij</link>
      <guid>https://dev.to/frank_a_64393c6f49a90e428/tryhackme-brains-challenge-walkthrough-4cij</guid>
      <description>&lt;p&gt;So this is the &lt;a href="https://tryhackme.com/room/brains" rel="noopener noreferrer"&gt;Brains room on TryHackMe&lt;/a&gt;. Its a two part challenge, you hack into a box (red team) and then you investigate what happened (blue team). Pretty cool combo actually.&lt;/p&gt;

&lt;p&gt;Here's my video walkthrough if you wanna follow along:&lt;/p&gt;

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




&lt;h2&gt;
  
  
  Part 1: Hacking the Box
&lt;/h2&gt;

&lt;p&gt;First thing, start the machine and grab the IP address. Then open a terminal and run nmap to see whats available:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;nmap &amp;lt;target-ip&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You'll see three things open:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Port 22 (SSH)&lt;/li&gt;
&lt;li&gt;Port 80 (HTTP)
&lt;/li&gt;
&lt;li&gt;Port 50000 (something weird, looks like a database but its not)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you go to port 80 in the browser its just a blank page, nothing there. You can run &lt;em&gt;gobuster&lt;/em&gt; to discover hidden folders and files on it but trust me, waste of time, there's nothing.&lt;/p&gt;

&lt;p&gt;The interesting one is port 50000. Try connecting with telnet:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;telnet &amp;lt;target-ip&amp;gt; 50000
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Hit enter a few times and you'll see it returns HTML. So its actually a web server not a database. Open it in Firefox:&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;target-ip&amp;gt;:50000
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You'll see TeamCity running. Note the version number, in this case 2023.11.3.&lt;/p&gt;




&lt;h2&gt;
  
  
  Finding the Exploit
&lt;/h2&gt;

&lt;p&gt;Go to &lt;a href="//exploit-db.com"&gt;exploit-db.com&lt;/a&gt; and search for "TeamCity". You'll find a bunch of vulnerabilities, the one we want is the authentication bypass / remote code execution one. Note the CVE number and search for it on GitHub.&lt;/p&gt;

&lt;p&gt;I used the exploit from wolf hacker. Copy the code, save it as a .py file. When you run it you might get a missing module error:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install &lt;/span&gt;faker
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then run the exploit pointing at your target:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python exploit.py &lt;span class="nt"&gt;-t&lt;/span&gt; &amp;lt;target-ip&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If it works youll get a shell. Test it:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;You should see something like "ubuntu". Then check the home folder:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;ls&lt;/span&gt; /home/ubuntu
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Youll find a flag.txt, cat it out:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;Thats your first flag, machine hacked.&lt;/p&gt;




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

&lt;p&gt;While your in there check what you can run as sudo:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;In this case everything is allowed which means you can just do:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo whoami&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And youll see root. Thats it, full privilege escalation. Pretty easy one but good to practice the concept.&lt;/p&gt;




&lt;h2&gt;
  
  
  Part 2: Investigation with Splunk
&lt;/h2&gt;

&lt;p&gt;Now close that machine and start the second one (the blue team box). Put the new IP in your browser and youll see the Splunk interface.&lt;/p&gt;

&lt;p&gt;Go to Search and Reporting. Start with a broad search to see everything:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;Set the time to "All Time" and search. Youll see around 4000 events.&lt;/p&gt;

&lt;h3&gt;
  
  
  Question 1: What plugin was installed after exploitation?
&lt;/h3&gt;

&lt;p&gt;Just search:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;index=* plugin
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Youll see an event about a plugin being uploaded. The full name is right there in the log, copy it.&lt;/p&gt;

&lt;h3&gt;
  
  
  Question 2: What malicious package was installed?
&lt;/h3&gt;

&lt;p&gt;Search for:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;dpkg
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then filter to look through installed packages. Youll see loads of normal Linux stuff, lib this, lib that. Keep going through the pages and youll spot one called "data-collector". Thats the dodgy one, nothing legit should be called that.&lt;/p&gt;

&lt;h3&gt;
  
  
  Question 3: What is the backdoor user?
&lt;/h3&gt;

&lt;p&gt;Search for:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;useradd
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Youll find an entry where useradd was run with the username "evil-user" and a home folder to match. Yeah not subtle lol. Thats your answer.&lt;/p&gt;




&lt;h2&gt;
  
  
  Done
&lt;/h2&gt;

&lt;p&gt;Thats the full Brains room. Red team side you exploited a TeamCity auth bypass to get a shell and escalated to root. Blue team side you used Splunk to find the plugin, the malicious package and the backdoor user that the attacker left behind.&lt;/p&gt;

&lt;p&gt;If you want to practice the Linux commands used in this walkthrough check out &lt;a href="https://practicelinux.com" rel="noopener noreferrer"&gt;https://practicelinux.com&lt;/a&gt;&lt;/p&gt;

</description>
      <category>cybersecurity</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Linux Challenge: Haystack</title>
      <dc:creator>Frank A</dc:creator>
      <pubDate>Sat, 09 May 2026 08:47:48 +0000</pubDate>
      <link>https://dev.to/frank_a_64393c6f49a90e428/linux-challenge-haystack-5f9b</link>
      <guid>https://dev.to/frank_a_64393c6f49a90e428/linux-challenge-haystack-5f9b</guid>
      <description>&lt;p&gt;  &lt;iframe src="https://www.youtube.com/embed/QE0BJGi9b2E"&gt;
  &lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;I did this &lt;a href="https://practicelinux.com" rel="noopener noreferrer"&gt;Linux challenge: Proving Grounds Haystack&lt;/a&gt;. It's a server where something went wrong. The goal of this lab is to enumerate the machine, find the files, keys and backups using only Linux commands.&lt;/p&gt;

&lt;p&gt;In this lab, I investigated things like where the &lt;a href="https://nginx.org/en/" rel="noopener noreferrer"&gt;nginx&lt;/a&gt; configuration files are, found the hidden keys, found different nginx config files, investigated a log file and also discovered the backup files on the Linux vps.&lt;/p&gt;

&lt;p&gt;Some key commands I ran are &lt;code&gt;cd&lt;/code&gt; (change directory), &lt;code&gt;ls&lt;/code&gt; (list files and folders), &lt;code&gt;cat&lt;/code&gt; to view files, &lt;code&gt;ls -a&lt;/code&gt; to find hidden files and several others.&lt;/p&gt;

</description>
      <category>linux</category>
    </item>
    <item>
      <title>The day I realized I didn't actually know Linux</title>
      <dc:creator>Frank A</dc:creator>
      <pubDate>Thu, 12 Mar 2026 14:00:22 +0000</pubDate>
      <link>https://dev.to/frank_a_64393c6f49a90e428/the-day-i-realized-i-didnt-actually-know-linux-1iii</link>
      <guid>https://dev.to/frank_a_64393c6f49a90e428/the-day-i-realized-i-didnt-actually-know-linux-1iii</guid>
      <description>&lt;p&gt;It was a Friday afternoon and my manager had just asked me to tail some logs on a production server to debug a weird issue we were seeing in staging. Simple enough task. I'd been using Linux casually for about two years at that point, watched probably 40 hours of tutorials, read half of &lt;a href="https://linuxcommand.org/tlcl.php" rel="noopener noreferrer"&gt;The Linux Command Line&lt;/a&gt; by William Shotts. I knew my stuff. Or so I thought.&lt;/p&gt;

&lt;p&gt;I SSH'd in, got to the right directory, and then just... sat there. I knew the command was something with &lt;code&gt;tail&lt;/code&gt;. I knew &lt;code&gt;-f&lt;/code&gt; was involved. But my hands were doing nothing. I was mentally Googling in my own head, which is a terrible place to search.&lt;/p&gt;

&lt;p&gt;My manager was watching. I typed &lt;code&gt;tail -f&lt;/code&gt; and then stared at the filename like it owed me money.&lt;/p&gt;

&lt;p&gt;That moment stuck with me for a long time.&lt;/p&gt;

&lt;h2&gt;
  
  
  The gap nobody talks about
&lt;/h2&gt;

&lt;p&gt;The thing is, I had learned Linux the way most people do. Tutorials, documentation, courses. And all of that stuff teaches you &lt;em&gt;about&lt;/em&gt; Linux. It doesn't teach you to &lt;em&gt;use&lt;/em&gt; it. Those are genuinely different things and I wish someone had told me earlier.&lt;/p&gt;

&lt;p&gt;There's a version of learning where you absorb information and feel good about it, and then there's actually building the reflexes. With terminal work especially, if your fingers haven't typed a command a hundred times under mild pressure, it's not really in there. It's just floating around somewhere vague in your brain.&lt;/p&gt;

&lt;p&gt;I spent a long time in the first category pretending I was in the second.&lt;/p&gt;

&lt;h2&gt;
  
  
  What actually helped
&lt;/h2&gt;

&lt;p&gt;A friend of mine who does CTF competitions mentioned offhand that he learned more about Linux in three months of doing wargames than in two years of reading. I was skeptical. CTF always sounded like a hacker competition thing, not something relevant to a regular dev or sysadmin.&lt;/p&gt;

&lt;p&gt;But I tried it. The format is simple: you get a live terminal, you get a goal, you figure it out. No one shows you how. You either get the flag or you don't.&lt;/p&gt;

&lt;p&gt;The first few challenges I genuinely struggled with things I thought I knew. &lt;code&gt;find&lt;/code&gt; with the right flags. Redirecting stderr. Basic text parsing. It was humbling in a useful way.&lt;/p&gt;

&lt;p&gt;After maybe six weeks of doing a challenge here and there, I noticed I'd stopped hesitating. Not because I'd memorized more stuff, but because my hands had actually done the work. The commands weren't ideas anymore, they were habits.&lt;/p&gt;

&lt;p&gt;If you want somewhere to start that doesn't require setting up a VM or dealing with any configuration, &lt;a href="https://www.practicelinux.com" rel="noopener noreferrer"&gt;PracticeLinux&lt;/a&gt; is what I'd point you to. It runs right in the browser, no account needed for the first challenge. Good way to find out where your actual gaps are without any setup friction.&lt;/p&gt;

&lt;h2&gt;
  
  
  Anyway
&lt;/h2&gt;

&lt;p&gt;I'm not saying tutorials are useless. I still read documentation. But I think a lot of people, myself included, stay in the comfortable zone of passive learning way longer than they should because it &lt;em&gt;feels&lt;/em&gt; like progress.&lt;/p&gt;

&lt;p&gt;The Friday afternoon log thing was embarrassing but probably necessary. Sometimes you need the gap to become visible before you do anything about it.&lt;/p&gt;

&lt;p&gt;If your Linux feels more theoretical than practical right now, that's fixable. Just takes different practice than most people think.&lt;/p&gt;

</description>
      <category>linux</category>
      <category>security</category>
      <category>beginners</category>
      <category>devops</category>
    </item>
    <item>
      <title>Hacked: Input validation in app</title>
      <dc:creator>Frank A</dc:creator>
      <pubDate>Mon, 27 Oct 2025 07:48:05 +0000</pubDate>
      <link>https://dev.to/frank_a_64393c6f49a90e428/hacked-input-validation-in-app-5eb</link>
      <guid>https://dev.to/frank_a_64393c6f49a90e428/hacked-input-validation-in-app-5eb</guid>
      <description>&lt;p&gt;

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


&lt;/p&gt;

&lt;p&gt;Input validation is crucial for web app security. In this video, you'll see a Python web app get p0wned, because the inputs are not validated. A shell gets opened on the server that's running the web app. From there, I explain what happens if there is validation, but incorrectly implemented and the whole thing contains demo's.&lt;/p&gt;

&lt;p&gt;Timestamps show you every step, you can jump to the parts you like, whether it’s command execution, reverse shell or the Python code itself. Have fun!&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Watch on&lt;/em&gt; &lt;a href="https://www.youtube.com/watch?v=t1HeFKM7Zss" rel="noopener noreferrer"&gt;Youtube&lt;/a&gt;&lt;/p&gt;

</description>
      <category>python</category>
      <category>webdev</category>
      <category>cybersecurity</category>
    </item>
    <item>
      <title>Linux Scripting in 10 Minutes</title>
      <dc:creator>Frank A</dc:creator>
      <pubDate>Sat, 25 Oct 2025 09:43:46 +0000</pubDate>
      <link>https://dev.to/frank_a_64393c6f49a90e428/linux-scripting-in-10-minutes-1719</link>
      <guid>https://dev.to/frank_a_64393c6f49a90e428/linux-scripting-in-10-minutes-1719</guid>
      <description>&lt;p&gt;

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


&lt;/p&gt;

&lt;p&gt;If you can type a few commands in the terminal, you can write your first Linux Script. Let’s make Linux work for you.&lt;/p&gt;

&lt;p&gt;To make a Linux bash script, open your favorite text editor (vim,nano,sublime text whatever). Then write this line on top&lt;/p&gt;

&lt;p&gt;&lt;code&gt;#!/bin/bash&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;From then on, you can simply write Linux commands one by one. Once you have all your commands, save the file as a &lt;strong&gt;.sh&lt;/strong&gt; file.&lt;/p&gt;

&lt;p&gt;Next, make your script executable. You can achieve this with the command&lt;/p&gt;

&lt;p&gt;&lt;code&gt;chmod +x filename.sh&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;You now have an runnable scirpt. So how do you run it? &lt;br&gt;
Use the command below:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;./filename.sh&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Many more details in the Youtube video. Hope this helps :-)&lt;/p&gt;

</description>
      <category>linux</category>
      <category>ubuntu</category>
      <category>archlinux</category>
      <category>cli</category>
    </item>
    <item>
      <title>Built a tiny app to practice Linux commands</title>
      <dc:creator>Frank A</dc:creator>
      <pubDate>Tue, 07 Oct 2025 12:13:05 +0000</pubDate>
      <link>https://dev.to/frank_a_64393c6f49a90e428/built-a-tiny-app-to-practice-linux-commands-4mc1</link>
      <guid>https://dev.to/frank_a_64393c6f49a90e428/built-a-tiny-app-to-practice-linux-commands-4mc1</guid>
      <description>&lt;p&gt;Hey everyone,&lt;/p&gt;

&lt;p&gt;I’ve been teaching Linux and realized that a lot of beginner tutorials are either too dry or assume some prior knowledge. So, I decided to build a small app that teaches Linux command-line basics through interactive challenges.&lt;/p&gt;

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

&lt;p&gt;The app gives you small challenges, and you get immediate feedback so you can see how you’re doing. I’m hoping it can help people who want to learn Linux but don’t know where to start.&lt;/p&gt;

&lt;p&gt;If you’re interested, you can check it out here: &lt;a href="https://linuxlabs.app" rel="noopener noreferrer"&gt;https://linuxlabs.app&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Would love any feedback or ideas for improvements!&lt;/p&gt;

</description>
      <category>linux</category>
      <category>beginners</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
