Netsparker, Web Application Security Scanner

XSS, Cross Site Scripting, CWE-79, CAPEC-86, Javascript Injection

Loading

Netsparker - Scan Report Summary
TARGET URL
https://sso.springsource.com/cas/login?servic...
SCAN DATE
3/1/2011 8:51:27 AM
REPORT DATE
3/1/2011 8:54:33 AM
SCAN DURATION
00:00:32

Total Requests

Average Speed

req/sec.
6
identified
4
confirmed
0
critical
0
informational

GHDB, DORK Tests

GHDB, DORK Tests
PROFILE
Previous Settings
ENABLED ENGINES
Boolean SQL Injection, HTTP Header Injection, SQL Injection, Cross-site Scripting
Authentication
Scheduled

VULNERABILITIES

Vulnerabilities
Netsparker - Web Application Security Scanner
IMPORTANT
33 %
LOW
67 %
Cross-site Scripting

Cross-site Scripting

1 TOTAL
IMPORTANT
CONFIRMED
1
XSS (Cross-site Scripting) allows an attacker to execute a dynamic script (Javascript, VbScript) in the context of the application. This allows several different attack opportunities, mostly hijacking the current session of the user or changing the look of the page by changing the HTML on the fly to steal the user's credentials. This happens because the input entered by a user has been interpreted as HTML/Javascript/VbScript by the browser.

XSS targets the users of the application instead of the server. Although this is a limitation, since it allows attackers to hijack other users' session, an attacker might attack an administrator to gain full control over the application.

Impact

There are many different attacks that can be leveraged through the use of XSS, including:
  • Hi-jacking users' active session
  • Changing the look of the page within the victims browser.
  • Mounting a successful phishing attack.
  • Intercept data and perform man-in-the-middle attacks.

Remedy

The issue occurs because the browser interprets the input as active HTML, Javascript or VbScript. To avoid this, all input and output from the application should be filtered. Output should be filtered according to the output format and location. Typically the output location is HTML. Where the output is HTML ensure that all active content is removed prior to its presentation to the server.

Prior to sanitizing user input, ensure you have a pre-defined list of both expected and acceptable characters with which you populate a white-list. This list needs only be defined once and should be used to sanitize and validate all subsequent input.

There are a number of pre-defined, well structured white-list libraries available for many different environments, good examples of these include, OWASP Reform and Microsoft Anti Cross-site Scripting libraries are good examples.

Remedy References

External References

- /cas/login

/cas/login CONFIRMED

https://sso.springsource.com/cas/login?'"--></style></script><script>alert(0x000061)</script>

Parameters

Parameter Type Value
service GET https://support.springsource.com/spring_account
Query Based QUERYSTRING '"--></style></script><script>alert(0x000061)</script>

Request

GET /cas/login?'"--></style></script><script>netsparker(0x000061)</script> HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)
Cache-Control: no-cache
Host: sso.springsource.com
Cookie: JSESSIONID=FCB1A51B044FA64EF8CF417FD274A183; org.springframework.web.servlet.i18n.CookieLocaleResolver.LOCALE=en
Accept-Encoding: gzip, deflate
Connection: Keep-Alive

Response

