<?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" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Stories by Gamuchirai on Medium]]></title>
        <description><![CDATA[Stories by Gamuchirai on Medium]]></description>
        <link>https://medium.com/@.rai?source=rss-752f784623fc------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/fit/c/150/150/1*eY9o1M8gOHmohtBk-1XYBA.webp</url>
            <title>Stories by Gamuchirai on Medium</title>
            <link>https://medium.com/@.rai?source=rss-752f784623fc------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Mon, 06 Apr 2026 16:40:45 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@.rai/feed" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com" rel="hub"/>
        <item>
            <title><![CDATA[Exploiting BOLA and Broken Authentication in DVRA API]]></title>
            <link>https://medium.com/@.rai/exploiting-bola-and-broken-authentication-in-dvra-api-2efd31a592a3?source=rss-752f784623fc------2</link>
            <guid isPermaLink="false">https://medium.com/p/2efd31a592a3</guid>
            <category><![CDATA[security]]></category>
            <category><![CDATA[vulnerability]]></category>
            <category><![CDATA[cybersecurity]]></category>
            <category><![CDATA[api]]></category>
            <category><![CDATA[bugs]]></category>
            <dc:creator><![CDATA[Gamuchirai]]></dc:creator>
            <pubDate>Mon, 06 Apr 2026 14:15:36 GMT</pubDate>
            <atom:updated>2026-04-06T14:15:36.313Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*YOZ2IVsMhJWlGcnhJgV3Bg.png" /></figure><h3>DVRA Security Project</h3><p><strong>Environment:</strong> Kali Linux Terminal, I used curl on this project<br> <strong>Target:</strong> <a href="https://github.com/theowni/Damn-Vulnerable-RESTaurant-API-Game">Damn Vulnerable RESTaurant API (DVRA)</a></p><p><strong>Broken Object Level Authorization (BOLA)</strong> is an API vulnerability that allows an attacker to bypass access control mechanisms and perform actions on specific objects without proper permissions. Typically, objects are accessed using unique identifiers such as <strong>integers</strong> or <strong>UUIDs</strong>. An attacker with an access to these identifiers can read, modify, or delete related objects. This vulnerability occurs when an API endpoint fails to properly check whether a user has permission to access the requested object. This issue is commonly referred to as <strong>IDOR</strong> (<strong>Insecure Direct Object Reference</strong>).</p><blockquote>Example:<br> If you can change:</blockquote><p>/orders/1 → /orders/2</p><blockquote>and see someone else’s order → <strong>BOLA vulnerability</strong></blockquote><h3>IDOR (Insecure Direct Object Reference)</h3><p>IDOR is a <strong>type of BOLA</strong> where:</p><blockquote><em>The application exposes object IDs directly and does not validate ownership.</em></blockquote><p>Example:</p><pre>GET /orders/5</pre><p>If you can access order 5 without owning it → <strong>IDOR attack</strong></p><h3>Broken Authentication</h3><p><strong>Broken Authentication</strong> risks are focused on <strong>authentication</strong> aspects, not authorization.</p><p>This occurs when:</p><ul><li>Login/session handling is weak</li><li>Tokens can be forged or reused</li><li>Identity is not properly verified</li></ul><p>Example:</p><ul><li><em>Using a fake or modified token to access another account</em></li></ul><h3>JWT (JSON Web Token)</h3><p>JWT is used for authentication.</p><ul><li>The token is a JWT token sent in the HTTP request by the user.</li><li>The token is decoded via jwt.decode method.</li><li>If the token is succesfully decoded and user exists in the database, the user object is returned.</li><li>If the token is not decoded succesfully or if the user doesn&#39;t exist in the database, the function raises HTTPException with 401 Unauthorized status code. It results in the HTTP 401 response sent to the client.</li></ul><p>Structure:</p><pre>HEADER.PAYLOAD.SIGNATURE</pre><p>Example payload:</p><pre>{<br>  &quot;sub&quot;: &quot;user1&quot;,<br>  &quot;exp&quot;: &quot;user&quot;<br>}</pre><p>Tools like <strong>jwt.io</strong> allow you to:</p><ul><li>Decode tokens</li><li>Modify payloads</li><li>Re-sign tokens (if weak security)</li></ul><h3>Setting Up Damn-Vulnerable-RESTaurant-API-Game</h3><p>In Kali Linux terminal:</p><pre>git clone https://github.com/theowni/Damn-Vulnerable-RESTaurant-API-Game.git<br>cd Damn-Vulnerable-RESTaurant-API-Game<br>sudo ./start_app.sh</pre><p>API runs on:</p><pre>http://localhost:8091</pre><h3>Register Users</h3><p>I had 2 users, “Gamu” and “Blee,” that I had created, so I could see the different responses and for the exploitation of any vulnerabilities on different endpoints. On this project, I was just testing out BOLA and Broken Auth.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/786/1*F2JO7GvqFYQDLQ4uq7lAQQ.png" /></figure><p>It is important, as you register or explore endpoints, that you use the schema provided on each endpoint, because if you don’t, it will give you an error.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/777/1*szzq3MBI06SvHaSxUGTPjw.png" /></figure><h4>Create Users with this command:</h4><pre>curl -X POST http://localhost:8091/register \<br>-H &quot;Content-Type: application/json&quot; \<br>-d &#39;{<br>  &quot;username&quot;:&quot;user1&quot;,<br>  &quot;password&quot;:&quot;pass123&quot;,<br>  &quot;phone_number&quot;:&quot;123456789&quot;,<br>  &quot;first_name&quot;:&quot;User&quot;,<br>  &quot;last_name&quot;:&quot;One&quot;<br>}&#39;</pre><h3>LOGIN (Broken Auth Learning)</h3><p>VERY IMPORTANT:<br> /token uses <strong>form data</strong>, NOT JSON</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/769/1*vCAZkUHAahvTQp5AFbp3Lw.png" /></figure><h3>Endpoint:</h3><pre>POST /token</pre><pre>curl -X POST http://localhost:8091/token \<br>-H &quot;Content-Type: application/x-www-form-urlencoded&quot; \<br>-d &quot;username=user1&amp;password=pass123&quot;</pre><p>Response:</p><pre>{<br>  &quot;access_token&quot;: &quot;JWT_TOKEN&quot;,<br>  &quot;token_type&quot;: &quot;bearer&quot;<br>}</pre><p>Save this token:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/752/1*1UVhXBK9yVznj0asf_pwWw.png" /></figure><pre>export TOKEN=&quot;your_token_here&quot;<br><br>or<br>vi tokenfile.txt</pre><h3>Access Profile + Test Authentication (Broken Auth)</h3><p>Test Profile endpoint Without Token, I had forgotten to put it in “URL”</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/766/1*7hIfkhjjV0dJ4pWcR3QOYA.png" /><figcaption>You ensure you have your “” as I wanted to see what output I will get</figcaption></figure><p>With the Credentials I used to create accounts, I went to the website and tried the Authorization. It did not give me much information.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*zhSkMb0IzaqUulaCCnJXJQ.png" /><figcaption>It does not really give much, but this is what I got</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/650/1*Y9rTs6mqlbkhF7T87p2R9w.png" /></figure><h3>Endpoint:</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/774/1*vGAyu9OKMWasz_e3eR4sPg.png" /></figure><h3>What to check:</h3><ul><li>If it returns user data → 🚨 Broken Authentication, it does expose the Broken Authentication. But do check it out</li><li>If it says unauthorized → ✅ secure</li></ul><pre>GET /profile</pre><pre>curl -H &quot;Authorization: Bearer $TOKEN&quot; \<br>http://localhost:8091/profile&quot;</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/752/1*zGQNE8khyfSwjMXJbpXcDQ.png" /></figure><p>You should see the attacker profile, which in this instance was “Gamu.”</p><h3>WHAT THIS MEANS</h3><ul><li>Token = your identity</li><li>If API doesn’t check token → broken auth</li></ul><h3>8. Exploiting Broken Authentication (JWT Manipulation)</h3><blockquote><em>Step 1: Decode Token</em></blockquote><blockquote><em>Go to:<br> </em><strong><em>jwt.io</em></strong></blockquote><p>Paste your token.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*6xnIifN5hD_4S86OqQkxJA.png" /></figure><p>You’ll see:</p><pre>{<br>  &quot;sub&quot;: &quot;user1&quot;,<br>  &quot;exp&quot;: &quot;1234567&quot;<br>}</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*4QBDTKBg6GN1WUFPHtZlgw.png" /><figcaption>Using the jwt.io</figcaption></figure><p>I also wanted to check what happens if you leave the payload open on the ‘sub’, will it return anything</p><h3><em>Modify Payload</em></h3><p><em>Change:</em></p><pre>&quot;role&quot;: &quot;Blee&quot;</pre><p><em>To:</em></p><pre>&quot;sub&quot;: &quot;admin&quot;</pre><h3><em>Re-sign Token</em></h3><p><em>If DVRA uses weak signing (or none), you can:</em></p><ul><li><em>Use </em><em>none algorithm OR</em></li><li><em>Re-sign with known secret</em></li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*J-AlVWyNqIbGXPu9W04Clg.png" /></figure><h3>Result</h3><ul><li>Access to the admin endpoint, which I couldn’t exploit, is still in the process of being exploited</li><li>Privilege escalation, that&#39;s what we want</li></ul><p><em>This confirms:<br> ✔️ </em><strong><em>Broken Authentication</em></strong><em><br> ✔️ </em><strong><em>JWT Misconfiguration, as we could modify with different ‘sub.’</em></strong></p><h3>Create Orders (Setup for BOLA)</h3><h3>Endpoint:</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/760/1*3SfNj9LvVtXewJYRPO5KLw.png" /></figure><p>If you do not use the correct schema provided on the endpoint, you will get an error. Ensure you use the schema, then edit the string</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/759/1*dTva9mtrNDxBxy-LA8KuCg.png" /></figure><pre>POST /orders</pre><pre>curl -X POST http://localhost:8091/orders \<br>-H &quot;Authorization: Bearer $TOKEN&quot; \<br>-H &quot;Content-Type: application/json&quot; \<br>-d &#39;{<br>  &quot;delivery_address&quot;:&quot;Test Street&quot;,<br>  &quot;phone_number&quot;:&quot;123456&quot;,<br>  &quot;items&quot;:[1,2],<br>  &quot;coupon_id&quot;:1<br>}&#39;</pre><p>Look for:</p><pre>&quot;id&quot;: 1 and also &quot;user_id&quot;: 19</pre><h3>Exploiting BOLA / IDOR (Orders Endpoint)</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*UkQwwVdhjT-NIExLdldSLw.png" /><figcaption>IDOR attack.</figcaption></figure><p>Changing the object ID reveals data, which I am not supposed to get PII. Personally Identifiable Information (PII) is data that can identify, contact, or locate a specific individual, such as social security numbers, full names, biometric records, or email addresses. It is crucial for protecting privacy and preventing identity theft</p><h3>Endpoint:</h3><pre>GET /orders/{order_id}</pre><h3>Attack</h3><ol><li>Get your order:</li></ol><pre>curl -H &quot;Authorization: Bearer $TOKEN&quot; \<br>http://localhost:8091/orders/1</pre><ol><li>Change ID:</li></ol><pre>curl -H &quot;Authorization: Bearer $TOKEN&quot; \<br>http://localhost:8091/orders/2</pre><h3>Result</h3><ul><li><em>You can view another user’s order</em></li><li><em>No ownership validation is performed</em></li></ul><blockquote>This confirms:<br> ✔️ <strong>IDOR vulnerability</strong><br> ✔️ <strong>BOLA vulnerability</strong></blockquote><h3>Fix Authorization</h3><ul><li>Enforce role checks on every endpoint</li><li>Never trust client input for roles</li></ul><p><em>This project demonstrated how insecure API design leads to:</em></p><ul><li><em>Unauthorized data access (</em><strong><em>BOLA/IDOR</em></strong><em>)</em></li><li><em>Privilege escalation (</em><strong><em>Broken Authentication</em></strong><em>)</em></li><li><em>Token abuse (</em><strong><em>JWT weaknesses</em></strong><em>)</em></li></ul><p><em>Using </em><strong><em>Kali Linux</em></strong><em>, </em><strong><em>curl</em></strong><em>, and </em><strong><em>jwt.io</em></strong><em>, we successfully:</em></p><ul><li><em>Intercepted and modified requests</em></li><li><em>Accessed other users’ data</em></li><li><em>Escalated privileges to admin</em></li></ul><p>I also did a demo video, so do check it out and share feedback.</p><p>Welcome to my API Hacking series, as we learn and exploit different vulnerabilities. For now, enjoy this first of many</p><p><a href="https://youtu.be/DfdDkd9EDpc?si=YQOFDboboF9gCX0S">https://youtu.be/DfdDkd9EDpc?si=YQOFDboboF9gCX0S</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=2efd31a592a3" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Not Just Artificial Intelligence, It’s AI + U(You)]]></title>
            <link>https://medium.com/@.rai/not-just-artificial-intelligence-its-ai-u-you-9550d50345ad?source=rss-752f784623fc------2</link>
            <guid isPermaLink="false">https://medium.com/p/9550d50345ad</guid>
            <category><![CDATA[data]]></category>
            <category><![CDATA[information-security]]></category>
            <category><![CDATA[ai-agent]]></category>
            <category><![CDATA[ai]]></category>
            <category><![CDATA[cybersecurity]]></category>
            <dc:creator><![CDATA[Gamuchirai]]></dc:creator>
            <pubDate>Tue, 24 Mar 2026 13:02:07 GMT</pubDate>
            <atom:updated>2026-03-24T13:02:07.566Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*xlbWOIGEZr_Oje4lEfNvjw.png" /></figure><p>I don’t know if you’ve seen the video of the lady talking about the “AI + U” concept, where the heading of the video is, “AI can never copy her.”</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/360/1*atp70EEChpv6-63882PE7g.gif" /><figcaption>The Video AI +U</figcaption></figure><p>Honestly, that video makes me laugh, BUT at the same time, it makes me sit down and think deeply. I understand her. Especially when she says, “People worry a lot about AI… what about YOU?”</p><p>That part stayed with me. Because if you initially think about it, you don’t fully understand what she’s trying to say. For the majority of us, the “Artificial Intelligence” conversation can be super confusing, especially the way it’s being propagated, as this new “human” that is there to take over humanity. Take over my JOB… The need to worry.</p><p>Because the truth is, we are worrying about AI, but we are not really asking ourselves where we stand in all of this. The man in the video tries to explain, but there’s already a misunderstanding happening. And I feel like that’s exactly where we are right now as people, we are misunderstanding the change that AI is bringing. The damage, the good, the lay-overs and adjustments…</p><p>It is changing so rapidly that as soon as you think you’ve got it, something new pops up, especially in the tech world. And change can be hard, because with change we need to ensure we adjust, understand, and learn, but we’re not always doing that, we trying to keep up, that soo much is being missed in the way</p><p>There’s a lot of noise about “AI is replacing jobs,” “AI is taking over,” but not enough people are really breaking it down and explaining what AI actually is in a way that everyone can understand and engage with.</p><p>If you Google the definition. It will tell you that AI is the simulation of human intelligence by machines, learning, reasoning, and making decisions. But for me, it goes deeper than that.</p><p>Because we are still at a point where we are teaching people about the internet. People are still learning how to use computers, how to protect themselves online, and what it even means to have a digital footprint. There is still a gap, a huge gap, especially when it comes to security around it.</p><p>And now we are introducing AI on top of that.</p><p>I call it an introduction because even ME, I am still learning and trying to understand it properly. So I think about someone who doesn’t even fully understand the internet yet, what happens when they hear, “AI is going to replace humans”?</p><p>That fear is real. And we have to understand that not everyone has the same privilege of being exposed to information, especially when there is already such a huge gap still trying to be filled. Lack of education is soo many part of the world, it is still a major issue. Also, just because I have a device, I understand how it works, just because I am online doesn’t mean I am informed. This is a reality for many. They are using AI Agents, or they are using the internet, but are they properly AWARE of everything?</p><p>And it comes from a place of not being included, not being taught, not being prepared. Seeing the damage that is happening around, based on LACK such awareness when it comes to “This new digital world and use of AI.”</p><p>Living in a small town myself, where life is still simple and laid-back, there isn’t much conversation about technology, data protection, or cybersecurity. These are not everyday topics for people, and I can only imagine how many parts of the world are still “behind,” trying to adjust.</p><p>So when AI comes in, it doesn’t come with understanding, it comes with confusion, fear, and sometimes even silence.</p><p>And that’s dangerous.</p><p>Because people will end up being part of something they don’t understand. What we might call “consumers,” the ones who may not be prepared because they don’t have the skills for the world of AI. And that’s where the idea of “replacement” starts to come into play.</p><p>I sat down and had to break it down in a simple way — for myself, and for anyone else who is also interested in understanding it.</p><p>The “A” in AI stands for Artificial, which means something created by humans. So already, we know this is not something natural. It is something built “something made” an addition or formation.</p><p>Then the “I” stands for Intelligence, which is about learning, thinking, and solving problems.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*TqE_MQW0AjYWCOggMKsIVA.png" /></figure><p>So for me, AI is simply this:<br>“Humans used their intelligence to create something that can mimic their intelligence.” To be honest, that is beautiful.</p><p>But here’s where it gets deeper.</p><p>That “intelligence” didn’t just come from nowhere, it came from us. That is the “U” I believe, where it comes into play.</p><p>Our data.<br>Our behavior.<br>The way we speak.<br>The way we search.<br>The way we solve problems.<br>Our digital footprint, technically everything.</p><p>That’s where the “U” comes in. The collection of our data is in everything.</p><p>Because when I really think about it, AI is not just Artificial Intelligence. It is Artificial Intelligence built from YOU. You + Me = Us… so somewhere it should have been AI+U</p><p>Your digital footprint is part of it. Without you in it, it is not really as powerful as it seems. It needs YOU. Just like we need water to live, it needs data to be effective, OUR DATA.</p><p>And that’s something I feel like we are not talking about enough.</p><p>We are feeding systems every day, through social media, searches, apps, devices and many times, we don’t even realize it. Some of it we agree to, some of it we don’t fully understand, and some of it happens without us even noticing.</p><p>So when we say AI is powerful, we must also understand, it is powerful because of us.</p><p>But now, let’s also talk about something else that I think isn’t mentioned:</p><p>AI is not neutral.</p><p>If the data it learns from is biased, then the system becomes biased. If certain communities are not represented, then the system will not understand them. That means AI can make unfair decisions without even “knowing” it.</p><p>So now the question is not just, “What is AI?”<br>It becomes, “Who is included in AI?”</p><p>Because if we are not included, then decisions will be made about us, without us. And that is dangerous.</p><p>We’ve already seen things like deepfakes, where people’s faces, voices, and identities are used to create things they never said or did. And this is not something far away, it’s here, and it’s growing. A simple example: if you doom-scroll, a large portion of content is AI-generated. It is becoming more real than ever, to the point where people are competing with it. We even give our images so we can get AI-generated ones, the storing of such, are we in agreement with it or aware?</p><p>Imagine someone using your face, your voice, your identity for something harmful.</p><p>That’s why awareness is important.<br>That’s why protection is important.<br>That’s why education is important.</p><p>As people build AI agents, are they thinking about security? Or only how to make something “better, faster…”? Encouraging the systems in place to adjust with it, from our government, education system, healthcare, etc., to name a few.</p><p>Now coming back to the video again, the lady says, “No, the letter U.”</p><p>At first, it sounds like a joke. But the more I think about it, the more it makes sense.</p><p>There is a “U” in AI.</p><p>Not in spelling, but in meaning.</p><p>Because AI cannot exist without people.</p><p>There is a “you” behind every system:</p><p>the one who created it<br>the one whose data trained it<br>and the one who is using it</p><p>That is all of us.</p><p>But here is the problem, the “U” is there, but it is hidden.</p><p>Hidden in terms and conditions we don’t read, and often don’t understand.<br>Hidden in the data we don’t know is being collected. Our trust is being abused due to a lack of integrity from platforms.<br>Hidden in systems we don’t fully understand.</p><p>So now we are part of something, but we don’t feel part of it.</p><p>And that’s where the fear comes in.</p><p>I use AI myself. It helps me a lot — with learning, understanding, even thinking through things. It’s not all bad. There is a lot of good in it.</p><p>But at the same time, I am learning that if we are not careful, we can easily become just consumers instead of creators.</p><p>And that’s something we need to change.</p><p>We need to start asking:</p><p>Are we teaching this in schools? Is the system adjusting as well?<br>Are we preparing young people for this world? All people, in different parts of the world<br>Are communities being included, or does it feel like, “as long as I benefit, it doesn’t matter”?<br>Are governments putting policies in place to protect people, and do people even know about them?</p><p>Am I aware of my rights when it comes to AI data breach, where do I report, and who takes accountability for it? Am I being protected and considered in such production?</p><p>Or are we just moving forward and hoping for the best?</p><p>Because if we don’t slow down and include people, then AI becomes something controlled by a few instead of something that benefits everyone. It may look like it benefits everyone, even when it doesn’t.</p><p>And we’ve seen before that when power is not shared, it can be misused.</p><p>There’s also another side that we don’t always talk about.</p><p>People say, “AI will replace us.”</p><p>But I don’t fully believe that.</p><p>I believe people are constantly evolving. No one can ever be completely replaceable.</p><p>New jobs will come. New opportunities will come. But at the same time, new risks will also come, especially when it comes to cybersecurity, identity, and trust.</p><p>And if we are not prepared, that’s where the real danger is.</p><p>Because it won’t just be about jobs, it will be about safety.</p><p>I remember when I started my cybersecurity journey, one thing that stayed with me was this:<br>In any situation, people come first.</p><p>Not systems. Not technology. But people.</p><p>And I feel like that’s something we need to bring back into this conversation.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*ir_Ig_AqEZsGMncUzowiZw.png" /><figcaption>Do read more about this from here: <a href="https://www.addingvalue.nu/post/why-humans-are-the-first-line-of-defense-in-cybersecurity-030">https://www.addingvalue.nu/post/why-humans-are-the-first-line-of-defense-in-cybersecurity-030</a></figcaption></figure><p>Because in all of this growth, all of this innovation, we cannot forget the human being.</p><p>I’m sharing this as my thoughts. Not as an expert, but as someone who is learning, observing, and trying to understand.</p><p>And I really hope that people like me, young people, students, communities, are included in these conversations. That we don’t just hear about AI, but that we are part of shaping how it is used. That we are invited into spaces where we can sit with experts, learn from them, and grow into people who can bring solutions. Not Consumers only</p><p>Because the truth is, no one understands everything.</p><p>We understand better when we come together.</p><p>After speaking to a friend who asked me, “Why does it bother you?” I had to really think about it.</p><p>And I realized it’s not just about being replaced.</p><p>It’s about being left out. Trust is broken by how everything is done…</p><p>It’s also about the lack of access to knowledge in different parts of Africa, being underrepresented in all of this, in the Tech fields, and not being protected.</p><p>It’s about people being at risk because they were never taught, never prepared, never included.</p><p>And that’s something we can change.</p><p>If we share knowledge.<br>If we open spaces for learning.<br>If we bring people into the room, we truly involve them.</p><p>Because this world belongs to all of us.</p><p>And if we don’t stand together, we risk building something that ends up harming us.</p><p>It’s like setting a fire in a house and thinking it won’t reach you, until it does.</p><p>So I’ll leave you with this:</p><p>Maybe the “U” is missing… It’s just hidden in AI + U.</p><p>Do you see it too? Or do you see it differently? What are your thoughts?</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=9550d50345ad" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Burping, Ffufing, and Breaking Things: TCM Security Practical Bug Bounty Lab]]></title>
            <link>https://medium.com/@.rai/burping-ffufing-and-breaking-things-tcm-security-practicalbug-bounty-lab-ace7409b4ea9?source=rss-752f784623fc------2</link>
            <guid isPermaLink="false">https://medium.com/p/ace7409b4ea9</guid>
            <category><![CDATA[cybersecurity]]></category>
            <category><![CDATA[hacking]]></category>
            <category><![CDATA[penetration-testing]]></category>
            <category><![CDATA[api]]></category>
            <category><![CDATA[bug-bounty]]></category>
            <dc:creator><![CDATA[Gamuchirai]]></dc:creator>
            <pubDate>Wed, 04 Mar 2026 12:32:20 GMT</pubDate>
            <atom:updated>2026-03-04T12:41:35.853Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*FFcfOMmTKuCYf4vFu1mWUg.png" /></figure><h3>Introduction</h3><p>As someone currently learning <strong>Web Penetration Testing, this <em>Practical Bug Bounty from the TCM Security</em></strong> <em>YouTube channel</em> was extremely informative and practical.</p><p>Learning alongside Heath Adams and Alex helped me understand not only <em>how</em> to perform attacks, but also <em>why</em> they work and what developers often overlook.</p><p>This course focuses specifically on <strong>bug bounty hunting through web applications</strong>, covering:</p><ul><li>Authentication attacks</li><li>Authorization &amp; Access Control</li><li>API Security</li><li>File Inclusion attacks</li><li>Basic Injection concepts</li><li>Reconnaissance &amp; Information Gathering</li></ul><p>Unlike theory-based courses, this one required setting up a real lab and actively exploiting vulnerabilities.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*--HQ5aduCYeTGS4Xk3l_Uw.png" /></figure><h3>What is Web Application Security?</h3><p>Before diving into exploitation, the course defined web application security and why it matters.</p><p>A web application is essentially any website you interact with:</p><ul><li>Google</li><li>Facebook</li><li>E-commerce platforms</li><li>Banking portals</li></ul><p>Every web application handles some form of data often sensitive data.</p><h3>Why Web Application Security Is Important</h3><ul><li><strong>Data Protection</strong> — Prevents theft of user information, payment details, and confidential records.</li><li><strong>Regulatory Compliance</strong> — Avoids fines and legal consequences.</li><li><strong>Financial Protection</strong> — The average breach can cost millions.</li><li><strong>Brand Reputation</strong> — Trust takes years to build and seconds to lose.</li><li><strong>Intellectual Property Protection</strong> — Prevents trade secrets and proprietary code theft.</li><li><strong>Identity Theft Prevention</strong> — Protects personal information from misuse.</li></ul><p>As ethical hackers and bug bounty hunters, the goal is to identify weaknesses before malicious attackers exploit them.</p><h3>Lab Environment Setup</h3><p>I performed all labs locally in a <strong><em>Kali Linux</em></strong> virtual machine.</p><h3>Step 1 — Installing PimpMyKali</h3><p>Repository:<br><a href="https://github.com/Dewalt-arch/pimpmykali">https://github.com/Dewalt-arch/pimpmykali</a></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/938/1*PKEs5RMICDCiai_GQBqh4w.png" /></figure><p>PimpMyKali automates post-install configuration of Kali Linux.</p><h3>Installation Process</h3><pre>cd /opt<br>sudo git clone https://github.com/Dewalt-arch/pimpmykali<br>cd pimpmykali<br>sudo ./pimpmykali.sh</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/616/1*eCtFH5C3VHzE5j-AfakCCw.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/628/1*7uFhcc4kpQnOEPLb05gg5Q.png" /></figure><p>I accepted the default prompts and allowed the script to configure everything automatically.</p><p>This saved time and ensured my penetration testing environment was fully prepared.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/635/1*yM0dTqDtiwT0pBwd1bNP9A.png" /></figure><h3>Step 2 — Installing Docker</h3><pre>sudo apt install docker.io docker-compose</pre><p>After installation, I restarted the VM to ensure all services were running correctly.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/644/1*5JV7nM4kGgkKLCucHv3srg.png" /></figure><h3>Step 3 — Setting Up the Practical Bug Bounty Lab</h3><p>After downloading the lab ZIP file:</p><pre>unzip bugbounty.zip<br>cd bugbounty<br>sudo docker-compose up</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/577/1*wSMeGSPu1eMkmaat5k6p_A.png" /></figure><p>This pulled the necessary images and built the vulnerable lab.</p><p>In another terminal:</p><pre>./set-permissions.sh</pre><p>This step was important for file upload labs.</p><p>Accessed lab at:</p><pre>http://localhost</pre><p>If needed, database reset:</p><pre>/init.php</pre><p>I frequently reset the database to repeat attacks and reinforce understanding.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/938/1*5qbdkdvdjiRBKDx8_xDXeg.png" /></figure><h3>Authentication Attacks</h3><p>Before attacking, I learned the difference between:</p><ul><li><strong>Authentication</strong> → Who you are</li><li><strong>Authorization</strong> → What you’re allowed to do</li></ul><h3>Lab 0x01 — Brute Force</h3><p>Target account: Jeremy</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/952/1*3iO0mK_TTXdOFSleBjL0zg.png" /></figure><h3>Using Burp Suite</h3><ol><li>Intercepted login POST request.</li><li>Sent to Intruder (Ctrl + I).</li><li>Marked password field.</li><li>Loaded SecLists password list.</li><li>Analyzed response length differences.</li></ol><p>Found valid password: <strong>letmein</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/750/1*RVQoYxOB2n5XWf3P4RpgVg.png" /></figure><h3>Using ffuf (Faster Method)</h3><p>Saved raw request to file:</p><pre>ffuf -request lab.txt -request-proto http \<br>-w /usr/share/seclists/Passwords/Common-Credentials/xato-net-10-million-passwords-1000.txt \<br>-fs 1814</pre><p>Filtered by response size to detect anomalies.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/772/1*EloQ2BxbRLERxvkUOSSUew.png" /></figure><p>Successfully identified valid credentials.</p><h3>Lab 0x02 — MFA Logic Flaw</h3><p>Target: Jessamy / pasta</p><p>After entering correct credentials, the system requested an MFA code.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/917/1*zwxO3QgRsKUT2QvsNnEKkA.png" /></figure><p>Observations:</p><ul><li>MFA code was short.</li><li>Username was submitted again during second step.</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/839/1*k4MbwCx8YF9m9RCW111MSw.png" /></figure><h3>Exploit</h3><ol><li>Intercepted MFA POST request.</li><li>Modified the username parameter.</li><li>Forwarded request.</li></ol><p>Successfully logged in as another user.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/903/1*nJNlM1wBVe9xFQAJ0-uG4Q.png" /></figure><h3>Vulnerability Type:</h3><p>Logic flaw in multi-step authentication.</p><p>The system failed to bind MFA verification to the original authenticated session.</p><h3>Lab 0x03 — Account Lockout Bypass</h3><p>The application locked accounts after 5 failed attempts.</p><p>Instead of brute forcing one user:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/836/1*gAucVlsJdiBP3SKf5PEWYQ.png" /></figure><h3>Strategy:</h3><ul><li>Used Burp Intruder.</li><li>Selected <strong>Cluster Bomb</strong> attack.</li><li>Loaded username list.</li><li>Used 4 common passwords.</li><li>Avoided exceeding 5 attempts per account.</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/953/1*avCvNtKEcpmfkSGCuQze0g.png" /></figure><p>Successfully logged in as <strong>admin:letmein</strong></p><p>This demonstrated bypassing weak lockout mechanisms.</p><h3>Authorization &amp; Access Control</h3><p>Three types of access control covered:</p><ul><li>Vertical (admin vs user)</li><li>Horizontal (user A vs user B)</li><li>Context-dependent</li></ul><h3>IDOR Lab (0x04)</h3><p>URL contained:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/878/1*C7FPkCq7a9Ql6DWSQmDXvA.png" /></figure><pre>?account=1001</pre><h3>Exploit</h3><ol><li>Sent request to Repeater.</li><li>Modified account ID.</li><li>Accessed other users’ data.</li></ol><p>Used Intruder with generated numeric list to enumerate accounts.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/833/1*CeirElEshZ-PGN4j-2YwMg.png" /></figure><p>Filtered results by searching for “admin”.</p><p>Discovered multiple admin accounts.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/820/1*jSdPxj8QoNql1H1xjWlBrA.png" /></figure><h3>Using ffuf</h3><pre>ffuf -u http://localhost/labs/e0x02.php?account=FUZZ \<br>-w num.txt -mr &quot;admin&quot;</pre><p>Found valid admin IDs.</p><p>Vulnerability: <strong>Insecure Direct Object Reference (IDOR)</strong><br>(API equivalent: Broken Object Level Authorization)</p><h3>API Security &amp; JWT Testing</h3><p>APIs made up most of the lab traffic.</p><h3>API 0x01 — JWT Analysis</h3><p>Logged in via API endpoint.</p><p>Received JWT token.</p><p>Noticed:</p><ul><li>Header</li><li>Payload</li><li>No proper signature validation</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/638/1*M6FgMPpB6IDezidg5PLwtQ.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/640/1*Mqp7klDILZh39JJfR3X8WQ.png" /></figure><p>Decoded token manually using Burp Decoder (Base64 decode).</p><h3>Broken Function Level Authorization</h3><p>Steps:</p><ol><li>Logged in as Jeremy.</li><li>Retrieved token.</li><li>Updated Jeremy’s bio (expected behavior).</li><li>Used Jeremy’s token to update Jessamy’s bio.</li><li>Request succeeded.</li></ol><figure><img alt="" src="https://cdn-images-1.medium.com/max/827/1*O2u6xP8zt5RMiEY92XKibQ.png" /></figure><p>Confirmed broken authorization.</p><p>Jeremy should not be able to modify Jessamy’s data.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/952/1*vYq7QwZEbrqTVfhJYB-zNA.png" /><figcaption>From the Proxy HTTP History, I right-clicked and send to the Autorize. First option, it didn’t work as the way Alex was doing it.</figcaption></figure><h3>Autorize Extension</h3><p>Installed Autorize extension in Burp.</p><p>Although it required Jython setup, I tested access control by sending requests through the extension and analyzing bypass/enforced results.</p><p>This helped automate horizontal authorization testing.</p><h3>File Inclusion Attacks</h3><h3>File Inclusion 0x01 — Basic LFI</h3><p>Tested:</p><pre>../../../../etc/passwd</pre><p>Successfully retrieved system file.</p><h3>File Inclusion 0x02 — Filter Bypass + RFI</h3><p>Initial traversal blocked.</p><p>Bypass technique used:</p><pre>....//....//....//etc/passwd</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/894/1*9Dp1bu3wtLO5lIN-5_0lnA.png" /></figure><p>Filter removed partial sequences but payload reconstructed successfully.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/939/1*1OWOsJ5hWIut5TXopuZ9wA.png" /></figure><p>Also tested:</p><pre>https://www.google.com</pre><p>Confirmed Remote File Inclusion capability.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/944/1*rtciDDtvSy2ge0bQUQje5Q.png" /></figure><h3>PHP Filter Wrapper Exploit</h3><p>Used:</p><pre>php://filter/convert.base64-encode/resource=db.php</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/950/1*xPCm5DTbW_rY_GFu4Pm_tA.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/928/1*nLZzS_O0ejIHYRhwhboRfA.png" /></figure><p>Decoded response in Burp.</p><p>Extracted database credentials.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/954/1*C_2HBns64vFP_wibb6yWbA.png" /></figure><h3>API-Based LFI (0x03)</h3><p>Saved API request.</p><p>Fuzzed with ffuf:</p><pre>ffuf -request api-req.txt -request-proto http \<br>-w /usr/share/seclists/Fuzzing/LFI/LFI-Jhaddix.txt</pre><p>Filtered by word count and response size.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/630/1*2l062F85DUUsXBaz72uuZQ.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/646/1*JeGR_lhwa-1wMGsllT7FgA.png" /></figure><p>Identified working payload.</p><p>Confirmed LFI via API endpoint.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/942/1*nnSZRkF-Q2FYvMWogp-slw.png" /></figure><h3>What I Learned</h3><ul><li>Always step through functionality manually first.</li><li>Response length and word count matter.</li><li>Logic flaws are often more dangerous than brute force.</li><li>Broken Access Control is extremely common.</li><li>JWT misuse is widespread.</li><li>Filters must be recursive and properly validated.</li><li>Resetting labs and repeating attacks improves understanding.</li><li>Mental fatigue affects testing accuracy breaks are important.</li></ul><p>This course significantly improved my practical web penetration testing skills.</p><p><em>Built the lab environment from scratch.</em></p><p><em>Used Burp Community effectively.</em></p><p><em>Used ffuf for faster fuzzing.</em></p><p><em>Tested authentication and authorization thoroughly.</em></p><p><em>Exploited API vulnerabilities.</em></p><p><em>Performed LFI and filter bypass attacks.</em></p><p><em>Extracted sensitive credentials.</em></p><p><em>Understood real-world impact of vulnerabilities.</em></p><p>Most importantly, I didn’t just watch the walkthrough I actively performed the attacks, reset the database, and repeated exercises until I fully understood them.</p><p>This course strengthened my bug bounty methodology and confidence in testing real-world web applications.<em> I will be doing the remaing labs, as they have many more, do check it out.</em></p><blockquote><em>check it out on the @TCM Security:</em></blockquote><p><a href="https://youtu.be/wS2z5lt34Cc?si=pkbO1ICzo8WfZm-j">https://youtu.be/wS2z5lt34Cc?si=pkbO1ICzo8WfZm-j</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=ace7409b4ea9" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[OWASP Top 10 (2025) on TryHackMe]]></title>
            <link>https://medium.com/@.rai/owasp-top-10-2025-on-tryhackme-599e692c22f4?source=rss-752f784623fc------2</link>
            <guid isPermaLink="false">https://medium.com/p/599e692c22f4</guid>
            <category><![CDATA[cybersecurity]]></category>
            <category><![CDATA[api]]></category>
            <category><![CDATA[web]]></category>
            <category><![CDATA[owasp]]></category>
            <category><![CDATA[tryhackme]]></category>
            <dc:creator><![CDATA[Gamuchirai]]></dc:creator>
            <pubDate>Thu, 05 Feb 2026 17:56:01 GMT</pubDate>
            <atom:updated>2026-02-05T17:56:01.734Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*p2Z_DBB4kYmmBBoOPSUpqA.png" /></figure><h3>Room 1: OWASP Top 10 (2025) — IAAA Failures</h3><p>The first room in the TryHackMe OWASP Top 10 (2025) module focused on <strong>IAAA Failures</strong>, covering <strong>A01, A07, and A09</strong>. This room was clearly designed with beginners in mind, assuming no prior security knowledge, which made it an excellent foundation for understanding how core identity and access mechanisms can fail in real-world applications.</p><p>The room introduces <strong>IAAA</strong> as a simple but powerful mental model for thinking about how users and their actions are handled in web applications:</p><ul><li><strong>Identity</strong> — the unique account representing a user or service (such as a user ID or email).</li><li><strong>Authentication</strong> — proving that identity (passwords, OTPs, passkeys).</li><li><strong>Authorisation</strong> — defining what that identity is allowed to do.</li><li><strong>Accountability</strong> — recording and alerting on who did what, when, and from where.</li></ul><p>One key idea that really stuck with me is that <strong>IAAA is sequential</strong>. You can’t skip steps. If identity or authentication is weak, authorisation and accountability become meaningless. Each layer depends on the one before it.</p><h3>A01: Broken Access Control</h3><p>Broken Access Control occurs when the server fails to properly enforce what a user is allowed to access <strong>on every request</strong>. This isn’t about hiding buttons in the UI, it’s about whether the backend actually checks permissions.</p><p>A common example discussed in the room is <strong>IDOR (Insecure Direct Object Reference)</strong>. If changing a parameter like ?id=7 to ?id=6 allows you to view or modify another user’s data, access control is broken.</p><p>In practice, this leads to:</p><ul><li><strong>Horizontal privilege escalation</strong> — accessing other users’ data while having the same role.</li><li><strong>Vertical privilege escalation</strong> — gaining access to admin-only functionality.</li></ul><p>The underlying problem is trust. When applications trust client-side input instead of enforcing server-side checks, attackers can manipulate requests to do things they were never meant to do.</p><h3>A07: Authentication Failures</h3><p>Authentication failures happen when an application cannot reliably verify or bind a user’s identity. The room demonstrated how surprisingly small logic flaws can completely undermine authentication.</p><p>Common issues include:</p><ul><li>Username enumeration</li><li>Weak or guessable passwords</li><li>Missing rate-limiting or account lockout</li><li>Flaws in login or registration logic</li><li>Insecure session or cookie handling</li></ul><p>One particularly interesting example involved trying to break into the admin account. Since the username admin was known, the challenge explored registering a user with a differently cased version like aDmiN. This highlighted how failing to enforce <strong>canonical identity handling</strong> can allow attackers to bypass authentication controls and bind sessions to unintended accounts.</p><p>If authentication isn’t implemented carefully, attackers don’t need advanced exploits — they can simply log in as someone else.</p><h3>A09: Logging &amp; Alerting Failures</h3><p>The final category tied everything together through <strong>accountability</strong>. Even if an attack happens, defenders still need to be able to detect, investigate, and respond. That’s impossible without proper logging and alerting.</p><p>Logging and alerting failures show up as:</p><ul><li>Missing authentication success/failure logs</li><li>No visibility into privilege changes</li><li>Vague or unhelpful error messages</li><li>No alerts for brute-force attempts</li><li>Logs stored locally where attackers can modify or delete them</li><li>Short log retention periods</li></ul><p>This room made it clear that logging isn’t just a compliance checkbox — it’s what enables accountability. Without it, organizations may not even realize they’ve been compromised.</p><h3>Key Takeaways</h3><p>By the end of this room, I had a much clearer understanding of how failures in <strong>Identity, Authentication, Authorisation, and Accountability</strong> directly map to some of the most critical vulnerabilities in the OWASP Top 10 (2025):</p><ul><li><strong>A01 Broken Access Control</strong>: Always enforce server-side authorisation checks on every request.</li><li><strong>A07 Authentication Failures</strong>: Canonicalise identities, enforce unique indexes, rate-limit or lock out brute-force attempts, and rotate sessions after password or privilege changes.</li><li><strong>A09 Logging &amp; Alerting Failures</strong>: Log the full authentication lifecycle, centralise logs off-host with proper retention, and alert on suspicious behaviour like brute-force bursts or privilege escalation.</li></ul><p>This room set a strong foundation for the rest of the module and reinforced how fundamental IAAA is to secure web application design. When these basics fail, the impact can be severe — allowing attackers to access other users’ data or gain privileges they were never meant to have.</p><p>CheckOut the room on <a href="https://medium.com/u/dc49a0a3cb16">TryHackMe</a>: <a href="https://tryhackme.com/room/owasptopten2025one">https://tryhackme.com/room/owasptopten2025one</a></p><p>You can also watch the walkthrough video here:</p><p><a href="https://youtu.be/F0ojrvbcNLk?si=8se7kFQk4RrdcKq2">https://youtu.be/F0ojrvbcNLk?si=8se7kFQk4RrdcKq2</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=599e692c22f4" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Web Application & API Security]]></title>
            <link>https://medium.com/@.rai/web-application-api-security-c92c3f25c4dd?source=rss-752f784623fc------2</link>
            <guid isPermaLink="false">https://medium.com/p/c92c3f25c4dd</guid>
            <category><![CDATA[owasp]]></category>
            <category><![CDATA[api]]></category>
            <category><![CDATA[web-applications]]></category>
            <category><![CDATA[security]]></category>
            <category><![CDATA[penetration-testing]]></category>
            <dc:creator><![CDATA[Gamuchirai]]></dc:creator>
            <pubDate>Thu, 05 Feb 2026 14:30:27 GMT</pubDate>
            <atom:updated>2026-02-05T14:30:27.248Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*7cYEId627YR6xoGmkRg7jQ.png" /></figure><p>Dearest gentle reader,</p><p>This is not the story of someone who already knows everything, it is the story of someone <strong>learning in public</strong>.</p><p>I am currently on my journey into <strong>Web Application and API Penetration Testing</strong>, and along the way, I’ve learned that security is not about memorizing tools or exploits. It’s about curiosity. It’s about asking <em>why</em> things work the way they do, and <em>what happens when they don’t</em>.</p><p>Before I ever try to exploit a vulnerability, I want to understand the foundations, how websites are built, how data flows, and where trust quietly breaks. This article is my attempt to slow down, revisit the basics, and document my understanding as it grows. This is the beginning of it.</p><p>If you’re also learning web security, just starting out, or simply curious about how the web works behind the scenes, you’re in the right place. Let’s begin at the beginning, not as experts, but as students of the craft.</p><h3>What Is Web Application Security?</h3><p>Web application security is the practice of protecting websites, web services, and APIs from attacks that could lead to:</p><ul><li>Unauthorized access</li><li>Data breaches</li><li>Account takeovers</li><li>System compromise</li></ul><p>Some common attacks include <strong>SQL Injection</strong>, <strong>Cross-Site Scripting (XSS)</strong>, <strong>Cross-Site Request Forgery (CSRF)</strong>, and insecure configurations.</p><p>At its core, web application security focuses on protecting:</p><ul><li>The <strong>users</strong></li><li>The <strong>data</strong></li><li>The <strong>systems behind the application</strong></li></ul><p>But to protect something, you must first understand <strong>how it works</strong>.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/832/1*x7jFqW3dEtUNuv0wr7tSzg.jpeg" /></figure><h3>How a Website Works (In Simple Terms)</h3><p>When you type a website address into your browser and press Enter, a conversation begins.</p><ol><li>Your <strong>browser</strong> (Chrome, Firefox, Edge, Safari) sends a request</li><li>A <strong>web server</strong> receives that request</li><li>The server processes it</li><li>The server sends a response back</li><li>Your browser displays the page</li></ol><p>That server is simply another computer somewhere in the world whose job is to handle requests.</p><p>Every web application is built from <strong>two main parts</strong>:</p><ul><li><strong>Front End (Client-Side)</strong></li><li><strong>Back End (Server-Side)</strong></li></ul><p>Understanding this separation is critical for security.</p><h3>Front End (Client-Side): What the User Sees</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*jMmhoHBuQarqLi7BOV2tsw.jpeg" /></figure><p>The <strong>front end</strong> is everything you interact with in your browser.</p><p>Websites are mainly built using:</p><p><strong>HTML</strong> — structures the page (forms, buttons, text, images)</p><p><strong>CSS</strong> — controls appearance (colors, layouts, fonts)</p><p><strong>JavaScript</strong> — adds logic and interactivity</p><p>This is the part of the application that runs <strong>inside the user’s browser</strong>.</p><h3>Important Security Truth</h3><p><strong>Anything on the front end can be seen by the user.</strong></p><p>You can view it by:</p><ul><li>Right-clicking → <em>View Page Source</em></li><li>Pressing <strong>Ctrl + U</strong></li><li>Opening Developer Tools</li><li>Using tools like <strong>Burp Suite</strong></li></ul><p>This visibility is where many security problems begin.</p><h3>Sensitive Data Exposure</h3><p>Sensitive Data Exposure happens when a web application exposes confidential information directly to the user.</p><p>Examples include:</p><ul><li>Hardcoded usernames or passwords</li><li>API keys inside JavaScript files</li><li>Hidden admin URLs</li><li>Debug messages</li><li>HTML comments containing credentials</li></ul><p>Sometimes developers forget to remove test data or temporary credentials. An attacker reviewing the page source could find this information and use it to:</p><ul><li>Log into restricted areas</li><li>Access backend systems</li><li>Escalate privileges</li></ul><p>This is why <strong>viewing page source</strong> is one of the first steps in web penetration testing.</p><h3>User Input: The Root of Many Vulnerabilities</h3><p>Most web applications accept user input:</p><ul><li>Login forms</li><li>Search boxes</li><li>Comment sections</li><li>Profile updates</li></ul><p>If this input is not handled properly, vulnerabilities appear.</p><h3>HTML Injection</h3><p>HTML Injection occurs when user input is displayed on a page <strong>without being filtered or sanitized</strong>.</p><p>If a website trusts user input and renders it directly, an attacker can inject HTML code such as:</p><ul><li>Fake login forms</li><li>Malicious links</li><li>Page manipulation</li></ul><p>This allows attackers to control <strong>how content appears to other users</strong>, which can lead to phishing and deception.</p><p><em>HTML Injection is often the first step toward more serious attacks.</em></p><h3>Cross-Site Scripting (XSS)</h3><p>XSS is a more powerful form of injection where attackers inject <strong>JavaScript</strong> instead of just HTML.</p><p>When malicious JavaScript executes in a victim’s browser, attackers may:</p><ul><li>Steal session cookies</li><li>Take over accounts</li><li>Perform actions as the victim</li><li>Redirect users to malicious websites</li></ul><h3>Types of XSS</h3><p><strong>Reflected XSS</strong><br> User input is immediately reflected in the response<br> Example: search results or error messages</p><p><strong>Stored XSS</strong><br> Malicious input is saved in the database and shown later<br> Example: comments, posts, profile bios</p><p><strong>DOM-Based XSS</strong><br> JavaScript modifies the page using unsafe user input<br> Example: vulnerable page titles or dynamic content</p><p><em>Even though XSS runs on the client-side, its impact can be severe especially if administrators are targeted.</em></p><h3>Cross-Site Request Forgery (CSRF)</h3><p>CSRF tricks users into performing actions <strong>they did not intend to perform</strong>.</p><p>If a user is logged in and visits a malicious page, an attacker can:</p><ul><li>Change passwords</li><li>Update account details</li><li>Perform privileged actions</li></ul><p>This works because browsers automatically send session cookies with requests.</p><p>CSRF attacks are especially dangerous when used against <strong>admin users</strong>, as admin actions can affect the entire application or server.</p><h3>Why Front End Vulnerabilities Still Matter</h3><p>Although front end vulnerabilities do not directly compromise the server, they:</p><ul><li>Endanger users</li><li>Enable account takeovers</li><li>Can be chained with other vulnerabilities</li><li>Often lead to backend compromise</li></ul><p>Security is never about one bug — it is about <strong>how vulnerabilities connect</strong>.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/784/1*gUDhPURGFi8phe89WxkxqA.jpeg" /></figure><h3>Defending the Front End</h3><p>Two critical defenses when handling user input:</p><h4>Input Validation</h4><p>Ensure input matches the expected format<br> Example: emails must look like emails</p><h4>Input Sanitization</h4><p>Remove or escape dangerous characters before display or storage</p><p>Additional protections include:</p><ul><li>Web Application Firewalls (WAFs)</li><li>Browser security features</li><li>Anti-CSRF tokens</li><li>SameSite cookies</li><li>Re-authentication for sensitive actions</li></ul><p>These should be treated as <strong>layers</strong>, not replacements for secure coding.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/784/1*-K4tFENa49-utVGDh9JAoA.jpeg" /></figure><h3>Back End (Server-Side): Where Logic Lives</h3><p>The <strong>back end</strong> processes requests, enforces rules, and manages data.</p><ul><li>Handles authentication and authorization</li><li>Communicates with databases</li><li>Executes business logic</li></ul><p>Servers respond using HTTP status codes such as:</p><ul><li><strong>200 OK</strong> — Success</li><li><strong>401 Unauthorized</strong> — Not authenticated</li><li><strong>403 Forbidden</strong> — Access denied</li><li><strong>404 Not Found</strong> — Resource missing</li><li><strong>500 Internal Server Error</strong> — Server failure</li></ul><p>Understanding these responses is essential during penetration testing.</p><h3>Databases: Where Data Is Stored</h3><p>Web applications use databases to store:</p><ul><li>User credentials</li><li>Posts and content</li><li>Files and images</li><li>Configuration data</li></ul><p><em>Databases must be protected because compromising them often means </em><strong><em>full data exposure</em></strong><em>.</em></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/784/1*GfqNI1LusYyW_CGVLgAZBA.jpeg" /></figure><h3>APIs: Connecting Front End and Back End</h3><p>APIs allow the front end to communicate with the back end.</p><p>An <strong>API (Application Programming Interface)</strong> defines:</p><ul><li>What actions can be performed</li><li>What data is accepted</li><li>What responses are returned</li></ul><p>Common HTTP methods:</p><ul><li><strong>GET</strong> — Retrieve data</li><li><strong>POST</strong> — Create data</li><li><strong>PUT</strong> — Update data</li><li><strong>DELETE</strong> — Remove data</li></ul><blockquote>APIs are powerful and when insecure, they can expose entire systems.</blockquote><h3>Common Web Application Vulnerabilities (OWASP Top 10)</h3><p>Some of the most common issues found during penetration testing include:</p><h3>Broken Authentication &amp; Access Control</h3><ul><li>Login bypasses</li><li>Privilege escalation</li><li>Unauthorized admin access</li></ul><h3>Malicious File Upload</h3><ul><li>Uploading executable scripts</li><li>Leading to remote code execution</li></ul><h3>Command Injection</h3><ul><li>Injecting OS commands</li><li>Gaining server-level access</li></ul><h3>SQL Injection (SQLi)</h3><ul><li>Manipulating database queries</li><li>Bypassing authentication</li><li>Dumping sensitive data</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*jMmhoHBuQarqLi7BOV2tsw.jpeg" /></figure><h3><strong>Web application security is not just about tools or exploits it is about understanding systems deeply.</strong></h3><p>As I continue my journey into <strong>Web and API Penetration Testing</strong>, I am learning that:</p><ul><li>Most vulnerabilities come from simple mistakes</li><li>Small misconfigurations can have massive impact</li><li>Strong security starts with strong fundamentals</li></ul><p>This is only the beginning of my journey — and I look forward to learning, breaking, fixing, and sharing every step along the way.</p><p>Until next time,<br> <strong>Happy hacking (ethically).</strong> 🖤</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=c92c3f25c4dd" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[2025 FIRST & AfricaCERT Symposium in Mauritius: “When the Defenders Unite.”]]></title>
            <link>https://medium.com/@.rai/2025-africacert-symposium-in-mauritius-when-the-defenders-unite-c52000e2dac5?source=rss-752f784623fc------2</link>
            <guid isPermaLink="false">https://medium.com/p/c52000e2dac5</guid>
            <category><![CDATA[cybersecurity]]></category>
            <category><![CDATA[information-technology]]></category>
            <category><![CDATA[incident-response]]></category>
            <category><![CDATA[ctf]]></category>
            <category><![CDATA[ethereum]]></category>
            <dc:creator><![CDATA[Gamuchirai]]></dc:creator>
            <pubDate>Thu, 18 Dec 2025 11:28:51 GMT</pubDate>
            <atom:updated>2025-12-18T11:37:09.362Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*V_iWwhB5ehFdNlhZnG6m1w.png" /><figcaption><a href="https://www.first.org/events/symposium/africa-arab-regions2025/">https://www.first.org/events/symposium/africa-arab-regions2025/</a></figcaption></figure><h3><em>A Reflection on Community, Collaboration, and the Future of Africa’s Cybersecurity</em></h3><p>With great gratitude and excitement, I am honoured to share that I attended the <strong>2025 AfricaCERT Symposium</strong> in beautiful Mauritius, my second year being invited and sponsored by AfricaCERT to represent <strong>CyberSafe Foundation</strong>. Every year, this event reshapes how I think, how I learn, and how I show up in the cybersecurity community. It is one thing to attend a conference; it is another to be in a space where your mind is stretched, your curiosity is fed, and your potential is taken seriously.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*X10ts04Qa6eDzLsZJkBjKA.jpeg" /></figure><p>Each time I leave this Symposium, I walk away with a renewed sense of purpose, carrying more knowledge than I arrived with and holding a deeper appreciation for the extraordinary people around the table. I am particularly inspired by <strong>Mr. Jean-Robert Hountomey’s</strong> remarkable ability to bring together such a large, impactful event, uniting experts, leaders, and young professionals from across the continent. His commitment to ensuring that we all leave with the same mission to strengthen African cybersecurity and, ultimately, protect our societies is truly admirable.</p><p>Because truly, the people in that room are more than attendees. They are brilliant <strong>African innovators, defenders, thinkers, researchers, and leaders</strong>, each one pouring into the next with intention, generosity, and a shared vision for a safer, more resilient Africa.</p><h3>Celebrating 15 Years of Impact and 10 Years of Partnerships</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*-dweH47lhc8tN71zNVq32A.png" /></figure><p>This year’s Symposium was especially meaningful as AfricaCERT celebrated:</p><ul><li><strong>15 years since its formation</strong>, and</li><li><strong>10 years of partnerships</strong> across Africa and globally.</li></ul><p>In that time, AfricaCERT has become a cornerstone of the continent’s cybersecurity ecosystem, building capacity, strengthening incident response teams, enhancing collaboration, and driving cross-border knowledge-sharing. The impact has touched governments, institutions, communities, and young people like myself. I am proud that this influence also extends to my own community, CyberSafe Foundation.</p><p>My hope is to see even <strong>more women</strong> and <strong>more young African talent</strong> in these spaces because the blend of seasoned wisdom and youthful innovation is exactly what our continent needs.</p><blockquote>My heart is filled with gratitude to have gotten to celebrate such an amazing milestone with FIRST and AfricaCERT. 10 years of partnership is not a joke, you can already see the trust, impact, and influence this has.</blockquote><h3>Key Message of the Symposium: Stop Gatekeeping — Defenders Must Unite</h3><p>One message echoed loudly across multiple sessions was the need to <strong>end gatekeeping</strong> in our industry.</p><p>Cybercriminals share knowledge.<br> They collaborate.<br> They exchange tools, ideas, and vulnerabilities.</p><p>So why shouldn’t we, the defenders, do the same?</p><p>If Africa is to stand strong, we must build:</p><ul><li>trusted relationships,</li><li>stronger communication channels,</li><li>cross-border cooperation, and</li><li>a united intelligence-sharing culture.</li></ul><p>Because no single organisation, government, or individual can secure an entire continent alone.<br> <strong>But united defenders can.</strong></p><h3>Track 1: Investigating Ransomware Through Windows Artifacts and Event Log Correlation — with Mr Chireh Mohamed Abdi, and Yacin Djibril Waberi.</h3><p>My first session was a hands-on exploration of <strong>ransomware investigation</strong>, and it was packed with technical depth and real-world insights.</p><h3>We covered:</h3><ul><li><strong>Ransomware classifications</strong> — from encryption-only attacks to double and triple-extortion strategies.</li><li><strong>MITRE ATT&amp;CK TTP mapping</strong> for ransomware operators.</li><li><strong>Data exfiltration channels</strong>, including C2 servers, cloud services, RDP, and specialised tools like MegaSync and WinSCP.</li><li><strong>Deployment methods</strong> such as GPOs, PsExec, and C2 orchestration.</li><li><strong>Ransomware response using the NIST Framework</strong>, from preparation to post-incident review.</li><li><strong>Windows forensic techniques</strong>, including RAM imaging, disk acquisition, event log analysis, and artifact triage.</li></ul><p>The day concluded with a full <strong>ransomware investigation lab</strong>, which tested our analytical skills and incident response thinking. Truly one of the most eye-opening sessions of the Symposium.</p><h3>Track 2: Enhancing CSIRT Capability through the SIM3 Maturity Model with Mr Olivier Caleff</h3><p>This track was one of my favourites because it felt more like a conversation than a lecture. We explored the <strong>SIM3 maturity model</strong>, learning what true CSIRT maturity looks like not in theory, but in practice.</p><h3>Key insights included:</h3><ul><li>Understanding internal vs external CSIRT constituencies.</li><li>Identifying service gaps and maturity weaknesses.</li><li>The importance of validated, measurable, repeatable processes.</li><li>Requirements under <strong>RFC 2350 (IETF)</strong>.</li><li>The updated <strong>FIRST CSIRT Services Framework</strong>.</li><li>Governance, documentation, escalation paths, and performance measurement.</li></ul><p>This track helped me understand not just <em>what</em> a CSIRT is supposed to do, but <em>how</em> to evaluate its maturity with honesty and transparency.</p><h3>Track 3: Hands-On Network Threat Detection Training for Critical Infrastructure using Security Onion — with Mr. Howard Mukanda, Mr. Ezeckiel Dadjo, Mr. Luc Semassa.</h3><p>Although I joined a little late, I quickly caught up because the session was incredibly rich. We explored:</p><ul><li>Hardware requirements for Security Onion.</li><li>Cloud deployment considerations.</li><li>Remote management using Redfish scripting.</li><li>Observability tools like Grafana and Zabbix</li><li>IT/OT visibility challenges.</li><li>Real-world troubleshooting practices.</li><li>Malware Traffic Analysis.</li><li>The importance of reliable, high-quality data sources.</li></ul><p>Security Onion is more than a SIEM it is an ecosystem. Seeing it in action renewed my appreciation for visibility and network-level forensics.</p><h3>A Message on Protecting Our People and Their Data</h3><p>The Mauritian Minister of IT, Communication and Innovation delivered a powerful reminder:</p><p><strong>We are no longer protecting computers — we are protecting people.</strong></p><p>He spoke about:</p><ul><li>Respecting personal data</li><li>The dangers of sharing images and private information without consent</li><li>Social media is becoming a threat when used irresponsibly</li><li>Digital awareness as a societal responsibility</li><li>The need for Africa to stand as one against cybercrime</li></ul><p>We also received a book titled <strong>“AI for All”</strong>, which reflects where Africa is heading an inclusive, responsible AI future.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*2pW0yuDdkvS6pIlbtu82KA.png" /><figcaption>The Book we got “AI For ALL”</figcaption></figure><h3>When Cyber Attacks Meet the Physical World: OT Cyber Risks Reduction: What Leaders Need to Know by Ms. Michelle Govender.</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*4f7CKo3mCYdcE5X6_pHN4A.png" /></figure><p>This session reframed cybersecurity for me.<br> When an OT system is compromised, the damage is not digital it is <strong>physical</strong>.</p><p>Key takeaways:</p><ul><li>OT environments cannot afford downtime.</li><li>IT/OT collaboration is essential but often lacking.</li><li>Visibility in OT systems is critical for safety.</li><li>Cyber incidents in OT can have national consequences.</li><li>Governance, communication, and readiness must be aligned.</li></ul><p>It reminded me that cybersecurity is not only about protecting networks, it is about protecting lives, industries, and national stability.</p><h3>Strategic Playbook for Safeguarding the National Critical Infrastructure by Ms. Sithembile Songo.</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Eo064cLNamTTh-JmRfqRPQ.png" /></figure><p>This session explored the blueprint for protecting Africa’s most essential systems.</p><h3>We discussed:</h3><ul><li>Defence-in-depth strategies.</li><li>Risk-based standards.</li><li>The unique security model of OT.</li><li>Inter-sector collaboration.</li><li>Insurance, continuity, and resilience planning.</li></ul><p>The message was clear:<br> <strong>Africa must work together to protect what keeps our nations running.</strong></p><h3>Celebrating Youth Excellence — CyberDrill Designed by Young African Talent</h3><p>One of the most inspiring parts of this year’s Symposium was witnessing the <strong>CyberDrill being fully designed and executed by young African cybersecurity talents</strong>. Watching these brilliant minds craft such a technically rich, high-impact defensive exercise filled me with pride. Their work wasn’t just impressive it was proof that Africa’s next generation of defenders is already here, already skilled, and already contributing meaningfully to the continent’s cybersecurity landscape.</p><p>I was excited to meet some of the young talents behind the CyberDrill, especially the exceptional minds from <strong>Benin</strong>, whose ingenuity and professionalism continue to raise the bar.</p><p>Seeing the <strong>CTF winners from Tanzania</strong> was another proud moment — especially because a <em>woman</em> was part of the winning team. Representation matters, and seeing her shine gave me so much hope for the future of women in cybersecurity.</p><p>During the conference, another CTF took place, and the <strong>ladies from Botswana</strong> delivered an outstanding performance, securing <strong>3rd place</strong>. For me, that is a huge win not just for them, but for every young African woman who needs to see what is possible when passion meets opportunity.</p><p>The only part that truly broke my heart was <strong>not seeing any young people from Mauritius</strong> represented in the cybersecurity tracks or youth-focused activities. As the host nation, I had hoped to meet and celebrate local young talents too. I genuinely hope that in future editions, we see Mauritius’ emerging cybersecurity youth taking their rightful place on that stage because the continent needs every voice, every talent, and every young defender.</p><h3>Wisdom from the Continent’s Cybersecurity Leaders</h3><h3>Mr. Abdul Hakeem Ajijola (AU Cybersecurity Expert Group)</h3><blockquote>“We cannot clap with one hand.”<em><br> Unity is non-negotiable.</em></blockquote><h3>Mr. Olivier Caleff (Chair, FIRST)</h3><blockquote><em>Collaboration across partners — and even competitors — is vital.</em></blockquote><h3>Mr. Jean-Robert Hountomey (Executive Director, AfricaCERT)</h3><blockquote><em>We are raising the next generation, and cybersecurity now requires a mindset shift toward trust.</em></blockquote><h3>Hon. Dr. Avinash Ramtohul (Minister, Mauritius)</h3><blockquote>We are no longer protecting computers; we are protecting society.</blockquote><p>These words have stayed with me and continue to shape my perspective.</p><h3>Gratitude, Growth, and a United Future</h3><p>As AfricaCERT celebrates <strong>15 years of impact</strong> and <strong>10 years of partnerships</strong>, I am beyond proud to be part of this community. To the AfricaCERT Team, and to Mr. Jean-Robert Hountomey, a huge <strong>congratulations</strong> on the incredible growth, the influence, and the legacy you continue to build.</p><p>Thank you for believing in young people, for opening doors for us, and for trusting us to be part of Africa’s cybersecurity evolution.</p><p>I leave this Symposium with:</p><ul><li>deeper knowledge,</li><li>stronger relationships,</li><li>a sharper sense of responsibility, and</li><li>a renewed commitment to contribute to Africa’s digital resilience.</li></ul><p>And I carry with me three questions that will guide my future, shared by Mr. Abdul Hakeem Ajijola:</p><p><strong>What did I do right?<br> What could I have done better?<br> And how can we improve?</strong></p><p>This is how we grow.<br> This is how Africa grows.<br> And this is how <strong>the defenders unite</strong>.</p><p>Hope to attend another AfricaCERT symposium next… Do stay tuned and check out the AfricaCERT page on LinkedIn to check out the interviews Adeola and I got to do.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*slACmZYStmEiLSXuwIto5g.jpeg" /></figure><h3>A Call to Organisations: Invest in Your People, Invest in Africa’s Cybersecurity Future</h3><p>As I reflect on everything I learned at the AfricaCERT Symposium, one message becomes clear: <strong>no organisation can afford to overlook the importance of developing its cybersecurity talent</strong>. Events like the AfricaCERT Symposium are not just conferences they are hubs of innovation, collaboration, and shared progress. They are spaces where real strategies are born, where defenders unite, and where African excellence is amplified.</p><p>I strongly encourage organisations, government agencies, CSIRTs, private companies, educational institutions, and security teams to <strong>invest in their staff by enabling them to attend, participate in, and contribute to forums like AfricaCERT</strong>. The return on this investment is immeasurable:</p><h3>Why organisations should invest in their cybersecurity teams:</h3><p><strong>1. Exposure to continental and global best practices</strong><br> These events bring together the continent’s brightest minds and top experts. Your staff will gain insights impossible to get from textbooks or online courses.</p><p><strong>2. Practical, hands-on training that builds real defensive capability</strong><br> From ransomware investigations to OT security, to CSIRT maturity modelling — the skills gained can immediately be applied in your environment.</p><p><strong>3. Access to AfricaCERT’s powerful professional network</strong><br> Partnerships, intelligence-sharing, cross-border collaboration, and trust networks are built here. These relationships become critical during incidents.</p><p><strong>4. Opportunities for professional growth and leadership</strong><br> Staff who attend can take on leadership roles in projects, working groups, and training initiatives within the AfricaCERT community.</p><p><strong>5. Strengthening your organisation’s cyber resilience</strong><br> Investing in people means investing in stronger incident response, better security posture, and higher organisational maturity.</p><p><strong>6. Visibility and recognition on a continental platform</strong><br> Sponsors and collaborating organisations gain brand recognition, insights, and the opportunity to shape Africa’s cybersecurity landscape.</p><p><strong>7. Empowering young talent and ensuring continuity</strong><br> Africa’s future defenders are already emerging. Organisations must nurture them not only for their own benefit, but for the safety of our entire digital ecosystem.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*wWFZxyXNy46qkf1JGXOYSQ.png" /></figure><h3>AfricaCERT Has Built a Platform Worth Investing In</h3><p>The sponsorship deck shared at the Symposium highlights clear pathways for organisations to partner with AfricaCERT whether as Visionary, Strategic, Supporting, Contributing, or Friend-level collaborators. Each tier offers valuable benefits such as:</p><ul><li>visibility on AfricaCERT’s platforms,</li><li>leadership or participation in AfricaCERT projects,</li><li>discounts to events,</li><li>publication opportunities,</li><li>access to the AfricaCERT General Meeting,</li><li>insights into emerging regional and global cyber trends,</li><li>joint initiatives with AfricaCERT members.</li></ul><p>These are not just perks they are strategic assets for any organisation serious about cybersecurity.</p><h3>Strengthening Africa Starts With Strengthening Your People</h3><p>If we want a resilient digital Africa one capable of responding to threats, safeguarding critical infrastructure, and protecting our people then we must be intentional about investing in the defenders who will carry that responsibility.</p><p>I urge organisations to:</p><ul><li>fund their staff’s participation in AfricaCERT events,</li><li>encourage youth involvement in CyberDrills and CTFs,</li><li>sponsor emerging talents,</li><li>contribute to AfricaCERT’s capacity-building initiatives,</li><li>become long-term collaborators in building an African cybersecurity ecosystem rooted in excellence, unity, and knowledge-sharing.</li></ul><p><strong>A secure Africa will not be built by accident it will be built by those who invest in their people today.</strong></p><p>AfricaCERT has created the platform.<br> The talent is here.<br> The future is waiting.</p><p>It is now up to organisations to step forward and play their part.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=c52000e2dac5" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[API Security Using crAPI & Postman on OWASP]]></title>
            <link>https://medium.com/@.rai/api-security-using-crapi-postman-on-owasp-5f385a2864dd?source=rss-752f784623fc------2</link>
            <guid isPermaLink="false">https://medium.com/p/5f385a2864dd</guid>
            <category><![CDATA[api]]></category>
            <category><![CDATA[owasp]]></category>
            <category><![CDATA[owasp-top-10]]></category>
            <category><![CDATA[cybersecurity]]></category>
            <category><![CDATA[security]]></category>
            <dc:creator><![CDATA[Gamuchirai]]></dc:creator>
            <pubDate>Thu, 20 Nov 2025 07:24:33 GMT</pubDate>
            <atom:updated>2025-11-20T07:24:33.847Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/250/1*O8IgAGeOOP_a1g-vH9dxVg.png" /></figure><p>APIs have become the backbone of almost everything we use today, from mobile apps to backend services and even IoT devices in our homes. And because they connect straight to real data and business logic, they also happen to be one of the biggest targets for attackers. After completing the API Security Fundamentals course, I really wanted to take the theory off the slides and see what it looks like in real life. I wanted to understand how real APIs behave, where they can fail, and how those failures tie back to the OWASP API Top 10.</p><p>For this project, I worked with <strong>crAPI (Completely Ridiculous API)</strong> a purposely vulnerable API created by OWASP, and used <strong>Postman</strong> to explore different requests and responses. (You can also use Burp Suite if you prefer.) By deploying crAPI locally with Docker and interacting with its GET, POST, PUT, and DELETE endpoints, I got to see real security weaknesses up close and understand how attackers take advantage of them.</p><p>And just to be honest, getting crAPI up and running requires <strong>a lot</strong> of patience and troubleshooting. It’s not a “click once and it works” kind of setup. But if you stick with it, you’ll learn more than you expect. That’s what happened to me. Even through all the errors and retries, there was something worth learning, and I’m glad I pushed through. Now I get to share what I learned with you.</p><blockquote>Anyway…here’s how I did everything, what I tested, what I found, and what stood out to me the most.</blockquote><h3>Goals:</h3><ul><li>Deploy crAPI locally and interact with endpoints via Postman (or Burp).</li><li>Observe API request/response behaviour and identify OWASP API Top 10 issues in practice. Understanding of the HTTP status response</li><li>Document testing steps, findings, and quick mitigation ideas.</li></ul><h3>Tools &amp; prerequisites</h3><ul><li>Docker (running)</li><li>Docker Compose (recommended &gt;= 1.27.0; my system had 2.32.4-3)</li><li><a href="https://learning.postman.com/docs/getting-started/installation/installation-and-updates/">Postman</a> (or Burp Suite)</li><li><a href="https://github.com/OWASP/crAPI">crAPI repo:</a> https://github.com/OWASP/crAPI (clone this repo)</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/657/1*Cf9CbFQbhQufCTBmeMeaeg.png" /></figure><h3>Installation / Setup (short, practical)</h3><ol><li>Update system and install curl:</li></ol><pre>sudo apt update &amp;&amp; sudo apt upgrade -y<br>sudo apt install -y curl</pre><ol><li>(Optional) Install a specific Docker Compose binary (example for v1.27.0):</li></ol><pre>sudo curl -L &quot;https://github.com/docker/compose/releases/download/1.27.0/docker-compose-$(uname -s)-$(uname -m)&quot; -o /usr/local/bin/docker-compose<br>sudo chmod +x /usr/local/bin/docker-compose<br>docker-compose --version</pre><ol><li>Clone crAPI:</li></ol><pre>git clone https://github.com/OWASP/crAPI.git<br>cd crAPI</pre><figure><img alt="" src="https://cdn-images-1.medium.com/max/898/1*bGOsnMYjlETV9PnyZYtEuw.png" /><figcaption>Have everything pulled and working well, make sure of it so that you won’t have errors in the long run or have your system lagging</figcaption></figure><ol><li>Edit docker-compose.yml as you need to change ports or settings (I adjusted crapi.web and mailhog).</li></ol><figure><img alt="" src="https://cdn-images-1.medium.com/max/400/1*CUylDN9tnl1QLCfAodRzXw.png" /><figcaption>crapi.web, take note of the IP in use as you going to use it as well, I made it a localhost</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/491/1*tRL8xDTXN-nM1G-fohseQA.png" /><figcaption>For easy, I also made the MailHog a localhost (IP), please do edit them as you going to need to use them</figcaption></figure><ol><li>Start with compatibility mode (example):</li></ol><pre>docker-compose -f docker-compose.yml --compatibility up -d</pre><ol><li>If something fails, you might need to delete containers and re-run:</li></ol><pre>docker-compose down<br>docker-compose up -d</pre><blockquote><em>Tip: you may see permission errors — try prefacing with </em><em>sudo where needed. If you’re stuck, I copied error messages into an AI agent to troubleshoot work smart, not hard.</em></blockquote><figure><img alt="" src="https://cdn-images-1.medium.com/max/920/1*a0Uhz5s0TNt_Mh03F0ezMA.png" /><figcaption>I faced some errors while installing, hence some files were removed. This was based on the feedback I got, before removing anything, first ask your AI agent how you can resolve the issue, thats what I did.</figcaption></figure><p>Open the dashboard in your browser (adjust port if you changed it):<br> <a href="http://localhost:8888/dashboard">http://localhost:8888/dashboard</a></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/936/1*ROozg7YWqh0ZB4yeyBbo9Q.png" /></figure><h3>How I tested (Postman workflow)</h3><ol><li>Create a Postman workspace/collection called crAPI.</li><li>Start with the <strong>signup</strong> endpoint (POST). Fill the JSON body to match what you see in the browser network inspector.</li></ol><ul><li>Note: the signup form on the UI expects an American phone format in my test, so include a US-style number to avoid validation errors.</li></ul><ol><li>Inspect the browser Network tab while signing up, see the raw request and response.</li><li>Copy the login endpoint URL and create a <strong>POST</strong> request in Postman. Set the body to raw → JSON and paste the login payload (email, password).</li><li>Send the login request. Observe the JSON response tokens and other PII may be visible.</li><li>Use the returned token as a <strong>Bearer</strong> token in the Authorization header for protected endpoints (dashboard, vehicles, orders, etc.).</li><li>Test endpoints one-by-one:</li></ol><ul><li>Dashboard (GET)</li><li>Vehicle endpoints (GET/POST/PUT/DELETE)</li><li>Orders (POST) and Returns (POST/PUT as applicable)</li><li>Email change &amp; email verification flows</li></ul><blockquote>This part of the project I did not show. If you are having difficulties understanding how to do it, do let me know in the comments so I can show it</blockquote><h3>What I observed (findings mapped to OWASP API issues)</h3><p>Below are the key observations I made while testing crAPI.</p><h3>BOLA — Broken Object Level Authorization (Top risk)</h3><p>When looking at endpoints that return user data, I found scenarios that exposed another user’s PII by manipulating IDs or tokens (which I got to exploit with my own information). BOLA happens when the API returns or allows modification of objects without verifying that the logged-in user actually owns that object. Breach of confidentiality and integrity as well</p><p>Practical sign: I could inspect requests and see IDs and tokens in responses. If an attacker changes an object ID in a request and the server doesn’t validate ownership, they can access someone else’s data.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/942/1*O4IdY5gdjBrU4oo586tFTQ.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*UmjdO0ZBkPRaXDfnVOFAOA.png" /></figure><p><em>This one stood out the most.<br> If the API doesn’t check who actually owns a resource, attackers can just change object IDs and access someone else’s stuff.</em></p><p><em>While testing, I noticed how easy it would be to manipulate certain IDs. That’s exactly how BOLA attacks happen.</em></p><h3>Login Endpoint on Postman</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*bhJmnJOD2qNWcseGKbONeQ.png" /></figure><ul><li>Signup (POST): returns 200 and user object. The Network inspector shows the request payload and server response.</li><li>Login (POST): returns token in JSON. In Postman, I set this token as Bearer token in Authorization.</li><li>Dashboard (GET): returns the user’s name and other PII in the response body.</li></ul><p>If these endpoints do not enforce strict access control checks, attackers with valid tokens or manipulated requests can access other users’ data.</p><h3>Dashboard Endpoint</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*vcemfXK7VNqwrpsCOouXJQ.png" /><figcaption>From the website, my inspection on the response</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*-zkmXmSYCh5zVUjfZtKu-Q.png" /></figure><p>Once authenticated, I hit the dashboard GET endpoint. And wow, the API was honest. Too honest. It returned <strong>my name, email, and other personal details</strong> in full.</p><p>Here’s the real problem:<br> I tested how it would behave with missing or wrong tokens. Sometimes it gave 404, sometimes 401… and that inconsistency already tells you the authorization checks might not be tight.</p><p>But the biggest red flag?<br> It didn’t look like the API was doing strict “ownership” checks. Meaning if someone had a valid token and simply guessed another user’s ID (if IDs are predictable)… they could possibly pull someone else’s dashboard data.</p><p>That’s straight-up <strong>BOLA</strong> (Broken Object Level Authorization).</p><h3>Vehicle Endpoint</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*RyMCVpkNPl2gcGoPxpLhrg.png" /></figure><p>Moving to the <strong>vehicle endpoints</strong> was eye-opening. These endpoints were basically showing everything internal IDs, ownership fields, metadata…</p><p>The scary part was when I tried modifying certain fields. At this point, I just sat back like<br> “So you’re telling me anyone with creativity and Postman can change who owns a car?” based on the information I am seeing</p><p><strong>Yeah, that’s BOPLA at its finest.</strong></p><p><strong>Attacker thinking:</strong></p><ul><li>Change ownership of a vehicle to themselves</li><li>Modify states they shouldn’t be touching</li><li>Enumerate other users’ vehicles by tweaking IDs</li></ul><p>This is how real-world breaches happen.</p><h3>Orders &amp; Returns Endpoints</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*uqVxFcHTxKJ6AVkl4-XQBg.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/952/1*TCYMzPU5LQlrZwMKSUUz8Q.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*_e_gs6k6ebYutjXvmzI_8g.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/956/1*O3raPX2DmI4WBg8RdzXrzg.png" /></figure><p>This section was a whole journey for me.</p><p>I tested the <strong>order</strong> endpoint first, and the API trusted everything I sent. Prices, quantities, order details… it didn’t recalculate anything on the server side. If I wanted to, I could literally set my total to 0.00 and get a free order.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*EqJZ1IpYmPVU8L2g81Fz3g.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*a4TogG7d2xG6J2YRRPxN2w.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Rs8Hhe9PnJhvXjQTrtkQQA.png" /><figcaption>I constaly got errors on this part, which I do not understand why, I did try to use the Debug AI by Postman, but still gotten errors, If you get it right, kindly let me know how you did it. Spend time here but still could not get it right</figcaption></figure><p>Then came the <strong>return endpoint</strong>…<br> And I fought with this one. It kept throwing errors every time I tested it. I tried debugging with Postman, even threw it at AI for help. Still no luck.</p><p>But that struggle itself showed me that the API’s business logic wasn’t stable. “You can’t return an order that was never delivered”. Some APIs ignore this, and attackers exploit it.</p><p>This falls under: <strong>A06 — Unrestricted Access to Business Flows.</strong></p><p><strong>Attacker imagination:</strong></p><p>Return someone else’s order</p><p>Trigger refunds repeatedly</p><p>Abuse the order creation flow to get free or discounted items</p><p>When the order and return logic isn’t protected, attackers don’t need to be hackers… they just need to be bold.</p><h3>Eamil change and Verification of the Email change Endpoint</h3><p>The email-change process was another point where I paused.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*jcqNlgGoa2oTRWfvNlIYTw.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*6NofjqA5LaAas8nxtU8bpQ.png" /><figcaption>This is where the MailHog comes to play so you can get the verification token</figcaption></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*J8ijY3n0TiKPAQCEf0-bnw.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*CyXBTx3wySGFPcutKVq1sQ.png" /></figure><p>Changing your email is sensitive, it should require re-authentication, but this API was like:</p><p>“Sure, here’s your email change. Also here’s some extra info while you’re at it.”</p><p>The verification flow also revealed more data than I expected. In some cases, tokens or flags showed up in responses where they shouldn’t be.</p><p><strong>Why this is dangerous:</strong><br> Email = identity. If an attacker takes over your email, they can reset your password on almost everything.</p><p><strong>Issues present:</strong></p><ul><li>Broken Authentication</li><li>BOPLA</li><li>Sensitive Data Exposure</li></ul><p>If verification tokens ever leak or are guessable, attackers can hijack accounts silently.</p><h3>The Patterns I Kept Seeing (Across All Endpoints)</h3><p>By the time I tested everything, a pattern became clear:</p><ol><li><strong>Too much PII in responses</strong></li><li><strong>Too many fields exposed in update requests</strong></li><li><strong>Tokens and IDs thrown around casually</strong></li><li><strong>Weak validation in multiple flows</strong></li><li><strong>Authorization checks not consistent or not enforced</strong></li><li><strong>Business logic that trusts the client way too much</strong></li></ol><p>In real attacks, hackers don’t always need fancy malware. They just look for one weak spot like this, and everything unravels.</p><h3>Broken Authentication &amp; Session Management</h3><p>I found authentication flows that leaked credentials or tokens in responses. Weak or missing login controls let attackers take over accounts if tokens are exposed or predictable.</p><p>Practical sign: login responses revealed an auth token in the JSON body — if tokens aren’t protected or rotated properly, they can be abused.</p><h3>BOPLA — Broken Object Property Level Authorization</h3><p>Some endpoints allowed updating fields that shouldn’t be modifiable (e.g., changing someone else’s role, ID, or PII fields). APIs that expose more fields than necessary are easier to exploit.</p><p>Practical sign: over-permissive update endpoints and responses showing internal IDs and tokens.</p><h3>Unrestricted Access to Business Flows (OWASP A06)</h3><p>Attackers can abuse business logic flows (e.g., order creation + return flow) to get unauthorized benefits or to discover more system behavior and data.</p><p>Practical sign: by following the API workflow and observing every response stage, you can see where the business flow lacks checks and can be abused.</p><h3>General PII exposure</h3><p>Multiple endpoints leaked personal data (email, full name, phone number), which could be aggregated and sold. Even if each leak seems minor, combined they form a big risk.</p><h3>What I Learned in Summary</h3><p>Doing this project taught me that APIs can look functional on the surface but be wide open underneath.</p><p>If you don’t test the endpoints deeply not just “does it return 200?” but “does it return EXCESS?” you’ll miss the things attackers never overlook.</p><p>This project honestly made the OWASP API Top 10 make more sense.<br> Seeing BOLA, BOPLA, Broken Auth, and Excessive Data Exposure happening <strong>live</strong>, in front of me, hit way harder than just reading the names in a course.</p><blockquote>I hope you found this informative and that you picked up something valuable along the way, because I’m also learning as I go. Let’s walk this journey together. As I dive deeper into real-world vulnerabilities and how they’re exploited, I’ll keep breaking things down and showing you how we can defend against them from an API security point of view. More to come and we grow together.</blockquote><p>Don&#39;t forget to read the <a href="https://medium.com/@.rai/understanding-api-security-lessons-from-the-api-security-fundamentals-course-94b3fe072890">Understanding API Security: Lessons from the API Security Fundamentals Course</a></p><p><em>I appreciate feedback as it allows me to grow and know I can improve further. If you enjoyed and found this valuable, don’t forget to clap and comment. Thank you</em></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=5f385a2864dd" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Understanding API Security: Lessons from the API Security Fundamentals Course]]></title>
            <link>https://medium.com/@.rai/understanding-api-security-lessons-from-the-api-security-fundamentals-course-94b3fe072890?source=rss-752f784623fc------2</link>
            <guid isPermaLink="false">https://medium.com/p/94b3fe072890</guid>
            <category><![CDATA[ethical-hacking]]></category>
            <category><![CDATA[security]]></category>
            <category><![CDATA[api-development]]></category>
            <category><![CDATA[hacking]]></category>
            <category><![CDATA[api]]></category>
            <dc:creator><![CDATA[Gamuchirai]]></dc:creator>
            <pubDate>Tue, 18 Nov 2025 16:34:15 GMT</pubDate>
            <atom:updated>2025-11-18T16:34:15.078Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/800/1*SAjHd-tXqGCy6Z0b7oULGw.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/384/1*OMrOs_hy3MCYyuI3zG85NA.png" /></figure><p>During the API Security Fundamentals course, one thing that really hit me is how exposed and risky APIs can be if they aren’t designed and managed properly. APIs are everywhere in modern systems, and because they usually connect straight to real data and business functionality, attackers see them as a direct way in. That’s why learning API security is so important — it helps reduce the chance of data breaches, protects users and the business, and ensures compliance with security standards.</p><p>Before even looking for vulnerabilities, it’s crucial to understand how APIs actually work. This starts with <strong>threat modeling</strong>, which is basically identifying all the APIs in your environment, how they interact with data, and what business purpose they serve. Something I found interesting is that <strong>API discovery is part of security,</strong> you can’t protect what you don’t know exists, including older versions or internal APIs that might still be running.</p><p>I also learned a lot about <strong>governance</strong>, which is having rules and guidelines so APIs are built securely and consistently from the start. This includes proper API specifications, style guides, and keeping an updated inventory of all APIs. Without this, it’s easy for forgotten APIs to be exploited later.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/622/1*9W-0mOJ1SCGjhvXGXT16LQ.jpeg" /></figure><p>Then came the discussion on <strong>vulnerabilities</strong>, focusing on the <strong>OWASP API Security Top 10</strong>. Here’s how I understood them:</p><ul><li><strong>BOLA (Broken Object Level Authorization):</strong> Someone can access another person’s data by tweaking an ID.</li><li><strong>Broken Authentication:</strong> Weak or missing login controls allow attackers to break in.</li><li><strong>BOPLA (Broken Object Property Level Authorization):</strong> APIs expose more data than needed or allow updates to fields that shouldn’t be changed.</li><li><strong>Unrestricted Resource Consumption:</strong> No limits or controls can lead to DoS attacks or data scraping.</li><li><strong>Broken Function Level Authorization:</strong> Normal users can access admin-only functions.</li><li><strong>Unrestricted Access to Business Flows:</strong> Attackers exploit the intended workflow of the system.</li><li><strong>SSRF (Server-Side Request Forgery):</strong> Attackers trick the API into sending requests to internal systems.</li><li><strong>Security Misconfiguration:</strong> Misconfigured servers, unused features, or error messages that leak info.</li><li><strong>Improper Inventory Management:</strong> Unknown or outdated APIs running without monitoring.</li></ul><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*WmA9gw9A27aRMTjAQXksew.jpeg" /></figure><p>The course highlighted three pillars for API security: <strong>Governance, Testing, and Monitoring</strong>. Security isn’t something you check once; you need rules, thorough testing (not just automated scans), and continuous monitoring to catch suspicious activity early.</p><p>Next, we looked at the <strong>application security technology landscape</strong>. The market for cybersecurity tools is huge, and for APIs, this is a key point: traditional tools like <strong>SAST and DAST</strong> are great for common vulnerabilities, but APIs rarely get breached through those. Attackers are after <strong>unique logic flaws, gaps in authorization, or ways to abuse API functions</strong>. Standard scanners often miss these, so APIs need deeper, customized testing.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/274/1*bsSv7Ml8mQI6onXSNhc9kg.png" /></figure><p>The course walked through the <strong>API lifecycle</strong> and where security should be applied:</p><ol><li><strong>API Definition Phase:</strong> Design the API with security in mind. Ask what data it accesses, potential risks, and required controls.</li><li><strong>Development Phase:</strong> Code reviews, static analysis, and composition checks are critical, especially for spotting logic flaws.</li><li><strong>Testing Phase:</strong> Before going live, run manual and automated API-specific security tests, penetration testing, and simulate attacks.</li><li><strong>Runtime Phase:</strong> Firewalls, API gateways, and SIEMs help detect and block attacks in real-time.</li><li><strong>Decommissioning:</strong> Retire old APIs properly to avoid leaving vulnerabilities exposed.</li></ol><p>Mapping <strong>risks to the lifecycle</strong> is important. For example: unknown APIs can be tracked with a gateway or runtime detection; unauthorized access can be handled during coding with proper controls or during testing by simulating scenarios. The goal is a <strong>prioritized list of risks and where to mitigate them</strong>, ideally as early as possible.</p><p>Finally, the course wrapped up with <strong>common API risks and best practices</strong>. Common issues organizations face include:</p><ul><li><strong>API Discovery:</strong> Hard to manage all endpoints, including shadow or rogue APIs.</li><li><strong>Vulnerable APIs:</strong> Flaws in development or configuration can lead to breaches.</li><li><strong>Weak Runtime Defenses:</strong> Tools like firewalls are useful but not a magic fix.</li><li><strong>Third-Party APIs:</strong> Must know how external APIs are being used.</li><li><strong>Weak Governance:</strong> Without strict policies, APIs can be inconsistent and risky.</li><li><strong>Poor Collaboration:</strong> Security and development teams must work together; many API flaws require engineering involvement to fix.</li></ul><p>The course also gave a practical <strong>Top 10 Do’s and Don’ts</strong> for API security:</p><ul><li><strong>Don’t trust anything:</strong> Always assume input could be malicious.</li><li><strong>Validate all inputs:</strong> Only accept what’s expected; reject everything else.</li><li><strong>Don’t reveal sensitive info in errors:</strong> Give users enough info, but don’t help attackers.</li><li><strong>Expect API discovery:</strong> Even undocumented APIs can be found.</li><li><strong>Don’t have hidden features:</strong> Unadvertised endpoints are a risk.</li><li><strong>Don’t filter data in the UI:</strong> Enforcement should happen in the application.</li><li><strong>Use an API gateway:</strong> Centralize management, control access, and monitor usage.</li><li><strong>Don’t confuse authentication and authorization:</strong> Authentication proves identity; authorization controls what they can do.</li><li><strong>Require proper API documentation:</strong> Keep it updated for internal and external users — it’s also a security tool.</li><li><strong>Do continuous testing:</strong> Simulate attacks and check for logic flaws, authorization gaps, and unsecured endpoints with every release.</li></ul><p>The key takeaway is that <strong>API security is ongoing</strong>. By discovering all APIs, building governance and collaboration, and continuously testing, organizations can significantly reduce risks and keep their APIs safe.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*adrfxjJ-_QUwG6RT5dzvpw.png" /></figure><p><strong>By learning about API Security, it is also important to understand HTTP Response Status Codes:<br></strong> HTTP response status codes tell you how a server handled a request. They are essential in API security and development because they help you:</p><ol><li><strong>Diagnose issues quickly</strong> — 404 means a resource isn’t found, 500 indicates a server error.</li><li><strong>Handle responses correctly in applications</strong> — knowing if a request succeeded (200) or was unauthorized (401) allows your app to respond appropriately.</li><li><strong>Prevent security issues</strong> — improper handling of status codes can leak sensitive information or allow attackers to infer system behavior.</li><li><strong>Aid in testing and debugging APIs</strong> — especially when using tools like Postman or cURL, you can verify if your API behaves as expected under different scenarios.</li></ol><p>In short, understanding status codes helps developers and security teams ensure APIs are <strong>robust, secure, and predictable</strong>.</p><p>Next is the Project demonstrating all this. Stay tuned, you will love it.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=94b3fe072890" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Tracing a SQL Injection Attack with Wireshark: What Hackers See, What You Can Learn]]></title>
            <link>https://medium.com/@.rai/tracing-a-sql-injection-attack-with-wireshark-what-hackers-see-what-you-can-learn-af327ae74f72?source=rss-752f784623fc------2</link>
            <guid isPermaLink="false">https://medium.com/p/af327ae74f72</guid>
            <category><![CDATA[database]]></category>
            <category><![CDATA[sql]]></category>
            <category><![CDATA[sql-injection]]></category>
            <category><![CDATA[cybersecurity]]></category>
            <category><![CDATA[xss-attack]]></category>
            <dc:creator><![CDATA[Gamuchirai]]></dc:creator>
            <pubDate>Tue, 29 Jul 2025 15:09:44 GMT</pubDate>
            <atom:updated>2025-07-29T15:11:38.337Z</atom:updated>
            <content:encoded><![CDATA[<iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FAQWXkeyCuBk%3Ffeature%3Doembed&amp;display_name=YouTube&amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DAQWXkeyCuBk&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FAQWXkeyCuBk%2Fhqdefault.jpg&amp;type=text%2Fhtml&amp;schema=youtube" width="854" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/509c612ef025f95b109924ff41810ae7/href">https://medium.com/media/509c612ef025f95b109924ff41810ae7/href</a></iframe><p><strong>What if a few keystrokes in a login box could expose your entire database?</strong></p><p>In a recent hands-on lab, I explored just how devastating <strong>SQL Injection</strong> can be — by walking through a real attack, packet by packet, using <strong>Wireshark</strong>. What started as a simple 1=1 turned into full database exfiltration… including usernames and hashed passwords.</p><p>This wasn’t just theory. This was <strong>practical, forensic cybersecurity training</strong> — and a sobering look at how small coding mistakes can lead to big breaches.</p><h3>The Setup: A Hacker’s Playground</h3><p>We were given a .pcap file—a packet capture from a previous attack on a MySQL database. The challenge? Open it in Wireshark and retrace every step the attacker took.</p><blockquote><em>Spoiler: They didn’t just break in…<br> They </em><strong><em>toured the database, stole credentials, and walked out unnoticed</em></strong><em>.</em></blockquote><h3>The Attack Begins: One Tiny Query</h3><p>It all starts with something deceptively simple:</p><pre>1=1</pre><p>The attacker injects this into a login field and sends it via HTTP GET. If the app responds with user data rather than an error, bingo: it’s vulnerable to SQL injection.</p><p>In Wireshark, this looks like:</p><pre>GET /vulnerableapp?userid=1%3D1 HTTP/1.1</pre><p>Wireshark lets us <strong>follow the HTTP stream</strong> — and sure enough, the server replies with valid data. The attacker now knows: input is being executed as SQL.</p><h3>Target Locked: Extracting Metadata</h3><p>Next comes enumeration.</p><p>Using:</p><pre>1&#39; or 1=1 union select database(), user()#</pre><p>…the attacker cleverly asks the database to tell him its name and which account is being used. The result?</p><ul><li><strong>Database</strong>: dvwa</li><li><strong>User</strong>: root@localhost</li></ul><p>This isn’t guesswork — this is <strong>precision</strong>. The attacker is using built-in SQL functions (database(), user()) to learn about the environment.</p><h3>Getting Technical: System Version</h3><p>What’s better than knowing your target? Knowing <strong>exactly</strong> which version of MySQL it’s running. That’s what the following query does:</p><pre>1’ or 1=1 union select null, version()#</pre><p>With the version ID, an attacker can <strong>pivot</strong> to version-specific exploits — making the breach deeper, faster, and potentially persistent.</p><h3>Blueprint of the Castle: Table Mapping</h3><p>Still using the same injection point, the attacker now explores the entire database structure:</p><pre>1’or 1=1 union select null, table_name from information_schema.tables#</pre><p>This tells them what tables exist in the database. One word: <strong>users</strong>.</p><p>Next up:</p><pre>1&#39; OR 1=1 UNION SELECT null, column_name FROM INFORMATION_SCHEMA.columns WHERE table_name=&#39;users&#39;</pre><p>And now they know every column inside the users table—probably including <strong>username</strong> and <strong>password</strong>.</p><h3>The Kill Shot: Password Extraction</h3><p>Finally, they go straight for the goods:</p><pre>1’or 1=1 union select user, password from users#</pre><p>In seconds, the attacker has <strong>usernames and password hashes</strong>. No brute-forcing needed. Just poorly written code and unrestricted input.</p><p>Using a tool like <a href="https://crackstation.net/">CrackStation</a>, these hashes can be cracked in seconds if they’re weak — like this one:</p><pre>8d3533d75ae2c3966d7e0d4fcc69216b → password</pre><p>Yes. That was the password. Just… “password”.</p><h3>What I Learned (and Why You Should Care)</h3><p>This lab taught me that:</p><ul><li><strong>Attacks don’t need malware</strong> — they just need poor code.</li><li><strong>Packet captures</strong> are forensic gold for defenders.</li><li>A few well-placed SQL functions can reveal everything.</li><li><strong>Hashing alone isn’t enough</strong> — passwords still need to be strong and salted.</li></ul><h3>Defending Against SQL Injection</h3><p>Here’s how we can stop this:</p><ol><li><strong>Use Prepared Statements</strong><br> Never build queries with string concatenation.</li><li><strong>Validate and Sanitize Input</strong><br> Don’t trust anything from a user — ever.</li><li><strong>Limit DB Permissions</strong><br> The web app shouldn’t use a root database account. Ever.</li><li><strong>Deploy WAFs and Monitoring</strong><br> Detect patterns like 1=1, union select, etc.</li></ol><h3>Want to Try This Yourself?</h3><p>I built a full GitHub project from this lab:</p><p>🔗 <em>(</em><a href="https://github.com/CoderBlee/CyberOperation/tree/main/sql-injection-wireshark-analysis">https://github.com/CoderBlee/CyberOperation/tree/main/sql-injection-wireshark-analysis</a><em>)</em></p><p>It includes:</p><ul><li>Full technical breakdown</li><li>Annotated screenshots</li><li>Cracked hashes</li><li>Prevention guide</li><li>Reflection journal</li></ul><h3>Conclusion</h3><p>SQL injection may seem “old school,” but it’s still one of the most common and dangerous vulnerabilities out there. If your inputs aren’t sanitized, your data isn’t safe.</p><p>I walked through this attack with Wireshark. Next time, I’ll use that knowledge to stop one.</p><p><strong>Thanks for reading</strong><br> Let me know if you’ve done similar labs or want to collaborate on more cybersecurity experiments.</p><p>#Cybersecurity #SQLInjection #Wireshark #Infosec #WebSecurity #EthicalHacking #BlueTeam #CaptureTheFlag #CTF #Forensics #BugBounty #OWASP</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=af327ae74f72" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Wireshark Network Traffic Analysis Project: DNS, TCP/UDP, HTTP/HTTPS]]></title>
            <link>https://medium.com/@.rai/wireshark-network-traffic-analysis-project-dns-tcp-udp-http-https-b8b2d467fbcc?source=rss-752f784623fc------2</link>
            <guid isPermaLink="false">https://medium.com/p/b8b2d467fbcc</guid>
            <category><![CDATA[network-security]]></category>
            <category><![CDATA[ethical-hacking]]></category>
            <category><![CDATA[traffic]]></category>
            <category><![CDATA[networking]]></category>
            <category><![CDATA[wireshark]]></category>
            <dc:creator><![CDATA[Gamuchirai]]></dc:creator>
            <pubDate>Mon, 07 Jul 2025 19:41:01 GMT</pubDate>
            <atom:updated>2025-07-07T19:41:01.309Z</atom:updated>
            <content:encoded><![CDATA[<p><strong>Wireshark Network Traffic Analysis Project: DNS, TCP/UDP, HTTP/HTTPS</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*9Klhha_vUeBRzColp4Iw3A.jpeg" /></figure><h3>Introduction</h3><p>In this comprehensive lab project, I used Wireshark and tcpdump tools to analyze multiple types of network traffic on the CyberOps Workstation VM. The goal of this project was to understand how common protocols such as DNS, FTP, TFTP, HTTP, and HTTPS work at the packet level, and to examine the security implications of each protocol in real-world use. Each section of the project is structured with commands I ran, what I observed, and detailed explanations of why each step matters.</p><h3>Part 1: DNS Capture and Analysis Using UDP</h3><h3>Step 1: Record IP Configuration Information</h3><p>I began by verifying the network configuration of my virtual machine. I needed to collect the MAC address, IP address, DNS server, and default gateway.</p><pre>ifconfig</pre><p>This displayed interface information. My interface was enp0s3, which showed my IP address and MAC address.</p><pre>cat /etc/resolv.conf</pre><p>This command listed the DNS servers configured for my system.</p><pre>netstat -rn</pre><p>This helped identify my default gateway IP address.</p><p><strong>Why This Matters:</strong><br> Understanding the IP configuration is foundational to analyzing packets. When filtering traffic later, I needed to know which IP was mine and which were remote.</p><p><strong>Security Note:</strong><br> DNS queries are often unencrypted. This means an attacker on the same network can potentially capture the sites I visit by sniffing DNS traffic.</p><h3>Step 2: Capture DNS Queries and Responses</h3><p>I launched Wireshark using the command below:</p><pre>wireshark &amp;</pre><p>Then I selected the interface enp0s3 and clicked Start. I opened a web browser and navigated to <a href="http://www.google.com.">www.google.com.</a></p><p>Once the page loaded, I stopped the capture.</p><h3>Step 3: Analyze the Packets</h3><p>I applied the filter:</p><pre>dns</pre><p>I looked for a packet showing a standard DNS query (A www.google.com) and its response.</p><p><strong>Why This Matters:</strong><br> This helped me understand how DNS uses UDP (connectionless) to resolve domain names. DNS queries use port 53.</p><p><strong>Security Note:</strong><br> Since UDP does not guarantee delivery, applications must handle retries. Also, DNS is often exploited in DDoS attacks and data exfiltration.</p><h3>Part 2: Analyze TCP and UDP Captures (FTP and TFTP)</h3><h3>Part 2.1: Analyze TCP Traffic via FTP</h3><h4>Step 1: Start Wireshark</h4><pre>wireshark &amp;</pre><p>I selected enp0s3 and clicked Start.</p><h4>Step 2: Start FTP Session</h4><p>In another terminal, I connected to the CDC’s FTP server:</p><pre>ftp ftp.cdc.gov</pre><p>Login credentials:</p><pre>Name: anonymous<br>Password: [press Enter]</pre><h4>Step 3: Download File</h4><pre>ls<br>get Readme<br>quit</pre><h4>Step 4: Apply Wireshark Filter</h4><p>In Wireshark:</p><pre>tcp and ip.addr == 198.246.117.106</pre><p><strong>Why This Matters:</strong><br> This part demonstrated TCP’s reliability through SYN, ACK, FIN flags, and sequence numbers. I saw how a session is established and torn down.</p><p><strong>Security Note:</strong><br> FTP transmits data and credentials in plain text. Sensitive data can be stolen if used over insecure networks.</p><h3>Part 2.2: Analyze TFTP via UDP (Mininet)</h3><h4>Step 1: Start Mininet and Terminals</h4><pre>sudo lab.support.files/scripts/cyberops_topo.py<br>mininet&gt; xterm H1 H2</pre><h4>Step 2: Start TFTP Server and Prepare Files</h4><p>On H1:</p><pre>/home/analyst/lab.support.files/scripts/start_tftpd.sh<br>echo &quot;This file contains my tftp data.&quot; &gt; /srv/tftp/my_tftp_data</pre><p>On H2:</p><pre>touch my_tftp_data</pre><h4>Step 3: Capture and Perform TFTP Transfer</h4><p>On H1:</p><pre>wireshark &amp;</pre><p>Select interface: H1-eth0</p><p>From H2:</p><pre>tftp 10.0.0.11 -c get my_tftp_data</pre><p>Filter in Wireshark:</p><pre>tftp</pre><p><strong>Why This Matters:</strong><br> This highlighted how UDP handles file transfers without session management. I saw how port numbers change dynamically.</p><p><strong>Security Note:</strong><br> TFTP is insecure by design. No authentication, no encryption. Only use it in trusted networks.</p><h3>Part 3: Analyze HTTP and HTTPS Traffic</h3><h3>Part 3.1: HTTP Capture</h3><h4>Step 1: Start tcpdump to Capture HTTP</h4><pre>sudo tcpdump -i enp0s3 -s 0 -w httpdump.pcap</pre><h4>Step 2: Open Browser</h4><p>Visited:</p><pre>http://www.altoromutual.com/login.jsp</pre><p>Login credentials:</p><pre>Username: Admin<br>Password: Admin</pre><p>Stopped capture with CTRL+C.</p><h4>Step 3: Analyze in Wireshark</h4><p>Opened httpdump.pcap and filtered:</p><pre>http</pre><p>Looked for POST requests and decoded form data under HTML Form URL Encoded.</p><p><strong>Why This Matters:</strong><br> I clearly saw the login credentials sent in plain text. HTTP offers no confidentiality.</p><p><strong>Security Note:</strong><br> NEVER log into a website over HTTP. Use HTTPS to protect data.</p><h3>Part 3.2: HTTPS Capture</h3><h4>Step 1: Start tcpdump</h4><pre>sudo tcpdump -i enp0s3 -s 0 -w httpsdump.pcap</pre><p>Visited:</p><pre>https://www.netacad.com</pre><p>Logged in with dummy credentials.</p><p>Stopped capture with CTRL+C.</p><h4>Step 2: Analyze in Wireshark</h4><p>Filtered by:</p><pre>tcp.port == 443</pre><p>Looked for TLS Application Data.</p><p><strong>Why This Matters:</strong><br> Even though the packets were visible, the contents were encrypted and unreadable.</p><p><strong>Security Note:</strong><br> HTTPS provides encryption, authentication, and data integrity. However, not all HTTPS sites are safe (phishing sites also use HTTPS).</p><h3>Reflection Questions and Summary</h3><h3>Why is HTTPS better than HTTP?</h3><p>Because it encrypts all traffic and protects credentials from eavesdropping. It also authenticates servers via certificates.</p><h3>Is every HTTPS site safe?</h3><p>No. Encryption doesn’t equal trustworthiness. Some attackers use HTTPS for phishing.</p><h3>How is TCP different from UDP?</h3><p>TCP ensures reliable, ordered delivery with error checking. UDP is faster but doesn’t guarantee delivery or order.</p><h3>Final Thoughts</h3><p>This lab gave me valuable hands-on experience with real network traffic. I learned not only how protocols function but also how to examine their strengths and vulnerabilities. I now understand why encrypted, authenticated traffic is critical in today’s cyber landscape</p><iframe src="https://cdn.embedly.com/widgets/media.html?src=https%3A%2F%2Fwww.youtube.com%2Fembed%2FDGrSYXcKwJg%3Ffeature%3Doembed&amp;display_name=YouTube&amp;url=https%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DDGrSYXcKwJg&amp;image=https%3A%2F%2Fi.ytimg.com%2Fvi%2FDGrSYXcKwJg%2Fhqdefault.jpg&amp;type=text%2Fhtml&amp;schema=youtube" width="640" height="480" frameborder="0" scrolling="no"><a href="https://medium.com/media/788d96bd08b0f5429ca1df284ae0fb9e/href">https://medium.com/media/788d96bd08b0f5429ca1df284ae0fb9e/href</a></iframe><p>Please go Like, Comment and Subscribe. Thank you for your Support</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=b8b2d467fbcc" width="1" height="1" alt="">]]></content:encoded>
        </item>
    </channel>
</rss>