Chapter 3: Vulnerability Discovery and Analysis

A penetration test lives or dies on the quality of its discovery phase. Exploitation gets the attention, but

exploitation without disciplined discovery is guessing: you fire exploits at whatever responds, miss the real

weaknesses, and report noise that the client cannot act on. Vulnerability discovery is the craft of finding

weaknesses systematically, proving which ones are real, and ranking them so the exploitation phase spends its

limited time on the findings that actually lead somewhere. The exam tests this as judgment, not as tool trivia.

You will be given scan output, a half-finished assessment, or a finding that looks critical and asked what to do

next. The right answer is almost always the disciplined one: verify before you claim, read the evidence before

you rank, and understand what your tools can and cannot see.

1. Vulnerability scanning types

Scanning is not one activity. The scan type you choose decides what you can see, how much you can trust the

results, and what you might break. A penetration tester picks scan types the way a doctor picks tests: matched

to the question being asked, with full awareness of each method's blind spots.

1.1 Credentialed vs non-credentialed scans

A non-credentialed scan talks to a target from the outside, the way an unauthenticated attacker would. It probes

ports, reads banners, and infers software versions from what the target volunteers. It is safe, easy to arrange,

and realistic for the external attacker's view. Its weakness is inference: banners lie. Vendors backport security

fixes without changing version banners, custom builds report misleading versions, and a service can be

configured to hide its version entirely. A non-credentialed scan reports what the target claims to be, not what it

is.

A credentialed scan logs in with valid credentials and inspects the system directly: installed packages and patch

levels, registry or configuration values, running services, local security policy. It sees the truth instead of the

advertisement, which makes it far more accurate and far better at confirming that a patch is actually present.

The cost is access: somebody must provision credentials, manage them securely, and grant the scanner enough

privilege to read system state without handing it the keys to the kingdom. Credentialed scanning also changes

the trust picture: the scan account itself becomes a privileged credential that must be protected, rotated, and

removed when the assessment ends.

Definition

Credentialed scan. A vulnerability scan that authenticates to target systems with valid credentials and

inspects installed software, patch levels, and configurations directly, rather than inferring them from network

responses.

Definition

Non-credentialed scan. A vulnerability scan performed without logging in to targets, inferring vulnerabilities

from externally observable behavior such as banners, responses, and open ports.

Exam tip

When a scenario says a scanner reported a vulnerability that a patch record says is fixed, the first suspect is a

non-credentialed scan reading a stale banner. When a scenario says the scan account's password expired

mid-assessment, the findings after that point are effectively non-credentialed, even if the scan was configured

as credentialed. The exam loves that quiet downgrade.

Figure 10: Credentialed vs non-credentialed scan - what each method sees on the same target, and where banner-based errors come from

(illustrated)

1.2 Agent-based vs agentless scanning

Agent-based scanning installs a small agent on each host. The agent collects vulnerability data locally and

continuously, reports back on a schedule, and keeps working when the host is off the corporate network, which

is exactly when laptops accumulate unpatched software. Agents give you coverage of roaming and remote

machines and reduce the blast of network traffic that a scan window creates. Their costs are deployment and

maintenance: somebody installs the agent everywhere, updates it, and troubleshoots the hosts where it stops

reporting.

Agentless scanning needs no software on the target. The scanner reaches out over the network, authenticates,

and inspects remotely. It is simpler to start and leaves no footprint on the host, but it only sees hosts that are

reachable during the scan window, it generates more network traffic, and it depends entirely on network access

and working credentials at scan time. A laptop that is powered off during the window is simply not assessed.

Core concept

Every scan method trades accuracy against reach against effort. Credentialed beats non-credentialed on

accuracy. Agents beat agentless on coverage of machines that move. Agentless beats agents on deployment

simplicity. There is no universally best scan, only the right scan for the asset, the window, and the constraint in

front of you. Exam questions that describe a constraint (a laptop fleet, a scan window, a fragile network) are

really asking you to apply this trade-off.

1.3 Network, web, and cloud scans

Network scans map hosts, ports, and services, then match what they find against vulnerability signatures. They

answer the infrastructure question: what is exposed, and what known flaws does it carry? Web scans go deeper

on one application: they crawl the site, map its pages and parameters, and test inputs for web flaws such as

injection and cross-site scripting. A web scan that cannot authenticate, handle session tokens, or reach pages

behind multi-step workflows will miss the application's most important surfaces. Cloud scans do not probe ports

at all in the traditional sense; they call provider APIs and read configurations, comparing them against

benchmarks. A cloud scan answers the configuration question: which buckets are public, which security groups

are open, which identities are over-privileged?

A tester at CertCrack.com planning an assessment of the company's public storefront would run all three, in

order: a network scan to map the exposed estate, a web scan of the storefront application itself with

authenticated sessions, and a cloud configuration review of the account hosting it. Each scan type answers a

question the others cannot ask.

Check yourself

CertCrack.com's scanner reports that a server is vulnerable to a flaw fixed two years ago, but the systems team

shows a patch record proving the fix was applied last month. The scan ran without credentials. What most

likely happened, and what single action best resolves the dispute?

Answer: The non-credentialed scan most likely read a stale banner, since the vendor backported the fix without

changing the reported version. A credentialed rescan of that host settles it: it reads the installed package

directly instead of trusting the banner.

2. SAST and DAST

Static and dynamic testing see different halves of an application. Confusing them is one of the exam's favorite

