<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Vimal Mudalagi</title>
    <description>The latest articles on DEV Community by Vimal Mudalagi (@vimal_mudalagi).</description>
    <link>https://dev.to/vimal_mudalagi</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4014801%2Fa7f634af-1279-47a1-a495-77f437dee755.jpg</url>
      <title>DEV Community: Vimal Mudalagi</title>
      <link>https://dev.to/vimal_mudalagi</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/vimal_mudalagi"/>
    <language>en</language>
    <item>
      <title>Threat Hunting: What I Learned from TryHackMe</title>
      <dc:creator>Vimal Mudalagi</dc:creator>
      <pubDate>Fri, 02 Oct 2026 13:35:22 +0000</pubDate>
      <link>https://dev.to/vimal_mudalagi/threat-hunting-what-i-learned-from-tryhackme-3hec</link>
      <guid>https://dev.to/vimal_mudalagi/threat-hunting-what-i-learned-from-tryhackme-3hec</guid>
      <description>&lt;h2&gt;
  
  
  Task 1 — Introduction
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What the room covers
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;What &lt;strong&gt;Threat Hunting&lt;/strong&gt; is.&lt;/li&gt;
&lt;li&gt;Difference between &lt;strong&gt;Threat Hunting&lt;/strong&gt; and &lt;strong&gt;Incident Response&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;What threat hunters search for.&lt;/li&gt;
&lt;li&gt;Different hunting approaches.&lt;/li&gt;
&lt;li&gt;Hunting methods and techniques.&lt;/li&gt;
&lt;li&gt;Applying concepts to realistic scenarios.&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  Task 2 — What Is Threat Hunting?
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Threat Hunting
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Systematic, proactive search&lt;/strong&gt; for malicious activity that may have evaded detection systems.&lt;/li&gt;
&lt;li&gt;Hunters &lt;strong&gt;do not wait for alerts&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;They search systems, logs and networks for missed malicious activity.&lt;/li&gt;
&lt;li&gt;Goal is to find threats &lt;strong&gt;before attackers achieve their objectives&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Why it is needed
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Security systems are not perfect.&lt;/li&gt;
&lt;li&gt;Attackers may:

&lt;ul&gt;
&lt;li&gt;Use zero-day exploits.&lt;/li&gt;
&lt;li&gt;Modify tools to evade detection.&lt;/li&gt;
&lt;li&gt;Operate slowly to avoid alarms.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Threat Hunting vs Incident Response
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Aspect&lt;/th&gt;
&lt;th&gt;Threat Hunting&lt;/th&gt;
&lt;th&gt;Incident Response&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Trigger&lt;/td&gt;
&lt;td&gt;Self-initiated&lt;/td&gt;
&lt;td&gt;Security alert/detection&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Approach&lt;/td&gt;
&lt;td&gt;Proactive&lt;/td&gt;
&lt;td&gt;Reactive&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Timeline&lt;/td&gt;
&lt;td&gt;Before compromise is obvious&lt;/td&gt;
&lt;td&gt;After threat is detected&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Outcome&lt;/td&gt;
&lt;td&gt;Improve detections&lt;/td&gt;
&lt;td&gt;Containment + remediation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Example&lt;/td&gt;
&lt;td&gt;Hunter finds suspicious PowerShell before an alert&lt;/td&gt;
&lt;td&gt;Alert fires → IR investigates and contains&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;Threat hunting finds threats missed by detection.&lt;/li&gt;
&lt;li&gt;IR contains/removes discovered threats.&lt;/li&gt;
&lt;li&gt;IR findings can improve future detection and hunting.&lt;/li&gt;
&lt;li&gt;Both disciplines work together. citeturn1view0&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Dwell Time
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Dwell time:&lt;/strong&gt; average time an attacker remains undetected after initial compromise.&lt;/li&gt;
&lt;li&gt;Room states typical 2024–2025 dwell times as &lt;strong&gt;20–30 days&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Advanced attackers may remain for months/years.&lt;/li&gt;
&lt;li&gt;During dwell time attackers can:

&lt;ul&gt;
&lt;li&gt;Perform reconnaissance.&lt;/li&gt;
&lt;li&gt;Steal credentials.&lt;/li&gt;
&lt;li&gt;Move through the network.&lt;/li&gt;
&lt;li&gt;Exfiltrate data.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Longer dwell time → potentially greater damage.&lt;/li&gt;
&lt;li&gt;Threat hunting aims to &lt;strong&gt;reduce dwell time&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Real-world example
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Financial organization receives intelligence about an attack group.&lt;/li&gt;
&lt;li&gt;Hunter searches logs for related indicators.&lt;/li&gt;
&lt;li&gt;Finds unusual PowerShell activity.&lt;/li&gt;
&lt;li&gt;Attacker had been inside for &lt;strong&gt;14 days&lt;/strong&gt; without automated detection.&lt;/li&gt;
&lt;li&gt;Attacker was mapping the network and identifying valuable targets.&lt;/li&gt;
&lt;li&gt;Hunting allowed IR to contain/remove the attacker before deeper progression. citeturn1view0&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  Task 3 — Hunting Approaches
&lt;/h1&gt;

