Nmap AJP URI Requests with ajp-request
The ajp-request NSE script sends arbitrary HTTP requests over the AJP connector and returns the response body. Use it to retrieve application content from paths that may not be accessible via the front-end HTTP proxy, confirm whether the Tomcat manager is deployed, and validate whether risky methods discovered in ajp-methods actually return meaningful responses. Run AJP fingerprinting first to get the context path from the JSESSIONID cookie before probing paths here.
Request Root and Common Tomcat Paths
| ajp-request: | HTTP/1.1 200 OK | ... |_<title>Apache Tomcat/9.0.31</title>
=== / === <title>Apache Tomcat/9.0.31</title> === /manager/html === 401 Unauthorized WWW-Authenticate: Basic realm="Tomcat Manager Application"
A 401 on /manager/html confirms the manager is deployed and requires credentials. The Tomcat version in the title is an immediate CVE lookup target. Move to Tomcat manager testing for credential attacks.
Test Risky Methods
Validate methods flagged by ajp-methods against the actual application paths:
| ajp-request: | HTTP/1.1 200 OK |_Allow: GET, HEAD, POST, PUT, DELETE, TRACE, OPTIONS
Authenticated Request to Manager
Once credentials are found from other sources, test them directly against the manager via AJP:
| ajp-request: | HTTP/1.1 200 OK |_<title>Tomcat Web Application Manager</title>
Save Response Bodies for Analysis
Capture large responses to disk for offline grepping when the inline nmap output is truncated:
References
-
nmap — ajp-request NSEnmap.org/nsedoc/scripts/ajp-request.html (opens in new tab)
Script arguments for path, method, credentials, and output file
Was this helpful?
Your feedback helps improve this page.