HTTP/1.0 200 OK
Date: Tue, 01 Mar 2011 14:50:44 GMT
Pragma: no-cache
Expires: Thu, 01 Jan 1970 00:00:00 GMT
Cache-Control: no-cache,no-store
Content-Type: text/html;charset=UTF-8
Content-Language: en
Content-Length: 6443
Connection: close


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"> <head> <title>CAS &#8211; Central Authentication Service</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <style type="text/css" media="screen">@import 'css/s9cas.css'/**/;</style> <style type="text/css" media="screen">@import 'css/s9springsource.css'/**/;</style> <!--[if gte IE 6]><style type="text/css" media="screen">@import 'css/ie_cas.css';</style><![endif]--> <script type="text/javascript" src="js/common_rosters.js"></script> <link rel="icon" href="/cas/favicon.ico" type="image/x-icon" /><!-- below is local link to style sheet --><link type="text/css" rel="stylesheet" media="all" href="CSS/style-local.css" /><script type="text/javascript" src="https://www.springsource.com/sites/all/modules/google_analytics/googleanalytics.js?O"></script> </head> <body id="cas" onload="init();"> <div id="page-wrapper"> <div id="page"><div id="header"> <div id="logo"> <a href="http://www.springsource.com/" title="Home" rel="home"><img src="https://www.springsource.com/sites/all/themes/spring09/logo.png" alt="Home" /></a> </div> <!-- /logo --> </div> <!-- /header --> <div id="content"> <form id="fm1" class="fm-v clearfix" action="/cas/login?'&quot;--&gt;&lt;/style&gt;&lt;/script&gt;&lt;script&gt;netsparker(0x000061)&lt;/script&gt;" method="post"> <div class="box" id="login"> <!-- Congratulations on bringing CAS online! The default authentication handler authenticates where usernames equal passwords: go ahead, try it out. --> <h3>Enter your Email and Password</h3> <div class="row"><p>If you cannot login please <a href="https://reg.springsource.com/forgotpass.php">verify your registration</a></p> <label for="username"><span class="accesskey">E</span>mail:</label> <input id="username" name="username" class="required" tabindex="1" accesskey="n" type="text" value="" size="25" autocomplete="false"/> </div> <div class="row"> <label for="password"><span class="accesskey">P</span>assword:</label> <input id="password" name="password" class="required" tabindex="2" accesskey="p" type="password" value="" size="25" autocomplete="off"/> </div><!-- <div class="row check"> <input id="warn" name="warn" value="true" tabindex="3" accesskey="w" type="checkbox" /> <label for="warn"><span class="accesskey">W</span>arn me before logging me into other sites.</label> </div>--> <div class="row btn-row"> <input type="hidden" name="lt" value="_c2B8398B5-E520-1DF1-0B6A-EE465A2D072B_k446046A8-700E-29F6-19E0-1827A7483946" /> <input type="hidden" name="_eventId" value="submit" /> <input class="btn-submit" name="submit" accesskey="l" value="LOGIN" tabindex="4" type="submit" /> <input class="btn-reset" name="reset" accesskey="c" value="CLEAR" tabindex="5" type="reset" /> </div> </div> <div id="sidebar"> <p>For security reasons, please Log Out and Exit your web browser when you are done accessing services that require authentication!</p><!-- <div id="list-languages"> <h3>Languages:</h3> <ul ><li class="first"><a href="login?'"--></style></script><script>netsparker(0x000061)</script>&locale=en">English</a></li ><li><a href="login?'"--></style></script><script>netsparker(0x000061)</script>&locale=es">Spanish</a></li ><li><a href="login?'"--></style></script><script>netsparker(0x000061)</script>&locale=fr">French</a></li ><li><a href="login?'"--></style></script><script>netsparker(0x000061)</script>&locale=ru">Russian</a></li ><li><a href="login?'"--></style></script><script>netsparker(0x000061)</script>&locale=nl">Nederlands</a></li ><li><a href="login?'"--></style></script><script>netsparker(0x000061)</script>&locale=sv">Svenskt</a></li ><li><a href="login?'"--></style></script><script>netsparker(0x000061)</script>&locale=it">Italiano</a></li ><li><a href="login?'"--></style></script><script>netsparker(0x000061)</script>&locale=ur">Urdu</a></li ><li><a href="login?'"--></style></script><script>netsparker(0x000061)</script>&locale=zh_CN">Chinese (Simplified)</a></li ><li><a href="login?'"--></style></script><script>netsparker(0x000061)</script>&locale=de">Deutsch</a></li ><li><a href="login?'"--></style></script><script>netsparker(0x000061)</script>&locale=ja">Japanese</a></li ><li><a href="login?'"--></style></script><script>netsparker(0x000061)</script>&locale=hr">Croatian</a></li ><li><a href="login?'"--></style></script><script>netsparker(0x000061)</script>&locale=cs">Czech</a></li ><li><a href="login?'"--></style></script><script>netsparker(0x000061)</script>&locale=sl">Slovenian</a></li ><li class="last"><a href="login?'"--></style></script><script>netsparker(0x000061)</script>&locale=pl">Polish</a></li ></ul> </div>--> </div> </form></div> <div id="footer-wrapper"> <div id="footer"> <p><a href="https://sso.springsource.com/cas/login?service=http://www.springsource.com/cas%3Fdestination%3Dspring_account">&copy;</a> Copyright 2009 SpringSource. All Rights Reserved. | <a href="http://www.springsource.com/terms_of_service" style="color: rgb(177, 176, 176);">Terms of Service</a> | <a href="http://www.springsource.com/trademark_standards" style="color: rgb(177, 176, 176);">Trademark Standards</a> | <a target="_blank" href="http://www.hyperic.com" style="color: rgb(177, 176, 176);">Systems Monitoring</a><br/> Powered by <a href="http://www.ja-sig.org/products/cas/">JA-SIG Central Authentication Service</a></p> </div> <!-- /footer --> </div> <!-- /footer-wrapper --></div> </body></html>
Cookie Not Marked As Secure

Cookie Not Marked As Secure

1 TOTAL
IMPORTANT
CONFIRMED
1
A Cookie was not marked as secure and transmitted over HTTPS. This means the cookie could potentially be stolen by an attacker who can successfully intercept and decrypt the traffic or following a successful MITM (Man in the middle) attack.

Impact

This cookie will be transmitted over a HTTP connection, therefore if this cookie is important (such as a session cookie) an attacker might intercept it and hijack a victim's session. If the attacker can carry out a MITM attack, he/she can force victim to make a HTTP request to steal the cookie.

Actions to Take

  1. See the remedy for solution.
  2. Mark all cookies used within the application as secure. (If the cookie is not related to authentication or does not carry any personal information you do not have to mark it as secure.))

Remedy

Mark all cookies used within the application as secure.

Required Skills for Successful Exploitation