traps, because their names sound similar and their outputs look similar, but they find different flaws at different

times.

2.1 SAST: reading code without running it

Static application security testing (SAST) analyzes source code, bytecode, or binaries without executing the

program. It traces data flow from untrusted inputs (sources) to dangerous operations (sinks) and flags patterns

that look like injection, insecure cryptography, hardcoded secrets, or unsafe deserialization. SAST runs early, in

the development pipeline, before the code ever reaches a running environment. It finds flaws developers can fix

while the code is still in front of them, and it sees code paths that a running test might never reach, including

error handlers and rarely used branches.

SAST's weakness is that it reasons about code, not behavior. It flags patterns that look dangerous but are safe in

context, because a validation routine elsewhere neutralizes the input. It also misses flaws that only exist at

runtime: configuration mistakes, authentication logic that depends on deployment settings, and business-logic

flaws that no pattern can express. A SAST report is a list of candidates, and every candidate needs a human to

decide whether it is real.

Definition

SAST (static application security testing). Analysis of source code, bytecode, or binaries without executing

the program, tracing data flow from untrusted inputs to dangerous operations to find flaws early in

development.

2.2 DAST: attacking the running application

Dynamic application security testing (DAST) tests the running application the way an attacker would: it sends

requests, observes responses, and looks for evidence of flaws. It finds what SAST cannot see, because it sees the

application as deployed, with its real configuration, real authentication, and real data handling. A DAST finding

comes with proof in the form of a request and a response, which makes it easier to confirm and harder to

dismiss.

DAST's weakness is coverage. It can only test what it can reach. Pages behind authentication, multi-step

workflows, and single-page application states that the crawler never triggers are invisible to it. And DAST checks

range from safe to intrusive: a safe check reads banners and error messages, while an intrusive check sends

payloads that attempt injection, manipulate parameters, or trigger error conditions. Intrusive checks can modify

data, lock accounts, or disrupt a service, which is why they belong only in agreed test windows against

non-production targets or explicitly authorized production systems, never as a surprise against a live service.

Definition

DAST (dynamic application security testing). Testing of a running application by sending requests and

analyzing responses, finding flaws as they appear in the deployed system, including configuration and

authentication issues that code analysis cannot see.

Exam tip

If a question describes a flaw found by reading code before deployment, the answer is SAST. If it describes a

flaw found by sending requests to a running application, the answer is DAST. If it describes a flaw that only

appears when the application runs with its production configuration, DAST is the only method that could have

found it, because SAST never sees the deployment.

2.3 Pipeline placement and crawl gaps

SAST belongs early in the pipeline, on every commit or pull request, where its findings are cheapest to fix and its

false positives cost a developer minutes rather than an incident. DAST belongs later, against a deployed test

environment, on a schedule or before release, where it validates the assembled application. A mature program

runs both, because each covers the other's blind spots, and adds software composition analysis for third-party

libraries, which neither SAST nor DAST evaluates well.

Crawl gaps are DAST's most important limitation and the exam's favorite DAST trap. A crawler that never logs in

tests only the public surface. A crawler that cannot handle JavaScript-heavy pages misses the application's real

functionality. A crawler that never completes a multi-step checkout or form workflow never tests the code

behind those steps. When a DAST report comes back clean, the first question is not whether the application is

secure but whether the crawler saw the application. Coverage first, verdict second.

Figure 11: SAST vs DAST pipeline placement - where each method runs, what it sees, and where crawl gaps hide (illustrated)

Core concept

SAST proves what code could do. DAST proves what the deployed application does. Neither proves the

application is secure. A clean SAST report means the code has no flagged patterns, not that it has no flaws. A

clean DAST report means the crawler found nothing on the pages it reached, not that the application is clean.

The tester reads both reports for what they cover, not for reassurance.

Try it yourself

On your own computer, take a small practice web application you built yourself or a deliberately vulnerable lab

application running locally, and run a free DAST tool against it (for example, OWASP ZAP in baseline mode,

pointed only at your local lab application). Compare the findings with the pages you know the application has,

and list which pages the crawler never reached. That gap list is the most honest part of the report. Only scan

applications you own or are explicitly authorized to test.

3. Scan configuration and troubleshooting

A scan that fails silently is worse than a scan that fails loudly, because it produces a report that looks complete

while covering nothing. Most scan troubleshooting is about one question: did the scanner actually see and

assess what you think it assessed? Work through failures in order, from discovery to authentication to network

path to scope.

3.1 Discovery failures and scope

Discovery is the step where the scanner finds live hosts. It fails quietly more than any other step. ICMP echo is

commonly blocked, so a scanner that relies on ping to decide a host is alive will mark live hosts as dead and skip

them. DNS records go stale, so a scanner can probe an address that now belongs to a different host or to

nothing at all. DHCP reassigns addresses between the asset inventory and the scan, so the host you think you

scanned may be a different machine by scan time. And scope mistakes cut both ways: too narrow a scope

misses assets, while too broad a scope scans systems outside the authorization, which is both a reporting failure

and a professional one.

The fix is to verify discovery independently of the scanner's own claims. Compare the hosts the scanner reports

as alive against the asset inventory and the DHCP lease records for the scan window. If a critical host is missing

from the results, do not assume it is clean; assume it was never assessed, and find out why. A report that cannot

account for every in-scope asset is incomplete, and the tester says so in plain language rather than letting a

