# Network services, DNS, TLS, email, and appliances

This is a separate campaign branch: discovering a network service through a website does not automatically authorize testing it. Commands are documentation-verified examples; none were executed against targets. The budgets, sequence, and evidence thresholds below are operational recommendations.

## Stage 1 — define the service boundary

Create one inventory row per `owner → environment → address family → IP → transport → port → service → identity/tenant`. Retain the hostname, SNI and HTTP Host when virtual hosting applies. Distinguish a website's public edge from its origin and from the provider's control plane. An IP resolving from an authorized hostname is not automatically a target for every service; a CIDR does not necessarily include unrelated customer workloads inside it.

TCP/443, UDP/443 and a VPN on UDP/500 are separate surfaces. An A record does not authorize IPv6; an AAAA record does not authorize an entire IPv6 prefix. Querying an AAAA record over IPv4 is not an IPv6 connectivity test. Expand only into address families, protocols, ports and ownership categories covered by the policy. Avoid brute-force IPv6 address discovery across huge prefixes.

**Gate:** save the exact scope entry, exclusions, approved source address, allowed time window, credentials, concurrency/rate budget, and emergency contact. If appliance disruption or parser tests are excluded, move those hypotheses into a local product lab.

## Stage 2 — separate inventory from vulnerability confirmation

Start with public vendor documentation, existing network-index records and historical DNS. Searching previously collected records is passive relative to the target; requesting a new third-party scan is active. DNS queries, TCP connections, UDP packets and TLS negotiations are active even when no login or state change occurs.