To exploit this issue, the attacker needs to be able to intercept traffic. This generally requires local access to the web server or victim's network. Attackers need to be understand layer 2, have physical access to systems either as way points for the traffic, or locally (have gained access to) to a system between the victim and the web server.
- /cas/login

/cas/login CONFIRMED

https://sso.springsource.com/cas/login?service=https://support.springsource.com/spring_account&local..

Identified Cookie

org.springframework.web.servlet.i18n.CookieLocaleResolver.LOCALE

Request

GET /cas/login?service=https://support.springsource.com/spring_account&locale=en HTTP/1.1
Referer: https://sso.springsource.com/cas/login?service=https://support.springsource.com/spring_account
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)
Cache-Control: no-cache
Host: sso.springsource.com
Cookie: JSESSIONID=FCB1A51B044FA64EF8CF417FD274A183
Accept-Encoding: gzip, deflate
Connection: Keep-Alive

Response

HTTP/1.0 200 OK
Date: Tue, 01 Mar 2011 14:50:33 GMT
Set-Cookie: org.springframework.web.servlet.i18n.CookieLocaleResolver.LOCALE=en; Expires=Sun, 19-Mar-2079 18:04:40 GMT; Path=/
Pragma: no-cache
Expires: Thu, 01 Jan 1970 00:00:00 GMT
Cache-Control: no-cache,no-store
Content-Type: text/html;charset=UTF-8
Content-Language: en
Content-Length: 6361
Connection: close


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"> <head> <title>CAS &#8211; Central Authentication Service</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <style type="text/css" media="screen">@import 'css/s9cas.css'/**/;</style> <style type="text/css" media="screen">@import 'css/s9springsource.css'/**/;</style> <!--[if gte IE 6]><style type="text/css" media="screen">@import 'css/ie_cas.css';</style><![endif]--> <script type="text/javascript" src="js/common_rosters.js"></script> <link rel="icon" href="/cas/favicon.ico" type="image/x-icon" /><!-- below is local link to style sheet --><link type="text/css" rel="stylesheet" media="all" href="CSS/style-local.css" /><script type="text/javascript" src="https://www.springsource.com/sites/all/modules/google_analytics/googleanalytics.js?O"></script> </head> <body id="cas" onload="init();"> <div id="page-wrapper"> <div id="page"><div id="header"> <div id="logo"> <a href="http://www.springsource.com/" title="Home" rel="home"><img src="https://www.springsource.com/sites/all/themes/spring09/logo.png" alt="Home" /></a> </div> <!-- /logo --> </div> <!-- /header --> <div id="content"> <form id="fm1" class="fm-v clearfix" action="/cas/login?service=https://support.springsource.com/spring_account&amp;locale=en" method="post"> <div class="box" id="login"> <!-- Congratulations on bringing CAS online! The default authentication handler authenticates where usernames equal passwords: go ahead, try it out. --> <h3>Enter your Email and Password</h3> <div class="row"><p>If you cannot login please <a href="https://reg.springsource.com/forgotpass.php">verify your registration</a></p> <label for="username"><span class="accesskey">E</span>mail:</label> <input id="username" name="username" class="required" tabindex="1" accesskey="n" type="text" value="" size="25" autocomplete="false"/> </div> <div class="row"> <label for="password"><span class="accesskey">P</span>assword:</label> <input id="password" name="password" class="required" tabindex="2" accesskey="p" type="password" value="" size="25" autocomplete="off"/> </div><!-- <div class="row check"> <input id="warn" name="warn" value="true" tabindex="3" accesskey="w" type="checkbox" /> <label for="warn"><span class="accesskey">W</span>arn me before logging me into other sites.</label> </div>--> <div class="row btn-row"> <input type="hidden" name="lt" value="_c2973EE55-70FA-19BA-083B-3D24FB1E3AE1_k228947AC-BA77-2CAF-9573-A07311053C78" /> <input type="hidden" name="_eventId" value="submit" /> <input class="btn-submit" name="submit" accesskey="l" value="LOGIN" tabindex="4" type="submit" /> <input class="btn-reset" name="reset" accesskey="c" value="CLEAR" tabindex="5" type="reset" /> </div> </div> <div id="sidebar"> <p>For security reasons, please Log Out and Exit your web browser when you are done accessing services that require authentication!</p><!-- <div id="list-languages"> <h3>Languages:</h3> <ul ><li class="first"><a href="login?service=https://support.springsource.com/spring_account&locale=en">English</a></li ><li><a href="login?service=https://support.springsource.com/spring_account&locale=es">Spanish</a></li ><li><a href="login?service=https://support.springsource.com/spring_account&locale=fr">French</a></li ><li><a href="login?service=https://support.springsource.com/spring_account&locale=ru">Russian</a></li ><li><a href="login?service=https://support.springsource.com/spring_account&locale=nl">Nederlands</a></li ><li><a href="login?service=https://support.springsource.com/spring_account&locale=sv">Svenskt</a></li ><li><a href="login?service=https://support.springsource.com/spring_account&locale=it">Italiano</a></li ><li><a href="login?service=https://support.springsource.com/spring_account&locale=ur">Urdu</a></li ><li><a href="login?service=https://support.springsource.com/spring_account&locale=zh_CN">Chinese (Simplified)</a></li ><li><a href="login?service=https://support.springsource.com/spring_account&locale=de">Deutsch</a></li ><li><a href="login?service=https://support.springsource.com/spring_account&locale=ja">Japanese</a></li ><li><a href="login?service=https://support.springsource.com/spring_account&locale=hr">Croatian</a></li ><li><a href="login?service=https://support.springsource.com/spring_account&locale=cs">Czech</a></li ><li><a href="login?service=https://support.springsource.com/spring_account&locale=sl">Slovenian</a></li ><li class="last"><a href="login?service=https://support.springsource.com/spring_account&locale=pl">Polish</a></li ></ul> </div>--> </div> </form></div> <div id="footer-wrapper"> <div id="footer"> <p><a href="https://sso.springsource.com/cas/login?service=http://www.springsource.com/cas%3Fdestination%3Dspring_account">&copy;</a> Copyright 2009 SpringSource. All Rights Reserved. | <a href="http://www.springsource.com/terms_of_service" style="color: rgb(177, 176, 176);">Terms of Service</a> | <a href="http://www.springsource.com/trademark_standards" style="color: rgb(177, 176, 176);">Trademark Standards</a> | <a target="_blank" href="http://www.hyperic.com" style="color: rgb(177, 176, 176);">Systems Monitoring</a><br/> Powered by <a href="http://www.ja-sig.org/products/cas/">JA-SIG Central Authentication Service</a></p> </div> <!-- /footer --> </div> <!-- /footer-wrapper --></div> </body></html>
Internal Server Error