clean-looking report imply coverage that never happened.

Definition

Scan scope. The set of systems, addresses, and applications explicitly included in an assessment, bounded by

the authorization. Anything outside scope must not be scanned, and anything inside scope must be accounted

for in the results.

3.2 Authentication failures

Authentication failures are the most common reason scan quality collapses, and the most common reason is

mundane: expired passwords, rotated service account credentials, accounts locked by too many login attempts,

or privilege escalation that works on some hosts and fails on others. The symptom is a report that looks normal

but is thin: fewer findings than expected, findings that read like banner guesses, and an authentication

summary showing a low success rate. The danger is that nobody reads the summary. The findings get reported,

the coverage gap does not, and the client believes an estate was assessed that was only skimmed.

When authentication fails, stop and fix it before interpreting findings. Confirm the scan account is valid,

unlocked, and has the privilege the scanner needs on a sample host. Check the escalation path separately from

the login: a scanner can log in successfully and still fail to read patch state if its privilege escalation to

administrator or root fails. Re-run the failed hosts after the fix, and report the original coverage gap honestly:

the first run assessed only the authenticated portion, and the second run closed the gap.

3.3 Firewall blocks, windows, and DHCP correlation

Firewalls and intrusion prevention systems treat scanners the way they treat attackers, because from the

network's view there is no difference. A scanner's rapid probes trip rate limits, its payloads match intrusion

signatures, and its traffic gets dropped or shunned mid-scan. The result is a report full of hosts that appear

down or ports that appear filtered, when the real story is that the scanner's traffic never arrived. The fix is

coordination, not force: agree on scan windows, whitelist the scanner's source address on the path to the

targets, and confirm with the network team that the scan traffic is expected. If whitelisting is refused, say so in

the report and describe what the blocking cost in coverage.

Scan windows create their own failures. A scan that overruns its window gets cut off mid-assessment, leaving

part of the estate unscanned, or it keeps running into business hours and disrupts production traffic. Estimate

honestly: large estates, slow links, and intrusive checks all stretch scan time. Break the work into windows that

fit, and track completion per window rather than assuming the whole estate was covered.

DHCP correlation is the quiet bookkeeping that makes results trustworthy. When addresses change between

discovery and scanning, or between scanning and reporting, findings attach to the wrong host. Correlate scan

results with DHCP lease records and asset inventory by time: which host held this address during the scan

window? A finding reported against the wrong host wastes remediation effort and, worse, lets the truly

vulnerable host go unpatched.

Exam tip

When a scenario describes a scan that found far fewer hosts or findings than expected, check discovery and

authentication before concluding the environment is secure. Blocked ICMP, failed credentials, and firewall

shunning all produce clean-looking reports. The exam rewards the tester who distrusts a clean report until

coverage is confirmed.

Troubleshooting a failed or thin scan, step by step:

1. Confirm discovery: compare hosts found against the asset inventory and DHCP leases for the scan

window, and account for every missing host.

2. Check authentication: read the authentication summary first, verify the scan account on a sample host,

and fix login and privilege escalation failures before interpreting findings.

3. Check the network path: confirm the scanner's traffic is not being dropped, rate-limited, or shunned by

firewalls or intrusion prevention on the way to the targets.

4. Check scope and window: confirm the scan covered exactly the authorized scope and finished inside its

window, and re-run anything cut off or left out.

5. Correlate results by time: match findings to hosts using DHCP and inventory records from the scan

window, not from today, so findings attach to the right machines.

4. Reading scanner output

Scanner output is not a verdict. It is evidence, and evidence has to be read with attention to what produced it,

how confident the scanner is, and what the scanner could not see. The three scanners below illustrate the range:

each reports differently, and each has characteristic errors.

4.1 Nessus: plugins and evidence

Nessus organizes its knowledge as plugins: each plugin tests for one vulnerability, misconfiguration, or

information disclosure, and carries a severity derived from CVSS plus Tenable's own vulnerability priority rating.

A Nessus result names the host, the plugin, the severity, and the evidence the plugin observed, followed by a

solution, usually a patch or configuration change. The analyst's job is to read the evidence, not just the severity.

A plugin that reports based on a banner is weaker evidence than the same plugin reporting from a credentialed

check that read the installed package version. A plugin that reports a service as present because a port

responded is weaker still.

Nessus output also includes informational plugins that are not vulnerabilities at all: operating system

identification, open ports, traceroute data, authentication success or failure. Those informational results are

where coverage is verified. An analyst who reads findings before reading the informational plugins is reading

conclusions before checking whether the assessment happened.

Definition

Plugin. A single check in a vulnerability scanner's library that tests for one specific vulnerability,

misconfiguration, or information disclosure, reporting its evidence and a recommended solution.

4.2 OpenVAS: QoD and results

OpenVAS, the scanner behind Greenbone, reports each finding with a Quality of Detection (QoD) value: a

percentage expressing how confident the scanner is in the result. A QoD of 100 percent means the finding was

confirmed by a reliable method, such as a credentialed package check. A QoD of 70 percent typically means

banner-based detection, which carries the usual banner risk. Lower values mean weaker evidence, such as a

check that inferred a flaw from a generic behavior. QoD is the scanner telling you how much to trust each line,

and the analyst who ignores it treats a guess and a confirmation as equals.

OpenVAS results also carry severities, solutions, and references to advisories, and its reports separate

vulnerabilities from informational results. The reading discipline is the same as with Nessus: check coverage and

