Pentest Report
Pentest Report
Date Issued:
Report on the results and associated recommendations arising from a security test against
the Customer Interface/Dashboard Application
1
MERCIAL IN CONFIDENCE
PENETRATION TEST– SAMPLE REPORT
/Document Control
VERSION CONTROL
Version Date Editor Comments
th
0.1 5 November DRAFT
DISTRIBUTION
Individual Date Method
Jack Black 5th November Tresorit
2
PENETRATION TEST– SAMPLE REPORT
/Executive Summary
Pulsar has been engaged by ClientCompany to undertake security testing against the
support.clientcompany.com web application. The testing took place over the period from 21 st
October to 30th October 2015. During this period the application was analysed and assessed using a
combination of standard tools and utilities and the knowledge and experience of our technical team.
Although at the time of this engagement, the application was not in production, we nonetheless
stopped short of undertaking specific tests that would either a) evidently risk the integrity and
Overall we believe that a reasonable level of security has been attained by the applications that
were the target of this test, but due to there being a high and some medium and low risk issues,
remedial action needs to be carried out prior to official launch of the product. Testing revealed
The high risk vulnerability is called Browser Reconnaissance and Exfiltration via Adaptive
Compression of Hypertext (BREACH) which exploits the compression in the underlying HTTP
protocol.
We also found that information has been disclosed by the application that could be of use to an
Regarding low risk issues, some misconfigurations have been detected, and some information has
been revealed. Remediation requires minimal effort. For example, Clickjacking seems not
particularly risky however it also should be attended in the near future as a real attack could
3
PENETRATION TEST– SAMPLE REPORT
superimpose transparent boxes over the actual content, causing the user to enter data into the
attacker’s site where it could be recorded and used for more serious attacks.
Risks Identified
14
Our Penetration Test has identified 1x High, 4x Medium and 14x Low risks
HIGH RISKS
BREACH attack
MEDIUM RISKS
4
PENETRATION TEST– SAMPLE REPORT
LOW RISKS
No session timeout
User enumeration
We strongly recommend that ClientCompany does not disregard the findings encountered in this
report. If these vulnerabilities/recommendations are dealt with and fixed, the organisation will find
that the defence-in-depth posture of the system will improve substantially. We also recommend
that in line with good security practice, ClientCompany conducts periodic re-testing to ensure that
5
PENETRATION TEST– SAMPLE REPORT
neither intentional nor inadvertent changes have compromised their systems, and that new
/System Overview:
DESCRIPTION
McLeod Datacentre. Application is known as the “ClientCompany Customer Support Centre”. System
AAA is provided by integration with Active Directory and Crowd using LDAP.
Web Application is externally (Internet) accessible to any form of client and any external source via
https://support.clientcompany.com
DNS / IP
support.clientcompany.com. 000.000.000.000
6
PENETRATION TEST– SAMPLE REPORT
Environment
Clients
white listing)
External Firewall
Reverse Proxy
7
PENETRATION TEST– SAMPLE REPORT
help.clientcompany.com
support.clientcompany.com
setup.clientcompany.com
training.clientcompany.com (future)
my.clientcompany.com (future)
Application Server
Application Server is the Atlassian JIRA product, where customers will access the Service
xxxxxx.xxx.xxxxx:8080
Application server is a Java application and the Java Servlet engine is Tomcat
/Goals
Primary goal of this penetration test is to validate that the appropriate security measures have been
implemented by ClientCompany at the various layers of the portal to mitigate malicious activity
occurring.1
Secondary Goals
1
Taken from ClientCompany Provided requirements document “Vulnerability Assessment requirements for support-clientcompany-
com.pdf”
8
PENETRATION TEST– SAMPLE REPORT
To provide assurance to ClientCompany and their customers, that the web application
To achieve a high standard security posture and to identify all potential risks with the web
application.
To achieve confidence in their customers that their secure information has been proactively
tested by a 3rd party, and to attain an executive report stating that all risks have been
mitigated.
/Threat Assessment
ATTACK SOURCES
Through our discussions with Jack Black, and our understanding of the system, Pulsar has assessed
the most likely Attack Source to be customers (ClientCompany’s Customers and users of the
unauthenticated actors using scanning techniques to locate vulnerable servers online for various
reasons is possible.
MOTIVATION
These users would be motivated by gaining access to unauthorised data primarily, whether it is
Property.
ATTACK TARGET
9
PENETRATION TEST– SAMPLE REPORT
In the case of this project, the attack target is defined as support.clientcompany.com and potentially
The information/data within the system potentially contains customer sensitive information such as
employee data (bank details, dob etc.) and has been rated as medium – high value (commercially)
10
PENETRATION TEST– SAMPLE REPORT
This Penetration Test was undertaken using Pulsar’s own methodology using methodology and the
The Application is Java based JIRA, which is developed using the Struts Framework and runs on
Apache/Coyote.
000.000.000.000
https://support.clientcompany.com
All product names referenced herein are trademarks of their respective companies.
Rollback
Pen1
Pen2
We recommend that these accounts are deleted along with any data associated with them (where
applicable).
1. AUTHENTICATION
The purpose of these tests is to validate the methods employed to authenticate a user to the
system.
11
PENETRATION TEST– SAMPLE REPORT
The authentication process was first examined for potential weaknesses and then subjected
1.1.1 Enumeration
During enumeration, we examined the logon process of the application for any sensitive information
The login credentials (i.e. username and password) are submitted along with relevant session details
in a HTTP POST.
1.1.2 Attack
Information from the enumeration phase was used to devise possible attacks on the logon process.
Subvert logon
In a brute force attack, an attacker will use a program which systematically attempts to force logon
12
PENETRATION TEST– SAMPLE REPORT
The account attacked locked after a reasonable number of attempts, and for this reason, brute force
attacks against it are not feasible. This is in line with good security practice.
Attackers may guess or otherwise obtain URL references to internal functions and resubmit them to
the web server in an attempt to bypass logon functions. We performed forceful browsing attacks to
No protected content was retrieved using these methods. Attempts to view unauthorised content
resulted in the support.clientcompany.com login screen. This is in line with good security practice.
No susceptibility was found in the login to SQL injection, or other injection type attacks.
The user logon does not allow user names to be determined through differential error messages (i.e.
it is not possible to determine from the message received whether the login has been attempted
with an invalid username, or invalid password or both) as illustrated in the below screenshots. This is
13
PENETRATION TEST– SAMPLE REPORT
There is a way however, to find out whether or not a User Name is valid. After a number of
attempts, if a user exists, a Captcha screen is displayed. There is no such restriction in case of invalid
users.
We recommend using Captcha in case of invalid users as well, so the application does not disclose
14
PENETRATION TEST– SAMPLE REPORT
Most modern browsers offer to store usernames and passwords when entered for the convenience
of the user.
If the function is enabled, then credentials entered by the user are stored on their local computer
and retrieved by the browser on future visits to the same application. This may present a risk if a
user stores the password on an untrusted or shared machine. However correct use of browser
During testing, leading browsers offered to store the username and password to logon to the
support.clientcompany.com application:
If the application is likely to be used from shared systems, we recommend that browsers are
15
PENETRATION TEST– SAMPLE REPORT
Pulsar recommends that the ‘autocomplete=off’ directive is embedded in the HTML source code in
Logons to the application are provided over the encrypted HTTPS protocol. This means that it is not
possible for attackers to eavesdrop on unencrypted plain-text data, or to intercept login credentials.
2. SESSION HANDLING
We enumerated the mechanisms typically used to control session and tested them for suitability.
JSESSIONID
Testing indicated that cookies are used as tokens responsible for establishing and maintaining user
sessions.
Samples of these session identifiers were collected to assess any pattern in their generation.
The samples were analysed for obvious patterns in generation. Analysis indicates that session
identifiers appear to provide adequate entropy (i.e. high quality of randomness). This is illustrated in
16
PENETRATION TEST– SAMPLE REPORT
Figure 4: Chart indicating the degree of confidence in the randomness of the sample at each bit
17
PENETRATION TEST– SAMPLE REPORT
Figure 5: Chart indicating the degree of confidence in the randomness of the sample at each
character position from the cookie obtained from the ClientCompany application.
It is unlikely that an attacker can ascertain the value of a valid session identifier within a reasonable
The session expiration can be extended to two weeks using the ‘Remember me’ option which can
In case the user ignores the ‘Remember me’ function the session identifiers appear to expire after a
18
PENETRATION TEST– SAMPLE REPORT
Applications which do not properly expire valid sessions may be susceptible to input from the
After logout, we attempted to replay requests made during the session. These requests were
processed successfully by the server, and on this basis, we conclude that the session is not properly
destroyed server-side after session expiry, and it is therefore possible to replay the logon/session.
The logout function on the application also appears to operate incorrectly, as it is possible to browse
back to pages previously accessed in the same browser session after logout.
We recommend a thorough review of the way sessions are handled within the application.
Any session identifier which is set prior to the user authenticating and does not change throughout
With regard to the logon in this case, no cookies used in session handling were detected to be set
prior to logon, and therefore an unauthenticated attacker would not be able to retrieve an unbound
All traffic is sent over the encrypted HTTPS protocol. This means that both before and after
successful authentication, an attacker with access to the network traffic or to devices such as a
proxy server would be unable to use the session identifier to hijack active user sessions. This is in
19
PENETRATION TEST– SAMPLE REPORT
The ‘secure’ option is set on all session cookies to ensure that they are only ever sent over
In this case the secure flag is set which is in line with good security practice.
The HttpOnly flag is set on all session cookies. If the HttpOnly attribute is set on a cookie,
then the cookie cannot be accessed by client-side JavaScript. This measure can prevent
certain client-side attacks, such as Cross-Site Scripting, from trivially capturing the cookie's
value via an injected script. We recommend that [ORG] sets the HttpOnly flag by including
In this case the HttpOnly flag is set which is in line with good security practice.
Session is based upon cookies returned from the browser with requests. Testing indicates that it is
possible to have concurrent sessions under the same user account. If an attack such as Cross-Site
Scripting were to succeed, it may be possible for an attacker to intercept the session undetected.
We recommend disallowing concurrent logons to help prevent session hijacking in the event of a
3. INTER-SYSTEM COMMUNICATION
An attacker may abuse the web application’s communications with other systems, in order to have it
act as a proxy to other systems to which the application has privileged access. In the context of the
20
PENETRATION TEST– SAMPLE REPORT
We examined the recorded HTTP sessions for inputs likely to be relayed to other systems by the web
server.
Web based applications that allow user input into an SQL statement and do not sanitise this can be
All user input should be parsed and sanitised to prevent the inadvertent or deliberate entry of data
that could be interpreted as SQL. This means rejecting data which is not of the correct type,
particularly in numeric fields, and removing any characters that have a special purpose within SQL
To provide confidence that the method of parsing user input adopted provides adequate protection
from SQL injection attacks, we selected a sample of inputs and subjected them to common SQL
These attacks are designed to return errors from backend systems if the input is relayed to them
without first being sanitised. Responses from the server were examined for indications of errors
such as:
21
PENETRATION TEST– SAMPLE REPORT
Code Exceptions
SQL statements
Response delays
Differential Responses
Cross-Site scripting occurs when data passed to the Web Application can be echoed back to the
user’s browser without appropriate sanitization. This can allow an attacker to take control of the
browser session when a user clicks on an affected link, and can also result in unauthorised access to
the application via the theft of session tokens. The most common use of Cross-Site Scripting is to
relay another user’s cookie to the attacker through a browser script. The typical method of
executing XSS attacks relies on un-sanitised input from URL strings being reflected in HTML
No evidence of vulnerability to XSS was discovered in the application. The application encodes all
The login service of the application is potentially vulnerable to the BREACH (Browser Reconnaissance
This alert was issued because the following conditions were met:
22
PENETRATION TEST– SAMPLE REPORT
URL encoded POST input os_destination was reflected into the HTTP response body.
An attacker with the ability to inject partial chosen plaintext into a victim's requests and measure
the size of encrypted traffic can leverage information leaked by compression to recover targeted
BREACH is a category of vulnerabilities and not a specific instance affecting a specific piece of
Masking secrets (effectively randomizing by XORing with a random secret per request)
23
PENETRATION TEST– SAMPLE REPORT
4. AUTHORISATION
It is important that user data is segregated so that users cannot view or modify other users’ data.
During testing we accessed functionality which should not have been accessed directly by our test
user roles:
http://support.clientcompany.com/servicedesk/customer/portal/10
Unauthorized users can reveal the name of the portal from the source code of the site.
24
PENETRATION TEST– SAMPLE REPORT
We recommend that the application code is reviewed in order to fix this unnecessary information
disclosure.
25
PENETRATION TEST– SAMPLE REPORT
CSRF is an attack which forces an end user to execute unwanted actions on a web application in
which he is currently authenticated. An attacker may force the users of a web application to execute
actions of the attacker's choosing by sending a link to an action, which must be able to be
accomplished with a single click. A successful CSRF exploit can compromise end user data and
operations.
The application does not provide any protection against CSRF attacks.
The application uses cookies and headers to protect against CSRF. This is in line with good security
practice.
6. APPLICATION FUNCTIONALITY
The application provides functionality for file uploads. During testing we attempted to upload
instances of the eicar virus test file to establish permitted file types and whether the uploaded files
were scanned by an anti-virus application. The application file upload controls were found to accept
26
PENETRATION TEST– SAMPLE REPORT
There is a risk that files uploaded to the site by an attacker could be accessed by other users,
resulting in them being infected with malware. Whilst this was not exploitable within the timescale
of the test, it is possible that allowing this might make the entire web server vulnerable to
compromise.
We recommend that this feature be restricted to certain file types (for example Microsoft Office
documents, PDFs and image files) and that these are checked by file type rather than by extension,
as the latter control is trivially bypassed by renaming the file. In addition, anti-virus software should
The application does not set a number of HTTP headers which can be used to increase the overall
security of the application. Whilst these headers will not work with all older browsers, they can be
27
PENETRATION TEST– SAMPLE REPORT
used in conjunction with most modern browsers to improve the overall security of the application.
Specifically, the X-Frame-Options header is not set, which means that the application can be
A real attacker would superimpose transparent boxes over the actual content, causing the user to
We recommend that ClientCompany review the configuration of their production web server and/or
the coding of the site and make sure that it is not possible for the site to be enclosed in a frame. This
can be done either by using a “frame-busting” script, or by setting appropriate HTTP headers. Setting
the X-Frame-Options header to either ‘DENY’ or ‘SAMEORIGIN’ should mitigate this attack.
In general, the application disclosed far too much information about its contents and structure to a
potential hacker.
28
PENETRATION TEST– SAMPLE REPORT
Error messages can provide attackers with information about application structure and also
We recommend that only generic error messages are provided to the end user, and any technical
The HTTP server in use discloses information about the versions of software in use in returned HTTP
This information could be of use to an attacker in attempting to target specific vulnerable web
server versions.
We recommend removing all banner information from the web server. For Apache this can be done
by setting ServerSignature Off and ServerTokens Prod in the Apache configuration file.
29
PENETRATION TEST– SAMPLE REPORT
7. APPLICATION CONFIGURATION
The tested service encrypts traffic using TLS / SSL but allows a client to insecurely renegotiate the
A remote attacker could leverage this issue to inject an arbitrary amount of plaintext into the
beginning of the application protocol stream, which could facilitate man-in-the-middle attacks if the
service assumes that the sessions before and after renegotiation are from the same 'client' and
The application returns data from HTTPS pages which does not have appropriate cache headers set
to prevent the content from being stored by client browser caches. As a result of this, sensitive
Affected services:
https://support.clientcompany.com/rest/servicedesk/1/servicedesk/customer/avatar/10122
https://support.clientcompany.com/s/en_AU-
sioy4b/70107/1803fe89f63e8cdc34cd0c4ef555051e/3.0.0/_/download/resour
ces/com.atlassian.servicedesk:cv-sd-shared/img/avatarpicker/icon-downarrow.svg
https://support.clientcompany.com/s/en_AU-
sioy4b/70107/1803fe89f63e8cdc34cd0c4ef555051e/3.0.0/_/download/resour
ces/com.atlassian.servicedesk:cv-sd-shared/img/avatarpicker/icon-image- large.svg
30
PENETRATION TEST– SAMPLE REPORT
https://support.clientcompany.com/s/en_AU-
sioy4b/70107/1803fe89f63e8cdc34cd0c4ef555051e/3.0.0/_/download/resour
ces/com.atlassian.servicedesk:cv-sd-shared/img/avatarpicker/icon-image.svg
https://support.clientcompany.com/secure/useravatar
We recommend that appropriate Cache Control headers should be set on all HTTPS pages. Setting
Cache-control: no-cache, no-store, must-revalidate and Pragma: no-cache should intruct browsers
appropriately.
The web server does not set a HTTP header which can be used to increase the overall security of the
application.
Whilst this header will not work with all older browsers, it can be used in conjunction with most
We recommend reviewing the following header and consider implementing the options described:
X-XSS-Protection: Setting this header to '1;mode=block' will ensure that Internet Explorer 8 and
The web server does not set a HTTP header which can be used to increase the overall security of the
application.
Under certain circumstances, the improper use of this header can lead to Reflected File Download
(RFD) attack.
We recommend reviewing the following header and consider implementing the options described:
31
PENETRATION TEST– SAMPLE REPORT
filename for the content type) to avoid having the browser parse the filename from the URL.
No forward secrecy ciphers were found on the server. Forward Secrecy offers substantial privacy and
confidentiality benefits for encrypted channels accessing the Internet. Unfortunately, it's benefits
are often not fully realized due to configuration errors, misconfiguring services that negatively affect
If forward secrecy is utilized, encrypted communications recorded in the past cannot be retrieved
and decrypted should long-term secret keys or passwords be compromised in the future.
Use cryptographic parameters (like DH-parameter) that use a secure length that match to the
The HTTP protocol provides a number of functions as standard. Many of these are not required for
typical usage, and the availability of some may pose a risk to the web server. The detected web
The webserver responded and listed functions which may not be necessary in terms of functionality,
such as the HTTP method OPTIONS, which details the communication options available.
We recommend that the verb lists are reviewed and unless other verbs are required, the client
32
PENETRATION TEST– SAMPLE REPORT
OSCP stapling is not set on the server. The advantage to OCSP Stapling is the improvement in speed
If OCSP Stapling is used, the CA will see OCSP requests only from the web site, not the web site’s end
We recommend checking your web server software, and change or upgrade if necessary to get OCSP
Stapling support.
The remote HTTPS server is not enforcing HTTP Strict Transport Security (HSTS).
HSTS is a recently developed mechanism which aims to protect HTTPS websites against downgrade
attacks and simplifies protection against cookie hijacking. It allows web servers to declare that
browsers should only interact with it using encrypted (HTTPS) connections, and never via clear text
(HTTP) connections.
The lack of HSTS allows downgrade attacks, SSL-stripping man-in-the-middle attacks, and weakens
cookie-hijacking protections.
We recommend that the server enforces this by setting the Strict-Transport-Security header.
2. Security Policy
This section covers issues which are not specifically technical, but which nonetheless could cause the
33
PENETRATION TEST– SAMPLE REPORT
The application’s password complexity requirements are too low. It may be possible to either guess
Passwords should be at least 8 characters long and ideally should be required to contain a mixture of
upper case letters, lower case letters, numeric and special characters.
Accounts lock after a reasonable number of incorrect password attempts. This is in line with good
security practice.
34
PENETRATION TEST– SAMPLE REPORT
Certain risky or potentially disruptive tests were not carried out, specifically:
TCP, RIP and ARP protocol tampering type attacks (including fragmentation scanning). These
Brute force login attempts (except on designated accounts) and account compromise
attacks. These can lead to user accounts being locked, and therefore can effectively function
35
PENETRATION TEST– SAMPLE REPORT
Information gained from the enumeration phase was also used in a manual search for known
vulnerabilities.
Vulnerability
A flaw inherent in the security mechanism itself, or which can be reached through
security safeguards, that allows for privileged access to the location, people, business
Weakness
Concern
The issue or vulnerability presents a low risk to the business. The threat posed by the
risk should be reassessed on a regular basis as it may change. Action should still be
Information Leak
A flaw inherent in the security mechanism itself, or which can be reached through
36
PENETRATION TEST– SAMPLE REPORT
Pulsar utilise OWASP framework to report risk assessment levels of Low, Medium or High which are
assigned based on the following definitions (an assessment of the probability of the risk actually
existing is made where it cannot be positively verified through testing and included in this
assessment).
High
An issue which, if exploited, has the potential for severe impact on the
confidentiality, availability and/or integrity of your information assets; the issue may
relatively trivial.
Medium
An issue which, if exploited, has the potential for a moderate level of impact on the
the issue may require a reasonable level of technical capability and it may also be
resource/time.
Low
37
PENETRATION TEST– SAMPLE REPORT
allocation.
This can also be summarised by the following table as the broad application of the likelihood and
Likelihood of Discovery/Exploitation
Likely Possible Unlikely
38
PENETRATION TEST– SAMPLE REPORT
Where evidence, investigation and the experience of the Pulsar technical team suggests a detected
BREACH Attack
This web application is potentially vulnerable to the BREACH attack. BREACH (Browser
of the plaintext.
request)
39
PENETRATION TEST– SAMPLE REPORT
The application provides technical information in its error messages which could be of
use to an attacker.
MED
On improperly secured web servers, error messages are left at their default settings,
Error messages can provide attackers with information about application structure and
We recommend that only generic error messages are provided to the end-user and any
The application contains file upload controls. These were found to accept all file
Microsoft Office documents, PDFs and image files) and that these are checked by file
type rather than by extension, as the latter control is trivially by-passable by renaming
the file. In addition, anti-virus software should be installed on the web server to
40
PENETRATION TEST– SAMPLE REPORT
Click-Jacking Vulnerability
During testing we noted that the application did not have any defences against click-
jacking attacks.
MED
This would allow attackers to superimpose transparent boxes over the actual content
The remote service encrypts traffic using TLS / SSL but allows a client to insecurely
arbitrary amount of plaintext into the beginning of the application protocol stream,
which could facilitate man-in-the-middle attacks if the service assumes that the
sessions before and after renegotiation are from the same 'client' and merges them at
41
PENETRATION TEST– SAMPLE REPORT
The web server does not set a HTTP header which can be used to increase the overall
LOW security of the application. Under certain circumstances, the improper use of this
options described:
The application returns data from HTTPS pages which does not have appropriate cache
headers set to prevent the content from being stored by client browser caches.
LOW
As a result sensitive information could be stored on client PCs which could be
We recommend that appropriate Cache Control headers should be set on all HTTPS
42
PENETRATION TEST– SAMPLE REPORT
None of the web servers appear to enforce HTTP Strict Transport Security (HSTS).
LOW
HSTS is a recently developed mechanism which aims to protect HTTPS websites against
downgrade attacks and simplifies protection against cookie hijacking. It allows web
servers to declare that browsers should only interact with it using encrypted (HTTPS)
header.
The web server does not set a HTTP header which can be used to increase the overall
with most modern browsers to improve the overall security of the application.
options described:
43
PENETRATION TEST– SAMPLE REPORT
Forward Secrecy offers substantial privacy and confidentiality benefits for encrypted
LOW
channels accessing the Internet.
Unfortunately, it's benefits are often not fully realized due to configuration errors,
Use cryptographic parameters (like DH-parameter) that use a secure length that match
Curves).
44
PENETRATION TEST– SAMPLE REPORT
The advantage to OCSP Stapling is the improvement in speed and availability of the
LOW
OCSP certificate status check.
If OCSP Stapling is used, the CA will see OCSP requests only from the web site, not the
Apache-Coyote/1.1
LOW
The HTTP server in use discloses information about the versions of software in use in
We would recommend removing all banner information from the web server. For
Apache this can be done by setting "ServerSignature Off" and "ServerTokens Prod" in
the Apache configuration file. For PHP this can be done by setting "expose_php = off"
45
PENETRATION TEST– SAMPLE REPORT
The HTTP protocol provides a number of functions as standard. Many of these are not
LOW required for typical usage, and the availability of some may pose a risk to the web
server. The detected web server was challenged with different verbs to confirm their
existence.
The webserver responded and listed functions which may not be necessary in terms of
functionality, such as the HTTP method OPTIONS, which details the communication
options available.
We recommend that the verb lists are reviewed and unless other verbs are required,
The application allows for the same user to have multiple connections to it
LOW simultaneously.
Whilst not a serious security issue, restricting a user to a single active session can help
We recommend ensuring that users can only have a single active session with the
application.
46
PENETRATION TEST– SAMPLE REPORT
Unauthorized users can reveal the name of the portal from the source code of
http://support.clientcompany.com/servicedesk/customer/portal/10
We recommend that the application code is reviewed in order to fix this unnecessary
information disclosure
Autocomplete is not disabled on forms within the application which process sensitive
Autocomplete allows for browsers to cache information from HTML forms locally and
should not be enabled on any forms which process sensitive information as this will
information.
47
PENETRATION TEST– SAMPLE REPORT
User enumeration
There is a way to find out whether a user name id valid. After a number of attempts if
The application allows users to set weak passwords. This could allow an attacker to
LOW successfully gain unauthorised access to the application via a password guessing
attack.
We recommend that password length and complexity are enforced for all users of the
application. These settings should be in-line with the type of information stored and
No Session Timeout
The session expiration can be extended to two weeks using the ‘Remember me’ option
LOW which can pose a security risk. We recommend reviewing this function.
In case the user ignores the ‘Remember me’ function the session identifiers appear to
expire after a reasonable period of time, which is in line with good security practice.
48
PENETRATION TEST– SAMPLE REPORT
The OWASP Application Security Verification Standard (ASVS) Project provides a basis
for testing web application technical security controls.
The primary aim of the OWASP Application Security Verification Standard (ASVS)
Project is to normalize the range in the coverage and level of rigor available in the
market when it comes to performing Web application security verification using a
commercially-workable open standard. The standard provides a basis for testing
application technical security controls, as well as any technical security controls in the
environment, that are relied on to protect against vulnerabilities such as Cross-Site
Scripting (XSS) and SQL injection. This standard can be used to establish a level of
confidence in the security of Web applications2
2
Source: https://www.owasp.org/index.php/Category:OWASP_Application_Security_Verification_Standard_Project
49
PENETRATION TEST– SAMPLE REPORT
50
– PENETRATION TEST– DRAFT REPORT
51
PENETRATION TEST– DRAFT REPORT
V02 Authentication 02.16 Verify that credentials are transported using a PASS
suitable encrypted link and that all
pages/functions that require a user to enter
credentials are done so using an encrypted link.
V02 Authentication 02.17 Verify that the forgotten password function PASS
and other recovery paths do not reveal the
current password and that the new password is
not sent in clear text to the user.
V02 Authentication 02.18 Verify that information enumeration is not FAIL See "User enumeration"
possible via login, password reset, or forgot
account functionality.
V02 Authentication 02.19 Verify there are no default passwords in use for PASS
the application framework or any components
used by the application (such as
'admin/password').
V02 Authentication 02.20 Verify that request throttling is in place to PASS
prevent automated attacks against common
authentication attacks such as brute force
attacks or denial of service attacks.
V02 Authentication 02.22 Verify that forgotten password and other PASS
recovery paths use a soft token, mobile push,
or an offline recovery mechanism.
V02 Authentication 02.24 Verify that if knowledge based questions (also N/A
known as "secret questions") are required, the
questions should be strong enough to protect
the application.
52
PENETRATION TEST– DRAFT REPORT
V02 Authentication 02.27 Verify that measures are in place to block the FAIL See "Weak password
use of commonly chosen passwords and weak policy"
passphrases.
V02 Authentication 02.30 Verify that if an application allows users to PASS
authenticate, they use a proven secure
authentication mechanism.
V02 Authentication 02.32 Verify that administrative interfaces are not PASS
accessible to untrusted parties
V03 Session management 03.01 Verify that there is no custom session manager, PASS
or that the custom session manager is resistant
against all common session management
attacks.
V03 Session management 03.02 Verify that sessions are invalidated when the PASS
user logs out.
V03 Session management 03.03 Verify that sessions timeout after a specified FAIL See "No session timeout"
period of inactivity.
V03 Session management 03.05 Verify that all pages that require authentication PASS
have easy and visible access to logout
functionality.
V03 Session management 03.06 Verify that the session id is never disclosed in PASS
URLs, error messages, or logs. This includes
verifying that the application does not support
URL rewriting of session cookies.
V03 Session management 03.07 Verify that all successful authentication and re- PASS
authentication generates a new session and
session id.
53
PENETRATION TEST– DRAFT REPORT
V03 Session management 03.11 Verify that session ids are sufficiently long, PASS
random and unique across the correct active
session base.
V03 Session management 03.12 Verify that session ids stored in cookies have PASS
their path set to an appropriately restrictive
value for the application, and authentication
session tokens additionally set the 'HttpOnly'
and 'secure' attributes
V03 Session management 03.16 Verify that the application limits the number of FAIL See "Simultaneous logins
active concurrent sessions. allowed"
V03 Session management 03.17 Verify that an active session list is displayed in FAIL See "Simultaneous logins
the account profile or similar of each user. The allowed"
user should be able to terminate any active
session.
V03 Session management 03.18 Verify the user is prompted with the option to FAIL See "Simultaneous logins
terminate all other active sessions after a allowed"
successful change password process.
V04 Access control 04.01 Verify that the principle of least privilege exists PASS
- users should only be able to access functions,
data files, URLs, controllers, services, and other
resources, for which they possess specific
authorization. This implies protection against
spoofing and elevation of privilege.
V04 Access control 04.04 Verify that access to sensitive records is PASS
protected, such that only authorized objects or
data is accessible to each user (for example,
54
PENETRATION TEST– DRAFT REPORT
55
PENETRATION TEST– DRAFT REPORT
56
PENETRATION TEST– DRAFT REPORT
V05 Malicious input handling 05.22 Make sure untrusted HTML from WYSIWYG N/A
editors or similar are properly sanitized with an
HTML sanitizer and handle it appropriately
according to the input validation task and
encoding task.
V07 Cryptography at rest 07.02 Verify that all cryptographic modules fail N/A
securely, and errors are handled in a way that
does not enable oracle padding.
V07 Cryptography at rest 07.07 Verify that cryptographic algorithms used by N/A
the application have been validated against
FIPS 140-2 or an equivalent standard.
V08 Error handling and logging 08.01 Verify that the application does not output FAIL See "Application error
error messages or stack traces containing message"
sensitive data that could assist an attacker,
including session id, software/framework
versions and personal information
V09 Data protection 09.01 Verify that all forms containing sensitive FAIL See "Password field with
information have disabled client side caching, autocomplete set"
including autocomplete features.
V09 Data protection 09.03 Verify that all sensitive data is sent to the PASS
server in the HTTP message body or headers
57
PENETRATION TEST– DRAFT REPORT
58
PENETRATION TEST– DRAFT REPORT
V10 Communications 10.03 Verify that TLS is used for all connections FAIL See "TLS1/SSLv3
(including both external and backend renegotiation
connections) that are authenticated or that vulnerability"
involve sensitive data or functions, and does
not fall back to insecure or unencrypted
protocols. Ensure the strongest alternative is
the preferred algorithm.
V10 Communications 10.11 Verify that HTTP Strict Transport Security FAIL See "Strict transport
headers are included on all requests and for all security (HSTS) not
subdomains, such as Strict-Transport-Security: enforced"
max-age=15724800; includeSubdomains
V10 Communications 10.13 Ensure forward secrecy ciphers are in use to FAIL See "No forward secrecy
mitigate passive attackers recording traffic. ciphers"
V10 Communications 10.14 Verify that proper certification revocation, such FAIL See "OSCP stapling not
as Online Certificate Status Protocol (OSCP) enabled"
Stapling, is enabled and configured.
V10 Communications 10.15 Verify that only strong algorithms, ciphers, and PASS
protocols are used, through all the certificate
hierarchy, including root and intermediary
certificates of your selected certifying
authority.
V11 HTTP security configuration 11.01 Verify that the application accepts only a FAIL See "Options method
defined set of required HTTP request methods, enabled"
such as GET and POST are accepted, and
unused methods (e.g. TRACE, PUT, and DELETE)
are explicitly blocked.
59
PENETRATION TEST– DRAFT REPORT
V11 HTTP security configuration 11.02 Verify that every HTTP response contains a PASS
content type header specifying a safe character
set (e.g., UTF-8, ISO 8859-1).
V11 HTTP security configuration 11.05 Verify that the HTTP headers or any part of the FAIL See "HTTP server type
HTTP response do not expose detailed version and version disclosure"
information of system components.
V11 HTTP security configuration 11.06 Verify that all API responses contain X-Content- FAIL See "No Content-
Type-Options: nosniff and Content-Disposition: Disposition header in API
attachment; filename="api.json" (or other responses"
appropriate filename for the content type).
V11 HTTP security configuration 11.07 Verify that the Content Security Policy V2 (CSP) FAIL See "Web application
is in use in a way that either disables inline potentially vulnerable to
JavaScript or provides an integrity check on clickjacking"
inline JavaScript with CSP noncing or hashing.
V11 HTTP security configuration 11.08 Verify that the X-XSS-Protection: 1; FAIL See "Missing XSS
mode=block header is in place. protection HTTP header
for IE"
V16 File and resources 16.01 Verify that URL redirects and forwards only PASS
allow whitelisted destinations, or show a
warning when redirecting to potentially
untrusted content.
V16 File and resources 16.02 Verify that untrusted file data submitted to the PASS
application is not used directly with file I/O
commands,_particularly to protect against path
traversal, local file include, file mime type, and
OS command injection vulnerabilities.
60
PENETRATION TEST– DRAFT REPORT
V16 File and resources 16.03 Verify that files obtained from untrusted FAIL See "No anti-virus on file
sources are validated to be of expected type uploads"
and scanned by antivirus scanners to prevent
upload of known malicious content.
V16 File and resources 16.04 Verify that untrusted data is not used within PASS
inclusion, class loader, or reflection capabilities
to prevent remote/local file inclusion
vulnerabilities.
V16 File and resources 16.05 Verify that untrusted data is not used within PASS
cross-domain resource sharing (CORS) to
protect against arbitrary remote content.
V16 File and resources 16.08 Verify the application code does not execute PASS
uploaded data obtained from untrusted
sources.
V16 File and resources 16.09 Do not use Flash, Active-X, Silverlight, NACL, PASS
client-side Java or other client side
technologies not supported natively via W3C
browser standards.
V17 Mobile 17.01 Verify that ID values stored on the device and N/A
retrievable by other applications, such as the
UDID or IMEI number are not used as
authentication tokens.
V17 Mobile 17.02 Verify that the mobile app does not store N/A
sensitive data onto potentially unencrypted
shared resources on the device (e.g. SD card or
shared folders).
61
PENETRATION TEST– DRAFT REPORT
V17 Mobile 17.03 Verify that sensitive data is not stored N/A
unprotected on the device, even in system
protected areas such as key chains.
V17 Mobile 17.07 Verify that the application sensitive code is laid N/A
out unpredictably in memory (For example
ASLR).
V17 Mobile 17.09 Verify that the app does not export sensitive N/A
activities, intents, content providers etc., for
other mobile apps on the same device to
exploit.
V17 Mobile 17.11 Verify that the appÕs exposed activities, N/A
intents, content providers etc. validate all
inputs.
V18 Web services 18.01 Verify that the same encoding style is used PASS
between the client and the server.
V18 Web services 18.02 Verify that access to administration and N/A
management functions within the Web Service
Application is limited to web service
administrators.
V18 Web services 18.03 Verify that XML or JSON schema is in place and N/A
verified before accepting input.
V18 Web services 18.04 Verify that all input is limited to an appropriate N/A
size limit.
V18 Web services 18.05 Verify that SOAP based web services are N/A
compliant with Web Services-Interoperability
(WS-I) Basic Profile at minimum.
62
PENETRATION TEST– DRAFT REPORT
V18 Web services 18.06 Verify the use of session-based authentication PASS
and authorization. Please refer to sections 2, 3
and 4 for further guidance. Avoid the use of
static "API keys" and similar.
V18 Web services 18.07 Verify that the REST service is protected from PASS
Cross-Site Request Forgery.
V19 Configuration 19.01 All components should be up to date with PASS
proper security configuration(s) and version(s).
This should include removal of unneeded
configurations and folders such as sample
applications, platform documentation, and
default or example users.
63