&lt;p&gt;Three foundational approaches:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Hypothesis-Driven&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Intelligence-Driven&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Indicator-Driven&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The selected approach depends on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Available information.&lt;/li&gt;
&lt;li&gt;Question being investigated.&lt;/li&gt;
&lt;li&gt;Resources.&lt;/li&gt;
&lt;li&gt;Threat priorities.&lt;/li&gt;
&lt;li&gt;Organizational circumstances/maturity.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  1. Hypothesis-Driven Hunting
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Starts with a &lt;strong&gt;question or suspicion&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Hunter creates a hypothesis and searches for evidence to prove/disprove it.&lt;/li&gt;
&lt;li&gt;Useful for a specific:

&lt;ul&gt;
&lt;li&gt;User.&lt;/li&gt;
&lt;li&gt;System.&lt;/li&gt;
&lt;li&gt;Department.&lt;/li&gt;
&lt;li&gt;Attack scenario.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Example
&lt;/h3&gt;

&lt;p&gt;Finance workstations suspected of phishing compromise.&lt;/p&gt;

&lt;p&gt;Hunter searches for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Suspicious PowerShell.&lt;/li&gt;
&lt;li&gt;Unusual network connections.&lt;/li&gt;
&lt;li&gt;Credential dumping.&lt;/li&gt;
&lt;li&gt;Unexpected process spawning.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  When to use
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Specific concern exists.&lt;/li&gt;
&lt;li&gt;Need focused investigation.&lt;/li&gt;
&lt;li&gt;Domain knowledge about environmental risks is available.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  2. Intelligence-Driven Hunting
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Starts with &lt;strong&gt;external Threat Intelligence&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Hunter learns about threats affecting their industry/geographic region.&lt;/li&gt;
&lt;li&gt;Searches the environment for evidence of those threats.&lt;/li&gt;
&lt;li&gt;Uses research from:

&lt;ul&gt;
&lt;li&gt;Security researchers.&lt;/li&gt;
&lt;li&gt;Vendors.&lt;/li&gt;
&lt;li&gt;Global security community.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  MITRE ATT&amp;amp;CK
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Organizes adversary tactics and techniques based on real-world observations.&lt;/li&gt;
&lt;li&gt;Provides standardized technique IDs.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;T1566.002&lt;/strong&gt; — Phishing / Spearphishing Link&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;T1059.001&lt;/strong&gt; — PowerShell&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;T1055&lt;/strong&gt; — Process Injection&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;T1041&lt;/strong&gt; — Exfiltration Over C2 Channel&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Example
&lt;/h3&gt;

&lt;p&gt;APT group targeting financial institutions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;T1566.002 → initial access.&lt;/li&gt;
&lt;li&gt;T1059.001 → command execution.&lt;/li&gt;
&lt;li&gt;T1041 → data theft.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Hunter searches for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Matching indicators.&lt;/li&gt;
&lt;li&gt;Related behavioral patterns.&lt;/li&gt;
&lt;li&gt;Connections to known C2 servers.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  When to use
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Published intelligence matches your threat profile.&lt;/li&gt;
&lt;li&gt;Relevant industry/geography/business model.&lt;/li&gt;
&lt;li&gt;Detailed threat feeds, vendor reports or incident reports are available.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  3. Indicator-Driven Hunting
&lt;/h2&gt;

&lt;p&gt;Focuses on concrete &lt;strong&gt;Indicators of Compromise (IOCs)&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;File hashes.&lt;/li&gt;
&lt;li&gt;IP addresses.&lt;/li&gt;
&lt;li&gt;Domain names.&lt;/li&gt;
&lt;li&gt;Email addresses.&lt;/li&gt;
&lt;li&gt;Command-line patterns.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Example
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Threat feed provides 150 malicious file hashes.&lt;/li&gt;
&lt;li&gt;Hunter searches for process execution/file creation matching those hashes.&lt;/li&gt;
&lt;li&gt;Result: indicator either exists or does not.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  When to use
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Large IOC lists are available.&lt;/li&gt;
&lt;li&gt;Clear/objective results are needed.&lt;/li&gt;
&lt;li&gt;Automation is useful.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Selecting an Approach
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Situation&lt;/th&gt;
&lt;th&gt;Approach&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Specific concern about asset/user&lt;/td&gt;
&lt;td&gt;Hypothesis-driven&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Threat intelligence about industry threat&lt;/td&gt;
&lt;td&gt;Intelligence-driven&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Known hashes/IPs/domains from trusted source&lt;/td&gt;
&lt;td&gt;Indicator-driven&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Organizations may use all three.&lt;/p&gt;

&lt;h3&gt;
  
  
  Questions hunters consider
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Where might the attacker move?&lt;/li&gt;
&lt;li&gt;What systems could they access?&lt;/li&gt;
&lt;li&gt;How might they establish persistence?&lt;/li&gt;
&lt;li&gt;Where could they go from here? citeturn1view0&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  Task 4 — Hunting Targets
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Targets = WHAT we hunt for.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Attackers create artifacts by:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Executing commands.&lt;/li&gt;
&lt;li&gt;Creating files.&lt;/li&gt;
&lt;li&gt;Establishing network connections.&lt;/li&gt;
&lt;li&gt;Modifying settings.&lt;/li&gt;
&lt;li&gt;Interacting with applications.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Three main targets:&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Known Malware
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Search for malware already known/reported.&lt;/li&gt;
&lt;li&gt;Repositories/threat feeds contain:

&lt;ul&gt;
&lt;li&gt;File hashes.&lt;/li&gt;
&lt;li&gt;Signatures.&lt;/li&gt;
&lt;li&gt;Behavioral analysis.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Tool/resource
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;VirusTotal&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Example — Emotet
&lt;/h3&gt;