authentication first, weigh each finding by its evidence quality, and treat low-QoD banner findings as candidates

for manual validation rather than confirmed vulnerabilities.

Definition

Quality of Detection (QoD). An OpenVAS confidence value, expressed as a percentage, indicating how reliable

the detection method behind a finding is. Banner-based findings carry lower QoD than credentialed

confirmations.

4.3 Nikto: web server checks

Nikto is a web server scanner, not a general vulnerability scanner. It probes a web server for dangerous files and

directories, outdated server software, misconfigurations, insecure headers, and known issues in common server

software, reporting each item with a reference identifier. Its output is a list of observations about the server, not

a verdict about the application: a missing security header is a hardening note, an outdated server version is a

lead, and a discovered backup file is a finding that needs manual confirmation.

Nikto's characteristic error is the error-page false positive. Many servers return a custom error page with a 200

OK status for missing files, so Nikto's request for a known dangerous file receives a normal-looking response,

and its signature matches the error page content rather than the file itself. The analyst confirms Nikto findings

by requesting the item manually and reading the actual response: is this the dangerous file, or the server's

polite apology for not having it?

Exam tip

When a question gives you scanner output, read the evidence line before the severity line. A critical severity

attached to banner evidence is a candidate, not a confirmed critical. A medium severity attached to a

confirmed, remotely exploitable flaw on an internet-facing host may be the more urgent finding. Severity ranks

the flaw; evidence ranks your confidence; exposure and exploitability rank the priority.

Check yourself

An OpenVAS report lists a critical finding with a QoD of 70 percent, based on a version banner, on a server the

team patched last week. A credentialed check shows the patched package installed. What is the correct verdict,

and what should the analyst record?

Answer: False positive caused by banner-based detection of a backported patch. The analyst records it as a

false positive with the credentialed evidence attached, so future scans and auditors know why it was dismissed

instead of silently deleting it.

5. Validating findings: false positives and false negatives

Validation is the step that separates a penetration test from a scan dump. A scanner reports possibilities; the

tester proves which ones are real, documents the proof, and carries only the proven findings into exploitation

and reporting. Skipping validation does not save time. It spends the client's remediation budget on ghosts and

spends the tester's credibility with it.

5.1 Banner-based false positives

The banner-based false positive is the most common validation story in the field, and it has one root cause: the

scanner trusts what the target claims about itself. A vendor backports a security fix into an older version without

changing the version banner, so the banner still advertises the vulnerable version. A custom build reports a

generic version string. A load balancer answers with the version of a different component than the one behind

it. In each case the scanner matches its signature to the banner and reports a vulnerability that is not present.

The validation is straightforward and must be done before the finding is reported: confirm the installed version

or configuration directly, through a credentialed check, a package query, or a behavior test that distinguishes

the vulnerable version from the patched one. If the direct check shows the fix present, the finding is a false

positive. Record it as such, with the evidence, because the same banner will trigger the same finding on the next

scan, and the next analyst deserves to know it was already settled.

Definition

False positive. A reported finding that does not actually exist on the target, commonly caused by

banner-based detection of backported patches, error-page signature matches, or signatures that match a

pattern without confirming exploitability.

5.2 Error-page signature matches and stale data

Error-page matches are the web equivalent of banner errors. A scanner requests a known dangerous file, the

server answers with a custom error page and a success status, and the scanner's signature matches text on the

error page rather than the file. The validation is manual and quick: request the item yourself, read the response,

and ask whether this is the file or the apology. The same discipline applies to stale data: a scan report from last

month describes last month's estate. Hosts have been rebuilt, addresses reassigned, and patches applied since.

A finding is only as current as its scan, and a finding carried forward without revalidation is a rumor, not a result.

Definition

False negative. A real vulnerability that a scan fails to report, commonly caused by hosts offline during the

scan, failed authentication, incomplete scope, or checks the scanner does not have. A scanner only finds what

it is built to find.

Core concept

False negatives are more dangerous than false positives, and the exam knows it. A false positive wastes

remediation time. A false negative creates a false sense of security: the report says clean, the vulnerability sits

untouched, and the next person to find it may not be friendly. When a question asks which error is worse, or

describes a breach through a host that scanned clean, the answer centers on false negatives and the coverage

gaps that caused them: failed logins, offline hosts, scope exclusions, and missing checks.

5.3 The validation procedure

Validation is a procedure, not an instinct. Run it the same way for every finding worth reporting, so nothing gets

confirmed by enthusiasm and nothing gets dismissed by fatigue.

1. Reproduce the finding yourself, outside the scanner, using the evidence the scanner recorded: the host,

the port, the request, the version it claims.

2. Examine the evidence for its strength: credentialed confirmation, banner inference, error-page match, or

generic signature, and weigh the finding accordingly.

3. Confirm the version or configuration directly: a package query, a configuration read, or a behavior test

that separates the vulnerable state from the patched state.

4. Test safely and within authorization: use non-destructive checks, avoid payloads that modify data or

disrupt services, and stop at proof of the flaw rather than pushing into exploitation.

5. Document the verdict with evidence: confirmed, false positive with the disproving evidence, or

inconclusive with the reason and the next step needed. An undocumented dismissal is a finding waiting to

recur.

Figure 12: Finding validation workflow - from scanner report through reproduction, evidence check, direct confirmation, and documented

verdict (illustrated)

Exam tip