Internal Server Error

1 TOTAL
LOW
CONFIRMED
1
The Server responded with an HTTP status 500. This indicates that there is a server-side error. Reasons may vary. The behavior should be analysed carefully. If Netsparker is able to find a security issue in the same resource it will report this as a separate vulnerability.

Impact

The impact may vary depending on the condition. Generally this indicates poor coding practices, not enough error checking, sanitization and whitelisting. However there might be a bigger issue such as SQL Injection. If that's the case Netsparker will check for other possible issues and report them separately.

Remedy

Analyse this issue and review the application code in order to handle unexpected errors, this should be a generic practice which does not disclose further information upon an error. All errors should be handled server side only.
- /cas/login

/cas/login CONFIRMED

https://sso.springsource.com/cas/login?service=https://support.springsource.com/spring_account&_even..

Request

GET /cas/login?service=https://support.springsource.com/spring_account&_eventId=submit&lt=_c0642017C-2113-968F-427D-5CBA79F20646_k3F5486A5-A9A8-CA0D-3C66-391AA661A516&password=&reset=CLEAR&submit=LOGIN&username=&warn=true HTTP/1.1
Referer: https://sso.springsource.com/cas/login?service=https://support.springsource.com/spring_account
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)
Cache-Control: no-cache
Host: sso.springsource.com
Cookie: JSESSIONID=FCB1A51B044FA64EF8CF417FD274A183
Accept-Encoding: gzip, deflate
Connection: Keep-Alive

Response

HTTP/1.0 500 Internal Server Error
Date: Tue, 01 Mar 2011 14:50:33 GMT
Content-Type: text/html;charset=utf-8
Content-Length: 5455
Connection: close