&lt;p&gt;Possible hunting targets:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Emotet file hashes.&lt;/li&gt;
&lt;li&gt;Launch command-line patterns.&lt;/li&gt;
&lt;li&gt;C2 connections.&lt;/li&gt;
&lt;li&gt;Credential-stealing behavior.&lt;/li&gt;
&lt;li&gt;Lateral-movement behavior.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Challenges
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Malware changes constantly.&lt;/li&gt;
&lt;li&gt;Attackers can:

&lt;ul&gt;
&lt;li&gt;Recompile malware.&lt;/li&gt;
&lt;li&gt;Add obfuscation.&lt;/li&gt;
&lt;li&gt;Change infrastructure.&lt;/li&gt;
&lt;li&gt;Create variants.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Old hashes may not match newer variants.&lt;/li&gt;
&lt;li&gt;Zero-day malware has no known indicators.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Sources
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Malware repositories.&lt;/li&gt;
&lt;li&gt;Threat intelligence feeds.&lt;/li&gt;
&lt;li&gt;Incident reports.&lt;/li&gt;
&lt;li&gt;Security vendor publications.&lt;/li&gt;
&lt;li&gt;Information-sharing platforms.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  2. Attack Residues
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Artifacts left behind while attackers execute their attack chain.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Attackers must:

&lt;ul&gt;
&lt;li&gt;Execute code.&lt;/li&gt;
&lt;li&gt;Run commands.&lt;/li&gt;
&lt;li&gt;Access files.&lt;/li&gt;
&lt;li&gt;Create persistence.&lt;/li&gt;
&lt;li&gt;Establish C2 communication.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Example
&lt;/h3&gt;

&lt;p&gt;Attacker uses &lt;strong&gt;lsass.exe&lt;/strong&gt; to dump password hashes.&lt;/p&gt;

&lt;p&gt;Hunter may observe:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Unusual process creation.&lt;/li&gt;
&lt;li&gt;Unexpected parent process.&lt;/li&gt;
&lt;li&gt;Abnormal memory access.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Possible commands:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;whoami&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;net user&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ipconfig&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;tasklist&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Why useful
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Attack residues can be independent of specific malware.&lt;/li&gt;
&lt;li&gt;Different attackers/tools may leave similar residues.&lt;/li&gt;
&lt;li&gt;Can help detect unknown malware or zero-days.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Common residues
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Unusual process spawning.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;cmd.exe&lt;/code&gt;/PowerShell from unexpected parents.&lt;/li&gt;
&lt;li&gt;Administrative-tool command execution.&lt;/li&gt;
&lt;li&gt;Unexpected external IP connections.&lt;/li&gt;
&lt;li&gt;Suspicious file creation.&lt;/li&gt;
&lt;li&gt;Registry modifications.&lt;/li&gt;
&lt;li&gt;Unusual privilege escalation.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  3. Known Vulnerabilities
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Hunt for evidence that known vulnerabilities were exploited.&lt;/li&gt;
&lt;li&gt;Attackers can develop exploits quickly after disclosure.&lt;/li&gt;
&lt;li&gt;Vulnerable systems remain exposed during the patching window.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Example — Log4Shell
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;CVE-2021-44228&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Critical Log4j vulnerability.&lt;/li&gt;
&lt;li&gt;Exploitation through specially crafted messages.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Hunter searches for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;HTTP requests containing exploit patterns.&lt;/li&gt;
&lt;li&gt;Unusual Java behavior.&lt;/li&gt;
&lt;li&gt;Unexpected network connections.&lt;/li&gt;
&lt;li&gt;Unexpected child processes.&lt;/li&gt;
&lt;li&gt;Unusual filesystem activity.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Why it matters
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Vulnerability exploitation is a common initial-access method.&lt;/li&gt;
&lt;li&gt;Hunting can identify exploitation earlier.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Integrating the 3 Targets
&lt;/h2&gt;

&lt;p&gt;One hunt can combine:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Known malware.&lt;/li&gt;
&lt;li&gt;Attack residues.&lt;/li&gt;
&lt;li&gt;Vulnerability exploitation evidence.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Targets = WHAT evidence we hunt for.&lt;/strong&gt; citeturn1view0&lt;/p&gt;




&lt;h1&gt;
  
  
  Task 5 — Hunting Techniques
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Techniques = HOW we hunt.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Where Threat Hunters Search
&lt;/h2&gt;

&lt;p&gt;Data sources include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Event logs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;EDR&lt;/strong&gt; data.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SIEM&lt;/strong&gt; systems.&lt;/li&gt;
&lt;li&gt;Network traffic/flow data.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DNS&lt;/strong&gt; logs.&lt;/li&gt;
&lt;li&gt;Web proxy logs.&lt;/li&gt;
&lt;li&gt;Firewall logs.&lt;/li&gt;
&lt;li&gt;Application logs.&lt;/li&gt;
&lt;li&gt;System registry.&lt;/li&gt;
&lt;li&gt;Memory.&lt;/li&gt;
&lt;li&gt;Configuration files.&lt;/li&gt;
&lt;li&gt;Temporary directories.&lt;/li&gt;
&lt;li&gt;Backup systems.&lt;/li&gt;
&lt;li&gt;Cloud services.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Important point
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;No single data source gives the complete story.&lt;/li&gt;
&lt;li&gt;Hunters correlate:

&lt;ul&gt;
&lt;li&gt;Logs.&lt;/li&gt;
&lt;li&gt;Network data.&lt;/li&gt;
&lt;li&gt;Endpoint information.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Mature programs continuously expand visibility and data collection.&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  Method 1 — Attack Signatures
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Attack signature = pattern indicating malicious activity.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Known malware file hash.&lt;/li&gt;
&lt;li&gt;Malicious command-line parameters.&lt;/li&gt;
&lt;li&gt;Unusual process parent.&lt;/li&gt;
&lt;li&gt;Known malicious URL pattern.&lt;/li&gt;
&lt;li&gt;Registry modification at persistence location.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;powershell.exe + -EncodedCommand + DownloadString
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cmd.exe spawned from winword.exe
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Example registry location:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;HKLM\Software\Microsoft\Windows\CurrentVersion\Run
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Used in
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;EDR.&lt;/li&gt;
&lt;li&gt;SIEM.&lt;/li&gt;
&lt;li&gt;Antivirus logs.&lt;/li&gt;
&lt;li&gt;Firewall logs.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  MITRE connection
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;PowerShell signature → &lt;strong&gt;T1059.001&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Registry persistence → &lt;strong&gt;T1547&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Effectiveness
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Good against known threats.&lt;/li&gt;
&lt;li&gt;Can miss variations and zero-days.&lt;/li&gt;
&lt;li&gt;Produces clear/objective results.&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  Method 2 — Indicators of Compromise (IOCs)
&lt;/h1&gt;

&lt;p&gt;Specific attacker artifacts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;File hashes.&lt;/li&gt;
&lt;li&gt;IP addresses.&lt;/li&gt;
&lt;li&gt;Domains.&lt;/li&gt;
&lt;li&gt;Email addresses.&lt;/li&gt;
&lt;li&gt;URLs.&lt;/li&gt;
&lt;li&gt;Registry keys.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Hunting examples
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Hashes → EDR/SIEM.&lt;/li&gt;
&lt;li&gt;IPs → firewall/network logs.&lt;/li&gt;
&lt;li&gt;Domains → DNS logs.&lt;/li&gt;
&lt;li&gt;Emails → email logs.&lt;/li&gt;
&lt;li&gt;URLs → web proxy logs.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Tools/platforms
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;SIEM.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;MISP&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Recorded Future&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;EDR.&lt;/li&gt;
&lt;li&gt;Firewall logs.&lt;/li&gt;
&lt;li&gt;DNS logs.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Effectiveness
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Clear/objective results.&lt;/li&gt;
&lt;li&gt;Attackers frequently change infrastructure.&lt;/li&gt;
&lt;li&gt;IOCs become outdated.&lt;/li&gt;
&lt;li&gt;Recent/relevant IOCs are most useful.&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  Method 3 — Behavioral Pattern Analysis
&lt;/h1&gt;

&lt;p&gt;Looks for &lt;strong&gt;sequences of events&lt;/strong&gt; that together indicate malicious activity.&lt;/p&gt;

&lt;h3&gt;
  
  
  Examples
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Process chain&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Word.exe → cmd.exe → powershell.exe → external IP
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;File access&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;One user accesses hundreds of sensitive files within minutes.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Lateral movement&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Remote execution on A
→ process creation on B
→ credential access on B
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Privilege escalation&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Normal user process
→ SYSTEM permissions
→ sensitive file access
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Data collection&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Database query
→ bulk file reads
→ archive creation
→ network transmission
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Used in
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Advanced SIEM.&lt;/li&gt;
&lt;li&gt;EDR process-tree analysis.&lt;/li&gt;
&lt;li&gt;Behavioral analysis tools.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  MITRE connection
&lt;/h3&gt;

&lt;p&gt;Attack chains can correspond to combinations of MITRE techniques.&lt;/p&gt;

&lt;h3&gt;
  
  
  Effectiveness
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Can detect attacks without known malware/IOCs.&lt;/li&gt;
&lt;li&gt;Focuses on attacker actions rather than specific tools.&lt;/li&gt;
&lt;li&gt;False positives are possible.&lt;/li&gt;
&lt;li&gt;Normal administrative activity can resemble attack behavior.&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  Method 4 — Logical Queries &amp;amp; Anomaly Detection
&lt;/h1&gt;

&lt;p&gt;Uses &lt;strong&gt;conditional logic&lt;/strong&gt; to identify suspicious activity that differs from normal behavior.&lt;/p&gt;

&lt;h3&gt;
  
  
  Examples
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Administrator commands at 3 AM.&lt;/li&gt;
&lt;li&gt;SYSTEM account running interactive commands.&lt;/li&gt;
&lt;li&gt;User accessing normally unused data directories.&lt;/li&gt;
&lt;li&gt;Internal system connecting to unusual ports.&lt;/li&gt;
&lt;li&gt;Password change for inactive account.&lt;/li&gt;
&lt;li&gt;Non-IT user downloading large amounts of files.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Example query patterns
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;EventCode=4688
where ParentProcessName NOT IN [explorer.exe, cmd.exe]
AND User = SYSTEM
AND CommandLine IN [whoami, net user, ipconfig]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;EventCode=4663
where TargetUserName NOT IN [IT_team]
AND ObjectName LIKE "*\sensitive_data\*"
AND count &amp;gt; 50
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Network
where SourceIP IN [10.*, 192.168.*]
AND DestinationPort NOT IN [80, 443, 53, 22, 21]
AND BytesSent &amp;gt; 1000000
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;EventCode=4723
where TargetUserName NOT IN [active_users]
AND SubjectUserName = Administrator
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Used in
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Splunk SPL&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ELK / Elasticsearch Query Language&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Azure KQL&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;EDR advanced hunting.&lt;/li&gt;
&lt;li&gt;Security data lakes.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  MITRE connection
&lt;/h3&gt;

