← Back to list

Why Your Subdomain Takeover Reports Keep Getting Closed as N/A (And How to Fix It).

Subdomain Takeover is often described as one of the easiest vulnerabilities to find in Bug Bounty programs. Even today, hunters continue to…

Omar Mahmoud · 2026-06-12 11:04 · 75 claps · 7.4 min read
#bug-bounty #subdomain-takeover #bugcrowd #hackerone #red-team
Open on Medium ↗
Wiki topics: SAF · Safety & Alignment

Why Your Subdomain Takeover Reports Keep Getting Closed as N/A (And How to Fix It).

Subdomain Takeover is often described as one of the easiest vulnerabilities to find in Bug Bounty programs. Even today, hunters continue to discover abandoned services and dangling DNS records across many organizations.

Yet despite that, a large number of Subdomain Takeover reports are closed as N/A.

Why does this happen? Is the vulnerability no longer valid, or are researchers missing something important?

In this article, we’ll break down the reality of Subdomain Takeover, walk through a complete real-world workflow, and explain why finding a vulnerable subdomain is not always enough to get your report accepted.

A Few Years Ago…

A few years ago, finding a dangling CNAME was often enough to get a report accepted.

Many bug bounty programs treated abandoned third-party services as a valid security issue, because an attacker could potentially claim the resource and gain control over the affected subdomain.

As a result, Subdomain Takeover quickly became known as one of the easiest vulnerabilities to find and report.

Today, Things Are Different

Today, the situation is very different.

Most programs no longer consider a dangling DNS record alone to be sufficient evidence of a security issue. Instead, they require proof that the takeover is actually possible and that it leads to real, meaningful impact.

This is why many reports that would have been accepted years ago are now closed as N/A.

The issue is not that Subdomain Takeover is dead — it’s that validation and impact requirements have become much stricter.

In other words:

Finding a dangling record is easy. Proving impact is the hard part.

So, Is Subdomain Takeover Still a Thing?

Short answer: Yes… but not in the same way.

The Classic Hunting Method

Back in the day, the process was simple.

Most hunters would start by collecting as many subdomains as possible using tools like:

subfinder -d target.com -all -silent > subs.txt

They would also combine results from multiple sources such as:

  • Certificate Transparency logs
  • Passive DNS databases
  • Historical URLs

After building a large list, they would scan for takeover candidates using tools like:

subzy run --targets subs.txt

or

subjack -w subs.txt -t 100 -ssl

If a tool flagged a vulnerable subdomain, many programs would accept the report with minimal validation compared to today’s standards.

But in reality, it was never as easy as it looked in screenshots.

Personally, I’ve managed to find two accepted Subdomain Takeovers using this method, but both required a huge amount of manual verification. For every valid finding, there were hundreds of false positives, dead services, and unclaimable resources.

That’s why I like to call Subdomain Takeover the:

“easy but exhausting” bug

The method is simple, the tools are public, and the workflow is well known — but turning it into a valid, accepted report is a different story.

So Why Doesn’t This Method Work Anymore?

The main reason is simple: everyone is doing the same thing.

Tools like subfinder, subzy, and subjack are widely available, and most hunters are running them on the same targets.

As a result, the output is usually noisy and full of false positives rather than real exploitable cases.

On top of that, modern bug bounty programs are much stricter. Even if a tool flags a potential takeover, it is not enough anymore. Most cases end up being:

  • Already claimed services
  • Non-exploitable configurations
  • Purely informational issues

That’s why even correct findings often get closed as:

N/A or Informative

…unless you can clearly demonstrate real, working impact.

So How Do People Find Them Today?

If the old method is noisy, what actually works now?

The answer is simple: better data + smarter validation + deeper investigation.

Instead of relying only on basic enumeration, hunters now expand their recon process. Tools like subfinder are still useful, but their real power comes when combined with additional data sources.

Using APIs in recon tools can significantly increase subdomain discovery by pulling from more passive sources. This helps build a more complete picture of the target instead of relying on a single dataset.

But discovery is just the beginning.

Some hunters also automate basic checks to filter noise, like identifying unreachable hosts or suspicious HTTP responses (for example, 404 pages or misconfigured services).

However, these signals are not proof — they are only indicators.

This is where external intelligence tools come in. Platforms like:

  • Shodan
  • FOFA
  • ZoomEye

…help reveal exposed services, forgotten infrastructure, and historical footprints that traditional enumeration cannot detect.

The real shift is this:

Subdomain Takeover hunting is no longer about collecting subdomains. It’s about correlating data from multiple sources and validating real exploitability.

Why Most Reports End Up as N/A

Even when you find something interesting, many reports still get rejected.

The main reason is simple: incomplete proof of concept.

In modern bug bounty programs, it is not enough to show that a subdomain points to a third-party service. You must prove:

  • The service is truly unclaimed
  • Takeover is actually possible
  • Control can be demonstrated

A common mistake is stopping at DNS resolution without verifying the full chain.

To confirm where a subdomain is pointing, you can use:

dig subdomain.target.com CNAME

or

nslookup subdomain.target.com

These commands help identify the actual target service behind the subdomain.

But DNS alone is not enough. You must also verify whether the external service is:

  • Still active
  • Already claimed
  • Or actually available for takeover

Without this step, the report is usually rejected.

That’s why many findings end up as N/A — not because they are wrong, but because the PoC is incomplete.

Subdomain Takeover Difficulty Levels