<html><head><title>Apache Tomcat/6.0.18 - Error report</title><style><!--H1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;} H2 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;} H3 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;} BODY {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;} B {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;} P {font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;}A {color : black;}A.name {color : black;}HR {color : #525D76;}--></style> </head><body><h1>HTTP Status 500 - </h1><HR size="1" noshade="noshade"><p><b>type</b> Exception report</p><p><b>message</b> <u></u></p><p><b>description</b> <u>The server encountered an internal error () that prevented it from fulfilling this request.</u></p><p><b>exception</b> <pre>org.springframework.webflow.execution.repository.NoSuchFlowExecutionException: No flow execution could be found with key '_c0642017C-2113-968F-427D-5CBA79F20646_k3F5486A5-A9A8-CA0D-3C66-391AA661A516' -- perhaps this executing flow has ended or expired? This could happen if your users are relying on browser history (typically via the back button) that references ended flows.; nested exception is org.springframework.webflow.conversation.NoSuchConversationException: No conversation could be found with id '0642017C-2113-968F-427D-5CBA79F20646' -- perhaps this conversation has ended? org.springframework.webflow.execution.repository.support.AbstractConversationFlowExecutionRepository.getConversation(AbstractConversationFlowExecutionRepository.java:229) org.springframework.webflow.execution.repository.support.AbstractConversationFlowExecutionRepository.getLock(AbstractConversationFlowExecutionRepository.java:119) org.springframework.webflow.executor.FlowExecutorImpl.resume(FlowExecutorImpl.java:217) org.springframework.webflow.executor.support.FlowRequestHandler.handleFlowRequest(FlowRequestHandler.java:111) org.springframework.webflow.executor.mvc.FlowController.handleRequestInternal(FlowController.java:165) org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153) org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48) org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:875) org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:809) org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:571) org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:501) javax.servlet.http.HttpServlet.service(HttpServlet.java:617) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) org.jasig.cas.web.init.SafeDispatcherServlet.service(SafeDispatcherServlet.java:115) org.inspektr.common.web.ClientInfoThreadLocalFilter.doFilterInternal(ClientInfoThreadLocalFilter.java:48) org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)</pre></p><p><b>root cause</b> <pre>org.springframework.webflow.conversation.NoSuchConversationException: No conversation could be found with id '0642017C-2113-968F-427D-5CBA79F20646' -- perhaps this conversation has ended? org.springframework.webflow.conversation.impl.ConversationContainer.getConversation(ConversationContainer.java:107) org.springframework.webflow.conversation.impl.SessionBindingConversationManager.getConversation(SessionBindingConversationManager.java:125) org.springframework.webflow.execution.repository.support.AbstractConversationFlowExecutionRepository.getConversation(AbstractConversationFlowExecutionRepository.java:227) org.springframework.webflow.execution.repository.support.AbstractConversationFlowExecutionRepository.getLock(AbstractConversationFlowExecutionRepository.java:119) org.springframework.webflow.executor.FlowExecutorImpl.resume(FlowExecutorImpl.java:217) org.springframework.webflow.executor.support.FlowRequestHandler.handleFlowRequest(FlowRequestHandler.java:111) org.springframework.webflow.executor.mvc.FlowController.handleRequestInternal(FlowController.java:165) org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153) org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48) org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:875) org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:809) org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:571) org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:501) javax.servlet.http.HttpServlet.service(HttpServlet.java:617) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) org.jasig.cas.web.init.SafeDispatcherServlet.service(SafeDispatcherServlet.java:115) org.inspektr.common.web.ClientInfoThreadLocalFilter.doFilterInternal(ClientInfoThreadLocalFilter.java:48) org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)</pre></p><p><b>note</b> <u>The full stack trace of the root cause is available in the Apache Tomcat/6.0.18 logs.</u></p><HR size="1" noshade="noshade"><h3>Apache Tomcat/6.0.18</h3></body></html>
Cookie Not Marked As HttpOnly

Cookie Not Marked As HttpOnly

1 TOTAL
LOW
CONFIRMED
1
Cookie was not marked as HTTPOnly. HTTPOnly cookies can not be read by client-side scripts therefore marking a cookie as HTTPOnly can provide an additional layer of protection against Cross-site Scripting attacks..

Impact

During a Cross-site Scripting attack an attacker might easily access cookies and hijack the victim's session.

Actions to Take

  1. See the remedy for solution
  2. Consider marking all of the cookies used by the application as HTTPOnly (After these changes javascript code will not able to read cookies.

Remedy

Mark the cookie as HTTPOnly. This will be an extra layer of defence against XSS. However this is not a silver bullet and will not protect the system against Cross-site Scripting attacks. An attacker can use a tool such as XSS Tunnel to bypass HTTPOnly protection.

External References

- /cas/login

/cas/login CONFIRMED

https://sso.springsource.com/cas/login?service=https://support.springsource.com/spring_account

Identified Cookie

JSESSIONID

Request

GET /cas/login?service=https://support.springsource.com/spring_account HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)
Cache-Control: no-cache
Host: sso.springsource.com
Accept-Encoding: gzip, deflate
Connection: Keep-Alive

Response

HTTP/1.0 200 OK
Date: Tue, 01 Mar 2011 14:50:33 GMT
Pragma: no-cache
Expires: Thu, 01 Jan 1970 00:00:00 GMT
Cache-Control: no-cache,no-store
Set-Cookie: JSESSIONID=FCB1A51B044FA64EF8CF417FD274A183; Path=/cas; Secure
Content-Type: text/html;charset=UTF-8
Content-Language: en-US
Content-Length: 6391
Connection: close


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"> <head> <title>CAS &#8211; Central Authentication Service</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <style type="text/css" media="screen">@import 'css/s9cas.css'/**/;</style> <style type="text/css" media="screen">@import 'css/s9springsource.css'/**/;</style> <!--[if gte IE 6]><style type="text/css" media="screen">@import 'css/ie_cas.css';</style><![endif]--> <script type="text/javascript" src="js/common_rosters.js"></script> <link rel="icon" href="/cas/favicon.ico" type="image/x-icon" /><!-- below is local link to style sheet --><link type="text/css" rel="stylesheet" media="all" href="CSS/style-local.css" /><script type="text/javascript" src="https://www.springsource.com/sites/all/modules/google_analytics/googleanalytics.js?O"></script> </head> <body id="cas" onload="init();"> <div id="page-wrapper"> <div id="page"><div id="header"> <div id="logo"> <a href="http://www.springsource.com/" title="Home" rel="home"><img src="https://www.springsource.com/sites/all/themes/spring09/logo.png" alt="Home" /></a> </div> <!-- /logo --> </div> <!-- /header --> <div id="content"> <form id="fm1" class="fm-v clearfix" action="/cas/login;jsessionid=FCB1A51B044FA64EF8CF417FD274A183?service=https://support.springsource.com/spring_account" method="post"> <div class="box" id="login"> <!-- Congratulations on bringing CAS online! The default authentication handler authenticates where usernames equal passwords: go ahead, try it out. --> <h3>Enter your Email and Password</h3> <div class="row"><p>If you cannot login please <a href="https://reg.springsource.com/forgotpass.php">verify your registration</a></p> <label for="username"><span class="accesskey">E</span>mail:</label> <input id="username" name="username" class="required" tabindex="1" accesskey="n" type="text" value="" size="25" autocomplete="false"/> </div> <div class="row"> <label for="password"><span class="accesskey">P</span>assword:</label> <input id="password" name="password" class="required" tabindex="2" accesskey="p" type="password" value="" size="25" autocomplete="off"/> </div><!-- <div class="row check"> <input id="warn" name="warn" value="true" tabindex="3" accesskey="w" type="checkbox" /> <label for="warn"><span class="accesskey">W</span>arn me before logging me into other sites.</label> </div>--> <div class="row btn-row"> <input type="hidden" name="lt" value="_c0642017C-2113-968F-427D-5CBA79F20646_k3F5486A5-A9A8-CA0D-3C66-391AA661A516" /> <input type="hidden" name="_eventId" value="submit" /> <input class="btn-submit" name="submit" accesskey="l" value="LOGIN" tabindex="4" type="submit" /> <input class="btn-reset" name="reset" accesskey="c" value="CLEAR" tabindex="5" type="reset" /> </div> </div> <div id="sidebar"> <p>For security reasons, please Log Out and Exit your web browser when you are done accessing services that require authentication!</p><!-- <div id="list-languages"> <h3>Languages:</h3> <ul ><li class="first"><a href="login?service=https://support.springsource.com/spring_account&locale=en">English</a></li ><li><a href="login?service=https://support.springsource.com/spring_account&locale=es">Spanish</a></li ><li><a href="login?service=https://support.springsource.com/spring_account&locale=fr">French</a></li ><li><a href="login?service=https://support.springsource.com/spring_account&locale=ru">Russian</a></li ><li><a href="login?service=https://support.springsource.com/spring_account&locale=nl">Nederlands</a></li ><li><a href="login?service=https://support.springsource.com/spring_account&locale=sv">Svenskt</a></li ><li><a href="login?service=https://support.springsource.com/spring_account&locale=it">Italiano</a></li ><li><a href="login?service=https://support.springsource.com/spring_account&locale=ur">Urdu</a></li ><li><a href="login?service=https://support.springsource.com/spring_account&locale=zh_CN">Chinese (Simplified)</a></li ><li><a href="login?service=https://support.springsource.com/spring_account&locale=de">Deutsch</a></li ><li><a href="login?service=https://support.springsource.com/spring_account&locale=ja">Japanese</a></li ><li><a href="login?service=https://support.springsource.com/spring_account&locale=hr">Croatian</a></li ><li><a href="login?service=https://support.springsource.com/spring_account&locale=cs">Czech</a></li ><li><a href="login?service=https://support.springsource.com/spring_account&locale=sl">Slovenian</a></li ><li class="last"><a href="login?service=https://support.springsource.com/spring_account&locale=pl">Polish</a></li ></ul> </div>--> </div> </form></div> <div id="footer-wrapper"> <div id="footer"> <p><a href="https://sso.springsource.com/cas/login?service=http://www.springsource.com/cas%3Fdestination%3Dspring_account">&copy;</a> Copyright 2009 SpringSource. All Rights Reserved. | <a href="http://www.springsource.com/terms_of_service" style="color: rgb(177, 176, 176);">Terms of Service</a> | <a href="http://www.springsource.com/trademark_standards" style="color: rgb(177, 176, 176);">Trademark Standards</a> | <a target="_blank" href="http://www.hyperic.com" style="color: rgb(177, 176, 176);">Systems Monitoring</a><br/> Powered by <a href="http://www.ja-sig.org/products/cas/">JA-SIG Central Authentication Service</a></p> </div> <!-- /footer --> </div> <!-- /footer-wrapper --></div> </body></html>
Tomcat Version Disclosure

Tomcat Version Disclosure

1 TOTAL
LOW
Netsparker identified that the target web server is Tomcat. This information was gathered from the HTTP Headers.

Impact

An attacker can look for specific security vulnerabilities for the version disclosed by the SERVER header.

Remedy

Configure your web server to prevent information leakage from the SERVER header of its HTTP response.
- /cas/login

/cas/login

https://sso.springsource.com/cas/login?service=https://support.springsource.com/spring_account&_even..

Extracted Version

Apache Tomcat/6.0.18

Request

GET /cas/login?service=https://support.springsource.com/spring_account&_eventId=submit&lt=_c0642017C-2113-968F-427D-5CBA79F20646_k3F5486A5-A9A8-CA0D-3C66-391AA661A516&password=&reset=CLEAR&submit=LOGIN&username=&warn=true HTTP/1.1
Referer: https://sso.springsource.com/cas/login?service=https://support.springsource.com/spring_account
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)
Cache-Control: no-cache
Host: sso.springsource.com
Cookie: JSESSIONID=FCB1A51B044FA64EF8CF417FD274A183
Accept-Encoding: gzip, deflate
Connection: Keep-Alive

Response

HTTP/1.0 500 Internal Server Error
Date: Tue, 01 Mar 2011 14:50:33 GMT
Content-Type: text/html;charset=utf-8
Content-Length: 5455
Connection: close


<html><head><title>Apache Tomcat/6.0.18 - Error report</title><style><!--H1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;} H2 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;} H3 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;} BODY {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;} B {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;} P {font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;}A {color : black;}A.name {color : black;}HR {color : #525D76;}--></style> </head><body><h1>HTTP Status 500 - </h1><HR size="1" noshade="noshade"><p><b>type</b> Exception report</p><p><b>message</b> <u></u></p><p><b>description</b> <u>The server encountered an internal error () that prevented it from fulfilling this request.</u></p><p><b>exception</b> <pre>org.springframework.webflow.execution.repository.NoSuchFlowExecutionException: No flow execution could be found with key '_c0642017C-2113-968F-427D-5CBA79F20646_k3F5486A5-A9A8-CA0D-3C66-391AA661A516' -- perhaps this executing flow has ended or expired? This could happen if your users are relying on browser history (typically via the back button) that references ended flows.; nested exception is org.springframework.webflow.conversation.NoSuchConversationException: No conversation could be found with id '0642017C-2113-968F-427D-5CBA79F20646' -- perhaps this conversation has ended? org.springframework.webflow.execution.repository.support.AbstractConversationFlowExecutionRepository.getConversation(AbstractConversationFlowExecutionRepository.java:229) org.springframework.webflow.execution.repository.support.AbstractConversationFlowExecutionRepository.getLock(AbstractConversationFlowExecutionRepository.java:119) org.springframework.webflow.executor.FlowExecutorImpl.resume(FlowExecutorImpl.java:217) org.springframework.webflow.executor.support.FlowRequestHandler.handleFlowRequest(FlowRequestHandler.java:111) org.springframework.webflow.executor.mvc.FlowController.handleRequestInternal(FlowController.java:165) org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153) org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48) org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:875) org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:809) org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:571) org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:501) javax.servlet.http.HttpServlet.service(HttpServlet.java:617) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) org.jasig.cas.web.init.SafeDispatcherServlet.service(SafeDispatcherServlet.java:115) org.inspektr.common.web.ClientInfoThreadLocalFilter.doFilterInternal(ClientInfoThreadLocalFilter.java:48) org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)</pre></p><p><b>root cause</b> <pre>org.springframework.webflow.conversation.NoSuchConversationException: No conversation could be found with id '0642017C-2113-968F-427D-5CBA79F20646' -- perhaps this conversation has ended? org.springframework.webflow.conversation.impl.ConversationContainer.getConversation(ConversationContainer.java:107) org.springframework.webflow.conversation.impl.SessionBindingConversationManager.getConversation(SessionBindingConversationManager.java:125) org.springframework.webflow.execution.repository.support.AbstractConversationFlowExecutionRepository.getConversation(AbstractConversationFlowExecutionRepository.java:227) org.springframework.webflow.execution.repository.support.AbstractConversationFlowExecutionRepository.getLock(AbstractConversationFlowExecutionRepository.java:119) org.springframework.webflow.executor.FlowExecutorImpl.resume(FlowExecutorImpl.java:217) org.springframework.webflow.executor.support.FlowRequestHandler.handleFlowRequest(FlowRequestHandler.java:111) org.springframework.webflow.executor.mvc.FlowController.handleRequestInternal(FlowController.java:165) org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153) org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48) org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:875) org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:809) org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:571) org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:501) javax.servlet.http.HttpServlet.service(HttpServlet.java:617) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) org.jasig.cas.web.init.SafeDispatcherServlet.service(SafeDispatcherServlet.java:115) org.inspektr.common.web.ClientInfoThreadLocalFilter.doFilterInternal(ClientInfoThreadLocalFilter.java:48) org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)</pre></p><p><b>note</b> <u>The full stack trace of the root cause is available in the Apache Tomcat/6.0.18 logs.</u></p><HR size="1" noshade="noshade"><h3>Apache Tomcat/6.0.18</h3></body></html>
Tomcat Exception Report Disclosure

Tomcat Exception Report Disclosure

1 TOTAL
LOW
Netsparker identified that the target web server is disclosing exception report data in the HTTP response.

Impact

An attacker can obtain information such as:
  • Tomcat version.
  • Physical file path of Tomcat files.
  • Information about the generated exception.
This information might help an attacker to gain more information and to potentially focus on the development of further attacks to the target system.

Remedy

Apply the following configuration to your web.xml file to prevent information leakage by applying custom error pages.
<error-page>
        <error-code>500</error-code>
        <location>/server_error.html</location>
</error-page>

Remedy References

- /cas/login

/cas/login

https://sso.springsource.com/cas/login?service=https://support.springsource.com/spring_account&_even..

Request

GET /cas/login?service=https://support.springsource.com/spring_account&_eventId=submit&lt=_c0642017C-2113-968F-427D-5CBA79F20646_k3F5486A5-A9A8-CA0D-3C66-391AA661A516&password=&reset=CLEAR&submit=LOGIN&username=&warn=true HTTP/1.1
Referer: https://sso.springsource.com/cas/login?service=https://support.springsource.com/spring_account
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)
Cache-Control: no-cache
Host: sso.springsource.com
Cookie: JSESSIONID=FCB1A51B044FA64EF8CF417FD274A183
Accept-Encoding: gzip, deflate
Connection: Keep-Alive