&lt;p&gt;Queries can target techniques such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;T1087 — Account Discovery&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;T1005 — Data from Local System&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Effectiveness
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Highly customizable.&lt;/li&gt;
&lt;li&gt;Can detect unknown attacks through abnormal behavior.&lt;/li&gt;
&lt;li&gt;Requires understanding normal environment behavior.&lt;/li&gt;
&lt;li&gt;Effective query construction can be difficult.&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  Combining Hunting Methods
&lt;/h1&gt;

&lt;p&gt;Effective hunts rarely use only one method.&lt;/p&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Load IOC lists into SIEM.&lt;/li&gt;
&lt;li&gt;Search for behavioral patterns matching known attackers.&lt;/li&gt;
&lt;li&gt;Create logical queries for similar activity from unknown attackers.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Layered hunting → known + unknown threat detection.&lt;/strong&gt; citeturn1view0&lt;/p&gt;




&lt;h1&gt;
  
  
  Task 6 — Practical
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Scenario
&lt;/h2&gt;

&lt;p&gt;You are a threat hunter at a financial-services organization.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Threat intelligence identifies &lt;strong&gt;APT-Serpent&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;APT-Serpent targets organizations in the sector.&lt;/li&gt;
&lt;li&gt;No alerts have fired.&lt;/li&gt;
&lt;li&gt;Goal: proactively determine whether the attacker has gained a foothold.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Practical questions
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Number of known APT-Serpent campaigns since 2021.&lt;/li&gt;
&lt;li&gt;Phase where &lt;strong&gt;CustomBackdoor&lt;/strong&gt; gets dropped.&lt;/li&gt;
&lt;li&gt;Primary initial-access vector used by APT-Serpent.&lt;/li&gt;
&lt;li&gt;Time interval between CustomBackdoor HTTPS C2 beacons.&lt;/li&gt;
&lt;li&gt;Flag received after selecting the correct hunting &lt;strong&gt;approach + target&lt;/strong&gt;. citeturn1view0&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  Task 7 — Conclusion
&lt;/h1&gt;

&lt;h3&gt;
  
  
  Core concepts
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Threat Hunting&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Fundamentally proactive.&lt;/li&gt;
&lt;li&gt;Does not wait for alerts.&lt;/li&gt;
&lt;li&gt;Searches for threats detection systems missed.&lt;/li&gt;
&lt;li&gt;Especially useful during early attack stages.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3 Approaches
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Hypothesis-driven&lt;/li&gt;
&lt;li&gt;Intelligence-driven&lt;/li&gt;
&lt;li&gt;Indicator-driven&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  3 Targets
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Known malware&lt;/li&gt;
&lt;li&gt;Attack residues&lt;/li&gt;
&lt;li&gt;Vulnerability exploitation&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  4 Methods
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Attack signatures&lt;/li&gt;
&lt;li&gt;IOCs&lt;/li&gt;
&lt;li&gt;Behavioral pattern analysis&lt;/li&gt;
&lt;li&gt;Logical queries&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Mindset
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Suspicious thinking.&lt;/li&gt;
&lt;li&gt;Methodical analysis.&lt;/li&gt;
&lt;li&gt;Continuous learning.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Result of every hunt
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Find active threats.&lt;/li&gt;
&lt;li&gt;Identify detection gaps.&lt;/li&gt;
&lt;li&gt;Strengthen future detection.&lt;/li&gt;
&lt;li&gt;Improve understanding of attackers and the environment.&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  🧠 One-page memory map
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                 THREAT HUNTING
                       │
        ┌──────────────┴──────────────┐
        │                             │
       WHAT                           HOW
     Targets                       Methods
        │                             │
 ┌──────┼──────┐              ┌──────┼────────┐
 │      │      │              │      │        │
Malware Residues Vulns    Signatures IOCs  Behavioral
                                      │
                                Logical Queries
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Approaches
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Specific suspicion     → Hypothesis-driven

Threat Intelligence    → Intelligence-driven
        ↓
    MITRE ATT&amp;amp;CK

Known hashes/IPs/etc.  → Indicator-driven
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Core distinction
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Incident Response → ALERT → Investigate → Respond
Threat Hunting    → HUNT  → Find threat → Improve detection
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Core objective emphasized by the room
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Find threats proactively and reduce the time attackers remain undetected.&lt;/strong&gt; citeturn1view0&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Next rooms:&lt;/strong&gt; Threat Hunting: Foothold → Pivoting → Endgame → Hunt Me I: Payment Collectors → Hunt Me II: Typo Squatters. &lt;/p&gt;

</description>
      <category>threathunting</category>
      <category>cybersecurity</category>
      <category>thm</category>
      <category>security</category>
    </item>
    <item>
      <title>Learning Web Security #1: Broken Access Control (OWASP Top 10 #1 - Beginner's Guide)</title>
      <dc:creator>Vimal Mudalagi</dc:creator>
      <pubDate>Tue, 07 Jul 2026 06:38:35 +0000</pubDate>
      <link>https://dev.to/vimal_mudalagi/owasp-top-10-1-understanding-broken-access-control-beginners-guide-38fp</link>
      <guid>https://dev.to/vimal_mudalagi/owasp-top-10-1-understanding-broken-access-control-beginners-guide-38fp</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Disclaimer:&lt;/strong&gt; I'm currently learning web security through PortSwigger Web Security Academy. These are my beginner-friendly notes rewritten as a blog to help reinforce my understanding. If you're just starting out, I hope this makes the topic easier to understand.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  What you'll learn:
&lt;/h2&gt;

&lt;p&gt;In this article you'll learn:&lt;/p&gt;

&lt;p&gt;✔ What Broken Access Control is&lt;/p&gt;

&lt;p&gt;✔ Vertical Privilege Escalation&lt;/p&gt;

&lt;p&gt;✔ Security by Obscurity&lt;/p&gt;

&lt;p&gt;✔ Parameter-Based Access Control&lt;/p&gt;

&lt;p&gt;✔ Platform Misconfiguration&lt;/p&gt;

&lt;p&gt;✔ Horizontal → Vertical Escalation&lt;/p&gt;

&lt;p&gt;✔ IDOR&lt;/p&gt;

&lt;p&gt;✔ Lessons learned from PortSwigger labs&lt;/p&gt;




&lt;h2&gt;
  
  
  Concept Map:
&lt;/h2&gt;

&lt;h2&gt;
  
  
  &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fp096glz3f5e63mmdlpwo.png" alt="content map" width="573" height="432"&gt;
&lt;/h2&gt;

&lt;h2&gt;
  
  
  What is Broken Access Control?
&lt;/h2&gt;

&lt;p&gt;Broken Access Control happens when a user is able to access data, pages, or perform actions that they are &lt;strong&gt;not supposed to&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why should you care?
&lt;/h2&gt;

&lt;p&gt;Broken Access Control has ranked #1 in the OWASP Top 10 (2021) because it can expose sensitive data, allow privilege escalation, and let attackers perform actions they should never be able to perform.&lt;/p&gt;

&lt;p&gt;Think of a website with two types of users:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Normal User&lt;/li&gt;
&lt;li&gt;Admin&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A normal user should only be able to view their own profile and perform basic actions.&lt;/p&gt;

&lt;p&gt;An admin, however, can manage users, delete accounts, change settings, etc.&lt;/p&gt;

&lt;p&gt;If a normal user somehow gains access to those admin features, that's &lt;strong&gt;Broken Access Control&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;In interview terms:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Broken Access Control is the failure to properly enforce authorization, allowing users to perform actions beyond their intended permissions.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  1. Vertical Privilege Escalation
&lt;/h2&gt;

&lt;p&gt;Vertical Privilege Escalation means moving &lt;strong&gt;up&lt;/strong&gt; the permission hierarchy.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Normal User
      ↓
Admin
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A normal user should never be able to become an administrator.&lt;/p&gt;




&lt;h2&gt;
  
  
  1.1 Unprotected Functionality
&lt;/h2&gt;

&lt;p&gt;One of the simplest forms of Broken Access Control is &lt;strong&gt;Unprotected Functionality&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Imagine a website has an admin page:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;The developer removes the &lt;strong&gt;Admin&lt;/strong&gt; button from the normal user's dashboard.&lt;/p&gt;

&lt;p&gt;Problem solved?&lt;/p&gt;

&lt;p&gt;No.&lt;/p&gt;

&lt;p&gt;If a user manually visits:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;and the server doesn't verify whether they're actually an admin, the page opens.&lt;/p&gt;

&lt;p&gt;The mistake here is relying on the user interface instead of enforcing authorization on the server.&lt;/p&gt;

&lt;h2&gt;
  
  
  Attacker's mindset
&lt;/h2&gt;

&lt;p&gt;When testing a website, an attacker may ask:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Can I manually visit hidden pages?&lt;/li&gt;
&lt;li&gt;Can I guess common admin URLs?&lt;/li&gt;
&lt;li&gt;Can I inspect &lt;code&gt;robots.txt&lt;/code&gt;?&lt;/li&gt;
&lt;li&gt;Can I brute-force directories?&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  PortSwigger Lab
&lt;/h2&gt;

&lt;p&gt;In the lab, the admin panel wasn't linked anywhere.&lt;/p&gt;

&lt;p&gt;However, visiting:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/robots.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;revealed:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/administrator-panel
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Opening that URL directly gave access to the admin panel, where I was able to delete the user &lt;strong&gt;carlos&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Key takeaway
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;robots.txt&lt;/code&gt; is &lt;strong&gt;public&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Hiding an admin URL is &lt;strong&gt;not&lt;/strong&gt; the same as protecting it.&lt;/p&gt;

&lt;p&gt;The server must always verify permissions before allowing access.&lt;/p&gt;




&lt;h2&gt;
  
  
  1.2 Security by Obscurity
&lt;/h2&gt;

&lt;p&gt;Sometimes developers try to make admin pages "secret" by giving them strange URLs like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/administrator-panel-yb556
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is called &lt;strong&gt;Security by Obscurity&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The idea is simple:&lt;/p&gt;

&lt;p&gt;"If attackers can't guess the URL, they can't access it."&lt;/p&gt;

&lt;p&gt;Unfortunately, that isn't real security.&lt;/p&gt;

&lt;p&gt;The hidden URL may still appear inside:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;JavaScript files&lt;/li&gt;
&lt;li&gt;HTML source code&lt;/li&gt;
&lt;li&gt;Network requests&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Anyone can inspect these using the browser's Developer Tools.&lt;/p&gt;

&lt;p&gt;Once the URL is discovered, if the server doesn't perform authorization checks, the page becomes accessible.&lt;/p&gt;

&lt;h3&gt;
  
  
  Key takeaway
&lt;/h3&gt;