When a question asks for the next step after a scanner reports a critical finding, the answer is almost never to

exploit it immediately. The answer is to validate it: reproduce it, check the evidence, confirm the version.

Exploitation of an unvalidated finding wastes the test window and risks reporting a flaw that does not exist.

Check yourself

CertCrack.com's web scanner reports that a backup archive is exposed at a predictable URL on the company

storefront. The analyst requests the URL manually and receives the site's standard "page not found" page with

a 200 OK status. What is the finding, and what should the analyst do?

Answer: Likely a false positive from an error-page signature match: the scanner matched its signature against

the custom error page, not the archive. The analyst records it as a false positive with the manual response as

evidence, and notes the server's error-page behavior, since the same pattern will recur on future scans.

6. CVSS and EPSS

Scoring exists so that findings can be compared and sorted, but a score is a model, not a measurement. The

tester who understands what a score includes, and what it leaves out, ranks findings well. The tester who sorts

by score alone ranks them badly and confidently.

6.1 Base, temporal, and environmental metrics

The Common Vulnerability Scoring System (CVSS) rates severity from 0.0 to 10.0 using three metric groups. Base

metrics describe the flaw itself, independent of time and organization: attack vector (network, adjacent, local, or

physical), attack complexity, privileges required, user interaction, scope, and the impact on confidentiality,

integrity, and availability. Base metrics do not change unless the flaw itself changes. Temporal metrics describe

factors that change over time: exploit code maturity (from unproven to functional to weaponized), remediation

level (from no fix to official fix available), and report confidence. A flaw with public exploit code scores higher

temporally than the same flaw with no known exploit. Environmental metrics let an organization adjust the

score for its own reality: modified base metrics for its environment, and confidentiality, integrity, and availability

requirements reflecting how much the affected asset matters. Two organizations with the same flaw can

legitimately arrive at different environmental scores, because the same flaw on a test server and on a payment

database is not the same risk.

Definition

CVSS (Common Vulnerability Scoring System). A standardized framework rating vulnerability severity from

0.0 to 10.0 using base, temporal, and environmental metric groups. CVSS measures severity, how bad the flaw

is in the abstract, not risk, which also depends on exposure, asset value, and threat activity.

6.2 Scope and severity bands

Scope answers one question: does exploiting this flaw affect a security authority beyond the vulnerable

component? If scope is unchanged, the impact stays within the component that holds the flaw. If scope is

changed, exploitation escapes into another authority, for example a sandbox escape that reaches the host, or a

vulnerability in a virtual machine that affects the hypervisor. Changed scope raises the score substantially,

because the blast radius is larger than the component itself. The exam tests scope with escape scenarios: a flaw

that stays inside its container is one score, and the same flaw breaking out of the container is a higher one.

The qualitative severity bands for the base score are: None (0.0), Low (0.1 to 3.9), Medium (4.0 to 6.9), High (7.0

to 8.9), and Critical (9.0 to 10.0). Bands are labels for communication, not decisions. A High and a Critical can sit

in either priority order once context is applied, which is why the next section matters more than the bands

themselves.

Definition

Scope (CVSS). Whether exploiting a vulnerability affects a security authority beyond the vulnerable

component. Changed scope, such as a sandbox or container escape, increases the score because the impact

extends past the flawed component.

6.3 Severity vs risk, and EPSS

Severity is not risk. A CVSS 9.8 flaw on an isolated system with no network path and no sensitive data may be

less urgent than a CVSS 6.5 flaw on an internet-facing server holding customer records, especially when exploit

code for the 6.5 is circulating. Risk adds what severity omits: exposure (can an attacker reach it?), exploit

availability (does working exploit code exist?), asset value (what does it protect?), and threat activity (is anyone

actually exploiting it?). Sorting a remediation queue by CVSS descending is the beginner's answer, and it is

usually wrong.

The Exploit Prediction Scoring System (EPSS) helps with one piece of that gap: it estimates the probability that a

vulnerability will be exploited in the wild in the next 30 days, expressed as a score from 0 to 1, often read

alongside its percentile rank among all vulnerabilities. A high EPSS score means exploitation is likely soon, even

if the CVSS score is moderate. Used together, the two scores answer different questions: CVSS says how bad the

flaw is, EPSS says how likely someone is to use it. A moderate CVSS with a high EPSS on an internet-facing asset

is a finding that jumps the queue, and the exam tests exactly that combination.

Figure 13: CVSS metric groups and severity bands - base, temporal, and environmental metrics feeding the score, with EPSS as the

exploitation-likelihood overlay (illustrated)

Exam tip

When a question gives you a severity score plus context, the context decides the priority, not the score alone.

Look for exposure (internet-facing?), exploit availability (public exploit? weaponized?), and asset value

(customer data? critical system?). If the question mentions EPSS, use it as the tiebreaker for likelihood: high

EPSS means exploit soon, regardless of a middling CVSS.

Try it yourself

Open the free FIRST CVSS calculator online and score a vulnerability you read about recently, starting from its

base metrics. Then change one metric at a time, attack vector first, then privileges required, and watch how far

the score moves. Then look up the same vulnerability's EPSS score and percentile. The gap between the two

numbers is the difference between severity and risk, and learning to read that gap is the skill this section

teaches.

7. Manual validation techniques

Scanners find candidates. Manual validation proves them. The techniques below are the tester's confirmation

toolkit, and each one has the same discipline: use the smallest proof that settles the question, never a payload

