// Create new context
contextId=((ApiResponseElement)(context.newContext(ZAPPROXY_APIKEY,CONTEXT_NAME))).getValue();
System.out.println("context "+ CONTEXT_NAME +" created; Id:"+contextId);
// Include url to context
context.includeInContext(ZAPPROXY_APIKEY, CONTEXT_NAME, "\\Q"+attackUrl+"\\E.*");
System.out.println("URL "+"\\Q"+attackUrl+"\\E.*"+" added to "+CONTEXT_NAME);
// Set Form based authentication
System.out.println("Set Form Based Authentication...");
setFormBasedAuthentication();
System.out.println("Form Based Authentication is set!");
// Set logged in indicator
clientApi.authentication.setLoggedInIndicator(ZAPPROXY_APIKEY, contextId, "%5CQ%3Clogout%3E+%5CE");
// Create new user
userId = ((ApiResponseElement)(clientApi.users.newUser(ZAPPROXY_APIKEY, contextId, username))).getValue();
System.out.println("Testing with user id: " + userId);
// Set authentication credentials
// Prepare the configuration in a format similar to how URL parameters are formed. This
// means that any value we add for the configuration values has to be URL encoded.
StringBuilder userAuthConfig = new StringBuilder();
userAuthConfig.append("username=").append(URLEncoder.encode(username, "UTF-8"));
userAuthConfig.append("&password=").append(URLEncoder.encode(password, "UTF-8"));
String authCon = userAuthConfig.toString();
System.out.println("Setting user authentication configuration as: " + authCon);
clientApi.users.setAuthenticationCredentials(ZAPPROXY_APIKEY, contextId, userId, authCon);
// Enable userId
clientApi.users.setUserEnabled(ZAPPROXY_APIKEY, contextId, userId, "True");
System.out.println("User "+username+" (Id:"+userId+") is now Enabled" );
// Check if everything is set up ok
System.out.println("Authentication config: " + clientApi.users.getUserById(contextId, userId).toString(0));
// Ajax Spidering
System.out.println("Ajax spidering starts");
clientApi.ajaxSpider.scan(ZAPPROXY_APIKEY, attackUrl, "False");
System.out.println("Current status = "+((ApiResponseElement)clientApi.ajaxSpider.status()).getValue());
while (((ApiResponseElement)clientApi.ajaxSpider.status()).getValue().equalsIgnoreCase("running"))
Thread.sleep(10000);
System.out.println("Number of results = "+((ApiResponseElement)clientApi.ajaxSpider.numberOfResults()).getValue());
//System.out.println("Results :: \n"+ ((ApiResponseElement)clientApi.ajaxSpider.results("", "")).getValue());
System.out.println("Ajax spidering stops");
// Spidering
System.out.println("Spidering starts");
clientApi.spider.scanAsUser(ZAPPROXY_APIKEY, attackUrl, contextId, userId, "", "");
//System.out.println(((ApiResponseElement)clientApi.spider.results("")).getValue());
System.out.println("Spidering stops");
// Active Scanning
System.out.println("Scanning starts");
clientApi.ascan.scan(ZAPPROXY_APIKEY, attackUrl, "", "", "", "", "");
System.out.println("Current status = "+((ApiResponseElement)clientApi.ascan.status("")).getValue());
while (((ApiResponseElement)clientApi.ascan.status("")).getValue().equalsIgnoreCase("running"))
Thread.sleep(10000);
System.out.println("HTML report output");
PrintWriter outputFile = new PrintWriter("results.html");
outputFile.write(new String(clientApi.core.htmlreport(ZAPPROXY_APIKEY)));
System.out.println("Scanning stops");
private static void setFormBasedAuthentication() throws ClientApiException, UnsupportedEncodingException {
// Setup the authentication method
String loginRequestData = "username={%username%}&password={%password%}";
// Prepare the configuration in a format similar to how URL parameters are formed. This
// means that any value we add for the configuration values has to be URL encoded.
StringBuilder formBasedConfig = new StringBuilder();
formBasedConfig.append("loginUrl=").append(URLEncoder.encode(loginUrl, "UTF-8"));
formBasedConfig.append("&loginRequestData=").append(URLEncoder.encode(loginRequestData, "UTF-8"));
System.out.println("Setting form based authentication configuration as: "+ formBasedConfig.toString());
clientApi.authentication.setAuthenticationMethod(ZAPPROXY_APIKEY, contextId, "formBasedAuthentication", formBasedConfig.toString());
// Check if everything is set up ok
System.out.println("Authentication config: " + clientApi.authentication.getAuthenticationMethod(contextId).toString(0));
}
String site = null;
ApiResponseList responseList = (ApiResponseList)clientApi.core.sites();
System.out.println("Number of sites = "+responseList.getItems().size());
//this code just tries to get the exact String in the list of sites
for (ApiResponse response : responseList.getItems()) {
String potentialSite = ((ApiResponseElement)response).getValue();
System.out.println("potentialSite = "+potentialSite);
if(potentialSite.contains("http://localhost:3000")) {
site = potentialSite;
}
}
System.out.println("site chosen:"+site);
// Create Empty Session
clientApi.httpSessions.createEmptySession(ZAPPROXY_APIKEY, site, "TestSession");
// Print active sessions
System.out.println("Active session: "+((ApiResponseElement)clientApi.httpSessions.activeSession(site)).getValue());
// Set Active session
ApiResponse activeSession = clientApi.httpSessions.setActiveSession(ZAPPROXY_APIKEY, site, "TestSession");
// Set Forced user
clientApi.forcedUser.setForcedUserModeEnabled(ZAPPROXY_APIKEY, true);
clientApi.forcedUser.setForcedUser(ZAPPROXY_APIKEY, contextId, userId);
{"sessions":[{"session":["Session 0",{"JSESSIONID":{"comment":"","domain":"localhost","domainAttributeSpecified":false,"expired":false,"expiryDate":null,"name":"JSESSIONID","path":"/WebGoat/","pathAttributeSpecified":false,"persistent":false,"secure":false,"value":"D077EF622E6CE1DC49D26F72E8EDEA76","version":0}},"9"]}]}Why is ZAP not able to get the session information for JS web client?
> <mailto:zaproxy-users+unsub...@googlegroups.com>.
> > <mailto:zaproxy-users+unsub...@googlegroups.com>.
> > For more options, visit https://groups.google.com/d/optout
> <https://groups.google.com/d/optout>.
>
> --
> You received this message because you are subscribed to the Google
> Groups "OWASP ZAP User Group" group.
> To unsubscribe from this group and stop receiving emails from it, send
> an email to zaproxy-user...@googlegroups.com
> <mailto:zaproxy-users+unsub...@googlegroups.com>.