&lt;p&gt;A hidden URL is &lt;strong&gt;not&lt;/strong&gt; a protected URL.&lt;/p&gt;

&lt;p&gt;Always implement proper server-side authorization.&lt;/p&gt;




&lt;h2&gt;
  
  
  1.3 Parameter-Based Access Control
&lt;/h2&gt;

&lt;p&gt;Some applications make another dangerous mistake.&lt;/p&gt;

&lt;p&gt;Instead of storing a user's role securely on the server, they store it somewhere the user can modify.&lt;/p&gt;

&lt;p&gt;Examples include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cookies&lt;/li&gt;
&lt;li&gt;Hidden HTML fields&lt;/li&gt;
&lt;li&gt;URL parameters&lt;/li&gt;
&lt;li&gt;JSON request bodies&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Imagine the application uses:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsp"&gt;&lt;code&gt;/login/home.jsp?admin=false
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;or&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsp"&gt;&lt;code&gt;/login/home.jsp?role=0
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If the server blindly trusts these values, an attacker can simply change them to:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;admin=true
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;or&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;role=1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and gain administrator privileges.&lt;/p&gt;

&lt;p&gt;This is why &lt;strong&gt;client-side data should never be trusted&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  PortSwigger Lab 1 – Cookie Manipulation
&lt;/h2&gt;

&lt;p&gt;In this lab:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The admin panel existed at &lt;code&gt;/admin&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Access was denied initially&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Using Burp Suite, I intercepted the login response and found the cookie:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Admin=false
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I changed it to:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Admin=true
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After forwarding the modified response, I could access the admin panel and delete &lt;strong&gt;carlos&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  What I learned
&lt;/h3&gt;

&lt;p&gt;Cookies belong to the client.&lt;/p&gt;

&lt;p&gt;Anything stored on the client can be modified.&lt;/p&gt;

&lt;p&gt;The server should never trust role information stored in cookies.&lt;/p&gt;




&lt;h2&gt;
  
  
  PortSwigger Lab 2 – JSON Parameter Manipulation
&lt;/h2&gt;

&lt;p&gt;This lab required users to have:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;roleid = 2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I updated my email address while intercepting the request in Burp Suite.&lt;/p&gt;

&lt;p&gt;Inside the JSON request body, I found my current role.&lt;/p&gt;

&lt;p&gt;I modified it to:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="nl"&gt;"roleid"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After sending the modified request, my role changed to administrator.&lt;/p&gt;

&lt;p&gt;I could then access &lt;code&gt;/admin&lt;/code&gt; and delete &lt;strong&gt;carlos&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  What I learned
&lt;/h3&gt;

&lt;p&gt;Just because data is sent inside JSON doesn't mean it's secure.&lt;/p&gt;

&lt;p&gt;If the server trusts user-controlled JSON values, privilege escalation becomes possible.&lt;/p&gt;




&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;The biggest lesson from this learning was surprisingly simple:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;*&lt;em&gt;Never trust client-controlled data. Always validate authorization on the server or in simple words: Never trust anything coming from the browser *&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Whether it's:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a URL&lt;/li&gt;
&lt;li&gt;a cookie&lt;/li&gt;
&lt;li&gt;a hidden field&lt;/li&gt;
&lt;li&gt;a request parameter&lt;/li&gt;
&lt;li&gt;or a JSON value&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;all of them can be modified by an attacker.&lt;/p&gt;

&lt;p&gt;The responsibility of deciding &lt;strong&gt;who is allowed to do what&lt;/strong&gt; always belongs to the server.&lt;/p&gt;

&lt;p&gt;That's the core idea behind preventing Broken Access Control.&lt;/p&gt;

&lt;p&gt;Now that we've seen common authorization mistakes, let's look at another interesting case where access control fails due to platform misconfiguration.&lt;/p&gt;




&lt;h2&gt;
  
  
  1.4 Platform Misconfiguration and Access Control Bypass
&lt;/h2&gt;

&lt;p&gt;Another interesting form of Broken Access Control happens because of &lt;strong&gt;platform misconfiguration&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;This sounds complicated at first, but the idea is simple:&lt;/p&gt;

&lt;p&gt;The website has security checks, but the security layer and the application do not interpret requests in the same way.&lt;/p&gt;

&lt;p&gt;Imagine the application has a rule like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;DENY:
POST /admin/deleteUser
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This means users should not be able to access that admin functionality.&lt;/p&gt;

&lt;p&gt;Normally, a request looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight http"&gt;&lt;code&gt;&lt;span class="err"&gt;POST /admin/deleteUser
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The security layer sees the request and blocks it.&lt;/p&gt;

&lt;p&gt;However, some frameworks support special headers such as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;X-Original-URL
X-Rewrite-URL
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;These headers can internally change where a request is routed.&lt;/p&gt;

&lt;p&gt;An attacker may send:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight http"&gt;&lt;code&gt;&lt;span class="err"&gt;POST /
X-Original-URL: /admin/deleteUser
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now something unexpected happens:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Security layer sees:
&lt;/li&gt;
&lt;/ul&gt;

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

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Application sees:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/admin/deleteUser
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The security system thinks the request is harmless, while the application executes the admin functionality.&lt;/p&gt;

&lt;p&gt;This can lead to access control bypass.&lt;/p&gt;

&lt;h2&gt;
  
  
  Another technique: HTTP Method Bypass
&lt;/h2&gt;