that damages data or disrupts a service, and stay strictly inside the authorized scope. Every technique here is

described for use against your own lab systems or explicitly authorized targets.

7.1 Injection and cross-site scripting

SQL injection (SQLi) is confirmed by showing that input changes the query, not by dumping data. Start with a

single quote in an input field and watch for a database error or a change in behavior. Follow with a boolean test:

two inputs that should return different results if the input reaches the query, such as a true condition and a false

condition appended to the same parameter. If the application's responses differ exactly as the conditions

predict, the input is reaching the query, and the injection is confirmed. Never use destructive statements, never

extract more than the proof requires, and never run injection tests against production data.

Cross-site scripting (XSS) is confirmed by showing that input is reflected or stored without encoding, using a

harmless, unique marker string rather than an active payload. Submit a distinctive string in an input, then

search the response for that string unencoded. If it appears unencoded in the page, the reflection is proven, and

the finding is real regardless of whether a browser would execute it. Reflected XSS proves the flaw in one

request and response. Stored XSS proves it when the marker reappears for other users or later visits.

DOM-based XSS proves it when client-side code writes the marker into the page without encoding. In each case

the marker, not an exploit, is the proof.

Definition

SQL injection (SQLi). A flaw where untrusted input is incorporated into a database query without proper

parameterization or escaping, letting an attacker alter the query's logic or access data beyond the intended

scope.

Definition

Cross-site scripting (XSS). A flaw where untrusted input is included in a web page without proper output

encoding, letting an attacker inject script that runs in another user's browser. Reflected XSS arrives in one

request, stored XSS persists for later visitors, and DOM-based XSS is introduced by client-side code.

7.2 Access flaws: IDOR, traversal, and authentication bypass

Insecure direct object reference (IDOR) is confirmed by changing an object identifier and observing whether

access control follows. Request your own record, then request the same resource with a neighboring identifier,

and observe whether the application serves another user's data or rejects the request. If it serves the data,

authorization is missing on that object, and the finding is proven with two requests and no special tooling. The

exam angle is the distinction between authentication and authorization: the tester is logged in, the tester is who

they claim to be, and the application still serves data the tester should not see. Authentication passed;

authorization failed.

Path traversal is confirmed by asking for a file outside the intended directory and reading the response. A

sequence of parent-directory references in a file parameter, or an encoded variant of the same sequence, that

returns a system file proves the application builds file paths from untrusted input without validation. Test with a

harmless, well-known file on your own lab system, and read the response for the file's contents rather than an

error. Directory traversal and its cousins, including log poisoning and null-byte tricks on older systems, all share

the same root cause: untrusted input reaching a file path.

Authentication bypass is confirmed by showing that a control meant to restrict access can be sidestepped.

Common proofs include requesting a restricted page directly without going through the login flow (forced

browsing), modifying a client-side parameter that claims a role or privilege, replaying or tampering with a

session token, and reusing a session after logout. Each proof has the same shape: the application trusts

something the client controls. The tester documents the exact request that bypassed the control, because the fix

is server-side enforcement, and the developer needs to see precisely which check was missing.

Definition

IDOR (insecure direct object reference). A flaw where an application exposes a direct reference to an

internal object, such as a record identifier, without verifying that the requesting user is authorized for that

object.

Definition

Path traversal. A flaw where untrusted input is used to build a file path without validation, letting an attacker

reference files outside the intended directory.

7.3 SSRF, upload flaws, and TLS checks

Server-side request forgery (SSRF) is confirmed by making the server fetch a resource you control and observing

the result. In a lab, point a suspect parameter at an address you own, such as a listener on your own lab

machine, and watch for the incoming connection: if the server connects, it is issuing requests on your behalf.

The dangerous form, fetching internal services or cloud metadata endpoints, is proven the same way in

principle, but the tester proves it in the lab against lab services, never by reaching for real internal systems

outside the authorization. The exam angle is the trust inversion: the server, which sits inside the trust boundary,

becomes the attacker's proxy.

File upload flaws are confirmed by testing what the application accepts and what it does with the file. Change

the extension, the content type, and the filename casing, and observe whether a file the application should

reject is stored and reachable. Double extensions and case variations defeat allowlists that check only one form.

The proof is a stored file that the application serves back, on your own lab system, with harmless content. The

dangerous outcome, a stored file that executes on the server, is demonstrated by the application's willingness

to store and serve it, not by executing a real payload against a real target.

TLS checks are configuration validation, not exploitation. Confirm the certificate is valid, unexpired, and issued

for the hostname being visited. Confirm the server still offers weak protocols or ciphers, such as TLS 1.0 or 1.1,

or cipher suites without forward secrecy. Confirm whether HTTP strict transport security is present, which tells

browsers to refuse plaintext connections. A TLS finding is usually a hardening finding rather than a critical one,

but it matters in combination: a login page served with a weak configuration, or a certificate mismatch a user

has been trained to click past, turns a hardening note into an attack path.

Definition

SSRF (server-side request forgery). A flaw where an attacker makes a server issue requests to internal or

unintended destinations, using the server's trusted position to reach services the attacker cannot reach

directly.

Exam tip

Manual validation questions reward the smallest sufficient proof. A single quote that changes behavior proves

injection. A unique marker reflected unencoded proves XSS. A neighboring identifier that returns another

user's data proves IDOR. The exam punishes the tester who reaches for a destructive payload or a full exploit