Response

HTTP/1.0 500 Internal Server Error
Date: Tue, 01 Mar 2011 14:50:33 GMT
Content-Type: text/html;charset=utf-8
Content-Length: 5455
Connection: close


<html><head><title>Apache Tomcat/6.0.18 - Error report</title><style><!--H1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;} H2 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;} H3 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;} BODY {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;} B {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;} P {font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;}A {color : black;}A.name {color : black;}HR {color : #525D76;}--></style> </head><body><h1>HTTP Status 500 - </h1><HR size="1" noshade="noshade"><p><b>type</b> Exception report</p><p><b>message</b> <u></u></p><p><b>description</b> <u>The server encountered an internal error () that prevented it from fulfilling this request.</u></p><p><b>exception</b> <pre>org.springframework.webflow.execution.repository.NoSuchFlowExecutionException: No flow execution could be found with key '_c0642017C-2113-968F-427D-5CBA79F20646_k3F5486A5-A9A8-CA0D-3C66-391AA661A516' -- perhaps this executing flow has ended or expired? This could happen if your users are relying on browser history (typically via the back button) that references ended flows.; nested exception is org.springframework.webflow.conversation.NoSuchConversationException: No conversation could be found with id '0642017C-2113-968F-427D-5CBA79F20646' -- perhaps this conversation has ended? org.springframework.webflow.execution.repository.support.AbstractConversationFlowExecutionRepository.getConversation(AbstractConversationFlowExecutionRepository.java:229) org.springframework.webflow.execution.repository.support.AbstractConversationFlowExecutionRepository.getLock(AbstractConversationFlowExecutionRepository.java:119) org.springframework.webflow.executor.FlowExecutorImpl.resume(FlowExecutorImpl.java:217) org.springframework.webflow.executor.support.FlowRequestHandler.handleFlowRequest(FlowRequestHandler.java:111) org.springframework.webflow.executor.mvc.FlowController.handleRequestInternal(FlowController.java:165) org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153) org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48) org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:875) org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:809) org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:571) org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:501) javax.servlet.http.HttpServlet.service(HttpServlet.java:617) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) org.jasig.cas.web.init.SafeDispatcherServlet.service(SafeDispatcherServlet.java:115) org.inspektr.common.web.ClientInfoThreadLocalFilter.doFilterInternal(ClientInfoThreadLocalFilter.java:48) org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)</pre></p><p><b>root cause</b> <pre>org.springframework.webflow.conversation.NoSuchConversationException: No conversation could be found with id '0642017C-2113-968F-427D-5CBA79F20646' -- perhaps this conversation has ended? org.springframework.webflow.conversation.impl.ConversationContainer.getConversation(ConversationContainer.java:107) org.springframework.webflow.conversation.impl.SessionBindingConversationManager.getConversation(SessionBindingConversationManager.java:125) org.springframework.webflow.execution.repository.support.AbstractConversationFlowExecutionRepository.getConversation(AbstractConversationFlowExecutionRepository.java:227) org.springframework.webflow.execution.repository.support.AbstractConversationFlowExecutionRepository.getLock(AbstractConversationFlowExecutionRepository.java:119) org.springframework.webflow.executor.FlowExecutorImpl.resume(FlowExecutorImpl.java:217) org.springframework.webflow.executor.support.FlowRequestHandler.handleFlowRequest(FlowRequestHandler.java:111) org.springframework.webflow.executor.mvc.FlowController.handleRequestInternal(FlowController.java:165) org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153) org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48) org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:875) org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:809) org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:571) org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:501) javax.servlet.http.HttpServlet.service(HttpServlet.java:617) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) org.jasig.cas.web.init.SafeDispatcherServlet.service(SafeDispatcherServlet.java:115) org.inspektr.common.web.ClientInfoThreadLocalFilter.doFilterInternal(ClientInfoThreadLocalFilter.java:48) org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)</pre></p><p><b>note</b> <u>The full stack trace of the root cause is available in the Apache Tomcat/6.0.18 logs.</u></p><HR size="1" noshade="noshade"><h3>Apache Tomcat/6.0.18</h3></body></html>