Not all services behave the same. They can generally be grouped into three categories:

Easy to claim

  • GitHub Pages
  • Heroku (legacy apps)
  • Amazon S3 (misconfigured buckets)
  • Bitbucket Pages
  • WordPress.com (abandoned sites)

Moderate

  • Azure App Services
  • AWS Elastic Beanstalk
  • Firebase Hosting
  • Netlify
  • Fastly

Hard / Rare cases

  • Cloudflare Pages
  • Google Cloud Platform services
  • Modern Azure protected resources
  • Enterprise SaaS platforms
  • Strong CDN-managed services

The same CNAME misconfiguration can look identical across all three categories — but the real exploitability depends entirely on the service behind it. Some platforms allow easy takeover when unclaimed, while others make it nearly impossible due to strict ownership protections and verification layers.

A Complete Walkthrough: From Discovery to Valid Report

Theory is useful, but nothing makes the difference clearer than walking through an actual case step by step. Let’s say you’re hunting on target.com and you stumble across a subdomain pointing to GitHub Pages.

Step 1 — Discover the CNAME

You run a DNS lookup on the subdomain:

dig assets.target.com CNAME

The output shows something like:

assets.target.com.   3600   IN   CNAME   oldcompany-assets.github.io.

This tells you the subdomain is pointing to a GitHub Pages repository that may or may not still exist.

Step 2 — Check the Service State

You open the GitHub Pages URL directly in the browser:

http://oldcompany-assets.github.io

If the page returns something like:

There isn't a GitHub Pages site here.

…that’s your first real signal. This message means the repository behind that GitHub Pages subdomain doesn’t exist (or was deleted), and the username/repo name is potentially available for registration.

This is the equivalent check across other platforms:

  • Amazon S3 → visiting the bucket URL returns NoSuchBucket
  • Heroku → the app URL returns No such app
  • Azure/Netlify/Fastly → similar “not found” or “domain not configured” responses

If instead the page loads normally or shows an active site, takeover is most likely not possible — stop here, this is your N/A signal.

Step 3 — Verify the Resource Is Actually Claimable

This is the step most hunters skip — and it’s the one that decides whether your report becomes Valid or Informative.

Just because GitHub returns “there isn’t a site here” doesn’t automatically mean you can claim it. You need to confirm:

  • Is the exact username/organization name (oldcompany-assets) available for registration?
  • Is the repository name free, or does it belong to someone else who simply unpublished the page?
  • Are there any naming restrictions, reserved namespaces, or platform-level protections preventing you from registering that exact name?

For S3 buckets specifically, this step is critical: bucket names are global, so even if a bucket returns NoSuchBucket, someone else might create it before you — or the name might be reserved/blocked due to a previous deletion.

Step 4 — Demonstrate Control (The Real PoC)

This is where the report transitions from “theoretical” to “proven.”

For the GitHub Pages example:

  1. Create a GitHub account/organization with the exact name oldcompany-assets.
  2. Create a repository named to match the Pages configuration (e.g., oldcompany-assets.github.io).
  3. Enable GitHub Pages on that repository.
  4. Add a simple index.html with identifying content — for example, a harmless page that says "This subdomain was successfully claimed as part of a security assessment — [your handle/date]".
  5. Visit assets.target.com again. If it now resolves to your page instead of the GitHub error message, you have full, demonstrable control over the subdomain.

A screenshot of assets.target.com displaying your custom page — with the CNAME record still pointing to the original (now-claimed) destination — is the strongest possible evidence you can attach to a report.

Step 5 — Document the Impact

A valid report isn’t just “I claimed the page.” You need to explain what an attacker could actually do with this access:

  • Host phishing pages under a trusted company subdomain (assets.target.com)
  • Steal cookies or session tokens if the subdomain shares a parent domain with authenticated areas (cookie scoping issues)
  • Bypass Content Security Policy (CSP) rules that whitelist *.target.com
  • Damage brand trust by serving malicious or defaced content from an official-looking domain

Final Outcome

Based on what you found at each step, your report lands in one of three buckets:

Result Meaning No control possible N/A — DNS misconfiguration exists, but the resource is unclaimable Control possible, but limited/no real impact Informative — technically claimed, but no meaningful security consequence Full takeover + demonstrated impact Valid — accepted report, often with a bounty

Key Idea

The same CNAME misconfiguration can look like a vulnerability on the surface, but the real exploitability depends entirely on the service behind it.

Some platforms allow easy takeover when unclaimed, while others make it nearly impossible due to strict ownership protections, name reservations, and verification layers.

Final Thought

Subdomain Takeover is not a dead vulnerability. It’s just no longer a “quick win” bug.

Today, success depends less on tools — and more on understanding, validation, and proof.

Finding it is easy. Proving it is what makes the difference.


메타데이터
post_id
8eb93f0ab320
slug
why-your-subdomain-takeover-reports-keep-getting-closed-as-n-a-and-how-to-fix-it-8eb93f0ab320
url
https://medium.com/@omaroymdm/why-your-subdomain-takeover-reports-keep-getting-closed-as-n-a-and-how-to-fix-it-8eb93f0ab320
canonical_url
https://medium.com/@omaroymdm/why-your-subdomain-takeover-reports-keep-getting-closed-as-n-a-and-how-to-fix-it-8eb93f0ab320
author_url
https://medium.com/@omaroymdm
status
ok
fetched_at
2026-08-25 06:30:40