when a safe proof already settles the question.

Check yourself

A tester at CertCrack.com is validating a suspected IDOR flaw in the company's lab storefront. Requesting

order 1042 returns the tester's own order. Requesting order 1043 returns another test account's order details,

including its shipping address. The tester is authenticated as the first account throughout. Is the flaw

confirmed, and what exactly failed?

Answer: Yes, confirmed. Authentication worked correctly, the tester is who they claim to be, but authorization

failed: the application never checked whether the requesting user owns order 1043 before serving it. The fix is

server-side authorization on every object request, not stronger login.

8. Prioritizing findings for exploitation

Discovery produces a list. Exploitation needs an order. The exploitation phase has limited time, and the order

decides whether it produces a meaningful result or a pile of low-value shells. Prioritization is where the tester's

judgment becomes visible, and the exam tests it as a ranking exercise: given several findings with context, which

goes first and why?

8.1 Exposure, public exploits, and attack chains

Exposure comes first. An internet-facing flaw is reachable by anyone, while an internal flaw requires a foothold

first. A flaw on a system holding customer data outranks the same flaw on an isolated test host. Public exploit

availability comes second: a flaw with a working public exploit or a Metasploit module is a flaw the tester can use

quickly and reliably, while a flaw needing custom exploit development may consume the whole test window.

Threat activity comes third: a flaw actively exploited in the wild, signaled by a high EPSS score or current

reporting, outranks a flaw nobody is using, because the window for the client is already closing.

Attack chains change the arithmetic. Two low-severity findings that combine into a critical path outrank either

finding alone. An information disclosure that reveals a username, plus a weak password policy, plus a missing

lockout, chains into account takeover. A reflected XSS that steals a session token, plus missing authorization on

an administrative function, chains into full compromise. The tester ranks chains, not just findings, and the report

describes the chain as one result with one severity, because that is how the client must fix it: break any link and

the chain fails.

8.2 Compensating controls and the final order

Compensating controls lower priority without removing the flaw. A web application firewall rule blocking an

injection pattern reduces the immediate risk but does not fix the code. Network segmentation containing a

vulnerable host reduces its blast radius but does not patch it. Endpoint detection watching for an exploit

technique raises the chance of catching it but does not prevent it. The tester records the control, credits it

honestly, and still reports the flaw, because controls fail, get misconfigured, and get removed, while the flaw

remains until fixed.

The final order for exploitation follows from all of this, and it is worth stating as a procedure the tester can apply

to any list:

1. Rank by exposure first: internet-facing and data-bearing systems before internal and isolated ones.

2. Rank by exploitability second: public exploits and weaponized code before flaws needing custom

development.

3. Rank by chaining third: findings that combine into a path to a valuable goal before isolated findings of

similar severity.

4. Adjust for compensating controls: credit controls that genuinely reduce risk, but never let a control erase

a finding.

5. Confirm the top findings before exploiting them: a validated critical beats an unvalidated critical, because

the exploitation phase must not spend its window on ghosts.

Core concept

Prioritization is risk arithmetic, not score sorting. Exposure times exploitability times impact, adjusted for

controls and chains, is the ranking. A sorted CVSS list is a starting point for that arithmetic, never the answer to

it. The tester who can explain why a medium outranks a critical in a specific environment understands

prioritization; the tester who cannot is just reading a column.

Check yourself

CertCrack.com's assessment found three issues: a CVSS 9.8 flaw on an isolated internal server with no network

path from untrusted networks and no public exploit; a CVSS 6.5 flaw on the internet-facing storefront with a

public Metasploit module and active exploitation reported; and a CVSS 7.5 flaw on an internal workstation that

chains with an exposed username list to reach domain credentials. In what order should exploitation be

attempted, and why?

Answer: The storefront 6.5 first: internet-facing, publicly exploitable, and actively exploited, so it is the most

reachable and most urgent. The chained 7.5 second: its chain reaches domain credentials, which outranks its

individual score. The isolated 9.8 last: severe in the abstract, but unreachable without a prior foothold, so it

matters only after the chain is understood.

Chapter check

1. A non-credentialed scan reports a critical vulnerability on a server, but a credentialed rescan shows the

finding is gone and the patched package is installed. What most likely caused the original report?

A. The scanner's plugin feed was expired

B. Banner-based detection of a backported patch

C. A zero-day vulnerability in the scanner itself

D. The host was offline during the first scan

2. A tester wants to validate a new detection rule for one specific ATT&CK technique, credential dumping, in

isolation. Which approach fits best?

A. A full adversary campaign emulation

B. A network vulnerability scan of the estate

C. A cloud configuration benchmark

D. A single-technique test mapped to that ATT&CK technique

3. An OpenVAS report lists a finding with a QoD of 70 percent based on a version banner. What does the QoD

value tell the analyst?

A. The finding carries moderate confidence from banner-based detection

B. The finding is confirmed by a credentialed check

C. The finding is a confirmed false positive

D. The finding requires no further validation

4. During DAST testing of a web application, the report comes back clean. The application has an authenticated

administrative section and several multi-step workflows. What should the tester question first?

A. Whether the scanner's plugin feed is current

B. Whether the application has any vulnerabilities at all

C. Whether the crawler reached the authenticated pages and workflows

D. Whether the test window was long enough

5. A CVSS base score is 9.8 for a flaw on an isolated server with no network path from untrusted networks and