&lt;p&gt;Sometimes security rules only restrict one HTTP method.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;DENY:
POST /admin/deleteUser
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Developers assume deletion will only happen through POST requests.&lt;/p&gt;

&lt;p&gt;An attacker may test:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight http"&gt;&lt;code&gt;&lt;span class="err"&gt;GET /admin/deleteUser?user=carlos
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If the application accidentally accepts GET requests as well, the action still executes.&lt;/p&gt;

&lt;p&gt;The security rule only checked:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;but the application accepted:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;h2&gt;
  
  
  What I learned
&lt;/h2&gt;

&lt;p&gt;Security checks should not rely only on proxies, URLs, or request methods.&lt;/p&gt;

&lt;p&gt;Authorization should always be validated on the server for every sensitive action.&lt;/p&gt;

&lt;p&gt;The biggest takeaway:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;If the security layer and application interpret requests differently, access control bypasses can happen.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  2. Horizontal to Vertical Privilege Escalation
&lt;/h2&gt;

&lt;p&gt;Earlier, we looked at &lt;strong&gt;Vertical Privilege Escalation&lt;/strong&gt;, where a normal user directly gains administrator access.&lt;/p&gt;

&lt;p&gt;But sometimes attackers take a different route.&lt;/p&gt;

&lt;p&gt;They first compromise another user's account (Horizontal Privilege Escalation) and then use that account to become an administrator.&lt;/p&gt;

&lt;p&gt;Imagine your account page is accessed using:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/myaccount?id=123
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If the application doesn't verify ownership, an attacker might simply change the URL to:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/myaccount?id=456
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If User 456 happens to be an administrator, the attacker now has access to an admin account.&lt;/p&gt;

&lt;p&gt;In the PortSwigger lab using Burp Suite, changing the user identifier exposed the administrator's account page, which revealed the administrator's password. Using those credentials, I logged in as the administrator.&lt;/p&gt;

&lt;h3&gt;
  
  
  What I learned
&lt;/h3&gt;

&lt;p&gt;Horizontal privilege escalation isn't always the final goal.&lt;/p&gt;

&lt;p&gt;Sometimes it's just the first step toward gaining administrator privileges.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. Insecure Direct Object References (IDOR)
&lt;/h2&gt;

&lt;p&gt;An &lt;strong&gt;Insecure Direct Object Reference (IDOR)&lt;/strong&gt; occurs when an application directly uses user-supplied input to access resources without checking whether the user is actually authorized to access them.&lt;/p&gt;

&lt;p&gt;These resources (called &lt;strong&gt;objects&lt;/strong&gt;) can include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;User profiles&lt;/li&gt;
&lt;li&gt;Chat transcripts&lt;/li&gt;
&lt;li&gt;Documents&lt;/li&gt;
&lt;li&gt;Images&lt;/li&gt;
&lt;li&gt;Orders&lt;/li&gt;
&lt;li&gt;Database records&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For example, suppose a chat transcript is stored as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/download/2.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If I manually change it to:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/download/1.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and the server returns another user's transcript without checking ownership, that's an IDOR vulnerability.&lt;/p&gt;

&lt;p&gt;The problem isn't that the URL can be changed.&lt;/p&gt;

&lt;p&gt;The real problem is that the server trusts the user-supplied object reference without verifying whether the user should have access to it.&lt;/p&gt;

&lt;h2&gt;
  
  
  PortSwigger Lab
&lt;/h2&gt;

&lt;p&gt;In this lab, chat transcripts were stored as text files with predictable names such as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1.txt
2.txt
3.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After viewing my own transcript, I noticed the filename pattern.&lt;/p&gt;

&lt;p&gt;I changed:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;2.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;to:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The server returned another user's chat transcript, which contained Carlos's password.&lt;/p&gt;

&lt;p&gt;I then used those credentials to log into Carlos's account.&lt;/p&gt;

&lt;h3&gt;
  
  
  What I learned
&lt;/h3&gt;

&lt;p&gt;If an application exposes predictable object references without verifying ownership, attackers can access data that belongs to other users.&lt;/p&gt;




&lt;h2&gt;
  
  
  How to Prevent Broken Access Control
&lt;/h2&gt;

&lt;p&gt;Most Broken Access Control vulnerabilities exist because the server trusts information that comes from the client.&lt;/p&gt;

&lt;p&gt;Some simple security principles can prevent many of these issues:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Deny access by default unless explicitly allowed.&lt;/li&gt;
&lt;li&gt;Perform authorization checks on the server for every request.&lt;/li&gt;
&lt;li&gt;Never rely on hidden URLs or secret page names for security.&lt;/li&gt;
&lt;li&gt;Verify that users own the resources they are trying to access.&lt;/li&gt;
&lt;li&gt;Use a centralized authorization mechanism across the application.&lt;/li&gt;
&lt;li&gt;Regularly audit and test access control rules.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Final Takeaway
&lt;/h3&gt;

&lt;p&gt;Throughout these labs, one idea kept appearing again and again:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Never trust the client. Always enforce authorization on the server.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Whether an attacker modifies a URL, cookie, request parameter, JSON value, or filename, the server should always verify &lt;strong&gt;who&lt;/strong&gt; is making the request and &lt;strong&gt;whether they are allowed to perform that action&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;That's the foundation of secure access control.&lt;/p&gt;




&lt;h2&gt;
  
  
  References
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;OWASP Top 10&lt;/li&gt;
&lt;li&gt;PortSwigger Web Security Academy (Broken Access Control labs)&lt;/li&gt;
&lt;/ul&gt;

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