Lab 03 — Reconnaissance and Attack Surface Mapping
Welcome to:
Lab 03 — Reconnaissance and Attack Surface Mapping
In Lab 02, you converted a Bug Bounty program policy into:
Structured Scope
Exclusions
Testing Restrictions
Target Priorities
Initial Hypotheses
Research PlanNow you are ready to answer the next question:
What Actually ExistsInside theAuthorized Scope?Your mission in this lab is to transform:
Authorized Scopeinto:
Validated
Classified
Prioritized
Attack SurfaceYou will work through:
Domain Discovery ↓Subdomain Discovery ↓DNS Validation ↓HTTP Validation ↓Application Classification ↓Technology Mapping ↓API Discovery ↓JavaScript Analysis ↓Cloud Signal Analysis ↓Third-Party Separation ↓Attack Surface Mapping ↓PrioritizationMission Information
Section titled “Mission Information”Your Role
Section titled “Your Role”You are operating as a:
Bug Bounty Hunter
Security Researchercontinuing research against the fictional:
NovaCloud Security Research Program
From the previous lab, the primary authorized scope includes:
www.novacloud.test
app.novacloud.test
api.novacloud.test
*.labs.novacloud.test
NovaCloud Android Application
NovaCloud iOS ApplicationYour task is to discover and organize the attack surface without performing vulnerability exploitation.
Mission Objective
Section titled “Mission Objective”By the end of this lab, you should be able to answer:
Which Hosts Exist?
Which Hosts Resolve?
Which Hosts Serve HTTP?
Which Applications Exist?
Which APIs Exist?
Which Technologies Are Used?
Which Assets Look Cloud-Connected?
Which Services Are Third Party?
Which Targets DeserveDeeper Testing?Lab Objectives
Section titled “Lab Objectives”By completing this lab, you will learn how to:
-
perform scope-aware reconnaissance.
-
distinguish passive and active reconnaissance.
-
collect candidate subdomains.
-
normalize discovered assets.
-
detect duplicate assets.
-
validate DNS records.
-
understand A, AAAA and CNAME records.
-
identify wildcard DNS.
-
validate HTTP and HTTPS services.
-
record status codes and redirects.
-
capture page titles.
-
classify applications.
-
identify authentication portals.
-
identify administrative interfaces.
-
identify APIs.
-
inspect JavaScript for endpoint references.
-
identify GraphQL and REST routes.
-
recognize cloud-service signals.
-
separate organizational assets from third parties.
-
identify potentially legacy assets.
-
create an attack-surface inventory.
-
cluster related applications.
-
prioritize targets.
-
convert reconnaissance findings into security hypotheses.
Prerequisites
Section titled “Prerequisites”You should have completed:
Lab 01Build Your ProfessionalBug Bounty Research Environment
Lab 02Bug Bounty ProgramScope Analysis andTarget PrioritizationYou should also understand:
DNS
HTTP
Subdomains
APIs
JavaScript
Basic Command Line
Bug Bounty ScopeLab Deliverables
Section titled “Lab Deliverables”By the end of this lab, create:
01 Recon_Plan.md
02 Subdomain_Inventory.csv
03 DNS_Inventory.csv
04 HTTP_Assets.csv
05 Technology_Inventory.csv
06 JavaScript_Inventory.csv
07 API_Candidates.csv
08 Cloud_Asset_Register.csv
09 Third_Party_Register.csv
10 Attack_Surface_Map.md
11 Asset_Prioritization.csv
12 Recon_Hypotheses.csv
13 Recon_Summary.mdPart 1 — Review Scope Before Recon
Section titled “Part 1 — Review Scope Before Recon”Before running any reconnaissance, reopen:
Scope_Register.csv
Exclusion_Register.csv
Testing_Restrictions.mdConfirm:
Authorized Domains
Wildcard Rules
Excluded Assets
Third-Party Restrictions
Automation LimitsFor NovaCloud:
Maximum Automated Rate:10 Requests per SecondYour recon workflow must remain within that limit.
Part 2 — Create the Recon Plan
Section titled “Part 2 — Create the Recon Plan”Create:
01 Recon_Plan.mdUse:
# Reconnaissance Plan
## Program
NovaCloud Security Research Program
## Objective
Discover, validate and classifythe authorized attack surface.
## In-Scope Assets
- www.novacloud.test- app.novacloud.test- api.novacloud.test- *.labs.novacloud.test
## Exclusions
- support.novacloud.test- status.novacloud.test- careers.novacloud.test- third-party analytics- third-party payment providers- customer-controlled integrations
## Recon Phases
1. Candidate asset collection2. Normalization3. DNS validation4. HTTP validation5. Technology classification6. JavaScript analysis7. API mapping8. Cloud signal analysis9. Third-party separation10. Prioritization
## Safety Controls
- scope filter required- maximum 10 requests per second- low concurrency- no exploitation- no password attacks- no customer data access
## Expected Deliverables
- subdomain inventory- DNS inventory- HTTP inventory- application map- API candidates- cloud assets- target prioritiesPart 3 — Understand Passive Reconnaissance
Section titled “Part 3 — Understand Passive Reconnaissance”Passive reconnaissance uses information already available without aggressively interacting with the target.
Potential sources include:
Certificate Data
Public DNS
Historical URLs
Public Documentation
Application ReferencesThe objective is:
CandidateAsset Collectionnot validation yet.
Part 4 — Understand Active Reconnaissance
Section titled “Part 4 — Understand Active Reconnaissance”Active reconnaissance interacts directly with authorized systems.
Examples:
DNS Resolution
HTTP Requests
Title Collection
Header InspectionActive recon should occur only:
After Scope ValidationPart 5 — Start with Known Assets
Section titled “Part 5 — Start with Known Assets”Your known starting assets are:
www.novacloud.test
app.novacloud.test
api.novacloud.testAdd them immediately to:
02 Subdomain_Inventory.csvUse:
| Hostname | Source | Scope | Status | Notes |
|---|
Example:
| www.novacloud.test | Program scope | In Scope | Known | Marketing site |
| app.novacloud.test | Program scope | In Scope | Known | Main application |
| api.novacloud.test | Program scope | In Scope | Known | API |
Part 6 — Discover Candidate Lab Subdomains
Section titled “Part 6 — Discover Candidate Lab Subdomains”The wildcard:
*.labs.novacloud.testmay contain training hosts.
In the lab environment, assume your discovery process identifies:
auth.labs.novacloud.test
files.labs.novacloud.test
legacy.labs.novacloud.test
api-v1.labs.novacloud.test
graphql.labs.novacloud.test
admin.labs.novacloud.test
static.labs.novacloud.testRecord them as:
Candidateuntil validated.
Part 7 — Candidate Does Not Mean Live
Section titled “Part 7 — Candidate Does Not Mean Live”Your inventory may now look like:
Candidate Asset ↓Needs ValidationDo not assume:
Discovered =LivePart 8 — Normalize Hostnames
Section titled “Part 8 — Normalize Hostnames”Normalize:
AUTH.LABS.NOVACLOUD.TEST
auth.labs.novacloud.test.
https://auth.labs.novacloud.test/into the hostname:
auth.labs.novacloud.testNormalization improves:
Deduplication
Comparison
Inventory QualityPart 9 — Deduplicate Assets
Section titled “Part 9 — Deduplicate Assets”If the same host appears from:
Certificate Source
Historical Source
Application JavaScriptstore:
One Assetbut preserve:
Multiple SourcesExample:
| Hostname | Sources |
|---|---|
| api.novacloud.test | Scope; JavaScript; Historical |
Part 10 — Preserve Provenance
Section titled “Part 10 — Preserve Provenance”Do not record only:
api-v1.labs.novacloud.testRecord:
Source:Historical API referenceThis helps determine:
Confidence
Age
Research RelevancePart 11 — DNS Validation
Section titled “Part 11 — DNS Validation”Now validate candidate hostnames through DNS.
For each host record:
A Record
AAAA Record
CNAME
Resolution StatusCreate:
03 DNS_Inventory.csvwith:
| Hostname | A/AAAA | CNAME | Status | Notes |
|---|
Part 12 — Example DNS Results
Section titled “Part 12 — Example DNS Results”Assume:
app.novacloud.test ↓192.0.2.20
api.novacloud.test ↓192.0.2.30
files.labs.novacloud.test ↓storage.novacloud-cloud.test
legacy.labs.novacloud.test ↓192.0.2.40Record them.
Part 13 — Understand A Records
Section titled “Part 13 — Understand A Records”An A record maps:
Hostname ↓IPv4 AddressIt helps identify:
Wherethe Host Resolvesbut not necessarily:
Who Ownsthe Entire IP RangePart 14 — Understand CNAME Records
Section titled “Part 14 — Understand CNAME Records”A CNAME may reveal relationships such as:
files.labs.novacloud.test ↓cloud-storage-service.testThis may indicate:
Cloud Storage
CDN
SaaS Platformbut does not automatically authorize testing of the destination service.
Part 15 — Identify Wildcard DNS
Section titled “Part 15 — Identify Wildcard DNS”Generate a clearly nonexistent training hostname such as:
random-8f3d2.labs.novacloud.testCheck whether it resolves.
If:
random-8f3d2.labs.novacloud.test
random-99ac7.labs.novacloud.testboth resolve identically, record:
Possible Wildcard DNSPart 16 — Why Wildcard Detection Matters
Section titled “Part 16 — Why Wildcard Detection Matters”Without wildcard detection you might believe:
Every Random NameIs a Real Subdomainleading to:
False Assets
Duplicate Work
Recon NoisePart 17 — Mark Resolution Status
Section titled “Part 17 — Mark Resolution Status”Use:
Resolved
Unresolved
Wildcard
UnknownDo not delete unresolved hosts immediately.
Historical context may still matter later.
Part 18 — HTTP Validation
Section titled “Part 18 — HTTP Validation”For each resolved authorized host, determine:
HTTP?
HTTPS?
Redirect?
Authentication?
Application?Create:
04 HTTP_Assets.csvwith:
| URL | Status | Title | Redirect | Type | Notes |
|---|
Part 19 — Example HTTP Results
Section titled “Part 19 — Example HTTP Results”Assume:
| URL | Status | Title |
|---|---|---|
| www.novacloud.test | 200 | NovaCloud |
| app.novacloud.test | 200 | NovaCloud Workspace |
| api.novacloud.test | 401 | NovaCloud API |
| auth.labs.novacloud.test | 200 | NovaCloud Identity |
| admin.labs.novacloud.test | 403 | Administration |
| legacy.labs.novacloud.test | 200 | NovaCloud Legacy Portal |
| static.labs.novacloud.test | 200 | Static Assets |
Part 20 — Do Not Ignore 401
Section titled “Part 20 — Do Not Ignore 401”A response such as:
401 Unauthorizedmay identify:
Protected API
Authentication Gateway
Management InterfaceIt may still be high-value attack surface.
Part 21 — Do Not Ignore 403
Section titled “Part 21 — Do Not Ignore 403”Likewise:
403 Forbiddenmay reveal:
RestrictedAdministrativeSurfaceDo not attempt access-control bypasses in this recon lab.
Simply record the asset.
Part 22 — Capture Redirects
Section titled “Part 22 — Capture Redirects”Example:
login.novacloud.test ↓302 ↓auth.labs.novacloud.testRecord:
Original Host
Final Destination
RelationshipPart 23 — Page Title Analysis
Section titled “Part 23 — Page Title Analysis”Titles help classify hosts.
Examples:
NovaCloud Workspace ↓Main Application
NovaCloud Identity ↓Authentication
Administration ↓Admin
API Documentation ↓Developer/API SurfacePart 24 — Classify HTTP Assets
Section titled “Part 24 — Classify HTTP Assets”Use:
Main Application
Authentication
API
Admin
Files
Static
Developer
Legacy
UnknownPart 25 — Identify High-Value Application Types
Section titled “Part 25 — Identify High-Value Application Types”High-interest application types may include:
Authentication
API
Administration
File Management
Developer Portal
Legacy Applicationbecause they often expose:
Security BoundariesPart 26 — Technology Fingerprinting
Section titled “Part 26 — Technology Fingerprinting”Next, determine useful technology context.
Possible signals include:
HTTP Headers
HTML
JavaScript
Cookies
DNS CNAMEs
Error PagesPart 27 — Create Technology Inventory
Section titled “Part 27 — Create Technology Inventory”Create:
05 Technology_Inventory.csvwith:
| Asset | Technology | Evidence | Confidence | Notes |
|---|
Example:
| app.novacloud.test | React | JS bundle structure | Medium | SPA |
| api.novacloud.test | REST API | JSON responses | High | Auth required |
| graphql.labs.novacloud.test | GraphQL | Endpoint behavior | High | API surface |
| legacy.labs.novacloud.test | Older web framework | Headers | Medium | Needs deeper review |
Part 28 — Do Not Treat Technology as Vulnerability
Section titled “Part 28 — Do Not Treat Technology as Vulnerability”Finding:
React
Nginx
Node.js
CloudFrontdoes not prove:
VulnerabilityTechnology provides:
Contextfor later hypothesis development.
Part 29 — Record Confidence
Section titled “Part 29 — Record Confidence”Use:
High
Medium
LowExample:
Technology:Cloud CDN
Evidence:CNAME
Confidence:HighPart 30 — Identify Authentication Surface
Section titled “Part 30 — Identify Authentication Surface”From recon you may discover:
auth.labs.novacloud.testRecord features such as:
Login
MFA
Password Reset
SSOif visible through normal navigation.
Do not test them yet.
Part 31 — Authentication Surface Register
Section titled “Part 31 — Authentication Surface Register”Add observations such as:
Asset:auth.labs.novacloud.test
Function:Identity
Features:LoginPassword Reset
Priority:HighPart 32 — Identify API Surface
Section titled “Part 32 — Identify API Surface”Look for:
api.novacloud.test
/api/
graphql
developer documentationRecord each candidate.
Part 33 — Create API Candidate Register
Section titled “Part 33 — Create API Candidate Register”Create:
07 API_Candidates.csvwith:
| Host | Endpoint | Type | Source | Auth | Status |
|---|
Part 34 — Example API Candidates
Section titled “Part 34 — Example API Candidates”Assume application traffic reveals:
/api/v2/profile
/api/v2/projects
/api/v2/files
/api/v2/invitations
/graphqlRecord them.
Part 35 — API Candidate Is Not a Vulnerability
Section titled “Part 35 — API Candidate Is Not a Vulnerability”At this stage:
Endpoint Discovered ↓Map ItDo not automatically:
Modify IDs
Call Admin Actions
Exploit ParametersThat comes in later testing labs.
Part 36 — Identify API Versions
Section titled “Part 36 — Identify API Versions”Suppose you discover:
/api/v1/
and
/api/v2/This is useful because:
Legacy Version
vs
Current Versionmay later warrant comparison.
Part 37 — Record API Relationships
Section titled “Part 37 — Record API Relationships”Example:
app.novacloud.test ↓usesapi.novacloud.testand:
mobile application ↓usesapi.novacloud.testThese relationships matter later.
Part 38 — JavaScript Reconnaissance
Section titled “Part 38 — JavaScript Reconnaissance”Modern web applications often expose important architecture through JavaScript.
Collect application JavaScript files from:
AuthorizedApplicationsCreate:
06 JavaScript_Inventory.csvwith:
| Application | Script | Hash | First Seen | Notes |
|---|
Part 39 — Why JavaScript Matters
Section titled “Part 39 — Why JavaScript Matters”JavaScript may contain references to:
API Endpoints
Feature Flags
Cloud Storage
WebSocket URLs
GraphQL
Internal Route NamesPart 40 — Example JavaScript Findings
Section titled “Part 40 — Example JavaScript Findings”Assume you find references to:
/api/v2/files
/api/v2/share
/graphql
/ws/notifications
/files/presign
/admin/exportRecord each as:
CandidateEndpointPart 41 — Hidden Does Not Mean Vulnerable
Section titled “Part 41 — Hidden Does Not Mean Vulnerable”A string such as:
/admin/exportinside JavaScript does not mean:
Normal UsersCan Access ItIt simply creates a later authorization hypothesis.
Part 42 — JavaScript Hashing
Section titled “Part 42 — JavaScript Hashing”Record a hash for major scripts.
Example:
app.js ↓HASH-ALater:
HASH-Bmeans:
ApplicationChangedThis will support future change-based hunting.
Part 43 — Identify WebSocket Surface
Section titled “Part 43 — Identify WebSocket Surface”Suppose JavaScript references:
wss://api.novacloud.test/ws/notificationsRecord:
WebSocket Endpointand its likely purpose:
NotificationsNo security testing is required yet.
Part 44 — Identify GraphQL
Section titled “Part 44 — Identify GraphQL”Suppose:
graphql.labs.novacloud.testor:
/graphqlis found.
Record:
GraphQL APIfor later testing.
Part 45 — Cloud Signal Analysis
Section titled “Part 45 — Cloud Signal Analysis”Cloud-related indicators may appear through:
DNS CNAME
JavaScript
Storage URLs
API Responses
HeadersPart 46 — Create Cloud Asset Register
Section titled “Part 46 — Create Cloud Asset Register”Create:
08 Cloud_Asset_Register.csvwith:
| Asset | Provider/Type | Signal | Scope | Notes |
|---|
Part 47 — Example Cloud Signals
Section titled “Part 47 — Example Cloud Signals”Assume you observe:
files.novacloud.test ↓Object Storage
assets.novacloud.test ↓CDN
functions.labs.novacloud.test ↓ServerlessRecord the relationship.
Part 48 — Do Not Expand Cloud Scope Automatically
Section titled “Part 48 — Do Not Expand Cloud Scope Automatically”If:
files.novacloud.testpoints to:
storage.provider.testdo not automatically test:
storage.provider.testas a separate target.
First classify:
Target-Controlled Alias
Third-Party Service
UnknownPart 49 — Identify Signed URL Functionality
Section titled “Part 49 — Identify Signed URL Functionality”Suppose application JavaScript references:
/files/presignThis creates a future hypothesis around:
File Authorization
Signed URLs
Object OwnershipBut do not test it yet.
Part 50 — Identify Third-Party Services
Section titled “Part 50 — Identify Third-Party Services”Modern applications commonly load:
Analytics
Support
Payments
Authentication
Monitoring
CDNCreate:
09 Third_Party_Register.csvwith:
| Service | Domain | Purpose | Scope | Action |
|---|
Part 51 — Example Third-Party Classification
Section titled “Part 51 — Example Third-Party Classification”| Service | Purpose | Scope | Action |
|---|---|---|---|
| analytics.vendor.test | Analytics | Out of Scope | Exclude |
| payment.vendor.test | Payments | Out of Scope | Exclude |
| support.vendor.test | Support | Out of Scope | Exclude |
Part 52 — Why Third-Party Separation Matters
Section titled “Part 52 — Why Third-Party Separation Matters”Without separation, recon tools may:
Follow Links
Collect URLs
Send Requeststo systems outside authorization.
Your workflow should prevent this.
Part 53 — Identify Legacy Assets
Section titled “Part 53 — Identify Legacy Assets”The discovered:
legacy.labs.novacloud.testmay be particularly interesting because it represents:
Older ApplicationRecord:
Legacyas a classification.
Do not assume:
Legacy =VulnerablePart 54 — Legacy Security Questions
Section titled “Part 54 — Legacy Security Questions”Later hypotheses may include:
Does Legacy APIUse DifferentAuthorization?
Does It SupportOlder Authentication?
Does It ExposeRemoved Features?Part 55 — Identify Administrative Surface
Section titled “Part 55 — Identify Administrative Surface”The host:
admin.labs.novacloud.testreturns:
403Record:
Admin Interface
Restricted
High Security RelevanceDo not attempt bypasses during recon.
Part 56 — Identify File Surface
Section titled “Part 56 — Identify File Surface”The product’s core business includes:
Cloud File StorageTherefore assets and endpoints involving:
files
upload
download
share
presigndeserve increased priority.
Part 57 — Business Context Meets Recon
Section titled “Part 57 — Business Context Meets Recon”Recon alone tells you:
files.labs.novacloud.testBusiness context tells you:
Private File Storage =High-ValueSecurity BoundaryPart 58 — Build Asset Relationships
Section titled “Part 58 — Build Asset Relationships”Create relationships such as:
app.novacloud.test ↓ usesapi.novacloud.test
app.novacloud.test ↓ redirects authentication toauth.labs.novacloud.test
api.novacloud.test ↓ servesfile workflows
files.labs.novacloud.test ↓ maps tocloud storagePart 59 — Create Attack Surface Map
Section titled “Part 59 — Create Attack Surface Map”Create:
10 Attack_Surface_Map.mdExample:
NovaCloud│├── Public Web│ └── www.novacloud.test│├── Main Application│ └── app.novacloud.test│ ├── Authentication│ ├── Projects│ ├── Files│ ├── Sharing│ └── Organizations│├── APIs│ ├── api.novacloud.test│ ├── /api/v1/│ ├── /api/v2/│ └── /graphql│├── Identity│ └── auth.labs.novacloud.test│├── Administrative│ └── admin.labs.novacloud.test│├── Legacy│ └── legacy.labs.novacloud.test│├── File Infrastructure│ └── files.labs.novacloud.test│└── Third Parties ├── Analytics ├── Payments └── SupportPart 60 — Create Asset Clusters
Section titled “Part 60 — Create Asset Clusters”Group related assets.
Identity Cluster
Section titled “Identity Cluster”auth.labs.novacloud.test
login functionality
password resetApplication Cluster
Section titled “Application Cluster”app.novacloud.test
api.novacloud.testFile Cluster
Section titled “File Cluster”files.labs.novacloud.test
/files/presign
/api/v2/filesLegacy Cluster
Section titled “Legacy Cluster”legacy.labs.novacloud.test
/api/v1/Part 61 — Why Clustering Matters
Section titled “Part 61 — Why Clustering Matters”Clustering helps identify:
Shared Trust
Shared Authentication
Shared Objects
Shared Business Logicand reduces random testing.
Part 62 — Prioritize Assets
Section titled “Part 62 — Prioritize Assets”Create:
11 Asset_Prioritization.csvwith:
| Asset | Function | Auth | Sensitive Data | Complexity | Priority |
|---|---|---|---|---|---|
| app.novacloud.test | Main app | High | High | High | P1 |
| api.novacloud.test | API | High | High | High | P1 |
| auth.labs.novacloud.test | Identity | High | High | Medium | P1 |
| files.labs.novacloud.test | Files | High | High | Medium | P1 |
| legacy.labs.novacloud.test | Legacy | Medium | Medium | High | P2 |
| graphql.labs.novacloud.test | API | High | High | High | P2 |
| admin.labs.novacloud.test | Admin | High | High | High | P2 |
| www.novacloud.test | Marketing | Low | Low | Low | P3 |
Part 63 — Why Identity Is P1
Section titled “Part 63 — Why Identity Is P1”Authentication controls:
Who BecomesWhich UserWeaknesses here may affect:
Account Security
Session Security
RecoveryPart 64 — Why Files Are P1
Section titled “Part 64 — Why Files Are P1”NovaCloud’s core function is:
PrivateFile StoragePotential boundaries include:
User A ↓User B
Tenant A ↓Tenant B
Private ↓SharedPart 65 — Why API Is P1
Section titled “Part 65 — Why API Is P1”The API likely controls:
Objects
Roles
Files
Projects
Sharingand represents the primary:
Server-SideAuthorization LayerPart 66 — Why Legacy Is P2
Section titled “Part 66 — Why Legacy Is P2”Legacy systems may contain:
Older Architecture
Old API Versions
Different Controlsbut the main application remains the highest-value starting point.
Part 67 — Prioritize Features
Section titled “Part 67 — Prioritize Features”Inside the main app, rank:
| Feature | Priority |
|---|---|
| Authentication | P1 |
| Files | P1 |
| Sharing | P1 |
| Organizations | P1 |
| Projects | P1 |
| Billing | P2 |
| Search | P2 |
| Static content | P3 |
Part 68 — Convert Recon into Hypotheses
Section titled “Part 68 — Convert Recon into Hypotheses”Now turn observations into:
Security QuestionsCreate:
12 Recon_Hypotheses.csvPart 69 — Hypothesis 1
Section titled “Part 69 — Hypothesis 1”Observation:
/files/presignHypothesis:
A user may be ableto request a signed URLfor another user's fileif object ownership is notvalidated server-side.Priority:
HighPart 70 — Hypothesis 2
Section titled “Part 70 — Hypothesis 2”Observation:
/api/v1/and/api/v2/Hypothesis:
Authorization controlsmay differ betweenlegacy API v1and current API v2.Part 71 — Hypothesis 3
Section titled “Part 71 — Hypothesis 3”Observation:
admin.labs.novacloud.testHypothesis:
Administrative APIfunctions may rely onfrontend visibilityrather than server-siderole enforcement.Part 72 — Hypothesis 4
Section titled “Part 72 — Hypothesis 4”Observation:
/graphqlHypothesis:
GraphQL object or fieldauthorization may exposedata not available throughthe normal interface.Part 73 — Hypothesis 5
Section titled “Part 73 — Hypothesis 5”Observation:
auth.labs.novacloud.testHypothesis:
Authentication stateor password recoverymay contain weaker controlsthan the primary login flow.Part 74 — Hypothesis 6
Section titled “Part 74 — Hypothesis 6”Observation:
files + share endpointsHypothesis:
Revoked file-sharing linksmay remain usable afteraccess is removed.Part 75 — Hypothesis 7
Section titled “Part 75 — Hypothesis 7”Observation:
WebSocket notificationsHypothesis:
Users may be able tosubscribe to notificationchannels belonging toanother account or tenant.Part 76 — Hypothesis 8
Section titled “Part 76 — Hypothesis 8”Observation:
legacy.labs.novacloud.testHypothesis:
Legacy workflows may exposefeatures no longer visiblein the current application.Part 77 — Hypothesis Quality
Section titled “Part 77 — Hypothesis Quality”Avoid:
Test GraphQLPrefer:
A standard user maybe able to query fieldsbelonging to another userif object authorizationis not enforced at theresolver layer.Part 78 — Create the Initial Research Queue
Section titled “Part 78 — Create the Initial Research Queue”Your highest-priority follow-up queue may be:
1. Main application mapping
2. API object mapping
3. Authentication flow mapping
4. File workflow mapping
5. Sharing workflow mapping
6. Organization and tenant mapping
7. Legacy API comparison
8. GraphQL mappingPart 79 — Recon Does Not End Here
Section titled “Part 79 — Recon Does Not End Here”Reconnaissance should continue as you use the application.
You may discover new assets through:
Authenticated Features
API Responses
JavaScript Changes
Mobile Application
Cloud IntegrationsPart 80 — Record First Seen
Section titled “Part 80 — Record First Seen”For every asset record:
First SeenLater this enables:
Change-Based ReconPart 81 — Record Last Seen
Section titled “Part 81 — Record Last Seen”Also maintain:
Last Seenso you can identify:
Removed Assets
Inactive Assets
Changed InfrastructurePart 82 — Create Recon Summary
Section titled “Part 82 — Create Recon Summary”Create:
13 Recon_Summary.mdUse:
# Reconnaissance Summary
## Program
NovaCloud Security Research Program
## Recon Objective
Identify and classify theauthorized external attack surface.
## Key Assets Identified
### P1
- app.novacloud.test- api.novacloud.test- auth.labs.novacloud.test- files.labs.novacloud.test
### P2
- legacy.labs.novacloud.test- graphql.labs.novacloud.test- admin.labs.novacloud.test
### P3
- www.novacloud.test- static.labs.novacloud.test
## Key Attack Surfaces
- authentication- APIs- private files- sharing- organizations- GraphQL- legacy APIs- administrative functions
## Cloud Signals
- file storage service- CDN/static infrastructure
## Third Parties
- analytics- payment provider- support provider
These services are excludedfrom active testing.
## Highest-Priority Research Questions
1. Is object authorization enforced for files and projects?
2. Are tenant boundaries enforced?
3. Are signed file URLs generated only after authorization?
4. Are legacy and current API authorization controls consistent?
5. Are administrative functions protected server-side?
6. Does authentication state remain secure across login, reset and logout?
## Next Research Phase
Application and API mapping.Part 83 — Common Recon Mistake: Collect Everything
Section titled “Part 83 — Common Recon Mistake: Collect Everything”Avoid:
Millions of URLs
Thousands of Screenshots
Huge Raw Outputwithout:
Classification
Context
PriorityPart 84 — Common Recon Mistake: Ignore Scope During Discovery
Section titled “Part 84 — Common Recon Mistake: Ignore Scope During Discovery”Discovery may reveal:
vendor.testDo not continue testing because:
The TargetUses ItPart 85 — Common Recon Mistake: Assume Subdomain Names
Section titled “Part 85 — Common Recon Mistake: Assume Subdomain Names”A host named:
internal.labs.novacloud.testdoes not prove:
Internal NetworkIt is simply a name.
Validate actual behavior.
Part 86 — Common Recon Mistake: Ignore 401 and 403
Section titled “Part 86 — Common Recon Mistake: Ignore 401 and 403”Protected services can be:
Very ImportantAttack Surfaceeven though recon cannot access them directly.
Part 87 — Common Recon Mistake: Technology Hunting
Section titled “Part 87 — Common Recon Mistake: Technology Hunting”Do not spend hours determining exact software versions if it does not help answer:
What ShouldI Test?Part 88 — Common Recon Mistake: Scan Entire IP Range
Section titled “Part 88 — Common Recon Mistake: Scan Entire IP Range”If:
app.novacloud.testresolves into a cloud-provider IP, do not scan:
Entire Provider RangePart 89 — Common Recon Mistake: Treat API Discovery as Exploitation
Section titled “Part 89 — Common Recon Mistake: Treat API Discovery as Exploitation”Finding:
/api/admin/exportmeans:
Create Hypothesisnot:
ExecuteImmediatelyPart 90 — Common Recon Mistake: Ignore Business Context
Section titled “Part 90 — Common Recon Mistake: Ignore Business Context”A host called:
files.novacloud.testis particularly important because NovaCloud’s business includes:
PrivateCloud File StorageRecon should connect:
Technical Asset +Business FunctionPart 91 — Common Recon Mistake: No Relationship Mapping
Section titled “Part 91 — Common Recon Mistake: No Relationship Mapping”Do not store assets as disconnected lines.
Instead map:
Application ↓API ↓Identity ↓File Service ↓Cloud StoragePart 92 — Recon Quality Checklist
Section titled “Part 92 — Recon Quality Checklist”Before finishing the lab, confirm:
Scope Checked
Candidates Normalized
Duplicates Removed
DNS Validated
Wildcard DNS Considered
HTTP Validated
Redirects Recorded
Titles Recorded
Technologies Classified
APIs Identified
JavaScript Reviewed
Cloud Signals Recorded
Third Parties Separated
Assets Prioritized
Hypotheses CreatedPart 93 — Lab Success Criteria
Section titled “Part 93 — Lab Success Criteria”You have successfully completed this lab when you can explain:
What Exists
What Resolves
What Is Live
What Each Asset Does
How Assets Relate
Which Assets Are Third Party
Which Assets Are High Priority
What Security QuestionsShould Be Tested NextPortfolio Deliverables
Section titled “Portfolio Deliverables”Keep:
01 Recon_Plan.md
02 Subdomain_Inventory.csv
03 DNS_Inventory.csv
04 HTTP_Assets.csv
05 Technology_Inventory.csv
06 JavaScript_Inventory.csv
07 API_Candidates.csv
08 Cloud_Asset_Register.csv
09 Third_Party_Register.csv
10 Attack_Surface_Map.md
11 Asset_Prioritization.csv
12 Recon_Hypotheses.csv
13 Recon_Summary.mdPortfolio Structure
Section titled “Portfolio Structure”Lab 03 — Reconnaissance and Attack Surface Mapping│├── Recon Plan├── Subdomain Inventory├── DNS Inventory├── HTTP Asset Register├── Technology Inventory├── JavaScript Inventory├── API Candidates├── Cloud Asset Register├── Third-Party Register├── Attack Surface Map├── Asset Prioritization├── Recon Hypotheses└── Recon SummaryKnowledge Check
Section titled “Knowledge Check”-
What is the purpose of reconnaissance?
-
Why must scope be reviewed before recon begins?
-
What is passive reconnaissance?
-
What is active reconnaissance?
-
What is a candidate asset?
-
Why should assets be normalized?
-
Why is deduplication important?
-
What is data provenance?
-
What is DNS validation?
-
What is an A record?
-
What is a CNAME?
-
What is wildcard DNS?
-
Why should unresolved assets sometimes be retained?
-
What is HTTP validation?
-
Why should 401 responses not be ignored?
-
Why should 403 responses not be ignored?
-
Why are redirects useful?
-
What can page titles reveal?
-
What is technology fingerprinting?
-
Why is technology not automatically a vulnerability?
-
Why is confidence useful when identifying technology?
-
Why are authentication systems high-value attack surfaces?
-
How can APIs be discovered?
-
Why should API versions be recorded?
-
What can JavaScript reveal?
-
Why should JavaScript files be hashed?
-
What is a WebSocket?
-
What is GraphQL?
-
What are cloud signals?
-
Why should cloud-provider infrastructure not automatically be tested?
-
What is a third-party asset?
-
Why are third-party services separated from the attack surface?
-
Why can legacy systems be interesting?
-
Why does legacy not automatically mean vulnerable?
-
Why are file services important in NovaCloud?
-
What is asset relationship mapping?
-
What is an attack-surface map?
-
What is application clustering?
-
Why is asset prioritization important?
-
Why is research priority different from vulnerability severity?
-
Why is business context useful during recon?
-
What is a reconnaissance hypothesis?
-
Why should recon create hypotheses?
-
Why should first-seen timestamps be recorded?
-
Why should last-seen timestamps be recorded?
-
Why should huge recon datasets be avoided?
-
Why should IP ranges not be scanned blindly?
-
Why should endpoint discovery remain separate from exploitation?
-
What should a recon summary contain?
-
What defines successful attack-surface mapping?
Key Takeaways
Section titled “Key Takeaways”Reconnaissance is not:
FindMaximum Numberof AssetsIt is:
Discover ↓Validate ↓Understand ↓Classify ↓PrioritizeRemember:
Discovered ≠LiveLive ≠InterestingInteresting ≠VulnerableCloud Hosted ≠Cloud VulnerabilityRelated Service ≠Authorized TargetHidden Endpoint ≠Authorization FailureA professional reconnaissance workflow produces:
Scope ↓Assets ↓DNS ↓HTTP ↓Technology ↓Applications ↓APIs ↓Cloud ↓Relationships ↓Priority ↓HypothesesThe objective is:
Attack SurfaceIntelligencenot:
Recon NoiseCareer Connection
Section titled “Career Connection”Reconnaissance and attack-surface mapping are important for:
Bug Bounty Hunters
Security Researchers
Penetration Testers
Red Teamers
Application Security Engineers
Attack Surface Management AnalystsDuring an interview, you should be able to explain:
I begin reconnaissancewith the authorized scoperather than with discovery tools.
Candidate assets are collected,normalized, deduplicated andvalidated through DNS beforeI interact with them over HTTP.
For live assets, I captureapplication type, redirects,technology context and businessfunction.
I then map APIs, JavaScriptreferences, cloud relationshipsand third-party dependencies.
Rather than treating every assetequally, I cluster related systemsand prioritize them according toauthentication, sensitive data,security boundaries and businessimportance.
The output of reconnaissance isnot a vulnerability list.
It is a validated attack-surfacemap and a prioritized set ofsecurity hypotheses for deepermanual testing.What’s Next?
Section titled “What’s Next?”➡️ Next: Lab 04 — Web Application Mapping and Security Boundary Analysis
You now have:
Validated Assets
HTTP Applications
API Candidates
Technology Context
Cloud Signals
Third-Party Boundaries
Research PrioritiesThe next step is to move inside the highest-priority application and understand:
How It Actually WorksIn the next lab, you will map:
Registration
Login
Sessions
User Roles
Application Features
Objects
Files
Projects
Sharing
Organizations
Business Workflows
HTTP Requests
API Calls
Security BoundariesYou will build:
Application Map
User Journey
Feature Inventory
Object Register
Role Matrix
Request Register
Security Boundary Map
Authorization Matrix
Initial Testing HypothesesYou will move from:
I KnowWhat Assets Existto:
I Understand
How the Application Works
Who Can Do What
Which Objects Exist
and
Where Security ControlsMust Be Enforced➡️ Next: Lab 04 — Web Application Mapping and Security Boundary Analysis