no public exploit. A second flaw scores 6.5 on an internet-facing server with a public exploit module and active

exploitation in the wild. Under risk-based prioritization, which should be addressed first?

A. The 9.8 flaw, because CVSS score always decides priority

B. The 6.5 flaw, because exposure and active exploitation raise its risk above the isolated flaw

C. Both equally, because they are in different severity bands

D. Neither until environmental scores are formally calculated

6. A tester submits a unique marker string into a search field and finds that string returned unencoded in the

response page. What has been proven?

A. A SQL injection flaw

B. An insecure direct object reference

C. A server-side request forgery flaw

D. A reflected cross-site scripting flaw

7. A cloud assessment tool produces an HTML report listing a public storage bucket and an overly permissive

security group. Which category of tool produced this output?

A. A cloud infrastructure assessment tool

B. A network vulnerability scanner

C. A web application scanner

D. A packet analysis tool

8. A scanner requests a known dangerous file from a web server and receives the site's custom error page with a

200 OK status. The scanner reports the file as present. What is the most likely explanation?

A. The file is genuinely present on the server

B. A credentialed scan confirming the file's contents

C. An error-page signature match producing a false positive

D. A banner-based detection of the server version

Answer key: 1. B - 2. D - 3. A - 4. C - 5. B - 6. D - 7. A - 8. C

Discovery Toolkit: Scanners for Artifacts, Clusters, and Secrets

Chapter 3 covered scan types, scanner output, and scoring. The objectives also name the newer scanning generation — tools that scan things (images, bills of materials, repositories, clusters) rather than only live hosts. These six are tested by name, and the distinctions between them are pure exam material.

Definition

TruffleHog (secrets in history). TruffleHog. A secrets scanner that digs through git history commit by commit — plus other sources such as S3 buckets and filesystems — with hundreds of credential detectors, and can verify many findings against the live service to prove the key still works. Its signature lesson: deleting a secret in a new commit does nothing, because history keeps it; rotation is the only fix.

Definition

Trivy (artifact vulnerability scanner). Trivy. Aqua Security's all-in-one scanner for container images, filesystems, and repositories: OS packages and language libraries checked against CVE databases, plus misconfiguration and secret checks. It is built for pipeline gates — scan the image, fail the build on critical findings. If the scenario says "scan the image before deployment," Trivy is the default answer.

Definition

Grype (SBOM-driven scanning). Grype. Anchore's vulnerability scanner that consumes a software bill of materials (typically produced by its companion, Syft) or an image, and matches the package inventory against vulnerability data. Its niche is analysis from the document: in air-gapped environments, the SBOM travels where the image cannot.

Definition

Kube-hunter (cluster weakness hunter). Kube-hunter. Aqua's tool for scanning a Kubernetes cluster for the weaknesses an attacker would exploit — exposed kubelet APIs, dashboards, etcd, and privilege paths. It can run remotely, inside the network, or as a pod, and reports findings by severity. Where Trivy scans what goes into the cluster, Kube-hunter tests the cluster itself.

Definition

Docker Bench for Security (host benchmark). Docker Bench for Security. A script that runs the CIS Docker Benchmark's checks against a host and daemon: configuration, container privileges, logging, and image trust. It audits how Docker is set up, not what is inside the images — the third leg of the container trio the exam loves to rotate (Trivy = image contents, Grype = SBOM contents, Docker Bench = host configuration).

Definition

PowerSploit (PowerShell offensive framework). PowerSploit. A collection of PowerShell modules for offensive work across the engagement, named in the objectives for the discovery phase because of PowerUp: its systematic checks for privilege-escalation weaknesses — service permissions, unquoted paths, DLL hijacking opportunities — on a Windows host under analysis.

Core concept

Scanning things vs scanning hosts. Classic scanners (Nessus, OpenVAS) interrogate running systems over the network. The tools in this section mostly scan artifacts and configurations — an image, an SBOM, a repository, a cluster's API — often before anything is deployed, and usually inside a pipeline. Exam scenarios signal the family with their nouns: image, SBOM, commit history, and cluster point here; ports and services point back to the classic scanners.

ToolScansInputDecides
TruffleHogSecretsGit history, files, bucketsIs a credential exposed — and still live?
TrivyPackage CVEsContainer image / filesystemMay this image deploy?
GrypePackage CVEsSBOM (or image)What in this bill of materials is vulnerable?
Kube-hunterCluster weaknessesLive Kubernetes clusterWhere can an attacker get in?
Docker BenchHost configurationDocker hostDoes the setup meet the CIS benchmark?
PowerSploitHost privesc surfaceWindows host (PowerShell)What local weaknesses exist?
Exam tip

The container trio. Trivy, Grype, and Docker Bench are the three-way confusion the exam exploits. Anchor on the object: an image in a pipeline is Trivy; an SBOM document is Grype; the host running Docker is Docker Bench. Kube-hunter is the odd one out — it attacks a live cluster rather than scanning an artifact.

Check yourself

Discovery Toolkit. Question. A pipeline generates a Syft SBOM for each release, and the security team — working offline — wants CVE matching from those files alone. Which tool, and what input does it never need? Answer: Grype; it works from the SBOM document and never needs to pull or run the image.

Want the full CompTIA PenTest+ (PT0-003) package?

This guide is free to read. Get the full PT0-003 practice exam — 750 questions plus 10 PBQs — with the complete PDF and online access.

Get PT0-003 Full Access — $10