For authorized services, establish a normal protocol exchange and identify the product, build, deployment mode and authentication challenge. Keep the network vantage point and timestamps: `filtered` or `open|filtered` are observations from that vantage, not proof a service is absent or vulnerable. UDP silence is especially ambiguous. [Nmap port states](https://nmap.org/book/man-port-scanning-basics.html).

Treat banner-to-CVE matches as candidates. Vendor backports can fix vulnerabilities without adopting the upstream version number that a scanner expects. Match vendor advisory, package build, enabled feature and exploit prerequisites; validate behavior safely before claiming vulnerability. A stale banner is not remote code execution. [Red Hat backporting](https://access.redhat.com/security/updates/backporting).

## Stage 3 — bounded command reference

Replace these documentation addresses only with approved assets. Here `192.0.2.53` is an authorized DNS server and `192.0.2.10` an explicitly approved host. Run commands individually; inspect each result before continuing. No default broad scans, NSE script sets, OS detection, traceroute or version detection are enabled.

```bash
# 1. One UDP SOA query to an approved authoritative server.
dig -r @192.0.2.53 example.com SOA \
  +norecurse +notcp +ignore +time=2 +tries=1

# 2. One AAAA lookup; still uses IPv4 transport to this DNS server.
dig -r @192.0.2.53 app.example.com AAAA \
  +norecurse +notcp +ignore +time=2 +tries=1

# 3. Inspect the domain's published DMARC record.
dig -r @192.0.2.53 _dmarc.example.com TXT \
  +norecurse +notcp +ignore +time=2 +tries=1

# 4. TLS handshake with the intended SNI and certificate identity.
timeout 15 openssl s_client -connect app.example.com:443 \
  -servername app.example.com -verify_hostname app.example.com \
  -verify_return_error -brief </dev/null

# 5. SMTP STARTTLS negotiation only: no AUTH or message delivery.
timeout 15 openssl s_client -starttls smtp \
  -connect mail.example.com:587 -servername mail.example.com \
  -verify_hostname mail.example.com -verify_return_error \
  -brief </dev/null

# 6. Explicitly approved TCP ports on one approved IPv4 address.
nmap -sT -Pn -n --disable-arp-ping -p 22,443 \
  --max-rate 1 --scan-delay 1s --max-parallelism 1 \
  --max-retries 0 --host-timeout 30s \
  -oX network-one.xml 192.0.2.10
```

`dig -r` ignores inherited `.digrc` options; `+ignore` prevents automatic TCP fallback after a truncated UDP response. A truncated answer is incomplete, so request TCP separately only if allowed. `+norecurse` suits a known authoritative server; a referral is not a complete answer. Use record types A, CNAME, NS, MX, SPF TXT or a **known** DKIM selector only as separately reviewed queries. [BIND 9.20.13 dig manual](https://bind9.readthedocs.io/en/v9.20.13/manpages.html#dig-dns-lookup-utility).

SNI selects a virtual TLS service; hostname verification checks identity. OpenSSL's STARTTLS option performs the protocol negotiation needed before TLS. A successful handshake does not test authentication or mail delivery. [OpenSSL s_client](https://docs.openssl.org/3.5/man1/openssl-s_client/).

Nmap `-p` overrides its default port set, and `-Pn` skips ordinary host discovery that could touch additional ports. `-n` avoids reverse DNS. Scan timing options do not constitute a hard limit on every kernel-generated packet. For separately authorized IPv6 testing, use `-6` and the exact approved IPv6 address. Do not append `-sV`: version detection introduces additional protocol probes and potential side effects. [Nmap port selection](https://nmap.org/book/man-port-specification.html), [host discovery](https://nmap.org/book/man-host-discovery.html), [timing](https://nmap.org/book/man-performance.html), [IPv6](https://nmap.org/book/man-misc-options.html), [version detection](https://nmap.org/book/man-version-detection.html).

## Stage 4 — test a concrete hypothesis

| Hypothesis | Preconditions and minimal action | Evidence / reporting threshold | Stop condition |
|---|---|---|---|
| DNS delegation or CNAME is abandoned | Authorized DNS review; inspect current chain and provider ownership requirements | Record chain, error and claimability evidence; classify unconfirmed takeover honestly | Do not register a domain/resource or replace DNS without the approved proof method |
| Resolver allows unintended recursion | That DNS service and recursion checks are allowed; query one unique name in your own zone | Resolver response plus your authoritative log establishes one recursive lookup; report according to policy impact | No spoofed source, ANY/amplification batches, or load measurement |
| TLS identity/transport boundary fails | Expected hostname and trust model known; one handshake and a controlled client comparison | Explain which actual client accepts the wrong identity or exposes sensitive traffic | No live interception of unrelated users; no exhaustive stress negotiation |
| Database/queue/file service bypasses authentication or ACL | Dedicated test account and synthetic resource supplied | Restricted account accesses a forbidden test key, row, queue, share or administration function | Stop at first proof; no listing/dumping real datasets or consuming production messages |
| IPv6 exposes a management path blocked on IPv4 | Both exact addresses are authorized; compare the same approved service | Same product/service, different access boundary, actual privileged exposure | Do not expand into neighboring addresses or internal routes |
| SMTP relay or sender-identity control fails | Policy allows mail tests; sender, recipient and relevant endpoints controlled | One delivery, envelope/header identity, trusted receiver results and relay transcript | No staff recipients, unsolicited messages, forwarding to customers or bulk delivery |
| Appliance parser crosses a security boundary | Own isolated hardware/VM, exact firmware, snapshots and recovery | Minimized input plus reproducible crash/authorization or memory-safety evidence | Production reproduction requires its own allowed method; never cause an outage to verify a lab result |

For databases, queues, SSH, SMB/NFS, LDAP and management APIs, test authentication and authorization separately. A TCP connection or banner does not grant data access. Prefer one read of a supplied canary over `list all`, queue consumption or configuration export. Compare limited and privileged test identities; examine revocation and certificate-to-account mapping. Redis documents separate protected mode, authentication, ACL and TLS controls; PostgreSQL's host-based authentication evaluates connection type, address, user and database. [Redis security](https://redis.io/docs/latest/operate/oss_and_stack/management/security/), [PostgreSQL authentication](https://www.postgresql.org/docs/current/auth-pg-hba-conf.html).

## DNS and email: prove the relevant impact

DNSSEC provides DNS data authenticity and integrity; it does not encrypt DNS or provide authorization for zone updates. Missing DNSSEC alone does not demonstrate a practical takeover. A broken chain may create availability problems for validating resolvers; record the observed resolution failure without deliberately breaking records. Requesting DNSSEC records with `dig +dnssec` does not itself perform cryptographic validation. [RFC 4033](https://www.rfc-editor.org/rfc/rfc4033.html), [BIND manual](https://bind9.readthedocs.io/en/v9.20.13/manpages.html#dig-dns-lookup-utility).

SPF evaluates authorized sending hosts for envelope/HELO identities. DKIM verifies a signature associated with a signing domain. DMARC relates authenticated SPF/DKIM identifiers to the visible From domain through alignment; a passing DKIM signature from an unrelated domain is insufficient. Evaluate the actual message path, including forwarding, instead of treating these controls as interchangeable. [SPF RFC 7208](https://www.rfc-editor.org/rfc/rfc7208.html), [DKIM RFC 6376](https://www.rfc-editor.org/rfc/rfc6376.html), [DMARC RFC 7489](https://www.rfc-editor.org/rfc/rfc7489.html).

Missing SPF, a DKIM selector returning NXDOMAIN, DMARC `p=none`, or an “AUTH offered” banner does not independently prove accepted impersonation or mailbox access. A guessed selector can simply be wrong. Check whether email spoofing is eligible before investing in it. If allowed, send one inert, clearly identified test to a researcher-owned mailbox using the agreed identity; save trusted receiver-generated authentication results, raw headers and timestamps. Delivery to a permissive receiver you control does not prove a protected recipient would accept the mail. Distinguish SMTP acceptance, queueing and actual delivery; `250` during a transaction is not sufficient proof of final delivery or open relay. [SMTP RFC 5321](https://www.rfc-editor.org/rfc/rfc5321.html).

## Router, VPN, and protocol-parser lab branch

Choose one product family and obtain authorized firmware or a vendor trial. Record hardware revision, firmware hash, enabled modules and initial configuration. Isolate management and simulated clients from your normal network; supply local DNS, identity and callback services. Capture a legitimate protocol conversation first. Map pre-authentication versus authenticated parsers, management versus data plane, and low-privilege versus administrator commands.

Review exposed handlers and parsers, reproduce one hypothesis, minimize the triggering input, then compare vulnerable and fixed builds. Preserve logs, crash trace, exact configuration and a reset procedure. A crash establishes an availability or memory-safety lead; do not claim code execution without evidence. For a private target running the same appliance, report validated applicability and remaining uncertainty; obtain an agreed canary or lab-equivalent verification if production testing would disrupt service. No persistence, firmware replacement or route changes on a live target are needed for a useful report.

## Exit checklist

- [ ] Exact IPv4/IPv6, transport, port, owner and environment are authorized.
- [ ] Shared hosting, origin, provider and customer boundaries are documented.
- [ ] Active requests are separated from historical third-party discovery.
- [ ] DNS server, query type and UDP/TCP behavior are explicit.
- [ ] Commands have explicit ports, timeouts and bounded concurrency.
- [ ] Service identity includes build/configuration and possible vendor backports.
- [ ] SNI and expected TLS hostname are recorded.
- [ ] Authentication and resource authorization have separate test cases.
- [ ] Synthetic data or owner-provided canaries support evidence.
- [ ] DNS/mail configuration observations are tied to eligible impact.
- [ ] Parser/appliance testing has isolation, recovery and minimized inputs.
- [ ] First-proof stopping, cleanup and private reporting are completed.

## Extend the canary method to LDAP, file shares and SSH

These services need protocol-specific boundaries in addition to a working socket. Use the shared [network-service module](https://bug-bounty-field-manual.kmahshooq.chatgpt.site/modules/network-service-boundaries.html) for endpoint identity and allowed/denied controls.

| Surface | Exact controlled comparison | Interpretation |
|---|---|---|
| LDAP | Read one known fixture DN and one synthetic attribute as the intended account and restricted account; keep the bind method, TLS and base scope constant | Successful bind does not grant all directory attributes. A root DSE response or intended anonymous discovery is not private-entry disclosure. [OpenLDAP ACLs](https://www.openldap.org/doc/admin26/access-control.html) |
| SMB file shares | Open one owner-supplied share and retrieve one predetermined synthetic file under each identity | Share access, filesystem permissions and authenticated identity must all be understood; a share name or successful negotiation alone is insufficient. [Samba client](https://www.samba.org/samba/docs/current/man-html/smbclient.1.html) |
| SSH/SFTP | Compare the account's promised restricted subsystem with permitted local fixtures; inspect effective Match rules, forced command and forwarding controls | A forced command does not independently disable forwarding. Authentication success is not proof of a restricted-account escape. Any forwarding check must terminate at an owned canary endpoint. [OpenSSH server configuration](https://man.openbsd.org/sshd_config) |

For LDAP, account for referrals and client behavior before following a response into another server. For SMB, save whether guest mapping occurred instead of assuming the requested username was authenticated. For SSH, record whether the promised restriction comes from the server configuration, authorized-key options or a surrounding gateway. Test the actual control layer rather than a deliberately weakened lab substitute.

Keep the proof narrow: one known entry, attribute, file or owned connection. A lab administrator can confirm presence when a low-privilege client returns no result. Preserve object ownership, effective identity, exact operation, allowed control and expected denial. Reuse the same synthetic resource after the proposed fix; remove only the recorded fixture objects and accounts.

## Source registry

All accessed 2026-09-11. Undated means a reliable publication date was not established. RFCs below substantiate protocol mechanics, not a claim that no later updating RFC exists.

| Source | Date/version | URL |
|---|---|---|
| Nmap port states | Undated | https://nmap.org/book/man-port-scanning-basics.html |
| Nmap port selection | Undated | https://nmap.org/book/man-port-specification.html |
| Nmap discovery | Undated | https://nmap.org/book/man-host-discovery.html |
| Nmap timing | Undated | https://nmap.org/book/man-performance.html |
| Nmap IPv6/miscellaneous | Undated | https://nmap.org/book/man-misc-options.html |
| Nmap version detection | Undated | https://nmap.org/book/man-version-detection.html |
| BIND dig | Version 9.20.13 manual | https://bind9.readthedocs.io/en/v9.20.13/manpages.html#dig-dns-lookup-utility |
| OpenSSL s_client | Version 3.5 manual | https://docs.openssl.org/3.5/man1/openssl-s_client/ |
| Red Hat backporting | Undated | https://access.redhat.com/security/updates/backporting |
| Redis security | Undated rolling docs | https://redis.io/docs/latest/operate/oss_and_stack/management/security/ |
| PostgreSQL authentication | Version 18 rolling docs | https://www.postgresql.org/docs/current/auth-pg-hba-conf.html |
| DNSSEC RFC 4033 | March 2005 | https://www.rfc-editor.org/rfc/rfc4033.html |
| SPF RFC 7208 | April 2014 | https://www.rfc-editor.org/rfc/rfc7208.html |
| DKIM RFC 6376 | September 2011 | https://www.rfc-editor.org/rfc/rfc6376.html |
| DMARC RFC 7489 | March 2015 | https://www.rfc-editor.org/rfc/rfc7489.html |
| SMTP RFC 5321 | October 2008 | https://www.rfc-editor.org/rfc/rfc5321.html |


## Shared investigation procedures

- [Proxy normalization, cache isolation, and request boundaries](https://bug-bounty-field-manual.kmahshooq.chatgpt.site/modules/proxy-cache.html) — Investigate layered HTTP behavior with isolated cache keys and controlled front-end/back-end traffic.
- [Libraries and parsers: bounded fuzzing to a minimal reproducer](https://bug-bounty-field-manual.kmahshooq.chatgpt.site/modules/parser-fuzzing.html) — Build a realistic local harness, instrument the target, bound fuzzing resources, and turn unique faults into defensible library or consumer reports.
- [DNS, TLS and email trust boundaries](https://bug-bounty-field-manual.kmahshooq.chatgpt.site/modules/dns-tls-mail.html) — Separate dangling records, transfer/recursion exposure, TLS identity and SMTP relay into controlled protocol tests.
- [Database, cache, queue and management service boundaries](https://bug-bounty-field-manual.kmahshooq.chatgpt.site/modules/network-service-boundaries.html) — Move from a reachable socket to a minimal proof of unintended service authority using synthetic records and paired identities.
- [Hardware interfaces: production debug access and protected data](https://bug-bounty-field-manual.kmahshooq.chatgpt.site/modules/hardware-interfaces.html) — Distinguish diagnostic output from privileged UART, JTAG/SWD and firmware-secret boundary failures on an owned lab unit.

## Vulnerability reference

- [Web cache poisoning](https://bug-bounty-field-manual.kmahshooq.chatgpt.site/vulnerabilities/web-cache-poisoning-unkeyed-input.html)
- [Web cache deception](https://bug-bounty-field-manual.kmahshooq.chatgpt.site/vulnerabilities/web-cache-deception-private-response.html)
- [HTTP request smuggling / desynchronization](https://bug-bounty-field-manual.kmahshooq.chatgpt.site/vulnerabilities/http-request-boundary-desynchronization.html)
- [Out-of-bounds memory read](https://bug-bounty-field-manual.kmahshooq.chatgpt.site/vulnerabilities/out-of-bounds-read.html)
- [Out-of-bounds memory write](https://bug-bounty-field-manual.kmahshooq.chatgpt.site/vulnerabilities/out-of-bounds-write.html)
- [Use after free in a public API or parser lifecycle](https://bug-bounty-field-manual.kmahshooq.chatgpt.site/vulnerabilities/use-after-free.html)
- [Integer overflow affecting allocation or bounds](https://bug-bounty-field-manual.kmahshooq.chatgpt.site/vulnerabilities/integer-overflow.html)
- [Parser resource exhaustion and decompression amplification](https://bug-bounty-field-manual.kmahshooq.chatgpt.site/vulnerabilities/parser-resource-exhaustion.html)
- [Namespace or workload network restriction is ineffective](https://bug-bounty-field-manual.kmahshooq.chatgpt.site/vulnerabilities/kube-network-isolation-failure.html)
- [Supported deployment default exposes a protected service](https://bug-bounty-field-manual.kmahshooq.chatgpt.site/vulnerabilities/iac-insecure-supported-default.html)
- [Dangling DNS reference to a retired service](https://bug-bounty-field-manual.kmahshooq.chatgpt.site/vulnerabilities/dns-dangling-resource-reference.html)
- [Restricted DNS zone transferable from an unintended source](https://bug-bounty-field-manual.kmahshooq.chatgpt.site/vulnerabilities/dns-unrestricted-zone-transfer.html)
- [DNS recursion available outside the intended client network](https://bug-bounty-field-manual.kmahshooq.chatgpt.site/vulnerabilities/dns-unrestricted-recursion.html)
- [SMTP relay allows unauthenticated external delivery](https://bug-bounty-field-manual.kmahshooq.chatgpt.site/vulnerabilities/smtp-unintended-open-relay.html)
- [Redis authentication or key ACL boundary failure](https://bug-bounty-field-manual.kmahshooq.chatgpt.site/vulnerabilities/redis-canary-access.html)
- [PostgreSQL trust authentication exceeds the approved network boundary](https://bug-bounty-field-manual.kmahshooq.chatgpt.site/vulnerabilities/postgres-unintended-trust-auth.html)
- [Message broker permissions cross a virtual-host boundary](https://bug-bounty-field-manual.kmahshooq.chatgpt.site/vulnerabilities/queue-virtual-host-boundary.html)
- [Container daemon management endpoint lacks required client authentication](https://bug-bounty-field-manual.kmahshooq.chatgpt.site/vulnerabilities/container-daemon-client-auth.html)
- [TLS peer certificate or hostname verification failure](https://bug-bounty-field-manual.kmahshooq.chatgpt.site/vulnerabilities/client-invalid-certificate.html)
- [Firmware contains a reusable shared authentication credential](https://bug-bounty-field-manual.kmahshooq.chatgpt.site/vulnerabilities/firmware-shared-credentials.html)
