<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://wiki.owasp.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Robert+WInkel</id>
		<title>OWASP - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="https://wiki.owasp.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Robert+WInkel"/>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php/Special:Contributions/Robert_WInkel"/>
		<updated>2026-05-29T21:20:23Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.27.2</generator>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Testing_for_Vulnerable_Remember_Password_(OTG-AUTHN-005)&amp;diff=164406</id>
		<title>Testing for Vulnerable Remember Password (OTG-AUTHN-005)</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Testing_for_Vulnerable_Remember_Password_(OTG-AUTHN-005)&amp;diff=164406"/>
				<updated>2013-12-08T11:31:06Z</updated>
		
		<summary type="html">&lt;p&gt;Robert WInkel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:OWASP Testing Guide v4}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
&lt;br /&gt;
Browsers will sometimes ask a user if they wish to remember the password that they just entered. The browser will then store the password, and automatically enter it whenever the same authentication portal is visited. This is a convenience for the user.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Description of the Issue == &lt;br /&gt;
Whilst a convenience for the user, having the browser storing passwords is also a convenience for an attacker.&amp;lt;br&amp;gt;&lt;br /&gt;
If an attacker can gain access to the victim's browser (e.g. through a Cross Site Scripting attack, or through a shared computer), then they can retrieve the stored passwords. It is not uncommon for browsers to store these passwords in a fully retrievable manner, but even if the browser were to store the passwords encrypted and only retrievable through the use of a master password, an attacker could retrieve the password by visiting the target authentication portal web site, entering the victim's username, and letting the browser to enter the password.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== How to test ==&lt;br /&gt;
&lt;br /&gt;
* Enter a username and password in the target authentication portal and determine whether the browser asks the user whether they want the password remembered.&lt;br /&gt;
* View the authentication portal's HTML source code and look for the autocomplete=&amp;quot;off&amp;quot; attribute in the password form field. The code for this will usually be along the following lines:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;INPUT TYPE=&amp;quot;password&amp;quot; AUTOCOMPLETE=&amp;quot;off&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
* Also look for passwords being stored in a cookie. Examine the cookies stored by the application. Verify that the credentials are not stored in cleartext, but are hashed. Examine the hashing mechanism: if it is a common, well-known algorithm, check for its strength; in homegrown hash functions, attempt several usernames to check whether the hash function is easily guessable. Additionally, verify that the credentials are only sent during the login phase, and not sent together with every request to the application.  &lt;br /&gt;
* Also look for other areas where a password may be entered, e.g. a Change Password form.&lt;br /&gt;
* Also consider other sensitive form fields (e.g. an answer to a secret question, used for Forgotten Password forms).&lt;br /&gt;
&lt;br /&gt;
== Remediation ==&lt;br /&gt;
&lt;br /&gt;
Any fields that contain sensitive information and passwords should be flagged in the HTML with AUTOCOMPLETE=”off”.&lt;/div&gt;</summary>
		<author><name>Robert WInkel</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Testing_for_Weak_lock_out_mechanism_(OTG-AUTHN-003)&amp;diff=164151</id>
		<title>Testing for Weak lock out mechanism (OTG-AUTHN-003)</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Testing_for_Weak_lock_out_mechanism_(OTG-AUTHN-003)&amp;diff=164151"/>
				<updated>2013-12-03T02:12:18Z</updated>
		
		<summary type="html">&lt;p&gt;Robert WInkel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:OWASP Testing Guide v4}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
&lt;br /&gt;
Account lockout mechanisms are used to mitigate against brute force password guessing attacks. Accounts are typically locked out after 3 to 5 unsuccessful login attempts and can only be unlocked after a predetermined period of time, via a self-service unlock mechanism, or intervention by an administrator. Account lockout mechanisms require a balance between protecting accounts from unauthorized access and protecting users from being denied authorized access.&amp;lt;br&amp;gt;&lt;br /&gt;
Note that this test should cover all aspects of authentication where lock out mechanisms would be appropriate, e.g. when the user is presented with security questions during forgotten password mechanisms (see [[Testing for Weak security question/answer (OTG-AUTHN-008)]]).&lt;br /&gt;
&lt;br /&gt;
== Description of the Issue == &lt;br /&gt;
&lt;br /&gt;
Without a strong lock out mechanism, the application may be susceptible to brute force attacks. After a successful brute force attack, a malicious user could have access to:&lt;br /&gt;
&lt;br /&gt;
* Confidential information / data;&lt;br /&gt;
** Private sections of a web application could disclose confidential documents, users' profile data, financial status, bank details, users' relationships, etc.&lt;br /&gt;
	&lt;br /&gt;
* Administration panels;&lt;br /&gt;
** These sections are used by webmasters to manage (modify, delete, add) web application content, manage user provisioning, assign different privileges to the users, etc.&lt;br /&gt;
&lt;br /&gt;
* Availability of further attack vectors;&lt;br /&gt;
** Private sections of a web application could hide dangerous vulnerabilities and contain advanced functionalities not available to public users.&lt;br /&gt;
&lt;br /&gt;
== Test objectives ==&lt;br /&gt;
&lt;br /&gt;
Evaluate the account lockout mechanism's ability to mitigate brute force password guessing.&lt;br /&gt;
&lt;br /&gt;
Evaluate the reactivation mechanism's resistance to unauthorized account re-activation.&lt;br /&gt;
&lt;br /&gt;
== Black Box testing and example ==&lt;br /&gt;
&lt;br /&gt;
Typically, to test the strength of lockout mechanisms, you will need access to an account that you are willing to lock out.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
To evaluate the account lockout mechanism's ability to mitigate brute force password guessing, attempt an invalid login by using the incorrect password a number of times, before using the correct password to verify that the account was locked out. An example test may be as follows:&lt;br /&gt;
# Attempt to login with an incorrect password 3 times.&lt;br /&gt;
# Successfully login with the correct password, thereby showing that the lockout mechanism doesn't trigger after 3 incorrect authentication attempts.&lt;br /&gt;
# Attempt to login with an incorrect password 4 times.&lt;br /&gt;
# Successfully login with the correct password, thereby showing that the lockout mechanism doesn't trigger after 4 incorrect authentication attempts.&lt;br /&gt;
# Attempt to login with an incorrect password 5 times.&lt;br /&gt;
# Attempt to login with the correct password. The application returns &amp;quot;Your account is locked out.&amp;quot;, thereby confirming that the account is locked out after 5 incorrect authentication attempts.&lt;br /&gt;
# Attempt to login with the correct password 5 minutes later. The application returns &amp;quot;Your account is locked out.&amp;quot;, thereby showing that the lockout mechanism does not automatically unlock after 5 minutes.&lt;br /&gt;
# Attempt to login with the correct password 10 minutes later. The application returns &amp;quot;Your account is locked out.&amp;quot;, thereby showing that the lockout mechanism does not automatically unlock after 10 minutes.&lt;br /&gt;
# Successfully login with the correct password 15 minutes later, thereby showing that the lockout mechanism automatically unlocks after a 10 to 15 minute period.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
A CAPTCHA may hinder brute force attacks, but they can come with their own set of weaknesses (see [[Testing_for_Captcha_(OWASP-AT-012)|Testing for CAPTCHA]]), and should not replace a lockout mechanism.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
To evaluate the reactivation mechanism's resistance to unauthorized account reactivation, initiate the reactivation mechanism and look for weaknesses. Typical reactivation mechanisms may involve secret questions/answers, or an emailed reactivation link. The reactivation link should be a unique one-time link, to stop an attacker from guessing or replaying the link and performing brute force attacks in batches. Secret questions and answers should be strong (see [[Testing_for_Weak_security_question/answer_(OTG-AUTHN-008)|Testing for Weak Security Question/Answer]]).&amp;lt;br&amp;gt;&lt;br /&gt;
Note that a reactivation mechanism is simply for unlocking accounts. It is not the same as a password recovery mechanism.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Factors to consider when implementing an account lockout mechanism:&lt;br /&gt;
&lt;br /&gt;
# What is the risk of brute force password guessing against the application?&lt;br /&gt;
# Is a CAPTCHA sufficient to mitigate this risk?&lt;br /&gt;
# Number of unsuccessful login attempts before lockout. Too few, and valid users may trigger the lockout too often. Too few, and the more attempts an attacker can make to brute force the account. Depending on the application function, a range of 5 to 10 unsuccessful attempts is typical.&lt;br /&gt;
# How will accounts be unlocked?&lt;br /&gt;
## Manually by an administrator. This is the most secure lockout method, but may cause inconvenience to users and take up the administrator's &amp;quot;valuable&amp;quot; time.&lt;br /&gt;
## After a period of time. What is the lockout period? Is this sufficient for the application being protected? e.g. a 5 minute lockout period may be a good compromise between mitigating brute force attacks and inconveniencing valid users.&lt;br /&gt;
## Via a self-service mechanism. Is this mechanism secure?&lt;br /&gt;
&lt;br /&gt;
== Gray Box testing and example ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Tools ==&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
See the OWASP article on [[Brute_force_attack|Brute Force]] Attacks.&lt;br /&gt;
&lt;br /&gt;
== Remediation ==&lt;br /&gt;
&lt;br /&gt;
Apply account reactivation mechanisms depending on the risk level. In order from lowest to highest assurance:&lt;br /&gt;
&lt;br /&gt;
# Time-based lockout and reactivation&lt;br /&gt;
# Self-service reactivation (sends reactivation email to registered email address)&lt;br /&gt;
# Manual administrator reactivation&lt;br /&gt;
# Manual administrator reactivation with positive user identification&lt;/div&gt;</summary>
		<author><name>Robert WInkel</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Testing_for_Weak_lock_out_mechanism_(OTG-AUTHN-003)&amp;diff=164150</id>
		<title>Testing for Weak lock out mechanism (OTG-AUTHN-003)</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Testing_for_Weak_lock_out_mechanism_(OTG-AUTHN-003)&amp;diff=164150"/>
				<updated>2013-12-03T02:01:26Z</updated>
		
		<summary type="html">&lt;p&gt;Robert WInkel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:OWASP Testing Guide v4}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
&lt;br /&gt;
Account lockout mechanisms are used to mitigate against brute force password guessing attacks. Accounts are typically locked out after 3 to 5 unsuccessful login attempts and can only be unlocked after a predetermined period of time, via a self-service unlock mechanism, or intervention by an administrator. Account lockout mechanisms require a balance between protecting accounts from unauthorized access and protecting users from being denied authorized access.&amp;lt;br&amp;gt;&lt;br /&gt;
Note that this test should cover all aspects of authentication where lock out mechanisms would be appropriate, e.g. when the user is presented with security questions during forgotten password mechanisms (see [[Testing for Weak security question/answer (OTG-AUTHN-008)]]).&lt;br /&gt;
&lt;br /&gt;
== Description of the Issue == &lt;br /&gt;
&lt;br /&gt;
Without a strong lock out mechanism, the application may be susceptible to brute force attacks. After a successful brute force attack, a malicious user could have access to:&lt;br /&gt;
&lt;br /&gt;
* Confidential information / data;&lt;br /&gt;
** Private sections of a web application could disclose confidential documents, users' profile data, financial status, bank details, users' relationships, etc.&lt;br /&gt;
	&lt;br /&gt;
* Administration panels;&lt;br /&gt;
** These sections are used by webmasters to manage (modify, delete, add) web application content, manage user provisioning, assign different privileges to the users, etc.&lt;br /&gt;
&lt;br /&gt;
* Availability of further attack vectors;&lt;br /&gt;
** Private sections of a web application could hide dangerous vulnerabilities and contain advanced functionalities not available to public users.&lt;br /&gt;
&lt;br /&gt;
== Test objectives ==&lt;br /&gt;
&lt;br /&gt;
Evaluate the account lockout mechanism's ability to mitigate brute force password guessing.&lt;br /&gt;
&lt;br /&gt;
Evaluate the reactivation mechanism's resistance to unauthorized account re-activation.&lt;br /&gt;
&lt;br /&gt;
== Black Box testing and example ==&lt;br /&gt;
&lt;br /&gt;
Typically, to test the strength of lockout mechanisms, you will need access to an account that you are willing to lock out.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
To evaluate the account lockout mechanism's ability to mitigate brute force password guessing, attempt an invalid login by using the incorrect password a number of times, before using the correct password to verify that the account was locked out. An example test may be as follows:&lt;br /&gt;
# Attempt to login with an incorrect password 3 times.&lt;br /&gt;
# Successfully login with the correct password, thereby showing that the lockout mechanism doesn't trigger after 3 incorrect authentication attempts.&lt;br /&gt;
# Attempt to login with an incorrect password 4 times.&lt;br /&gt;
# Successfully login with the correct password, thereby showing that the lockout mechanism doesn't trigger after 4 incorrect authentication attempts.&lt;br /&gt;
# Attempt to login with an incorrect password 5 times.&lt;br /&gt;
# Attempt to login with the correct password. The application returns &amp;quot;Your account is locked out.&amp;quot;, thereby confirming that the account is locked out after 5 incorrect authentication attempts.&lt;br /&gt;
# Attempt to login with the correct password 5 minutes later. The application returns &amp;quot;Your account is locked out.&amp;quot;, thereby showing that the lockout mechanism does not automatically unlock after 5 minutes.&lt;br /&gt;
# Attempt to login with the correct password 10 minutes later. The application returns &amp;quot;Your account is locked out.&amp;quot;, thereby showing that the lockout mechanism does not automatically unlock after 10 minutes.&lt;br /&gt;
# Successfully login with the correct password 15 minutes later, thereby showing that the lockout mechanism automatically unlocks after a 10 to 15 minute period.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
A CAPTCHA may hinder brute force attacks, but they can come with their own set of weaknesses (see [[Testing_for_Captcha_(OWASP-AT-012)|Testing for CAPTCHA]]), and should not replace a lockout mechanism.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
To evaluate the reactivation mechanism's resistance to unauthorized account reactivation, initiate the reactivation mechanism and look for weaknesses. Typical reactivation mechanisms may involve secret questions/answers, or an emailed reactivation link. The reactivation link should be a unique one-time link, to stop an attacker from guessing or replaying the link and performing brute force attacks in batches. Secret questions and answers should be strong (see [[Testing_for_Weak_security_question/answer_(OTG-AUTHN-008)|Testing for Weak Security Question/Answer]]).&amp;lt;br&amp;gt;&lt;br /&gt;
Note that a reactivation mechanism is simply for unlocking accounts. It is not the same as a password recovery mechanism.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Factors to consider when implementing an account lockout mechanism:&lt;br /&gt;
&lt;br /&gt;
# What is the risk of brute force password guessing against the application?&lt;br /&gt;
# Is a CAPTCHA sufficient to mitigate this risk?&lt;br /&gt;
# Number of unsuccessful login attempts before lockout. Too few, and valid users may trigger the lockout too often. Too few, and the more attempts an attacker can make to brute force the account. Depending on the application function, a range of 5 to 10 unsuccessful attempts is typical.&lt;br /&gt;
# How will accounts be unlocked?&lt;br /&gt;
## Manually by an administrator. This is the most secure lockout method, but may cause inconvenience to users and take up the administrator's &amp;quot;valuable&amp;quot; time.&lt;br /&gt;
## After a period of time. What is the lockout period? Is this sufficient for the application being protected? e.g. a 5 minute lockout period may be a good compromise between mitigating brute force attacks and inconveniencing valid users.&lt;br /&gt;
## Via a self-service mechanism. Is this mechanism secure?&lt;br /&gt;
&lt;br /&gt;
== Gray Box testing and example ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Tools ==&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
See the OWASP article on [[Brute_force_attack|Brute Force]] Attacks.&lt;br /&gt;
&lt;br /&gt;
== Remediation ==&lt;br /&gt;
&lt;br /&gt;
Implement CAPTCHA with the account logon page.&lt;br /&gt;
&lt;br /&gt;
Apply account reactivation mechanisms depending on the risk level. In order from lowest to highest assurance:&lt;br /&gt;
&lt;br /&gt;
# Time-based lockout and reactivation&lt;br /&gt;
# Self-service reactivation (sends reactivation email to registered email address)&lt;br /&gt;
# Manual administrator reactivation&lt;br /&gt;
# Manual administrator reactivation with positive user identification&lt;/div&gt;</summary>
		<author><name>Robert WInkel</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Testing_for_default_credentials_(OTG-AUTHN-002)&amp;diff=164147</id>
		<title>Testing for default credentials (OTG-AUTHN-002)</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Testing_for_default_credentials_(OTG-AUTHN-002)&amp;diff=164147"/>
				<updated>2013-12-03T00:08:09Z</updated>
		
		<summary type="html">&lt;p&gt;Robert WInkel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:OWASP Testing Guide v4}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Brief Summary ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Nowadays web applications often make use of popular open source or commercial software that can be installed on servers with minimal configuration or customization by the server administrator. Moreover, a lot of hardware appliances (i.e. network routers and database servers) offer web-based configuration or administrative interfaces.&amp;lt;br&amp;gt;&lt;br /&gt;
Often these applications, once installed, are not properly configured and the default credentials provided for initial authentication and configuration are never changed. &amp;lt;br&amp;gt;&lt;br /&gt;
These default credentials are well known by penetration testers and, unfortunately, also by malicious attackers, who can use them to gain access to various types of applications. &amp;lt;br&amp;gt;&lt;br /&gt;
Furthermore, in many situations, when a new account is created on an application, a default password (with some standard characteristics) is generated. If this password is predictable and the user does not change it on the first access, this can lead an attacker to gain unauthorized access to the application.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Description of the Issue == &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The root cause of this problem can be identified as: &lt;br /&gt;
* Inexperienced IT personnel, who are unaware of the importance of changing default passwords on installed infrastructure components, or leave the password as default for &amp;quot;ease of maintenance&amp;quot;.&lt;br /&gt;
* Programmers who leave backdoors to easily access and test their application and later forget to remove them.&lt;br /&gt;
* Applications with built-in, non-removable default accounts with a pre-set username and password. &lt;br /&gt;
* Applications that do not force the user to change the default credential after the first login operation. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Black Box testing and example ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
===Testing for default credentials of common applications===&lt;br /&gt;
&lt;br /&gt;
In Blackbox testing the tester knows nothing about the application and its underlying infrastructure. In reality this is often not true, and some information about the application is known. We suppose that you have identified, through the use of the techniques described in this Testing Guide under the chapter Information Gathering, at least one or more common applications that may contain accessible administrative interfaces.&amp;lt;br&amp;gt;&lt;br /&gt;
When you have identified an application interface, for example a Cisco router web interface or a Weblogic administrator portal, check that the known usernames and passwords for these devices do not result in successful authentication. To do this you can consult the manufacturer’s documentation or, in a much simpler way, you can found common credentials using a search engine or by using one of the sites or tools listed in the Reference section. &amp;lt;br&amp;gt;&lt;br /&gt;
When facing applications to which we do not have a list of default and common user accounts (due to the fact for example that the application is not widely spread) we can attempt to guess valid default credentials.&amp;lt;br&amp;gt;&lt;br /&gt;
Note that the application being tested may have an account lockout policy enabled, and multiple password guess attempts with a known username may cause the account to be locked. If it is possible to lock the administrator account, it may be troublesome for the system administrator to reset it. &amp;lt;br&amp;gt;&lt;br /&gt;
Many applications have verbose error messages that inform the site users as to the validity of entered usernames. This information will be helpful when testing for default or guessable user accounts. Such functionality can be found, for example, on the login page, password reset and forgotten password page, and sign up page. Once you have found a default username you could also start guessing passwords for this account.&amp;lt;br&amp;gt;&lt;br /&gt;
More information about this procedure can be found in the section [[Testing for User Enumeration and Guessable User Account (OWASP-AT-002)|Testing for User Enumeration and Guessable User]] and in the section [[Testing for Weak password policy (OWASP-AT-008)|Testing for Weak password policy]]. &amp;lt;br&amp;gt;&lt;br /&gt;
Since these types of default credentials are often bound to administrative accounts you can proceed in this manner:&lt;br /&gt;
* Try the following usernames - &amp;quot;admin&amp;quot;, &amp;quot;administrator&amp;quot;, &amp;quot;root&amp;quot;, &amp;quot;system&amp;quot;, &amp;quot;guest&amp;quot;, &amp;quot;operator&amp;quot;, or &amp;quot;super&amp;quot;. These are popular among system administrators and are often used. Additionally you could try &amp;quot;qa&amp;quot;, &amp;quot;test&amp;quot;, &amp;quot;test1&amp;quot;, &amp;quot;testing&amp;quot; and similar names. Attempt any combination of the above in both the username and the password fields. If the application is vulnerable to username enumeration, and you successfully manage to identify any of the above usernames, attempt passwords in a similar manner. In addition try an empty password or one of the following &amp;quot;password&amp;quot;, &amp;quot;pass123&amp;quot;, &amp;quot;password123&amp;quot;, &amp;quot;admin&amp;quot;, or &amp;quot;guest&amp;quot; with the above accounts or any other enumerated accounts. Further permutations of the above can also be attempted. If these passwords fail, it may be worth using a common username and password list and attempting multiple requests against the application. This can, of course, be scripted to save time. &lt;br /&gt;
* Application administrative users are often named after the application or organization. This means if you are testing an application named &amp;quot;Obscurity&amp;quot;, try using obscurity/obscurity or any other similar combination as the username and password. &lt;br /&gt;
* When performing a test for a customer, attempt using names of contacts you have received as usernames with any common passwords. &lt;br /&gt;
* Attempt using all the above usernames with blank passwords. &lt;br /&gt;
* Review the page source and javascript either through a proxy or by viewing the source. Look for any references to users and passwords in the source. For example &amp;quot;If username='admin' then starturl=/admin.asp else /index.asp&amp;quot; (for a successful login vs a failed login). Also, if you have a valid account, then login and view every request and response for a valid login vs an invalid login, such as additional hidden parameters, interesting GET request (login=yes), etc. &lt;br /&gt;
* Look for account names and passwords written in comments in the source code. Also look in backup directories, etc for source code that may contain comments of interest. &lt;br /&gt;
&lt;br /&gt;
===Testing for default password of new accounts===&lt;br /&gt;
&lt;br /&gt;
As mentioned previously, in other situations, when a new account is created on an application, a default password is generated. This password could have some standard characteristics making it predictable and if the user does not change it on the first access (this often happens if the user is not forced to change it), this can lead an attacker to gain unauthorized access to the application.&amp;lt;br&amp;gt;&lt;br /&gt;
Advice for testing default passwords on common application (about lockout policy and verbose error messages) still remain valid also for this test.&amp;lt;br&amp;gt;&lt;br /&gt;
The Following steps can be applied to test for these types of default credentials:&lt;br /&gt;
* Viewing the User Registration page may help determine the expected format and length of the application usernames and passwords. If a user registration page does not exist, determine if the organization uses a standard naming convention for user names such as their email address or the name before the &amp;quot;@&amp;quot; in the email. &lt;br /&gt;
* Try to extrapolate from the application how usernames are generated. For example, can a user create their own username or does the system create an account for the user based on some personal information or a predictable sequence? If the application does create its own accounts in a predictable sequence, such as user7811, try fuzzing all possible accounts recursively. If you can identify a different response from the application when using a valid username and a wrong password, then you can try a brute force attack on the valid username (or quickly try any of the identified common passwords above or in the reference section). &lt;br /&gt;
* Try to determine if the password is predictable by creating many new accounts in quick succession to compare and determine if the passwords are predictable. If predictable, then try to correlate these with the usernames, or any enumerated accounts, and use them as a basis for a brute force attack. &lt;br /&gt;
* If you have identified the correct naming convention for the user name, try to “brute force” passwords with some common predictable sequence like for example dates of birth.&lt;br /&gt;
* Attempt using all the above usernames with blank passwords or using the username also as password value. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
===Result Expected===&lt;br /&gt;
Successful authentication to the application or system being tested. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Gray Box testing and example ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The following steps rely on an entirely Gray Box approach. If only some of this information is available to you, refer to black box testing to fill the gaps. &lt;br /&gt;
* Talk to the IT personnel to determine passwords they use for administrative access and how administration of the application is undertaken. &lt;br /&gt;
* Examine the user database for default credentials as described in the Black Box testing section. Also check for empty password fields. &lt;br /&gt;
* Examine the code for hard coded usernames and passwords. &lt;br /&gt;
* Check for configuration files that contain usernames and passwords.&lt;br /&gt;
* Examine the password policy and, if the application creates its own passwords for new users, check the policy in use for this procedure.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
===Result Expected===&lt;br /&gt;
Successful authentication to the application or system being tested. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
== References ==&lt;br /&gt;
'''Whitepapers'''&amp;lt;br&amp;gt;&lt;br /&gt;
* CIRT http://www.cirt.net/passwords&lt;br /&gt;
* Government Security - Default Logins and Passwords for Networked Devices http://www.governmentsecurity.org/articles/DefaultLoginsandPasswordsforNetworkedDevices.php&lt;br /&gt;
* Virus.org http://www.virus.org/default-password/&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Tools'''&amp;lt;br&amp;gt;&lt;br /&gt;
* Burp Intruder: http://portswigger.net/intruder/&lt;br /&gt;
* THC Hydra: http://www.thc.org/thc-hydra/&lt;br /&gt;
* Brutus: http://www.hoobie.net/brutus/&lt;br /&gt;
* Nikto 2: http://www.cirt.net/nikto2&lt;/div&gt;</summary>
		<author><name>Robert WInkel</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Testing_for_Credentials_Transported_over_an_Encrypted_Channel_(OTG-AUTHN-001)&amp;diff=164146</id>
		<title>Testing for Credentials Transported over an Encrypted Channel (OTG-AUTHN-001)</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Testing_for_Credentials_Transported_over_an_Encrypted_Channel_(OTG-AUTHN-001)&amp;diff=164146"/>
				<updated>2013-12-02T23:16:54Z</updated>
		
		<summary type="html">&lt;p&gt;Robert WInkel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:OWASP Testing Guide v4}}&lt;br /&gt;
&lt;br /&gt;
== Brief Summary ==&lt;br /&gt;
Testing for credentials transport means to verify that the user's authentication data are transferred via an encrypted channel to avoid being intercepted by malicious users. The analysis focuses simply on trying to understand if the data travels unencrypted from the web browser to the server, or if the web application takes the appropriate security measures using a protocol like HTTPS. The HTTPS protocol is built on TLS/SSL to encrypt the data that is transmitted and to ensure that user is being sent towards the desired site. Clearly, the fact that traffic is encrypted does not necessarily mean that it's completely safe. The security also depends on the encryption algorithm used and the robustness of the keys that the application is using, but this particular topic will not be addressed in this section. For a more detailed discussion on testing the safety of TLS/SSL channels you can refer to the chapter [[Testing for SSL-TLS  (OWASP-CM-001)|Testing for SSL-TLS]]. Here, the tester will just try to understand if the data that users put into web forms, for example, in order to log into a web site, are transmitted using secure protocols that protect them from an attacker or not. To do this we will consider various examples.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Description of the Issue == &lt;br /&gt;
Nowadays, the most common example of this issue is the login page of a web application. The tester should verify that user's credentials are transmitted via an encrypted channel. In order to log into a web site, usually, the user has to fill a simple form that transmits the inserted data with the POST method. What is less obvious is that this data can be passed using the HTTP protocol, that means in a non-secure way, or using HTTPS, which encrypts the data. To further complicate things, there is the possibility that the site has the login page accessible via HTTP (making us believe that the transmission is insecure), but then it actually sends data via HTTPS. This test is done to be sure that an attacker cannot retrieve sensitive information by simply sniffing the net with a sniffer tool. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Black Box testing and example ==&lt;br /&gt;
In the following examples we will use WebScarab in order to capture packet headers and to inspect them. You can use any web proxy that you prefer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Case study: Sending data with POST method through HTTP''' &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Suppose that the login page presents a form with fields User, Pass, and the Submit button to authenticate and give access to the application. If we look at the header of our request with WebScarab, we get something like this:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
POST http://www.example.com/AuthenticationServlet HTTP/1.1&lt;br /&gt;
Host: www.example.com&lt;br /&gt;
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8.1.14) Gecko/20080404&lt;br /&gt;
Accept: text/xml,application/xml,application/xhtml+xml&lt;br /&gt;
Accept-Language: it-it,it;q=0.8,en-us;q=0.5,en;q=0.3&lt;br /&gt;
Accept-Encoding: gzip,deflate&lt;br /&gt;
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7&lt;br /&gt;
Keep-Alive: 300&lt;br /&gt;
Connection: keep-alive&lt;br /&gt;
Referer: http://www.example.com/index.jsp&lt;br /&gt;
Cookie: JSESSIONID=LVrRRQQXgwyWpW7QMnS49vtW1yBdqn98CGlkP4jTvVCGdyPkmn3S!&lt;br /&gt;
Content-Type: application/x-www-form-urlencoded&lt;br /&gt;
Content-length: 64&lt;br /&gt;
&lt;br /&gt;
delegated_service=218&amp;amp;User=test&amp;amp;Pass=test&amp;amp;Submit=SUBMIT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
From this example the tester can understand that the POST sends the data to the page ''www.example.com/AuthenticationServlet'' simply using HTTP. So, in this case, data are transmitted without encryption and a malicious user could read our username and password by simply sniffing the net with a tool like Wireshark.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Case study: Sending data with POST method through HTTPS'''&lt;br /&gt;
&lt;br /&gt;
Suppose that our web application uses the HTTPS protocol to encrypt data we are sending (or at least for those relating to the authentication). In this case, trying to access the login page and to authenticate, the header of our POST request would be similar to the following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
POST https://www.example.com:443/cgi-bin/login.cgi HTTP/1.1&lt;br /&gt;
Host: www.example.com&lt;br /&gt;
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8.1.14) Gecko/20080404&lt;br /&gt;
Accept: text/xml,application/xml,application/xhtml+xml,text/html&lt;br /&gt;
Accept-Language: it-it,it;q=0.8,en-us;q=0.5,en;q=0.3&lt;br /&gt;
Accept-Encoding: gzip,deflate&lt;br /&gt;
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7&lt;br /&gt;
Keep-Alive: 300&lt;br /&gt;
Connection: keep-alive&lt;br /&gt;
Referer: https://www.example.com/cgi-bin/login.cgi&lt;br /&gt;
Cookie: language=English; &lt;br /&gt;
Content-Type: application/x-www-form-urlencoded&lt;br /&gt;
Content-length: 50&lt;br /&gt;
&lt;br /&gt;
Command=Login&amp;amp;User=test&amp;amp;Pass=test&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We can see that the request is addressed to&lt;br /&gt;
''www.example.com:443/cgi-bin/login.cgi'' using the HTTPS protocol.&lt;br /&gt;
This ensures that our data are sent through an encrypted channel and that they are not readable by other people. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Case study: sending data with POST method via HTTPS on a page reachable via HTTP'''&lt;br /&gt;
&lt;br /&gt;
Now, suppose to have a web page reachable via HTTP and that then only data sent from the authentication form are shipped via HTTPS. This situation occurs, for example, when we are on a portal of a big company that offers various information and services publicly available, without identification, but which has also a private section accessible from the home page through a login. So when we try to login, the header of our request will look like the following example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
POST https://www.example.com:443/login.do HTTP/1.1&lt;br /&gt;
Host: www.example.com&lt;br /&gt;
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8.1.14) Gecko/20080404&lt;br /&gt;
Accept: text/xml,application/xml,application/xhtml+xml,text/html&lt;br /&gt;
Accept-Language: it-it,it;q=0.8,en-us;q=0.5,en;q=0.3&lt;br /&gt;
Accept-Encoding: gzip,deflate&lt;br /&gt;
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7&lt;br /&gt;
Keep-Alive: 300&lt;br /&gt;
Connection: keep-alive&lt;br /&gt;
Referer: http://www.example.com/homepage.do&lt;br /&gt;
Cookie: SERVTIMSESSIONID=s2JyLkvDJ9ZhX3yr5BJ3DFLkdphH0QNSJ3VQB6pLhjkW6F&lt;br /&gt;
Content-Type: application/x-www-form-urlencoded&lt;br /&gt;
Content-length: 45&lt;br /&gt;
&lt;br /&gt;
User=test&amp;amp;Pass=test&amp;amp;portal=ExamplePortal&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We can see that our request is addressed to ''www.example.com:443/login.do'' using HTTPS. But if we have a look at the referer field in the header (the page from which we came), it is ''www.example.com/homepage.do'' and is accessible via simple HTTP. Although we are sending data via HTTPS, this deployment can allow [http://www.thoughtcrime.org/software/sslstrip/ SSLStrip] attacks (a type of [http://en.wikipedia.org/wiki/Man-in-the-middle_attack Man-in-the-middle] attack)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Case study: Sending data with GET method through HTTPS'''&lt;br /&gt;
&lt;br /&gt;
In this last example, suppose that the application transfers data using the GET method. This method should never be used in a form that transmits sensitive data such as username and password, because they are displayed in clear in the URL and this entails a whole set of security issues. So this example is purely demonstrative, but, in reality, it is strongly suggested to use the POST method instead. This is because when the GET method is used, the URL that it requests is easily available from, for example, the server logs exposing your sensitive data to information leakage. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET https://www.example.com/success.html?user=test&amp;amp;pass=test HTTP/1.1&lt;br /&gt;
Host: www.example.com&lt;br /&gt;
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8.1.14) Gecko/20080404&lt;br /&gt;
Accept: text/xml,application/xml,application/xhtml+xml,text/html&lt;br /&gt;
Accept-Language: it-it,it;q=0.8,en-us;q=0.5,en;q=0.3&lt;br /&gt;
Accept-Encoding: gzip,deflate&lt;br /&gt;
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7&lt;br /&gt;
Keep-Alive: 300&lt;br /&gt;
Connection: keep-alive&lt;br /&gt;
Referer: https://www.example.com/form.html&lt;br /&gt;
If-Modified-Since: Mon, 30 Jun 2008 07:55:11 GMT&lt;br /&gt;
If-None-Match: &amp;quot;43a01-5b-4868915f&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can see that the data is transferred in clear text in the URL and not in the body of the message as before. But we must consider that TLS/SSL is a level 5 protocol, a lower level than HTTP, so the whole HTTP package  is still encrypted and the URL is unreadable to an attacker. It is not a good practice to use the GET method in these cases, because the information contained in the URL can be stored in many servers such as proxy and web servers, leaking the privacy of the user's credentials.&lt;br /&gt;
&lt;br /&gt;
== Gray Box testing and example == &lt;br /&gt;
Talk with the developers of the application and try to understand if they are aware of differences between HTTP and HTTPS protocols and why they should use the HTTPS for sensitive information transmissions.&amp;lt;br&amp;gt;&lt;br /&gt;
Then, check with them if HTTPS is used in every sensitive transmission, like those in login pages, to prevent unauthorized users to read the data.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
'''Whitepapers'''&amp;lt;br&amp;gt;&lt;br /&gt;
* HTTP/1.1: Security Considerations - http://www.w3.org/Protocols/rfc2616/rfc2616-sec15.html&lt;br /&gt;
* [http://www.troyhunt.com/2011/01/ssl-is-not-about-encryption.html SSL is not about encryption]&amp;lt;br&amp;gt;&lt;br /&gt;
'''Tools'''&amp;lt;br&amp;gt;&lt;br /&gt;
* [[OWASP WebScarab Project|WebScarab]]&lt;/div&gt;</summary>
		<author><name>Robert WInkel</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Testing_for_Browser_cache_weakness_(OTG-AUTHN-006)&amp;diff=163820</id>
		<title>Testing for Browser cache weakness (OTG-AUTHN-006)</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Testing_for_Browser_cache_weakness_(OTG-AUTHN-006)&amp;diff=163820"/>
				<updated>2013-11-25T11:30:38Z</updated>
		
		<summary type="html">&lt;p&gt;Robert WInkel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:OWASP Testing Guide v4}}&lt;br /&gt;
&lt;br /&gt;
== Brief Summary ==&lt;br /&gt;
In this phase we check that the application correctly instructs the browser to not remember sensitive data. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Description of the Issue == &lt;br /&gt;
Browsers can store information for purposes of caching and history. Caching is used to improve performance, so that previously displayed information doesn't need to be downloaded again. History mechanisms are used for user convenience, so the user can see exactly what they saw at the time when the resource was retrieved.&lt;br /&gt;
If sensitive information is displayed to the user (such as their address, credit card details, Social Security Number, or username), then this information could be stored for purposes of caching or history, and therefore retrievable through examining the browser's cache or by simply pressing the browser's &amp;quot;Back&amp;quot; button.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Black Box testing and example ==&lt;br /&gt;
'''Browser History'''&amp;lt;br&amp;gt;&lt;br /&gt;
Technically, the &amp;quot;Back&amp;quot; button is a history, not a cache (see http://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html#sec13.13). The cache and the history are two different entities, however, they share the same weakness that we are trying to prevent, that of presenting previously displayed sensitive information.&lt;br /&gt;
The first (and simplest) test consists of entering sensitive information into the application, logging out, and then hitting the &amp;quot;Back&amp;quot; button of the browser, to check whether previously displayed sensitive information can be accessed whilst unauthenticated.&lt;br /&gt;
If by pressing the &amp;quot;Back&amp;quot; button we can access previous pages but not access new ones, then it is not an authentication issue, but a browser history issue. If these pages contain sensitive data, it means that the application did not forbid the browser to store it.&lt;br /&gt;
Authentication does not necessarily need to be involved in the testing. For example, when a user enters their email address in order to sign up to a newsletter, this information could be retrievable if not properly handled.&lt;br /&gt;
The &amp;quot;Back&amp;quot; button can be stopped from showing sensitive data. This can be done by:&lt;br /&gt;
* Delivering the page over HTTPS.&lt;br /&gt;
* Setting Cache-Control: must-revalidate&lt;br /&gt;
&lt;br /&gt;
'''Browser Cache'''&amp;lt;br&amp;gt;&lt;br /&gt;
Here we check that the application does not leak any sensitive data into the browser cache. In order to do that, we can use a proxy (such as WebScarab) and search through the server responses that belong to the session, checking that for every page that contains sensitive information the server instructed the browser not to cache any data. Such a directive can be issued in the HTTP response headers:&lt;br /&gt;
* Cache-Control: no-cache, no-store&lt;br /&gt;
* Expires: 0&lt;br /&gt;
* Pragma: no-cache&lt;br /&gt;
These directives are generally robust, although additional flags may be necessary for the Cache-Control header in order to better prevent persistently linked files on the filesystem. These include:&lt;br /&gt;
* Cache-Control: must-revalidate, pre-check=0, post-check=0, max-age=0, s-maxage=0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
HTTP/1.1:&lt;br /&gt;
Cache-Control: no-cache&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
HTTP/1.0:&lt;br /&gt;
Pragma: no-cache&lt;br /&gt;
Expires: &amp;lt;past date or illegal value (e.g., 0)&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For instance, if we are testing an e-commerce application, we should look for all pages that contain a credit card number or some other financial information, and check that all those pages enforce the no-cache directive.&lt;br /&gt;
On the other hand, if we find pages that contain critical information but that fail to instruct the browser not to cache their content, we know that sensitive information will be stored on the disk, and we can double-check that simply by looking for it in the browser cache. The exact location where that information is stored depends on the client operating system and on the browser that has been used. Here are some examples:&lt;br /&gt;
&lt;br /&gt;
* Mozilla Firefox:&lt;br /&gt;
** Unix/Linux: ~/.mozilla/firefox/&amp;lt;profile-id&amp;gt;/Cache/&lt;br /&gt;
** Windows: C:\Documents and Settings\&amp;lt;user_name&amp;gt;\Local Settings\Application Data\Mozilla\Firefox\Profiles\&amp;lt;profile-id&amp;gt;\Cache&lt;br /&gt;
&lt;br /&gt;
* Internet Explorer:&lt;br /&gt;
** C:\Documents and Settings\&amp;lt;user_name&amp;gt;\Local Settings\Temporary Internet Files&lt;br /&gt;
&lt;br /&gt;
== Gray Box testing and example == &lt;br /&gt;
The methodology for testing is equivalent to the black box case, as in both scenarios we have full access to the server response headers and to the HTML code. However, with gray box testing, we may have access to account credentials that will allow us to test sensitive pages that are accessible only to authenticated users.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
'''Whitepapers'''&amp;lt;br&amp;gt;&lt;br /&gt;
* [http://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html Caching in HTTP]&lt;br /&gt;
&lt;br /&gt;
'''Tools'''&amp;lt;br&amp;gt;&lt;br /&gt;
* [https://www.owasp.org/index.php/OWASP_Zed_Attack_Proxy_Project OWASP Zed Attack Proxy]&lt;br /&gt;
* Firefox add-on [https://addons.mozilla.org/en-US/firefox/addon/cacheviewer2/?src=api CacheViewer2]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Robert WInkel</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Testing_for_Browser_cache_weakness_(OTG-AUTHN-006)&amp;diff=163819</id>
		<title>Testing for Browser cache weakness (OTG-AUTHN-006)</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Testing_for_Browser_cache_weakness_(OTG-AUTHN-006)&amp;diff=163819"/>
				<updated>2013-11-25T11:17:36Z</updated>
		
		<summary type="html">&lt;p&gt;Robert WInkel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:OWASP Testing Guide v4}}&lt;br /&gt;
&lt;br /&gt;
== Brief Summary ==&lt;br /&gt;
In this phase we check that the application correctly instructs the browser to not remember sensitive data. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Description of the Issue == &lt;br /&gt;
Browsers can store information for purposes of caching and history. Caching is used to improve performance, so that previously displayed information doesn't need to be downloaded again. History mechanisms are used for user convenience, so the user can see exactly what they saw at the time when the resource was retrieved.&lt;br /&gt;
If sensitive information is displayed to the user (such as their address, credit card details, Social Security Number, or username), then this information could be stored for purposes of caching or history, and therefore retrievable through examining the browser's cache or by simply pressing the browser's &amp;quot;Back&amp;quot; button.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Black Box testing and example ==&lt;br /&gt;
'''Browser History'''&amp;lt;br&amp;gt;&lt;br /&gt;
Technically, the &amp;quot;Back&amp;quot; button is a history, not a cache (see http://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html#sec13.13). The cache and the history are two different entities, however, they share the same weakness that we are trying to prevent, that of presenting previously displayed sensitive information.&lt;br /&gt;
The first (and simplest) test consists of entering sensitive information into the application, logging out, and then hitting the &amp;quot;Back&amp;quot; button of the browser, to check whether previously displayed sensitive information can be accessed whilst unauthenticated.&lt;br /&gt;
If by pressing the &amp;quot;Back&amp;quot; button we can access previous pages but not access new ones, then it is not an authentication issue, but a browser history issue. If these pages contain sensitive data, it means that the application did not forbid the browser to store it.&lt;br /&gt;
Authentication does not necessarily need to be involved in the testing. For example, when a user enters their email address in order to sign up to a newsletter, this information could be retrievable if not properly handled.&lt;br /&gt;
The &amp;quot;Back&amp;quot; button can be stopped from showing sensitive data. This can be done by:&lt;br /&gt;
* Delivering the page over HTTPS.&lt;br /&gt;
* Setting Cache-Control: must-revalidate&lt;br /&gt;
&lt;br /&gt;
'''Browser Cache'''&amp;lt;br&amp;gt;&lt;br /&gt;
Here we check that the application does not leak any sensitive data into the browser cache. In order to do that, we can use a proxy (such as WebScarab) and search through the server responses that belong to the session, checking that for every page that contains sensitive information the server instructed the browser not to cache any data. Such a directive can be issued in the HTTP response headers:&lt;br /&gt;
* Cache-Control: no-cache, no-store&lt;br /&gt;
* Expires: 0&lt;br /&gt;
* Pragma: no-cache&lt;br /&gt;
These directives are generally robust, although additional flags may be necessary for the Cache-Control header in order to better prevent persistently linked files on the filesystem. These include:&lt;br /&gt;
* Cache-Control: must-revalidate, pre-check=0, post-check=0, max-age=0, s-maxage=0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
HTTP/1.1:&lt;br /&gt;
Cache-Control: no-cache&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
HTTP/1.0:&lt;br /&gt;
Pragma: no-cache&lt;br /&gt;
Expires: &amp;lt;past date or illegal value (e.g., 0)&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For instance, if we are testing an e-commerce application, we should look for all pages that contain a credit card number or some other financial information, and check that all those pages enforce the no-cache directive.&lt;br /&gt;
On the other hand, if we find pages that contain critical information but that fail to instruct the browser not to cache their content, we know that sensitive information will be stored on the disk, and we can double-check that simply by looking for it in the browser cache. The exact location where that information is stored depends on the client operating system and on the browser that has been used. Here are some examples:&lt;br /&gt;
&lt;br /&gt;
* Mozilla Firefox:&lt;br /&gt;
** Unix/Linux: ~/.mozilla/firefox/&amp;lt;profile-id&amp;gt;/Cache/&lt;br /&gt;
** Windows: C:\Documents and Settings\&amp;lt;user_name&amp;gt;\Local Settings\Application Data\Mozilla\Firefox\Profiles\&amp;lt;profile-id&amp;gt;\Cache&lt;br /&gt;
&lt;br /&gt;
* Internet Explorer:&lt;br /&gt;
** C:\Documents and Settings\&amp;lt;user_name&amp;gt;\Local Settings\Temporary Internet Files&lt;br /&gt;
&lt;br /&gt;
== Gray Box testing and example == &lt;br /&gt;
The methodology for testing is equivalent to the black box case, as in both scenarios we have full access to the server response headers and to the HTML code. However, with gray box testing, we may have access to account credentials that will allow us to test sensitive pages that are accessible only to authenticated users.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
'''Whitepapers'''&amp;lt;br&amp;gt;&lt;br /&gt;
* [http://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html Caching in HTTP]&lt;br /&gt;
&lt;br /&gt;
'''Tools'''&amp;lt;br&amp;gt;&lt;br /&gt;
* [https://www.owasp.org/index.php/OWASP_Zed_Attack_Proxy_Project OWASP Zed Attack Proxy]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Robert WInkel</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Testing_for_Browser_cache_weakness_(OTG-AUTHN-006)&amp;diff=163818</id>
		<title>Testing for Browser cache weakness (OTG-AUTHN-006)</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Testing_for_Browser_cache_weakness_(OTG-AUTHN-006)&amp;diff=163818"/>
				<updated>2013-11-25T11:16:02Z</updated>
		
		<summary type="html">&lt;p&gt;Robert WInkel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:OWASP Testing Guide v4}}&lt;br /&gt;
&lt;br /&gt;
== Brief Summary ==&lt;br /&gt;
In this phase we check that the application correctly instructs the browser to not remember sensitive data. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Description of the Issue == &lt;br /&gt;
Browsers can store information for purposes of caching and history. Caching is used to improve performance, so that previously displayed information doesn't need to be downloaded again. History mechanisms are used for user convenience, so the user can see exactly what they saw at the time when the resource was retrieved.&lt;br /&gt;
If sensitive information is displayed to the user (such as their address, credit card details, Social Security Number, or username), then this information could be stored for purposes of caching or history, and therefore retrievable through examining the browser's cache or by simply pressing the browser's &amp;quot;Back&amp;quot; button.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Black Box testing and example ==&lt;br /&gt;
'''Browser History'''&amp;lt;br&amp;gt;&lt;br /&gt;
Technically, the &amp;quot;Back&amp;quot; button is a history, not a cache (see http://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html#sec13.13). The cache and the history are two different entities, however, they share the same weakness that we are trying to prevent, that of presenting previously displayed sensitive information.&lt;br /&gt;
The first (and simplest) test consists of entering sensitive information into the application, logging out, and then hitting the &amp;quot;Back&amp;quot; button of the browser, to check whether previously displayed sensitive information can be accessed whilst unauthenticated.&lt;br /&gt;
If by pressing the &amp;quot;Back&amp;quot; button we can access previous pages but not access new ones, then it is not an authentication issue, but a browser history issue. If these pages contain sensitive data, it means that the application did not forbid the browser to store it.&lt;br /&gt;
Authentication does not necessarily need to be involved in the testing. For example, when a user enters their email address in order to sign up to a newsletter, this information could be retrievable if not properly handled.&lt;br /&gt;
The &amp;quot;Back&amp;quot; button can be stopped from showing sensitive data. This can be done by:&lt;br /&gt;
* Delivering the page over HTTPS.&lt;br /&gt;
* Setting Cache-Control: must-revalidate&lt;br /&gt;
&lt;br /&gt;
'''Browser Cache'''&amp;lt;br&amp;gt;&lt;br /&gt;
Here we check that the application does not leak any sensitive data into the browser cache. In order to do that, we can use a proxy (such as WebScarab) and search through the server responses that belong to the session, checking that for every page that contains sensitive information the server instructed the browser not to cache any data. Such a directive can be issued in the HTTP response headers:&lt;br /&gt;
* Cache-Control: no-cache, no-store&lt;br /&gt;
* Expires: 0&lt;br /&gt;
* Pragma: no-cache&lt;br /&gt;
These directives are generally robust, although additional flags may be necessary for the Cache-Control header in order to better prevent persistently linked files on the filesystem. These include:&lt;br /&gt;
* Cache-Control: must-revalidate, pre-check=0, post-check=0, max-age=0, s-maxage=0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
HTTP/1.1:&lt;br /&gt;
Cache-Control: no-cache&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
HTTP/1.0:&lt;br /&gt;
Pragma: no-cache&lt;br /&gt;
Expires: &amp;lt;past date or illegal value (e.g., 0)&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For instance, if we are testing an e-commerce application, we should look for all pages that contain a credit card number or some other financial information, and check that all those pages enforce the no-cache directive.&lt;br /&gt;
On the other hand, if we find pages that contain critical information but that fail to instruct the browser not to cache their content, we know that sensitive information will be stored on the disk, and we can double-check that simply by looking for it in the browser cache. The exact location where that information is stored depends on the client operating system and on the browser that has been used. Here are some examples:&lt;br /&gt;
&lt;br /&gt;
* Mozilla Firefox:&lt;br /&gt;
** Unix/Linux: ~/.mozilla/firefox/&amp;lt;profile-id&amp;gt;/Cache/&lt;br /&gt;
** Windows: C:\Documents and Settings\&amp;lt;user_name&amp;gt;\Local Settings\Application Data\Mozilla\Firefox\Profiles\&amp;lt;profile-id&amp;gt;\Cache&lt;br /&gt;
&lt;br /&gt;
* Internet Explorer:&lt;br /&gt;
** C:\Documents and Settings\&amp;lt;user_name&amp;gt;\Local Settings\Temporary Internet Files&lt;br /&gt;
&lt;br /&gt;
== Gray Box testing and example == &lt;br /&gt;
The methodology for testing is equivalent to the black box case, as in both scenarios we have full access to the server response headers and to the HTML code. However, with gray box testing, we may have access to account credentials that will allow us to test sensitive pages that are accessible only to authenticated users.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
'''Whitepapers'''&amp;lt;br&amp;gt;&lt;br /&gt;
* [http://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html Caching in HTTP]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Tools'''&amp;lt;br&amp;gt;&lt;br /&gt;
* [https://www.owasp.org/index.php/OWASP_Zed_Attack_Proxy_Project OWASP Zed Attack Proxy]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Robert WInkel</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Testing_for_Browser_cache_weakness_(OTG-AUTHN-006)&amp;diff=163817</id>
		<title>Testing for Browser cache weakness (OTG-AUTHN-006)</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Testing_for_Browser_cache_weakness_(OTG-AUTHN-006)&amp;diff=163817"/>
				<updated>2013-11-25T11:02:52Z</updated>
		
		<summary type="html">&lt;p&gt;Robert WInkel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:OWASP Testing Guide v4}}&lt;br /&gt;
&lt;br /&gt;
== Brief Summary ==&lt;br /&gt;
In this phase we check that the application correctly instructs the browser to not remember sensitive data. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Description of the Issue == &lt;br /&gt;
Browsers can store information for purposes of caching and history. Caching is used to improve performance, so that previously displayed information doesn't need to be downloaded again. History mechanisms are used for user convenience, so the user can see exactly what they saw at the time when the resource was retrieved.&lt;br /&gt;
If sensitive information is displayed to the user (such as their address, credit card details, Social Security Number, or username), then this information could be stored for purposes of caching or history, and therefore retrievable through examining the browser's cache or by simply pressing the browser's &amp;quot;Back&amp;quot; button.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Black Box testing and example ==&lt;br /&gt;
'''Browser History'''&amp;lt;br&amp;gt;&lt;br /&gt;
Technically, the &amp;quot;Back&amp;quot; button is a history, not a cache (see http://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html#sec13.13). The cache and the history are two different entities, however, they share the same weakness that we are trying to prevent, that of presenting previously displayed sensitive information.&lt;br /&gt;
The first (and simplest) test consists of entering sensitive information into the application, logging out, and then hitting the &amp;quot;Back&amp;quot; button of the browser, to check whether previously displayed sensitive information can be accessed whilst unauthenticated.&lt;br /&gt;
If by pressing the &amp;quot;Back&amp;quot; button we can access previous pages but not access new ones, then it is not an authentication issue, but a browser history issue. If these pages contain sensitive data, it means that the application did not forbid the browser to store it.&lt;br /&gt;
Authentication does not necessarily need to be involved in the testing. For example, when a user enters their email address in order to sign up to a newsletter, this information could be retrievable if not properly handled.&lt;br /&gt;
The &amp;quot;Back&amp;quot; button can be stopped from showing sensitive data. This can be done by:&lt;br /&gt;
* Delivering the page over HTTPS.&lt;br /&gt;
* Setting Cache-Control: must-revalidate&lt;br /&gt;
&lt;br /&gt;
'''Browser Cache'''&amp;lt;br&amp;gt;&lt;br /&gt;
Here we check that the application does not leak any sensitive data into the browser cache. In order to do that, we can use a proxy (such as WebScarab) and search through the server responses that belong to the session, checking that for every page that contains sensitive information the server instructed the browser not to cache any data. Such a directive can be issued in the HTTP response headers:&lt;br /&gt;
* Cache-Control: no-cache, no-store&lt;br /&gt;
* Expires: 0&lt;br /&gt;
* Pragma: no-cache&lt;br /&gt;
These directives are generally robust, although additional flags may be necessary for the Cache-Control header in order to better prevent persistently linked files on the filesystem. These include:&lt;br /&gt;
* Cache-Control: must-revalidate, pre-check=0, post-check=0, max-age=0, s-maxage=0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
HTTP/1.1:&lt;br /&gt;
Cache-Control: no-cache&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
HTTP/1.0:&lt;br /&gt;
Pragma: no-cache&lt;br /&gt;
Expires: &amp;lt;past date or illegal value (e.g., 0)&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For instance, if we are testing an e-commerce application, we should look for all pages that contain a credit card number or some other financial information, and check that all those pages enforce the no-cache directive.&lt;br /&gt;
On the other hand, if we find pages that contain critical information but that fail to instruct the browser not to cache their content, we know that sensitive information will be stored on the disk, and we can double-check that simply by looking for it in the browser cache. The exact location where that information is stored depends on the client operating system and on the browser that has been used. Here are some examples:&lt;br /&gt;
&lt;br /&gt;
* Mozilla Firefox:&lt;br /&gt;
** Unix/Linux: ~/.mozilla/firefox/&amp;lt;profile-id&amp;gt;/Cache/&lt;br /&gt;
** Windows: C:\Documents and Settings\&amp;lt;user_name&amp;gt;\Local Settings\Application Data\Mozilla\Firefox\Profiles\&amp;lt;profile-id&amp;gt;\Cache&lt;br /&gt;
&lt;br /&gt;
* Internet Explorer:&lt;br /&gt;
** C:\Documents and Settings\&amp;lt;user_name&amp;gt;\Local Settings\Temporary Internet Files&lt;br /&gt;
&lt;br /&gt;
== Gray Box testing and example == &lt;br /&gt;
The methodology for testing is equivalent to the black box case, as in both scenarios we have full access to the server response headers and to the HTML code. However, with gray box testing, we may have access to account credentials that will allow us to test sensitive pages that are accessible only to authenticated users.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
'''Whitepapers'''&amp;lt;br&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Tools'''&amp;lt;br&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Robert WInkel</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Testing_for_Browser_cache_weakness_(OTG-AUTHN-006)&amp;diff=163816</id>
		<title>Testing for Browser cache weakness (OTG-AUTHN-006)</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Testing_for_Browser_cache_weakness_(OTG-AUTHN-006)&amp;diff=163816"/>
				<updated>2013-11-25T11:02:03Z</updated>
		
		<summary type="html">&lt;p&gt;Robert WInkel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:OWASP Testing Guide v4}}&lt;br /&gt;
&lt;br /&gt;
== Brief Summary ==&lt;br /&gt;
In this phase we check that the application correctly instructs the browser to not remember sensitive data. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Description of the Issue == &lt;br /&gt;
Browsers can store information for purposes of caching and history. Caching is used to improve performance, so that previously displayed information doesn't need to be downloaded again. History mechanisms are used for user convenience, so the user can see exactly what they saw at the time when the resource was retrieved.&lt;br /&gt;
If sensitive information is displayed to the user (such as their address, credit card details, Social Security Number, or username), then this information could be stored for purposes of caching or history, and therefore retrievable through examining the browser's cache or by simply pressing the browser's &amp;quot;Back&amp;quot; button.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Black Box testing and example ==&lt;br /&gt;
'''Browser History'''&amp;lt;br&amp;gt;&lt;br /&gt;
Technically, the &amp;quot;Back&amp;quot; button is a history, not a cache (see http://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html#sec13.13). The cache and the history are two different entities, however, they share the same weakness that we are trying to prevent, that of presenting previously displayed sensitive information.&lt;br /&gt;
The first (and simplest) test consists of entering sensitive information into the application, logging out, and then hitting the &amp;quot;Back&amp;quot; button of the browser, to check whether previously displayed sensitive information can be accessed whilst unauthenticated.&lt;br /&gt;
If by pressing the &amp;quot;Back&amp;quot; button we can access previous pages but not access new ones, then it is not an authentication issue, but a browser history issue. If these pages contain sensitive data, it means that the application did not forbid the browser to store it.&lt;br /&gt;
Authentication does not necessarily need to be involved in the testing. For example, when a user enters their email address in order to sign up to a newsletter, this information could be retrievable if not properly handled.&lt;br /&gt;
The &amp;quot;Back&amp;quot; button can be stopped from showing sensitive data. This can be done by:&lt;br /&gt;
* Delivering the page over HTTPS.&lt;br /&gt;
* Setting Cache-Control: must-revalidate&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Browser Cache'''&amp;lt;br&amp;gt;&lt;br /&gt;
Here we check that the application does not leak any sensitive data into the browser cache. In order to do that, we can use a proxy (such as WebScarab) and search through the server responses that belong to the session, checking that for every page that contains sensitive information the server instructed the browser not to cache any data. Such a directive can be issued in the HTTP response headers:&lt;br /&gt;
* Cache-Control: no-cache, no-store&lt;br /&gt;
* Expires: 0&lt;br /&gt;
* Pragma: no-cache&lt;br /&gt;
These directives are generally robust, although additional flags may be necessary for the Cache-Control header in order to better prevent persistently linked files on the filesystem. These include:&lt;br /&gt;
* Cache-Control: must-revalidate, pre-check=0, post-check=0, max-age=0, s-maxage=0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
HTTP/1.1:&lt;br /&gt;
Cache-Control: no-cache&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
HTTP/1.0:&lt;br /&gt;
Pragma: no-cache&lt;br /&gt;
Expires: &amp;lt;past date or illegal value (e.g., 0)&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For instance, if we are testing an e-commerce application, we should look for all pages that contain a credit card number or some other financial information, and check that all those pages enforce the no-cache directive.&lt;br /&gt;
On the other hand, if we find pages that contain critical information but that fail to instruct the browser not to cache their content, we know that sensitive information will be stored on the disk, and we can double-check that simply by looking for it in the browser cache. The exact location where that information is stored depends on the client operating system and on the browser that has been used. Here are some examples:&lt;br /&gt;
&lt;br /&gt;
* Mozilla Firefox:&lt;br /&gt;
** Unix/Linux: ~/.mozilla/firefox/&amp;lt;profile-id&amp;gt;/Cache/&lt;br /&gt;
** Windows: C:\Documents and Settings\&amp;lt;user_name&amp;gt;\Local Settings\Application Data\Mozilla\Firefox\Profiles\&amp;lt;profile-id&amp;gt;\Cache&lt;br /&gt;
&lt;br /&gt;
* Internet Explorer:&lt;br /&gt;
** C:\Documents and Settings\&amp;lt;user_name&amp;gt;\Local Settings\Temporary Internet Files&lt;br /&gt;
&lt;br /&gt;
== Gray Box testing and example == &lt;br /&gt;
The methodology for testing is equivalent to the black box case, as in both scenarios we have full access to the server response headers and to the HTML code. However, with gray box testing, we may have access to account credentials that will allow us to test sensitive pages that are accessible only to authenticated users.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
'''Whitepapers'''&amp;lt;br&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Tools'''&amp;lt;br&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Robert WInkel</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Testing_for_Browser_cache_weakness_(OTG-AUTHN-006)&amp;diff=163815</id>
		<title>Testing for Browser cache weakness (OTG-AUTHN-006)</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Testing_for_Browser_cache_weakness_(OTG-AUTHN-006)&amp;diff=163815"/>
				<updated>2013-11-25T11:01:00Z</updated>
		
		<summary type="html">&lt;p&gt;Robert WInkel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:OWASP Testing Guide v4}}&lt;br /&gt;
&lt;br /&gt;
== Brief Summary ==&lt;br /&gt;
In this phase we check that the application correctly instructs the browser to not remember sensitive data. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Description of the Issue == &lt;br /&gt;
Browsers can store information for purposes of caching and history. Caching is used to improve performance, so that previously displayed information doesn't need to be downloaded again. History mechanisms are used for user convenience, so the user can see exactly what they saw at the time when the resource was retrieved.&lt;br /&gt;
If sensitive information is displayed to the user (such as their address, credit card details, Social Security Number, or username), then this information could be stored for purposes of caching or history, and therefore retrievable through examining the browser's cache or by simply pressing the browser's &amp;quot;Back&amp;quot; button.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Black Box testing and example ==&lt;br /&gt;
'''Browser History'''&amp;lt;br&amp;gt;&lt;br /&gt;
Technically, the &amp;quot;Back&amp;quot; button is a history, not a cache (see http://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html#sec13.13). The cache and the history are two different entities, however, they share the same weakness that we are trying to prevent, that of presenting previously displayed sensitive information.&lt;br /&gt;
The first (and simplest) test consists of entering sensitive information into the application, logging out, and then hitting the &amp;quot;Back&amp;quot; button of the browser, to check whether previously displayed sensitive information can be accessed whilst unauthenticated.&lt;br /&gt;
If by pressing the &amp;quot;Back&amp;quot; button we can access previous pages but not access new ones, then it is not an authentication issue, but a browser history issue. If these pages contain sensitive data, it means that the application did not forbid the browser to store it.&lt;br /&gt;
Authentication does not necessarily need to be involved in the testing. For example, when a user enters their email address in order to sign up to a newsletter, this information could be retrievable if not properly handled.&lt;br /&gt;
The &amp;quot;Back&amp;quot; button can be stopped from showing sensitive data. This can be done by:&lt;br /&gt;
* Delivering the page over HTTPS.&lt;br /&gt;
* Setting Cache-Control: must-revalidate&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Browser Cache'''&amp;lt;br&amp;gt;&lt;br /&gt;
Here we check that the application does not leak any sensitive data into the browser cache. In order to do that, we can use a proxy (such as WebScarab) and search through the server responses that belong to the session, checking that for every page that contains sensitive information the server instructed the browser not to cache any data. Such a directive can be issued in the HTTP response headers:&lt;br /&gt;
* Cache-Control: no-cache, no-store&lt;br /&gt;
* Expires: 0&lt;br /&gt;
* Pragma: no-cache&lt;br /&gt;
These directives are generally robust, although additional flags may be necessary for the Cache-Control header in order to better prevent persistently linked files on the filesystem. These include:&lt;br /&gt;
* Cache-Control: must-revalidate, pre-check=0, post-check=0, max-age=0, s-maxage=0&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
HTTP/1.1:&lt;br /&gt;
Cache-Control: no-cache&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
HTTP/1.0:&lt;br /&gt;
Pragma: no-cache&lt;br /&gt;
Expires: &amp;lt;past date or illegal value (e.g., 0)&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For instance, if we are testing an e-commerce application, we should look for all pages that contain a credit card number or some other financial information, and check that all those pages enforce the no-cache directive.&lt;br /&gt;
On the other hand, if we find pages that contain critical information but that fail to instruct the browser not to cache their content, we know that sensitive information will be stored on the disk, and we can double-check that simply by looking for it in the browser cache. The exact location where that information is stored depends on the client operating system and on the browser that has been used. Here are some examples:&lt;br /&gt;
&lt;br /&gt;
* Mozilla Firefox:&lt;br /&gt;
** Unix/Linux: ~/.mozilla/firefox/&amp;lt;profile-id&amp;gt;/Cache/&lt;br /&gt;
** Windows: C:\Documents and Settings\&amp;lt;user_name&amp;gt;\Local Settings\Application Data\Mozilla\Firefox\Profiles\&amp;lt;profile-id&amp;gt;\Cache&lt;br /&gt;
&lt;br /&gt;
* Internet Explorer:&lt;br /&gt;
** C:\Documents and Settings\&amp;lt;user_name&amp;gt;\Local Settings\Temporary Internet Files&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gray Box testing and example == &lt;br /&gt;
The methodology for testing is equivalent to the black box case, as in both scenarios we have full access to the server response headers and to the HTML code. However, with gray box testing, we may have access to account credentials that will allow us to test sensitive pages that are accessible only to authenticated users.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
'''Whitepapers'''&amp;lt;br&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Tools'''&amp;lt;br&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Robert WInkel</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Testing_for_Browser_cache_weakness_(OTG-AUTHN-006)&amp;diff=163814</id>
		<title>Testing for Browser cache weakness (OTG-AUTHN-006)</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Testing_for_Browser_cache_weakness_(OTG-AUTHN-006)&amp;diff=163814"/>
				<updated>2013-11-25T10:59:22Z</updated>
		
		<summary type="html">&lt;p&gt;Robert WInkel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:OWASP Testing Guide v4}}&lt;br /&gt;
&lt;br /&gt;
= Brief Summary ==&lt;br /&gt;
In this phase we check that the server correctly instructs the browser to not remember sensitive data. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Description of the Issue == &lt;br /&gt;
Browsers can store information for purposes of caching and history. Caching is used to improve performance, so that previously displayed information doesn't need to be downloaded again. History mechanisms are used for user convenience, so the user can see exactly what they saw at the time when the resource was retrieved.&lt;br /&gt;
If sensitive information is displayed to the user (such as their address, credit card details, Social Security Number, or username), then this information could be stored for purposes of caching or history, and therefore retrievable through examining the browser's cache or by simply pressing the browser's &amp;quot;Back&amp;quot; button.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Black Box testing and example ==&lt;br /&gt;
'''Browser History'''&amp;lt;br&amp;gt;&lt;br /&gt;
Technically, the &amp;quot;Back&amp;quot; button is a history, not a cache (see http://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html#sec13.13). The cache and the history are two different entities, however, they share the same weakness that we are trying to prevent, that of presenting previously displayed sensitive information.&lt;br /&gt;
The first (and simplest) test consists of entering sensitive information into the application, logging out, and then hitting the &amp;quot;Back&amp;quot; button of the browser, to check whether previously displayed sensitive information can be accessed whilst unauthenticated.&lt;br /&gt;
If by pressing the &amp;quot;Back&amp;quot; button we can access previous pages but not access new ones, then it is not an authentication issue, but a browser history issue. If these pages contain sensitive data, it means that the application did not forbid the browser to store it.&lt;br /&gt;
Authentication does not necessarily need to be involved in the testing. For example, when a user enters their email address in order to sign up to a newsletter, this information could be retrievable if not properly handled.&lt;br /&gt;
The &amp;quot;Back&amp;quot; button can be stopped from showing sensitive data. This can be done by:&lt;br /&gt;
* Delivering the page over HTTPS.&lt;br /&gt;
* Setting Cache-Control: must-revalidate&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Browser Cache'''&amp;lt;br&amp;gt;&lt;br /&gt;
Here we check that the application does not leak any sensitive data into the browser cache. In order to do that, we can use a proxy (such as WebScarab) and search through the server responses that belong to the session, checking that for every page that contains sensitive information the server instructed the browser not to cache any data. Such a directive can be issued in the HTTP response headers:&lt;br /&gt;
* Cache-Control: no-cache, no-store&lt;br /&gt;
* Expires: 0&lt;br /&gt;
* Pragma: no-cache&lt;br /&gt;
These directives are generally robust, although additional flags may be necessary for the Cache-Control header in order to better prevent persistently linked files on the filesystem. These include:&lt;br /&gt;
* Cache-Control: must-revalidate, pre-check=0, post-check=0, max-age=0, s-maxage=0&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
HTTP/1.1:&lt;br /&gt;
Cache-Control: no-cache&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
HTTP/1.0:&lt;br /&gt;
Pragma: no-cache&lt;br /&gt;
Expires: &amp;lt;past date or illegal value (e.g., 0)&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
For instance, if we are testing an e-commerce application, we should look for all pages that contain a credit card number or some other financial information, and check that all those pages enforce the no-cache directive.&lt;br /&gt;
On the other hand, if we find pages that contain critical information but that fail to instruct the browser not to cache their content, we know that sensitive information will be stored on the disk, and we can double-check that simply by looking for it in the browser cache. The exact location where that information is stored depends on the client operating system and on the browser that has been used. Here are some examples:&lt;br /&gt;
&lt;br /&gt;
* Mozilla Firefox:&lt;br /&gt;
** Unix/Linux: ~/.mozilla/firefox/&amp;lt;profile-id&amp;gt;/Cache/&lt;br /&gt;
** Windows: C:\Documents and Settings\&amp;lt;user_name&amp;gt;\Local Settings\Application Data\Mozilla\Firefox\Profiles\&amp;lt;profile-id&amp;gt;\Cache&lt;br /&gt;
&lt;br /&gt;
* Internet Explorer:&lt;br /&gt;
** C:\Documents and Settings\&amp;lt;user_name&amp;gt;\Local Settings\Temporary Internet Files&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gray Box testing and example == &lt;br /&gt;
The methodology for testing is equivalent to the black box case, as in both scenarios we have full access to the server response headers and to the HTML code. However, with gray box testing, we may have access to account credentials that will allow us to test sensitive pages that are accessible only to authenticated users.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
'''Whitepapers'''&amp;lt;br&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Tools'''&amp;lt;br&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Robert WInkel</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Testing_for_Browser_cache_weakness_(OTG-AUTHN-006)&amp;diff=163813</id>
		<title>Testing for Browser cache weakness (OTG-AUTHN-006)</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Testing_for_Browser_cache_weakness_(OTG-AUTHN-006)&amp;diff=163813"/>
				<updated>2013-11-25T09:48:24Z</updated>
		
		<summary type="html">&lt;p&gt;Robert WInkel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:OWASP Testing Guide v4}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Note:&amp;lt;/b&amp;gt; Currently, this is basically a replica of the browser cache portions of the &amp;quot;Testing for Logout and Browser Cache Management (OWASP-AT-007)&amp;quot; Test Case from OWASP v3.&lt;br /&gt;
&lt;br /&gt;
== Brief Summary ==&lt;br /&gt;
In this phase we check that the server correctly instructs the browser to not cache sensitive data. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Description of the Issue == &lt;br /&gt;
...here: Short Description of the Issue: Topic and Explanation&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Black Box testing and example ==&lt;br /&gt;
'''The Browser &amp;quot;Back&amp;quot; Button'''&amp;lt;br&amp;gt;&lt;br /&gt;
The first (and simplest) test consists of logging out and then hitting the 'back' button of the browser, to check whether previously displayed sensitive information can be accessed whilst unauthenticated.&lt;br /&gt;
If by pressing the 'back' button we can access previous pages but not access new ones, then we are simply accessing the browser cache. If these pages contain sensitive data, it means that the application did not forbid the browser to cache it (by not setting the Cache-Control header).&lt;br /&gt;
Technically, the &amp;quot;back&amp;quot; button is a history, not a cache (see http://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html#sec13.13). However, it is possible in practice to stop the &amp;quot;back&amp;quot; button from showing sensitive data. This can be done by:&lt;br /&gt;
* Deliver the page over HTTPS.&lt;br /&gt;
* Set Cache-Control: must-revalidate&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Cached Pages'''&amp;lt;br&amp;gt;&lt;br /&gt;
Logging out from an application obviously does not clear the browser cache of any sensitive information that might have been stored. Therefore, another test that is to be performed is to check that our application does not leak any critical data into the browser cache. In order to do that, we can use a proxy (such as WebScarab) and search through the server responses that belong to our session, checking that for every page that contains sensitive information the server instructed the browser not to cache any data. Such a directive can be issued in the HTTP response headers:&lt;br /&gt;
* Cache-Control: no-cache, no-store&lt;br /&gt;
* Expires: 0&lt;br /&gt;
* Pragma: no-cache&lt;br /&gt;
These directives are generally robust, although additional flags may be necessary for the Cache-Control header in order to better prevent persistently linked files on the filesystem. These include:&lt;br /&gt;
* Cache-Control: must-revalidate, pre-check=0, post-check=0, max-age=0, s-maxage=0&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
HTTP/1.1:&lt;br /&gt;
Cache-Control: no-cache&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
HTTP/1.0:&lt;br /&gt;
Pragma: no-cache&lt;br /&gt;
Expires: &amp;lt;past date or illegal value (e.g., 0)&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
For instance, if we are testing an e-commerce application, we should look for all pages that contain a credit card number or some other financial information, and check that all those pages enforce the no-cache directive.&lt;br /&gt;
On the other hand, if we find pages that contain critical information but that fail to instruct the browser not to cache their content, we know that sensitive information will be stored on the disk, and we can double-check that simply by looking for it in the browser cache. The exact location where that information is stored depends on the client operating system and on the browser that has been used. Here are some examples:&lt;br /&gt;
&lt;br /&gt;
* Mozilla Firefox:&lt;br /&gt;
** Unix/Linux: ~/.mozilla/firefox/&amp;lt;profile-id&amp;gt;/Cache/&lt;br /&gt;
** Windows: C:\Documents and Settings\&amp;lt;user_name&amp;gt;\Local Settings\Application Data\Mozilla\Firefox\Profiles\&amp;lt;profile-id&amp;gt;\Cache&lt;br /&gt;
&lt;br /&gt;
* Internet Explorer:&lt;br /&gt;
** C:\Documents and Settings\&amp;lt;user_name&amp;gt;\Local Settings\Temporary Internet Files&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gray Box testing and example == &lt;br /&gt;
The methodology for testing is equivalent to the black box case, as in both scenarios we have full access to the server response headers and to the HTML code. However, with gray box testing, we may have access to account credentials that will allow us to test sensitive pages that are accessible only to authenticated users.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
'''Whitepapers'''&amp;lt;br&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Tools'''&amp;lt;br&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Robert WInkel</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Testing_for_Browser_cache_weakness_(OTG-AUTHN-006)&amp;diff=163812</id>
		<title>Testing for Browser cache weakness (OTG-AUTHN-006)</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Testing_for_Browser_cache_weakness_(OTG-AUTHN-006)&amp;diff=163812"/>
				<updated>2013-11-25T09:45:01Z</updated>
		
		<summary type="html">&lt;p&gt;Robert WInkel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:OWASP Testing Guide v4}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Note:&amp;lt;/b&amp;gt; Currently, this is basically a replica of the browser cache portions of the &amp;quot;Testing for Logout and Browser Cache Management (OWASP-AT-007)&amp;quot; Test Case from OWASP v3.&lt;br /&gt;
&lt;br /&gt;
== Brief Summary ==&lt;br /&gt;
In this phase we check that the server correctly instructs the browser to not cache sensitive data. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Description of the Issue == &lt;br /&gt;
...here: Short Description of the Issue: Topic and Explanation&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Black Box testing and example ==&lt;br /&gt;
'''The Browser &amp;quot;Back&amp;quot; Button'''&amp;lt;br&amp;gt;&lt;br /&gt;
The first (and simplest) test consists of logging out and then hitting the 'back' button of the browser, to check whether previously displayed sensitive information can be accessed whilst unauthenticated.&lt;br /&gt;
If by pressing the 'back' button we can access previous pages but not access new ones, then we are simply accessing the browser cache. If these pages contain sensitive data, it means that the application did not forbid the browser to cache it (by not setting the Cache-Control header).&lt;br /&gt;
Technically, the &amp;quot;back&amp;quot; button is a history, not a cache (see http://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html#sec13.13). However, it is possible in practice to stop the &amp;quot;back&amp;quot; button from showing sensitive data. This can be done by:&lt;br /&gt;
* Deliver the page over HTTPS.&lt;br /&gt;
* Set Cache-Control: must-revalidate&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Cached Pages'''&amp;lt;br&amp;gt;&lt;br /&gt;
Logging out from an application obviously does not clear the browser cache of any sensitive information that might have been stored. Therefore, another test that is to be performed is to check that our application does not leak any critical data into the browser cache. In order to do that, we can use a proxy (such as WebScarab) and search through the server responses that belong to our session, checking that for every page that contains sensitive information the server instructed the browser not to cache any data. Such a directive can be issued in the HTTP response headers. &amp;quot;Cache-Control: no-cache, no-store&amp;quot; coupled with &amp;quot;Expires: 0&amp;quot; and &amp;quot;Pragma: no-cache&amp;quot; is generally robust although additional flags may be necessary for the Cache-Control header in order to better prevent persistently linked files on the filesystem. These include: must-revalidate, pre-check=0, post-check=0, max-age=0, and s-maxage=0.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
HTTP/1.1:&lt;br /&gt;
Cache-Control: no-cache&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
HTTP/1.0:&lt;br /&gt;
Pragma: no-cache&lt;br /&gt;
Expires: &amp;lt;past date or illegal value (e.g., 0)&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
For instance, if we are testing an e-commerce application, we should look for all pages that contain a credit card number or some other financial information, and check that all those pages enforce the no-cache directive.&lt;br /&gt;
On the other hand, if we find pages that contain critical information but that fail to instruct the browser not to cache their content, we know that sensitive information will be stored on the disk, and we can double-check that simply by looking for it in the browser cache. The exact location where that information is stored depends on the client operating system and on the browser that has been used. Here are some examples:&lt;br /&gt;
&lt;br /&gt;
* Mozilla Firefox:&lt;br /&gt;
** Unix/Linux: ~/.mozilla/firefox/&amp;lt;profile-id&amp;gt;/Cache/&lt;br /&gt;
** Windows: C:\Documents and Settings\&amp;lt;user_name&amp;gt;\Local Settings\Application Data\Mozilla\Firefox\Profiles\&amp;lt;profile-id&amp;gt;\Cache&lt;br /&gt;
&lt;br /&gt;
* Internet Explorer:&lt;br /&gt;
** C:\Documents and Settings\&amp;lt;user_name&amp;gt;\Local Settings\Temporary Internet Files&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gray Box testing and example == &lt;br /&gt;
The methodology for testing is equivalent to the black box case, as in both scenarios we have full access to the server response headers and to the HTML code. However, with gray box testing, we may have access to account credentials that will allow us to test sensitive pages that are accessible only to authenticated users.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
'''Whitepapers'''&amp;lt;br&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Tools'''&amp;lt;br&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Robert WInkel</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Testing_for_Browser_cache_weakness_(OTG-AUTHN-006)&amp;diff=163811</id>
		<title>Testing for Browser cache weakness (OTG-AUTHN-006)</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Testing_for_Browser_cache_weakness_(OTG-AUTHN-006)&amp;diff=163811"/>
				<updated>2013-11-25T09:06:14Z</updated>
		
		<summary type="html">&lt;p&gt;Robert WInkel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:OWASP Testing Guide v4}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Note:&amp;lt;/b&amp;gt; Currently, this is basically a replica of the browser cache portions of the &amp;quot;Testing for Logout and Browser Cache Management (OWASP-AT-007)&amp;quot; Test Case from OWASP v3.&lt;br /&gt;
&lt;br /&gt;
== Brief Summary ==&lt;br /&gt;
In this phase we check that the server correctly instructs the browser to not cache sensitive data. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Description of the Issue == &lt;br /&gt;
...here: Short Description of the Issue: Topic and Explanation&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Black Box testing and example ==&lt;br /&gt;
'''The Browser &amp;quot;Back&amp;quot; Button'''&amp;lt;br&amp;gt;&lt;br /&gt;
The first (and simplest) test consists of logging out and then hitting the 'back' button of the browser, to check whether previously entered sensitive information can be accessed whilst unauthenticated.&lt;br /&gt;
If by pressing the 'back' button we can access previous pages but not access new ones, then we are simply accessing the browser cache. If these pages contain sensitive data, it means that the application did not forbid the browser to cache it (by not setting the Cache-Control header).&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Cached Pages'''&amp;lt;br&amp;gt;&lt;br /&gt;
Logging out from an application obviously does not clear the browser cache of any sensitive information that might have been stored. Therefore, another test that is to be performed is to check that our application does not leak any critical data into the browser cache. In order to do that, we can use a proxy (such as WebScarab) and search through the server responses that belong to our session, checking that for every page that contains sensitive information the server instructed the browser not to cache any data. Such a directive can be issued in the HTTP response headers. &amp;quot;Cache-Control: no-cache, no-store&amp;quot; coupled with &amp;quot;Expires: 0&amp;quot; and &amp;quot;Pragma: no-cache&amp;quot; is generally robust although additional flags may be necessary for the Cache-Control header in order to better prevent persistently linked files on the filesystem. These include: must-revalidate, pre-check=0, post-check=0, max-age=0, and s-maxage=0.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
HTTP/1.1:&lt;br /&gt;
Cache-Control: no-cache&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
HTTP/1.0:&lt;br /&gt;
Pragma: no-cache&lt;br /&gt;
Expires: &amp;lt;past date or illegal value (e.g., 0)&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
For instance, if we are testing an e-commerce application, we should look for all pages that contain a credit card number or some other financial information, and check that all those pages enforce the no-cache directive.&lt;br /&gt;
On the other hand, if we find pages that contain critical information but that fail to instruct the browser not to cache their content, we know that sensitive information will be stored on the disk, and we can double-check that simply by looking for it in the browser cache. The exact location where that information is stored depends on the client operating system and on the browser that has been used. Here are some examples:&lt;br /&gt;
&lt;br /&gt;
* Mozilla Firefox:&lt;br /&gt;
** Unix/Linux: ~/.mozilla/firefox/&amp;lt;profile-id&amp;gt;/Cache/&lt;br /&gt;
** Windows: C:\Documents and Settings\&amp;lt;user_name&amp;gt;\Local Settings\Application Data\Mozilla\Firefox\Profiles\&amp;lt;profile-id&amp;gt;\Cache&lt;br /&gt;
&lt;br /&gt;
* Internet Explorer:&lt;br /&gt;
** C:\Documents and Settings\&amp;lt;user_name&amp;gt;\Local Settings\Temporary Internet Files&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gray Box testing and example == &lt;br /&gt;
The methodology for testing is equivalent to the black box case, as in both scenarios we have full access to the server response headers and to the HTML code. However, with gray box testing, we may have access to account credentials that will allow us to test sensitive pages that are accessible only to authenticated users.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
'''Whitepapers'''&amp;lt;br&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Tools'''&amp;lt;br&amp;gt;&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Robert WInkel</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Testing_for_Weak_security_question/answer_(OTG-AUTHN-008)&amp;diff=156802</id>
		<title>Testing for Weak security question/answer (OTG-AUTHN-008)</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Testing_for_Weak_security_question/answer_(OTG-AUTHN-008)&amp;diff=156802"/>
				<updated>2013-08-14T12:33:12Z</updated>
		
		<summary type="html">&lt;p&gt;Robert WInkel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:OWASP Testing Guide v4}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Brief Summary ==&lt;br /&gt;
Often called &amp;quot;secret&amp;quot; questions and answers, security questions and answers are often used to recover forgotten passwords (see [[Testing for weak password change or reset functionalities (OWASP-AT-011)]]), or as extra security on top of the password.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
They are typically generated upon account creation, and require the user to select from some pre-generated questions and supply an appropriate answer, or allow the user to generate their own question and answer pairs. Both methods are prone to insecurities.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ideally, security questions should generate answers that are only known by the user, and not guessable or discoverable by anybody else. This is harder than it sounds.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Description of the Issue == &lt;br /&gt;
Security questions and answers rely on the secrecy of the answer. Answers should be of the form that are only known by the account holder. However, although a lot of answers may not be publicly known, most of the questions that websites implement promote answers that are pseduo-private. Some examples are below.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''Pre-generated questions:'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The majority of pre-generated questions are fairly simplistic in nature and can lead to insecure answers. For example:&lt;br /&gt;
* The answers may be known to family members or close friends of the user, e.g. &amp;quot;What is your mother's maiden name?&amp;quot;, &amp;quot;What is your date of birth?&amp;quot;&lt;br /&gt;
* The answers may be easily guessable, e.g. &amp;quot;What is your favorite color?&amp;quot;, &amp;quot;What is your favorite baseball team?&amp;quot;&lt;br /&gt;
* The answers may be brute forcible, e.g. &amp;quot;What is the first name of your favorite high school teacher?&amp;quot; - the answer is probably on some easily downloadable lists of popular first names, and therefore a simple brute force attack can be scripted.&lt;br /&gt;
* The answers may be publicly discoverable, e.g. &amp;quot;What is your favorite movie?&amp;quot; - the answer may easily be found on the user's social media profile page.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Self-generated questions:'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The problem with having users to generate their own questions is that it allows them to generate very insecure questions, or even bypass the whole point of having a security question in the first place. Here are some real world examples that illustrates this point:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;quot;What is 1+1?&amp;quot;&lt;br /&gt;
* &amp;quot;What is your username?&amp;quot;&lt;br /&gt;
* &amp;quot;My password is M3@t$p1N&amp;quot;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Black Box testing and examples ==&lt;br /&gt;
'''Testing for weak pre-generated questions:'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Generate the security questions, e.g. by creating a new account, going through the forgotten password functionality, or whatever the process is for that particular system. Try to generate as many questions as possible to get a good idea of the type of security questions that are answered. If any of the security questions fall in the categories described above, they are vulnerable to being attacked (guessed, brute-forced, available on social media, etc.). If within scope of the testing engagement, the vulnerability could be exploited by the tester as further proof. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''Testing for weak self-generated questions:'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Generate the security questions, e.g. by creating a new account, going through the forgotten password functionality, or whatever the process is for that particular system. If the system allows the user to generate their own security questions, it is vulnerable to having insecure questions created. If the system uses the self-generated security questions during the forgotten password functionality and if usernames can be enumerated (see [[Testing for Account Enumeration and Guessable User Account (OTG-IDENT-004)]]), then it should be easy for the tester to enumerate a number of users' self-generated questions. It should be expected to find several weak self-generated passwords using this method.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''Testing for brute-forcible answers:'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Use the methods described in [[Testing for Weak lock out mechanism (OWASP-AT-004)]] to determine whether a number of incorrectly supplied security answers generates an appropriate lock out mechanism.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The first thing to take into consideration when trying to exploit security questions is how many questions need to be answered? The majority of applications only need the user to answer a single question, but some critical applications require the user to answer correctly to two or even more questions.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The next step is to assess the strength of the security questions. Could the answers be obtained by a simple Google search or with social engineering attack? As a penetration tester, here is a step-by-step walk-through of exploiting a security question scheme:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Are there multiple questions offered? If so, focus on questions which have:&lt;br /&gt;
** a “public” answer; for example, something Google would find with a simple query&lt;br /&gt;
** a factual answer such as a “first school” or other facts which can be looked up&lt;br /&gt;
** few possible answers, such as “what make was your first car”. These questions would present the attacker with a short-list of answers to guess at, and based on statistics the attacker could rank answers from most to least likely &lt;br /&gt;
* Determine how many guesses you have (if possible)&lt;br /&gt;
** Does the password reset allow unlimited attempts?&lt;br /&gt;
** Is there a lockout period after X incorrect answers? Keep in mind that a lockout system can be a security problem in itself, as it can be exploited by an attacker to launch a Denial of Service against legitimate users &lt;br /&gt;
* Pick the appropriate question based on analysis from above point, and do research to determine the most likely answers &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The key to successfully exploiting and bypassing a weak security question scheme is to find a question or set of questions which give the possibility of easily acquiring the answers. Always look for questions which can give you the greatest statistical chance of guessing the correct answer, if you are completely unsure of any of the answers. In the end, a security question scheme is only as strong as the weakest question.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
== References ==&lt;br /&gt;
[http://www.schneier.com/essay-081.html The Curse of the Secret Question]&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Robert WInkel</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Testing_for_Weak_security_question/answer_(OTG-AUTHN-008)&amp;diff=156800</id>
		<title>Testing for Weak security question/answer (OTG-AUTHN-008)</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Testing_for_Weak_security_question/answer_(OTG-AUTHN-008)&amp;diff=156800"/>
				<updated>2013-08-14T12:02:59Z</updated>
		
		<summary type="html">&lt;p&gt;Robert WInkel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:OWASP Testing Guide v4}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Brief Summary ==&lt;br /&gt;
Often called &amp;quot;secret&amp;quot; questions and answers, security questions and answers are often used to recover forgotten passwords (see [[Testing for weak password change or reset functionalities (OWASP-AT-011)]]), or as extra security on top of the password.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
They are typically generated upon account creation, and require the user to select from some pre-generated questions and supply an appropriate answer, or allow the user to generate their own question and answer pairs. Both methods are prone to insecurities.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ideally, security questions should generate answers that are only known by the user, and not guessable or discoverable by anybody else. This is harder than it sounds.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Description of the Issue == &lt;br /&gt;
Security questions and answers rely on the secrecy of the answer. Answers should be of the form that are only known by the account holder. However, although a lot of answers may not be publicly known, most of the questions that websites implement promote answers that are pseduo-private. Some examples are below.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''Pre-generated questions:'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The majority of pre-generated questions are fairly simplistic in nature and can lead to insecure answers. For example:&lt;br /&gt;
* The answers may be known to family members or close friends of the user, e.g. &amp;quot;What is your mother's maiden name?&amp;quot;, &amp;quot;What is your date of birth?&amp;quot;&lt;br /&gt;
* The answers may be easily guessable, e.g. &amp;quot;What is your favorite color?&amp;quot;, &amp;quot;What is your favorite baseball team?&amp;quot;&lt;br /&gt;
* The answers may be brute forcible, e.g. &amp;quot;What is the first name of your favorite high school teacher?&amp;quot; - the answer is probably on some easily downloadable lists of popular first names, and therefore a simple brute force attack can be scripted.&lt;br /&gt;
* The answers may be publicly discoverable, e.g. &amp;quot;What is your favorite movie?&amp;quot; - the answer may easily be found on the user's social media profile page.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Self-generated questions:'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The problem with having users to generate their own questions is that it allows them to generate very insecure questions, or even bypass the whole point of having a security question in the first place. Here are some real world examples that illustrates this point:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;quot;What is 1+1?&amp;quot;&lt;br /&gt;
* &amp;quot;What is your username?&amp;quot;&lt;br /&gt;
* &amp;quot;My password is M3@t$p1N&amp;quot;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Black Box testing and examples ==&lt;br /&gt;
'''Testing for weak pre-generated questions:'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Generate the security questions, e.g. by creating a new account, going through the forgotten password functionality, or whatever the process is for that particular system. Try to generate as many questions as possible to get a good idea of the type of security questions that are answered. If any of the security questions fall in the categories described above, they are vulnerable to being attacked (guessed, brute-forced, available on social media, etc.). If within scope of the testing engagement, the vulnerability could be exploited by the tester as further proof. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''Testing for weak self-generated questions:'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Generate the security questions, e.g. by creating a new account, going through the forgotten password functionality, or whatever the process is for that particular system. If the system allows the user to generate their own security questions, it is vulnerable to having insecure questions created. If the system uses the self-generated security questions during the forgotten password functionality and if usernames can be enumerated (see [[Testing for Account Enumeration and Guessable User Account (OTG-IDENT-004)]]), then it should be easy for the tester to enumerate a number of users' self-generated questions. It should be expected to find several weak self-generated passwords using this method.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''Testing for brute-forcible answers:'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Use the methods described in [[Testing for Weak lock out mechanism (OWASP-AT-004)]] to determine whether a number of incorrectly supplied security answers generates an appropriate lock out mechanism.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The first thing to take into consideration when trying to exploit security questions is how many questions need to be answered? The majority of applications only need the user to answer a single question, but some critical applications require the user to answer correctly to two or even more questions.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The next step is to assess the strength of the security questions. Could the answers be obtained by a simple Google search or with social engineering attack? As a penetration tester, here is a step-by-step walk-through of exploiting a security question scheme:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Are there multiple questions offered? If so, focus on questions which have:&lt;br /&gt;
** a “public” answer; for example, something Google would find with a simple query&lt;br /&gt;
** a factual answer such as a “first school” or other facts which can be looked up&lt;br /&gt;
** few possible answers, such as “what make was your first car”. These questions would present the attacker with a short-list of answers to guess at, and based on statistics the attacker could rank answers from most to least likely &lt;br /&gt;
* Determine how many guesses you have (if possible)&lt;br /&gt;
** Does the password reset allow unlimited attempts?&lt;br /&gt;
** Is there a lockout period after X incorrect answers? Keep in mind that a lockout system can be a security problem in itself, as it can be exploited by an attacker to launch a Denial of Service against legitimate users &lt;br /&gt;
* Pick the appropriate question based on analysis from above point, and do research to determine the most likely answers &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The key to successfully exploiting and bypassing a weak security question scheme is to find a question or set of questions which give the possibility of easily acquiring the answers. Always look for questions which can give you the greatest statistical chance of guessing the correct answer, if you are completely unsure of any of the answers. In the end, a security question scheme is only as strong as the weakest question.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
== References ==&lt;br /&gt;
'''Whitepapers'''&amp;lt;br&amp;gt;&lt;br /&gt;
...&amp;lt;br&amp;gt;&lt;br /&gt;
'''Tools'''&amp;lt;br&amp;gt;&lt;br /&gt;
...&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Robert WInkel</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Testing_for_Weak_security_question/answer_(OTG-AUTHN-008)&amp;diff=156799</id>
		<title>Testing for Weak security question/answer (OTG-AUTHN-008)</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Testing_for_Weak_security_question/answer_(OTG-AUTHN-008)&amp;diff=156799"/>
				<updated>2013-08-14T11:57:41Z</updated>
		
		<summary type="html">&lt;p&gt;Robert WInkel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:OWASP Testing Guide v4}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Brief Summary ==&lt;br /&gt;
Often called &amp;quot;secret&amp;quot; questions and answers, security questions and answers are often used to recover forgotten passwords, or as extra security on top of password.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
They are typically generated upon account creation, and require the user to select from some pre-generated questions and supply an appropriate answer, or allow the user to generate their own question and answer pairs. Both methods are prone to insecurities.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ideally, security questions should generate answers that are only known by the user, and not guessable or discoverable by anybody else. This is harder than it sounds.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Description of the Issue == &lt;br /&gt;
Security questions and answers rely on the secrecy of the answer. Answers should be of the form that are only known by the account holder. However, although a lot of answers may not be publicly known, most of the questions that websites implement promote answers that are pseduo-private. Some examples are below.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''Pre-generated questions:'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The majority of pre-generated questions are fairly simplistic in nature and can lead to insecure answers. For example:&lt;br /&gt;
* The answers may be known to family members or close friends of the user, e.g. &amp;quot;What is your mother's maiden name?&amp;quot;, &amp;quot;What is your date of birth?&amp;quot;&lt;br /&gt;
* The answers may be easily guessable, e.g. &amp;quot;What is your favorite color?&amp;quot;, &amp;quot;What is your favorite baseball team?&amp;quot;&lt;br /&gt;
* The answers may be brute forcible, e.g. &amp;quot;What is the first name of your favorite high school teacher?&amp;quot; - the answer is probably on some easily downloadable lists of popular first names, and therefore a simple brute force attack can be scripted.&lt;br /&gt;
* The answers may be publicly discoverable, e.g. &amp;quot;What is your favorite movie?&amp;quot; - the answer may easily be found on the user's social media profile page.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Self-generated questions:'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The problem with having users to generate their own questions is that it allows them to generate very insecure questions, or even bypass the whole point of having a security question in the first place. Here are some real world examples that illustrates this point:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;quot;What is 1+1?&amp;quot;&lt;br /&gt;
* &amp;quot;What is your username?&amp;quot;&lt;br /&gt;
* &amp;quot;My password is M3@t$p1N&amp;quot;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Black Box testing and examples ==&lt;br /&gt;
'''Testing for weak pre-generated questions:'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Generate the security questions, e.g. by creating a new account, going through the forgotten password functionality, or whatever the process is for that particular system. Try to generate as many questions as possible to get a good idea of the type of security questions that are answered. If any of the security questions fall in the categories described above, they are vulnerable to being attacked (guessed, brute-forced, available on social media, etc.). If within scope of the testing engagement, the vulnerability could be exploited by the tester as further proof. &lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''Testing for weak self-generated questions:'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Generate the security questions, e.g. by creating a new account, going through the forgotten password functionality, or whatever the process is for that particular system. If the system allows the user to generate their own security questions, it is vulnerable to having insecure questions created. If the system uses the self-generated security questions during the forgotten password functionality and if usernames can be enumerated (see [[Testing for Account Enumeration and Guessable User Account (OTG-IDENT-004)]]), then it should be easy for the tester to enumerate a number of users' self-generated questions. It should be expected to find several weak self-generated passwords using this method.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''Testing for brute-forcible answers:'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Use the methods described in [[Testing for Weak lock out mechanism (OWASP-AT-004)]] to determine whether a number of incorrectly supplied security answers generates an appropriate lock out mechanism.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
The first thing to take into consideration when trying to exploit security questions is how many questions need to be answered? The majority of applications only need the user to answer a single question, but some critical applications require the user to answer correctly to two or even more questions.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The next step is to assess the strength of the security questions. Could the answers be obtained by a simple Google search or with social engineering attack? As a penetration tester, here is a step-by-step walk-through of exploiting a security question scheme:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Are there multiple questions offered? If so, focus on questions which have:&lt;br /&gt;
** a “public” answer; for example, something Google would find with a simple query&lt;br /&gt;
** a factual answer such as a “first school” or other facts which can be looked up&lt;br /&gt;
** few possible answers, such as “what make was your first car”. These questions would present the attacker with a short-list of answers to guess at, and based on statistics the attacker could rank answers from most to least likely &lt;br /&gt;
* Determine how many guesses you have (if possible)&lt;br /&gt;
** Does the password reset allow unlimited attempts?&lt;br /&gt;
** Is there a lockout period after X incorrect answers? Keep in mind that a lockout system can be a security problem in itself, as it can be exploited by an attacker to launch a Denial of Service against legitimate users &lt;br /&gt;
* Pick the appropriate question based on analysis from above point, and do research to determine the most likely answers &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The key to successfully exploiting and bypassing a weak security question scheme is to find a question or set of questions which give the possibility of easily acquiring the answers. Always look for questions which can give you the greatest statistical chance of guessing the correct answer, if you are completely unsure of any of the answers. In the end, a security question scheme is only as strong as the weakest question.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
== References ==&lt;br /&gt;
'''Whitepapers'''&amp;lt;br&amp;gt;&lt;br /&gt;
...&amp;lt;br&amp;gt;&lt;br /&gt;
'''Tools'''&amp;lt;br&amp;gt;&lt;br /&gt;
...&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Robert WInkel</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Testing_for_Weak_lock_out_mechanism_(OTG-AUTHN-003)&amp;diff=156792</id>
		<title>Testing for Weak lock out mechanism (OTG-AUTHN-003)</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Testing_for_Weak_lock_out_mechanism_(OTG-AUTHN-003)&amp;diff=156792"/>
				<updated>2013-08-14T10:25:09Z</updated>
		
		<summary type="html">&lt;p&gt;Robert WInkel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:OWASP Testing Guide v4}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Brief Summary ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
..here: we describe in &amp;quot;natural language&amp;quot; what we want to test.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Note that this test should cover all aspects of authentication where lock out mechanisms would be appropriate, e.g. when the user is presented with security questions during forgotten password mechanisms (see [[Testing for Weak security question/answer (OTG-AUTHN-008)]]).&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Description of the Issue == &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
...here: Short Description of the Issue: Topic and Explanation&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Black Box testing and example ==&lt;br /&gt;
'''Testing for Topic X vulnerabilities:''' &amp;lt;br&amp;gt;&lt;br /&gt;
...&amp;lt;br&amp;gt;&lt;br /&gt;
'''Result Expected:'''&amp;lt;br&amp;gt;&lt;br /&gt;
...&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
== References ==&lt;br /&gt;
'''Whitepapers'''&amp;lt;br&amp;gt;&lt;br /&gt;
...&amp;lt;br&amp;gt;&lt;br /&gt;
'''Tools'''&amp;lt;br&amp;gt;&lt;br /&gt;
...&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Robert WInkel</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Testing_for_Weak_security_question/answer_(OTG-AUTHN-008)&amp;diff=156791</id>
		<title>Testing for Weak security question/answer (OTG-AUTHN-008)</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Testing_for_Weak_security_question/answer_(OTG-AUTHN-008)&amp;diff=156791"/>
				<updated>2013-08-14T10:19:50Z</updated>
		
		<summary type="html">&lt;p&gt;Robert WInkel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:OWASP Testing Guide v4}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Brief Summary ==&lt;br /&gt;
Often called &amp;quot;secret&amp;quot; questions and answers, security questions and answers are often used to recover forgotten passwords, or as extra security on top of password.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
They are typically generated upon account creation, and require the user to select from some pre-generated questions and supply an appropriate answer, or allow the user to generate their own question and answer pairs. Both methods are prone to insecurities.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ideally, security questions should generate answers that are only known by the user, and not guessable or discoverable by anybody else. This is harder than it sounds.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Description of the Issue == &lt;br /&gt;
Security questions and answers rely on the secrecy of the answer. Answers should be of the form that are only known by the account holder. However, although a lot of answers may not be publicly known, most of the questions that websites implement promote answers that are pseduo-private. Some examples are below.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''Pre-generated questions:'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The majority of pre-generated questions are fairly simplistic in nature and can lead to insecure answers. For example:&lt;br /&gt;
* The answers may be known to family members or close friends of the user, e.g. &amp;quot;What is your mother's maiden name?&amp;quot;, &amp;quot;What is your date of birth?&amp;quot;&lt;br /&gt;
* The answers may be easily guessable, e.g. &amp;quot;What is your favorite color?&amp;quot;, &amp;quot;What is your favorite baseball team?&amp;quot;&lt;br /&gt;
* The answers may be brute forcible, e.g. &amp;quot;What is the first name of your favorite high school teacher?&amp;quot; - the answer is probably on some easily downloadable lists of popular first names, and therefore a simple brute force attack can be scripted.&lt;br /&gt;
* The answers may be publicly discoverable, e.g. &amp;quot;What is your favorite movie?&amp;quot; - the answer may easily be found on the user's social media profile page.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Self-generated questions:'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The problem with having users to generate their own questions is that it allows them to generate very insecure questions, or even bypass the whole point of having a security question in the first place. Here are some real world examples that illustrates this point:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;quot;What is 1+1?&amp;quot;&lt;br /&gt;
* &amp;quot;What is your username?&amp;quot;&lt;br /&gt;
* &amp;quot;My password is M3@t$p1N&amp;quot;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Black Box testing and examples ==&lt;br /&gt;
'''Testing for weak pre-generated questions:'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Generate the security questions, e.g. by creating a new account, going through the forgotten password functionality, or whatever the process is for that particular system. Try to generate as many questions as possible to get a good idea of the type of security questions that are answered. If any of the security questions fall in the categories described above, they are vulnerable to being attacked (guessed, brute-forced, available on social media, etc.). If within scope of the testing engagement, the vulnerability could be exploited by the tester as further proof.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''Testing for weak self-generated questions:'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Generate the security questions, e.g. by creating a new account, going through the forgotten password functionality, or whatever the process is for that particular system. If the system allows the user to generate their own security questions, it is vulnerable to having insecure questions created. If the system uses the self-generated security questions during the forgotten password functionality and if usernames can be enumerated (see [[Testing for Account Enumeration and Guessable User Account (OTG-IDENT-004)]]), then it should be easy for the tester to enumerate a number of users' self-generated questions. It should be expected to find several weak self-generated passwords using this method.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''Testing for brute-forcible answers:'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Use the methods described in [[Testing for Weak lock out mechanism (OWASP-AT-004)]] to determine whether a number of incorrectly supplied security answers generates an appropriate lock out mechanism.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
== References ==&lt;br /&gt;
'''Whitepapers'''&amp;lt;br&amp;gt;&lt;br /&gt;
...&amp;lt;br&amp;gt;&lt;br /&gt;
'''Tools'''&amp;lt;br&amp;gt;&lt;br /&gt;
...&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Robert WInkel</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Testing_for_Weak_security_question/answer_(OTG-AUTHN-008)&amp;diff=156790</id>
		<title>Testing for Weak security question/answer (OTG-AUTHN-008)</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Testing_for_Weak_security_question/answer_(OTG-AUTHN-008)&amp;diff=156790"/>
				<updated>2013-08-14T10:16:17Z</updated>
		
		<summary type="html">&lt;p&gt;Robert WInkel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:OWASP Testing Guide v4}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Brief Summary ==&lt;br /&gt;
Often called &amp;quot;secret&amp;quot; questions and answers, security questions and answers are often used to recover forgotten passwords, or as extra security on top of password.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
They are typically generated upon account creation, and require the user to select from some pre-generated questions and supply an appropriate answer, or allow the user to generate their own question and answer pairs. Both methods are prone to insecurities.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ideally, security questions should generate answers that are only known by the user, and not guessable or discoverable by anybody else. This is harder than it sounds.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Description of the Issue == &lt;br /&gt;
Security questions and answers rely on the secrecy of the answer. Answers should be of the form that are only known by the account holder. However, although a lot of answers may not be publicly known, most of the questions that websites implement promote answers that are pseduo-private. Some examples are below.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''Pre-generated questions:'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The majority of pre-generated questions are fairly simplistic in nature and can lead to insecure answers. For example:&lt;br /&gt;
* The answers may be known to family members or close friends of the user, e.g. &amp;quot;What is your mother's maiden name?&amp;quot;, &amp;quot;What is your date of birth?&amp;quot;&lt;br /&gt;
* The answers may be easily guessable, e.g. &amp;quot;What is your favorite color?&amp;quot;, &amp;quot;What is your favorite baseball team?&amp;quot;&lt;br /&gt;
* The answers may be brute forcible, e.g. &amp;quot;What is the first name of your favorite high school teacher?&amp;quot; - the answer is probably on some easily downloadable lists of popular first names, and therefore a simple brute force attack can be scripted.&lt;br /&gt;
* The answers may be publicly discoverable, e.g. &amp;quot;What is your favorite movie?&amp;quot; - the answer may easily be found on the user's social media profile page.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Self-generated questions:'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The problem with having users to generate their own questions is that it allows them to generate very insecure questions, or even bypass the whole point of having a security question in the first place. Here are some real world examples that illustrates this point:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;quot;What is 1+1?&amp;quot;&lt;br /&gt;
* &amp;quot;What is your username?&amp;quot;&lt;br /&gt;
* &amp;quot;My password is M3@t$p1N&amp;quot;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Black Box testing and example ==&lt;br /&gt;
'''Testing for weak pre-generated questions:'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Generate the security questions, e.g. by creating a new account, going through the forgotten password functionality, or whatever the process is for that particular system. Try to generate as many questions as possible to get a good idea of the type of security questions that are answered. If any of the security questions fall in the categories described above, they are vulnerable to being attacked (guessed, brute-forced, available on social media, etc.). If within scope of the testing engagement, the vulnerability could be exploited by the tester as further proof.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Testing for weak self-generated questions:'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Generate the security questions, e.g. by creating a new account, going through the forgotten password functionality, or whatever the process is for that particular system. If the system allows the user to generate their own security questions, it is vulnerable to having insecure questions created. If the system uses the self-generated security questions during the forgotten password functionality and if usernames can be enumerated (see [[Testing for Account Enumeration and Guessable User Account (OTG-IDENT-004)]]), then it should be easy for the tester to enumerate a number of users' self-generated questions. It should be expected to find several weak self-generated passwords using this method.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Testing for brute-forcible answers:'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Use the methods described in [[Testing for Weak lock out mechanism (OWASP-AT-004)]] to determine whether a number of incorrectly supplied security answers generates an appropriate lock out mechanism.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Result Expected:'''&amp;lt;br&amp;gt;&lt;br /&gt;
...&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
== References ==&lt;br /&gt;
'''Whitepapers'''&amp;lt;br&amp;gt;&lt;br /&gt;
...&amp;lt;br&amp;gt;&lt;br /&gt;
'''Tools'''&amp;lt;br&amp;gt;&lt;br /&gt;
...&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Robert WInkel</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Testing_for_Weak_security_question/answer_(OTG-AUTHN-008)&amp;diff=156782</id>
		<title>Testing for Weak security question/answer (OTG-AUTHN-008)</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Testing_for_Weak_security_question/answer_(OTG-AUTHN-008)&amp;diff=156782"/>
				<updated>2013-08-14T05:43:52Z</updated>
		
		<summary type="html">&lt;p&gt;Robert WInkel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:OWASP Testing Guide v4}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Brief Summary ==&lt;br /&gt;
Often called &amp;quot;secret&amp;quot; questions and answers, security questions and answers are often used to recover forgotten passwords, or as extra security on top of password.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
They are typically generated upon account creation, and require the user to select from some pre-generated questions and supply an appropriate answer, or allow the user to generate their own question and answer pairs. Both methods are prone to insecurities.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Ideally, security questions should generate answers that are only known by the user, and not guessable or discoverable by anybody else. This is harder than it sounds.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Description of the Issue == &lt;br /&gt;
Security questions and answers rely on the secrecy of the answer. Answers should be of the form that are only known by the account holder. However, although a lot of answers may not be publicly known, most of the questions that websites implement promote answers that are pseduo-private. Some examples are below.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''Pre-generated questions:'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The majority of pre-generated questions are fairly simplistic in nature and can lead to insecure answers. For example:&lt;br /&gt;
* The answers may be known to family members or close friends of the user, e.g. &amp;quot;What is your mother's maiden name?&amp;quot;, &amp;quot;What is your date of birth?&amp;quot;&lt;br /&gt;
* The answers may be easily guessable, e.g. &amp;quot;What is your favorite color?&amp;quot;, &amp;quot;What is your favorite baseball team?&amp;quot;&lt;br /&gt;
* The answers may be brute forcible, e.g. &amp;quot;What is the first name of your favorite high school teacher?&amp;quot; - the answer is probably on some easily downloadable lists of popular first names, and therefore a simple brute force attack can be scripted.&lt;br /&gt;
* The answers may be publicly discoverable, e.g. &amp;quot;What is your favorite movie?&amp;quot; - the answer may easily be found on the user's social media profile page.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Self-generated questions:'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The problem with having users to generate their own questions is that it allows them to generate very insecure questions, or even bypass the whole point of having a security question in the first place. Here are some real world examples that illustrates this point:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;quot;What is 1+1?&amp;quot;&lt;br /&gt;
* &amp;quot;What is your username?&amp;quot;&lt;br /&gt;
* &amp;quot;My password is M3@t$p1N&amp;quot;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Black Box testing and example ==&lt;br /&gt;
'''Testing for weak pre-generated questions:'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Testing for weak self-generated questions:'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Testing for brute-forcible answers:'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Use the methods described in [[Testing for Weak lock out mechanism (OWASP-AT-004)]] to determine whether a number of incorrectly supplied security answers generates an appropriate lock out mechanism.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Result Expected:'''&amp;lt;br&amp;gt;&lt;br /&gt;
...&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
== References ==&lt;br /&gt;
'''Whitepapers'''&amp;lt;br&amp;gt;&lt;br /&gt;
...&amp;lt;br&amp;gt;&lt;br /&gt;
'''Tools'''&amp;lt;br&amp;gt;&lt;br /&gt;
...&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Robert WInkel</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Testing_for_Weak_security_question/answer_(OTG-AUTHN-008)&amp;diff=156781</id>
		<title>Testing for Weak security question/answer (OTG-AUTHN-008)</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Testing_for_Weak_security_question/answer_(OTG-AUTHN-008)&amp;diff=156781"/>
				<updated>2013-08-14T05:42:14Z</updated>
		
		<summary type="html">&lt;p&gt;Robert WInkel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:OWASP Testing Guide v4}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Brief Summary ==&lt;br /&gt;
Often called &amp;quot;secret&amp;quot; questions and answers, security questions and answers are often used to recover forgotten passwords, or as extra security on top of password.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
They are typically generated upon account creation, and require the user to select from some pre-generated questions and supply an appropriate answer, or allow the user to generate their own question and answer pairs. Both methods are prone to insecurities.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Description of the Issue == &lt;br /&gt;
Security questions and answers rely on the secrecy of the answer. Answers should be of the form that are only known by the account holder. However, although a lot of answers may not be publicly known, most of the questions that websites implement promote answers that are pseduo-private. Some examples are below.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''Pre-generated questions:'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The majority of pre-generated questions are fairly simplistic in nature and can lead to insecure answers. For example:&lt;br /&gt;
* The answers may be known to family members or close friends of the user, e.g. &amp;quot;What is your mother's maiden name?&amp;quot;, &amp;quot;What is your date of birth?&amp;quot;&lt;br /&gt;
* The answers may be easily guessable, e.g. &amp;quot;What is your favorite color?&amp;quot;, &amp;quot;What is your favorite baseball team?&amp;quot;&lt;br /&gt;
* The answers may be brute forcible, e.g. &amp;quot;What is the first name of your favorite high school teacher?&amp;quot; - the answer is probably on some easily downloadable lists of popular first names, and therefore a simple brute force attack can be scripted.&lt;br /&gt;
* The answers may be publicly discoverable, e.g. &amp;quot;What is your favorite movie?&amp;quot; - the answer may easily be found on the user's social media profile page.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Self-generated questions:'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The problem with having users to generate their own questions is that it allows them to generate very insecure questions, or even bypass the whole point of having a security question in the first place. Here are some real world examples that illustrates this point:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;quot;What is 1+1?&amp;quot;&lt;br /&gt;
* &amp;quot;What is your username?&amp;quot;&lt;br /&gt;
* &amp;quot;My password is M3@t$p1N&amp;quot;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Black Box testing and example ==&lt;br /&gt;
'''Testing for weak pre-generated questions:'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Testing for weak self-generated questions:'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Testing for brute-forcible answers:'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Use the methods described in [[Testing for Weak lock out mechanism (OWASP-AT-004)]] to determine whether a number of incorrectly supplied security answers generates an appropriate lock out mechanism.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Result Expected:'''&amp;lt;br&amp;gt;&lt;br /&gt;
...&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
== References ==&lt;br /&gt;
'''Whitepapers'''&amp;lt;br&amp;gt;&lt;br /&gt;
...&amp;lt;br&amp;gt;&lt;br /&gt;
'''Tools'''&amp;lt;br&amp;gt;&lt;br /&gt;
...&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Robert WInkel</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Testing_for_Weak_security_question/answer_(OTG-AUTHN-008)&amp;diff=156780</id>
		<title>Testing for Weak security question/answer (OTG-AUTHN-008)</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Testing_for_Weak_security_question/answer_(OTG-AUTHN-008)&amp;diff=156780"/>
				<updated>2013-08-14T05:41:02Z</updated>
		
		<summary type="html">&lt;p&gt;Robert WInkel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:OWASP Testing Guide v4}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Brief Summary ==&lt;br /&gt;
Often called &amp;quot;secret&amp;quot; questions and answers, security questions and answers are often used to recover forgotten passwords, or as extra security on top of password.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
They are typically generated upon account creation, and require the user to select from some pre-generated questions and supply an appropriate answer, or allow the user to generate their own question and answer pairs. Both methods are prone to insecurities.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Description of the Issue == &lt;br /&gt;
Security questions and answers rely on the secrecy of the answer. Answers should be of the form that are only known by the account holder. However, although a lot of answers may not be publicly known, most of the questions that websites implement promote answers that are pseduo-private. Some examples are below.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''Pre-generated questions:'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The majority of pre-generated questions are fairly simplistic in nature and can lead to insecure answers. For example:&lt;br /&gt;
* The answers may be known to family members or close friends of the user, e.g. &amp;quot;What is your mother's maiden name?&amp;quot;, &amp;quot;What is your date of birth?&amp;quot;&lt;br /&gt;
* The answers may be easily guessable, e.g. &amp;quot;What is your favorite color?&amp;quot;, &amp;quot;What is your favorite baseball team?&amp;quot;&lt;br /&gt;
* The answers may be brute forcible, e.g. &amp;quot;What is the first name of your favorite high school teacher?&amp;quot; - the answer is probably on some easily downloadable lists of popular first names, and therefore a simple brute force attack can be scripted.&lt;br /&gt;
* The answers may be publicly discoverable, e.g. &amp;quot;What is your favorite movie?&amp;quot; - the answer may easily be found on the user's social media profile page.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''Self-generated questions:'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The problem with having users to generate their own questions is that it allows them to generate very insecure questions, or even bypass the whole point of having a security question in the first place. Here are some real world examples that illustrates this point:&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* &amp;quot;What is 1+1?&amp;quot;&lt;br /&gt;
* &amp;quot;What is your username?&amp;quot;&lt;br /&gt;
* &amp;quot;My password is M3@t$p1N&amp;quot;&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
== Black Box testing and example ==&lt;br /&gt;
'''Testing for weak pre-generated questions:'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Testing for weak self-generated questions:'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Testing for brute-forcible answers:'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Use the methods described in [[Testing for Weak lock out mechanism (OWASP-AT-004)]] to determine whether a number of incorrectly supplied security answers generates an appropriate lock out mechanism.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Result Expected:'''&amp;lt;br&amp;gt;&lt;br /&gt;
...&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
== References ==&lt;br /&gt;
'''Whitepapers'''&amp;lt;br&amp;gt;&lt;br /&gt;
...&amp;lt;br&amp;gt;&lt;br /&gt;
'''Tools'''&amp;lt;br&amp;gt;&lt;br /&gt;
...&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Robert WInkel</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Testing_for_Weak_security_question/answer_(OTG-AUTHN-008)&amp;diff=156779</id>
		<title>Testing for Weak security question/answer (OTG-AUTHN-008)</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Testing_for_Weak_security_question/answer_(OTG-AUTHN-008)&amp;diff=156779"/>
				<updated>2013-08-14T05:36:22Z</updated>
		
		<summary type="html">&lt;p&gt;Robert WInkel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:OWASP Testing Guide v4}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Brief Summary ==&lt;br /&gt;
Often called &amp;quot;secret&amp;quot; questions and answers, security questions and answers are often used to recover forgotten passwords, or as extra security on top of password.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
They are typically generated upon account creation, and require the user to select from some pre-generated questions and supply an appropriate answer, or allow the user to generate their own question and answer pairs. Both methods are prone to insecurities.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Description of the Issue == &lt;br /&gt;
Security questions and answers rely on the secrecy of the answer. Answers should be of the form that are only known by the account holder. However, although a lot of answers may not be publicly known, most of the questions that websites implement promote answers that are pseduo-private. Some examples are below.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Pre-generated questions:'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The majority of pre-generated questions are fairly simplistic in nature and can lead to insecure answers. For example:&lt;br /&gt;
* The answers may be known to family members or close friends of the user, e.g. &amp;quot;What is your mother's maiden name?&amp;quot;, &amp;quot;What is your date of birth?&amp;quot;&lt;br /&gt;
* The answers may be easily guessable, e.g. &amp;quot;What is your favorite color?&amp;quot;, &amp;quot;What is your favorite baseball team?&amp;quot;&lt;br /&gt;
* The answers may be brute forcible, e.g. &amp;quot;What is the first name of your favorite high school teacher?&amp;quot; - the answer is probably on some easily downloadable lists of popular first names, and therefore a simple brute force attack can be scripted.&lt;br /&gt;
* The answers may be publicly discoverable, e.g. &amp;quot;What is your favorite movie?&amp;quot; - the answer may easily be found on the user's social media profile page.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Self-generated questions:'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Black Box testing and example ==&lt;br /&gt;
'''Testing for weak pre-generated questions:'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Testing for weak self-generated questions:'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Testing for brute-forcible answers:'''&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Use the methods described in [[Testing for Weak lock out mechanism (OWASP-AT-004)]] to determine whether a number of incorrectly supplied security answers generates an appropriate lock out mechanism.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Result Expected:'''&amp;lt;br&amp;gt;&lt;br /&gt;
...&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
== References ==&lt;br /&gt;
'''Whitepapers'''&amp;lt;br&amp;gt;&lt;br /&gt;
...&amp;lt;br&amp;gt;&lt;br /&gt;
'''Tools'''&amp;lt;br&amp;gt;&lt;br /&gt;
...&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Robert WInkel</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Testing_for_Weak_security_question/answer_(OTG-AUTHN-008)&amp;diff=156778</id>
		<title>Testing for Weak security question/answer (OTG-AUTHN-008)</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Testing_for_Weak_security_question/answer_(OTG-AUTHN-008)&amp;diff=156778"/>
				<updated>2013-08-14T05:19:53Z</updated>
		
		<summary type="html">&lt;p&gt;Robert WInkel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:OWASP Testing Guide v4}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Brief Summary ==&lt;br /&gt;
Often called &amp;quot;secret&amp;quot; questions and answers, security questions and answers are often used to recover forgotten passwords, or as extra security on top of password.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
They are typically generated upon account creation, and require the user to select from some pre-generated questions and supply an appropriate answer, or allow the user to generate their own question and answer pairs. Both methods are prone to insecurities.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Description of the Issue == &lt;br /&gt;
Security questions and answers rely on the secrecy of the answer. Answers should be of the form that are only known by the account holder. However, although a lot of answers may not be publicly known, most of the questions that websites offer promote answers that are pseduo-private. Some examples are below.&lt;br /&gt;
'''Pre-generated questions:''' &amp;lt;br&amp;gt;&lt;br /&gt;
The majority of pre-generated questions are fairly simplistic in nature and can generate insecure answers. For example:&lt;br /&gt;
* The answers may be known to family members or close friends of the user, e.g. &amp;quot;What is your mother's maiden name?&amp;quot;&lt;br /&gt;
* The answer may be easily guessable. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Black Box testing and example ==&lt;br /&gt;
'''Testing for Topic X vulnerabilities:''' &amp;lt;br&amp;gt;&lt;br /&gt;
...&amp;lt;br&amp;gt;&lt;br /&gt;
'''Result Expected:'''&amp;lt;br&amp;gt;&lt;br /&gt;
...&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
== References ==&lt;br /&gt;
'''Whitepapers'''&amp;lt;br&amp;gt;&lt;br /&gt;
...&amp;lt;br&amp;gt;&lt;br /&gt;
'''Tools'''&amp;lt;br&amp;gt;&lt;br /&gt;
...&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Robert WInkel</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Testing_for_Weak_security_question/answer_(OTG-AUTHN-008)&amp;diff=156777</id>
		<title>Testing for Weak security question/answer (OTG-AUTHN-008)</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Testing_for_Weak_security_question/answer_(OTG-AUTHN-008)&amp;diff=156777"/>
				<updated>2013-08-14T05:06:46Z</updated>
		
		<summary type="html">&lt;p&gt;Robert WInkel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:OWASP Testing Guide v4}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Brief Summary ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Often called &amp;quot;secret&amp;quot; questions and answers, security questions and answers are often used to recover forgotten passwords, or as extra security on top of password.&lt;br /&gt;
They are typically generated upon account creation, and require the user to select from some pre-generated questions and supply an appropriate answer, or allow the user to generate their own question and answer pairs. Both methods are prone to insecurities.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Description of the Issue == &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
...here: Short Description of the Issue: Topic and Explanation&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Black Box testing and example ==&lt;br /&gt;
'''Testing for Topic X vulnerabilities:''' &amp;lt;br&amp;gt;&lt;br /&gt;
...&amp;lt;br&amp;gt;&lt;br /&gt;
'''Result Expected:'''&amp;lt;br&amp;gt;&lt;br /&gt;
...&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
== References ==&lt;br /&gt;
'''Whitepapers'''&amp;lt;br&amp;gt;&lt;br /&gt;
...&amp;lt;br&amp;gt;&lt;br /&gt;
'''Tools'''&amp;lt;br&amp;gt;&lt;br /&gt;
...&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>Robert WInkel</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Testing_for_Weak_security_question/answer_(OTG-AUTHN-008)&amp;diff=156776</id>
		<title>Testing for Weak security question/answer (OTG-AUTHN-008)</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Testing_for_Weak_security_question/answer_(OTG-AUTHN-008)&amp;diff=156776"/>
				<updated>2013-08-14T05:01:10Z</updated>
		
		<summary type="html">&lt;p&gt;Robert WInkel: Created page with &amp;quot;{{Template:OWASP Testing Guide v4}}  == Brief Summary ==  == Description of the Issue ==   == Black Box testing and example ==  == Gray Box testing and example ==   == Referen...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:OWASP Testing Guide v4}}&lt;br /&gt;
&lt;br /&gt;
== Brief Summary ==&lt;br /&gt;
&lt;br /&gt;
== Description of the Issue == &lt;br /&gt;
&lt;br /&gt;
== Black Box testing and example ==&lt;br /&gt;
&lt;br /&gt;
== Gray Box testing and example == &lt;br /&gt;
&lt;br /&gt;
== References ==&lt;/div&gt;</summary>
		<author><name>Robert WInkel</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Testing_for_User_Enumeration_and_Guessable_User_Account_(OWASP-AT-002)&amp;diff=138178</id>
		<title>Testing for User Enumeration and Guessable User Account (OWASP-AT-002)</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Testing_for_User_Enumeration_and_Guessable_User_Account_(OWASP-AT-002)&amp;diff=138178"/>
				<updated>2012-10-26T04:27:40Z</updated>
		
		<summary type="html">&lt;p&gt;Robert WInkel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:OWASP Testing Guide v4}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Brief Summary ==&lt;br /&gt;
The scope of this test is to verify if it is possible to collect a set of valid usernames by interacting with the authentication mechanism of the application. This test will be useful for the brute force testing, in which we verify if, given a valid username, it is possible to find the corresponding password. &lt;br /&gt;
Often, web applications reveal when a username exists on system, either as a consequence of a misconfiguration or as a design decision. For example, sometimes, when we submit wrong credentials, we receive a message that states that either the username is present on the system or the provided password is wrong.&lt;br /&gt;
The information obtained can be used by an attacker to gain a list of users on system. This information can be used to attack the web application, for example, through a brute force or default username/password attack.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Description of the Issue == &lt;br /&gt;
The tester should interact with the authentication mechanism of the application to understand if sending particular requests causes the application to answer in different manners. This issue exists because the information released from web application or web server when we provide a valid username is different than when we use an invalid one.&lt;br /&gt;
&lt;br /&gt;
In some cases, we receive a message that reveals if the provided credentials are wrong because an invalid username or an invalid password was used. Sometimes, we can enumerate the existing users by sending a username and an empty password.&lt;br /&gt;
&lt;br /&gt;
== Black Box testing and example ==&lt;br /&gt;
In a black box testing, we know nothing about the specific application, username, application logic, error messages on login page, or password recovery facilities.&lt;br /&gt;
If the application is vulnerable, we receive a response message that reveals, directly or indirectly, some information useful for enumerating users. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===HTTP Response message===&lt;br /&gt;
&lt;br /&gt;
'''Testing for Valid user/right password''' &lt;br /&gt;
&lt;br /&gt;
Record the server answer when you submit a valid userID and valid password.&lt;br /&gt;
&lt;br /&gt;
'''Result Expected:'''&lt;br /&gt;
&lt;br /&gt;
Using WebScarab, notice the information retrieved from this successful authentication (HTTP 200 Response, length of the response).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Testing for valid user/wrong password''' &amp;lt;br&amp;gt;&lt;br /&gt;
Now, the tester should try to insert a valid userID and a wrong password and record the error message generated by the application.&lt;br /&gt;
&lt;br /&gt;
'''Result Expected:'''&amp;lt;br&amp;gt;&lt;br /&gt;
From the browser we will expect message similar to the following one:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:AuthenticationFailed.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or something like:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:NoConfFound.jpg]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
against any message that reveals the existence of user, for instance, message similar to:&amp;lt;br&amp;gt; 	&lt;br /&gt;
 Login for User foo: invalid password&lt;br /&gt;
&lt;br /&gt;
Using WebScarab, notice the information retrieved from this unsuccessful authentication attempt (HTTP 200 Response, length of the response).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Testing for a nonexistent username''' &lt;br /&gt;
&lt;br /&gt;
Now, the tester should try to insert an invalid userID and a wrong password and record the server answer (you should be confident that the username is not valid in the application). Record the error message and the server answer.&lt;br /&gt;
&lt;br /&gt;
'''Result Expected:'''&lt;br /&gt;
&lt;br /&gt;
If we enter a nonexistent userID, we can receive a message similar to:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Userisnotactive.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
or message like the following one:&amp;lt;br&amp;gt;&lt;br /&gt;
 Login failed for User foo: invalid Account&lt;br /&gt;
&lt;br /&gt;
Generally the application should respond with the same error message and length to the different wrong requests. If you notice that the responses are not the same, you should investigate and find out the key that creates a difference between the two responses. For example: &lt;br /&gt;
* Client request: Valid user/wrong password --&amp;gt; Server answer:'The password is not correct'&lt;br /&gt;
* Client request: Wrong user/wrong password --&amp;gt; Server answer:'User not recognized'&lt;br /&gt;
The above responses let the client understand that for the first request we have a valid user name. So we can interact with the application requesting a set of possible userIDs and observing the answer.&lt;br /&gt;
&lt;br /&gt;
Looking at the second server response, we understand in the same way that we don't hold a valid username. So we can interact in the same manner and create a list of valid userID looking at the server answers.&lt;br /&gt;
&lt;br /&gt;
===Other ways to enumerate users=== &lt;br /&gt;
&lt;br /&gt;
We can enumerate users in several ways, such as: &amp;lt;br&amp;gt;&lt;br /&gt;
'''- Analyzing the error code received on login pages'''&amp;lt;br&amp;gt;&lt;br /&gt;
Some web application release a specific error code or message that we can analyze.&lt;br /&gt;
&lt;br /&gt;
'''- Analyzing URLs, and URLs redirections'''&amp;lt;br&amp;gt;&lt;br /&gt;
For example:&amp;lt;br&amp;gt;&lt;br /&gt;
 http://www.foo.com/err.jsp?User=baduser&amp;amp;Error=0&amp;lt;br&amp;gt;&lt;br /&gt;
 http://www.foo.com/err.jsp?User=gooduser&amp;amp;Error=2&lt;br /&gt;
&lt;br /&gt;
As we can see above, when we provide a userID and password to the web application, we see a message indication that an error has occurred in the URL. &lt;br /&gt;
In the first case we has provided a bad userID and bad password. In the second, a good user and bad password, so we can identify a valid userID.&lt;br /&gt;
&lt;br /&gt;
'''- URI Probing'''&amp;lt;br&amp;gt;&lt;br /&gt;
Sometimes a web server responds differently if it receives a request for an existing directory or not. For instance in some portals every user is associated with a directory. If we try to access an existing directory we could receive a web server error.&lt;br /&gt;
A very common error that we can receive from web server is:&amp;lt;br&amp;gt;&lt;br /&gt;
   403 Forbidden error code &lt;br /&gt;
and &amp;lt;br&amp;gt;&lt;br /&gt;
   404 Not found error code&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Example&amp;lt;br&amp;gt;&lt;br /&gt;
 http://www.foo.com/account1 - we receive from web server: 403 Forbidden &lt;br /&gt;
 http://www.foo.com/account2 - we receive from web server: 404 file Not Found&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In first case the user exists, but we cannot view the web page, in second case instead the user “account2” doesn’t exist.&lt;br /&gt;
Collecting this information we can enumerate the users.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''- Analyzing Web page Titles'''&amp;lt;br&amp;gt;&lt;br /&gt;
We can receive useful information on Title of web page, where we can obtain a specific error code or messages that reveal if the problems are on username or password.&lt;br /&gt;
For instance, if we cannot authenticate to an application and receive a web page whose title is similar to:&lt;br /&gt;
 Invalid user&lt;br /&gt;
 Invalid authentication&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''- Analyzing message received from recovery facility'''&amp;lt;br&amp;gt; &lt;br /&gt;
When we use a recovery facility (i.e. a Forgotten Password function) a vulnerable application might return a message that reveals if a username exists or not.&lt;br /&gt;
&lt;br /&gt;
For example, message similar to the following:&amp;lt;br&amp;gt;&lt;br /&gt;
 Invalid username: e-mail address is not valid or the specified user was not found.&lt;br /&gt;
&lt;br /&gt;
 Valid username: Your password has been successfully sent to the email address you registered with.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''- Friendly 404 Error Message'''&amp;lt;br&amp;gt;&lt;br /&gt;
When we request for a user within the directory that does not exist, we don't always receive 404 error code. Instead, we may receive “200 ok” with an image, in this case we can assume that when we receive the specific image the user doesn’t exist. This logic can be applied to other web server response; the trick is a good analysis of web server and web application messages.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
===Guessing Users===&lt;br /&gt;
In some cases the userIDs are created with specific policies of administrator or company.  &lt;br /&gt;
For example we can view a user with a userID created in sequential order:&amp;lt;br&amp;gt;&lt;br /&gt;
		CN000100&amp;lt;br&amp;gt;&lt;br /&gt;
		CN000101&amp;lt;br&amp;gt;&lt;br /&gt;
		…. &amp;lt;br&amp;gt;&lt;br /&gt;
Sometimes the usernames are created with a REALM alias and then a sequential numbers:&amp;lt;br&amp;gt;&lt;br /&gt;
		R1001 – user 001 for REALM1&amp;lt;br&amp;gt;&lt;br /&gt;
	 	R2001 – user 001 for REALM2&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
In the above sample we can create simple shell scripts that compose UserIDs and submit a request with tool like wget to automate a web query to discern valid userIDs.&lt;br /&gt;
To create a script we can also use Perl and CURL.&lt;br /&gt;
&lt;br /&gt;
Other possibilities are:&lt;br /&gt;
- userIDs associated with credit card numbers, or in general numbers with a pattern.&lt;br /&gt;
- userIDs associated with real names, e.g. if Freddie Mercury has a userID of &amp;quot;fmercury&amp;quot;, then you might guess Roger Taylor to have the userID of &amp;quot;rtaylor&amp;quot;. &lt;br /&gt;
  &lt;br /&gt;
Again, we can guess a username from the information received from an LDAP query or from Google information gathering, for example, from a specific domain.&lt;br /&gt;
Google can help to find domain users through specific queries or through a simple shell script or tool.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''Attention:''' by enumerating user accounts, you risk locking out accounts after a predefined number of failed probes (based on application policy). Also, sometimes, your IP address can be banned by dynamic rules on the application firewall or Intrusion Prevention System.&lt;br /&gt;
&lt;br /&gt;
== Gray Box testing and example == &lt;br /&gt;
'''Testing for Authentication error messages'''&amp;lt;br&amp;gt;&lt;br /&gt;
Verify that the application answers in the same manner for every client request that produces a failed authentication. For this issue the Black Box testing and  Gray Box testing have the same concept based on the analysis of messages or error codes received from web application.&amp;lt;br&amp;gt;&lt;br /&gt;
'''Result Expected:'''&amp;lt;br&amp;gt;&lt;br /&gt;
The application should answer in the same manner for every failed attempt of authentication.&amp;lt;br&amp;gt;&lt;br /&gt;
For Example: &amp;lt;br&amp;gt;&lt;br /&gt;
 Credentials submitted are not valid&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* Marco Mella, ''Sun Java Access &amp;amp; Identity Manager Users enumeration: http://www.aboutsecurity.net&amp;lt;br&amp;gt;''&lt;br /&gt;
* ''Username Enumeration Vulnerabilities: http://www.gnucitizen.org/blog/username-enumeration-vulnerabilities&amp;lt;br&amp;gt;'' &lt;br /&gt;
&lt;br /&gt;
'''Tools'''&amp;lt;br&amp;gt;&lt;br /&gt;
* WebScarab: [[OWASP_WebScarab_Project]]&lt;br /&gt;
* CURL: http://curl.haxx.se/&lt;br /&gt;
* PERL: http://www.perl.org&lt;br /&gt;
* Sun Java Access &amp;amp; Identity Manager users enumeration tool: http://www.aboutsecurity.net&lt;/div&gt;</summary>
		<author><name>Robert WInkel</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_Testing_Guide_v4_Table_of_Contents&amp;diff=138174</id>
		<title>OWASP Testing Guide v4 Table of Contents</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=OWASP_Testing_Guide_v4_Table_of_Contents&amp;diff=138174"/>
				<updated>2012-10-26T01:29:57Z</updated>
		
		<summary type="html">&lt;p&gt;Robert WInkel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&lt;br /&gt;
'''This is the DRAFT of the table of content of the New Testing Guide v4.'''&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;You can download the stable version v3[http://www.owasp.org/images/5/56/OWASP_Testing_Guide_v3.pdf here] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Back to the OWASP Testing Guide Project:&lt;br /&gt;
http://www.owasp.org/index.php/OWASP_Testing_Project&lt;br /&gt;
&lt;br /&gt;
'''Updated: 22nd October 2012'''&lt;br /&gt;
&lt;br /&gt;
[[ OWTGv4 Contributors list|'''Contributors List]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following is a DRAFT of the Toc based on the feedback already received.&lt;br /&gt;
&lt;br /&gt;
== Table of Contents ==&lt;br /&gt;
&lt;br /&gt;
==[[Testing Guide Foreword|Foreword by OWASP Chair]]== &lt;br /&gt;
[To review--&amp;gt; OWASP Chair]&lt;br /&gt;
&lt;br /&gt;
==[[Testing Guide Frontispiece |1. Frontispiece]]== &lt;br /&gt;
[To review--&amp;gt; Mat]&lt;br /&gt;
&lt;br /&gt;
'''[[Testing Guide Frontispiece|1.1 About the OWASP Testing Guide Project]]''' &lt;br /&gt;
[To review--&amp;gt; Mat]&lt;br /&gt;
&lt;br /&gt;
'''[[About The Open Web Application Security Project|1.2 About The Open Web Application Security Project]]''' &lt;br /&gt;
[To review--&amp;gt; ]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==[[Testing Guide Introduction|2. Introduction]]==&lt;br /&gt;
&lt;br /&gt;
'''2.1 The OWASP Testing Project'''&lt;br /&gt;
&lt;br /&gt;
'''2.2 Principles of Testing'''&lt;br /&gt;
&lt;br /&gt;
'''2.3 Testing Techniques Explained''' &lt;br /&gt;
&lt;br /&gt;
2.4 [https://www.owasp.org/index.php/Testing_Guide_Introduction#Security_Requirements_Test_Derivation Security requirements test derivation],[https://www.owasp.org/index.php/Testing_Guide_Introduction#Functional_and_Non_Functional_Test_Requirements functional and non functional test requirements], and [https://www.owasp.org/index.php/Testing_Guide_Introduction#Test_Cases_Through_Use_and_Misuse_Cases test cases through use and misuse cases]&lt;br /&gt;
&lt;br /&gt;
2.5 [https://www.owasp.org/index.php/Testing_Guide_Introduction#Security_Test_Data_Analysis_and_Reporting Security test data analysis and reporting: root cause identification and business/role case test data reporting]&lt;br /&gt;
&lt;br /&gt;
==[[The OWASP Testing Framework|3. The OWASP Testing Framework]]==&lt;br /&gt;
&lt;br /&gt;
'''3.1. Overview'''&lt;br /&gt;
&lt;br /&gt;
'''3.2. Phase 1: Before Development Begins '''&lt;br /&gt;
&lt;br /&gt;
'''3.3. Phase 2: During Definition and Design'''&lt;br /&gt;
&lt;br /&gt;
'''3.4. Phase 3: During Development'''&lt;br /&gt;
&lt;br /&gt;
'''3.5. Phase 4: During Deployment'''&lt;br /&gt;
&lt;br /&gt;
'''3.6. Phase 5: Maintenance and Operations'''&lt;br /&gt;
&lt;br /&gt;
'''3.7. A Typical SDLC Testing Workflow '''&lt;br /&gt;
&lt;br /&gt;
==[[Web Application Penetration Testing |4. Web Application Penetration Testing ]]==&lt;br /&gt;
&lt;br /&gt;
[[Testing: Introduction and objectives|'''4.1 Introduction and Objectives''']] [To review--&amp;gt; Mat]&lt;br /&gt;
&lt;br /&gt;
[[Testing Checklist| 4.1.1 Testing Checklist]] [To review at the end of brainstorming --&amp;gt; Mat]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Testing: Information Gathering|'''4.2 Information Gathering ''']] [To review--&amp;gt; contributor here]&lt;br /&gt;
&lt;br /&gt;
[[Testing: Spiders, Robots, and Crawlers (OWASP-IG-001)|4.2.1 Spiders, Robots and Crawlers (OWASP-IG-001)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing: Search engine discovery/reconnaissance (OWASP-IG-002)|4.2.2 Search Engine Discovery/Reconnaissance (OWASP-IG-002)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing: Identify application entry points (OWASP-IG-003)|4.2.3 Identify application entry points (OWASP-IG-003)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Web Application Fingerprint (OWASP-IG-004)|4.2.4 Testing for Web Application Fingerprint (OWASP-IG-004)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Application Discovery (OWASP-IG-005)|4.2.5 Application Discovery (OWASP-IG-005)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Error Code (OWASP-IG-006)|4.2.6 Analysis of Error Codes (OWASP-IG-006)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Testing for configuration management|'''4.3 Configuration and Deploy Management Testing ''']]&lt;br /&gt;
&lt;br /&gt;
[[Testing for infrastructure configuration management (OWASP-CM-003)|4.3.1 Testing for Infrastructure Configuration Management Testing weakness (OWASP-CM-001)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for application configuration management (OWASP-CM-004)|4.3.2 Testing for Application Configuration Management weakness (OWASP-CM-002)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for file extensions handling  (OWASP-CM-005)|4.3.3 Testing for File Extensions Handling  (OWASP-CM-003)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Old, Backup and Unreferenced Files (OWASP-CM-006)|4.3.4 Old, Backup and Unreferenced Files (OWASP-CM-004) ]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Admin Interfaces  (OWASP-CM-007)|4.3.5 Infrastructure and Application Admin Interfaces  (OWASP-CM-005)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for HTTP Methods and XST  (OWASP-CM-008)|4.3.6 Testing for Bad HTTP Methods (OWASP-CM-006)]][new - Abian Blome]&lt;br /&gt;
&lt;br /&gt;
&amp;gt; Informative Error Messages [MAT NOTE: in info gathering]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Testing for Database credentials/connection strings available|4.3.7 Testing for Database credentials/connection strings available (OWASP-CM-007)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Content Security Policy weakness|4.3.8 Testing for Content Security Policy weakness (OWASP-CM-008)]][New! - Simone Onofri]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Missing HSTS header|4.3.9 Testing for Missing HSTS header (OWASP-CM-009)]][New! Juan Manuel Bahamonde ]&lt;br /&gt;
&lt;br /&gt;
[[Testing for RIA policy files weakness|4.3.10 Testing for RIA policy files weakness (OWASP-CM-010)]] [New!]&lt;br /&gt;
&lt;br /&gt;
&amp;gt; Incorrect time[New! MAT NOTE: explain the test in detail please]&lt;br /&gt;
&lt;br /&gt;
&amp;gt; Unpatched components and libraries (e.g. JavaScript libraries)[New! NOTE: tu discuss it]&lt;br /&gt;
&lt;br /&gt;
&amp;gt; Test data in production systems (and vice versa)[New! MAT NOTE: this is not a particular test that could find a vulnerability]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Testing for authentication|'''4.4 Authentication Testing ''']] &lt;br /&gt;
&lt;br /&gt;
[[Testing for Credentials Transported over an Encrypted Channel (OWASP-AT-001)|4.4.1 Testing for Credentials Transported over an Encrypted Channel  (OWASP-AT-001)]] [Robert Winkel]&lt;br /&gt;
&lt;br /&gt;
[[Testing for User Enumeration and Guessable User Account (OWASP-AT-002)|4.4.2 Testing for User Enumeration and Guessable User Account  (OWASP-AT-002)]] [Robert Winkel]&lt;br /&gt;
&lt;br /&gt;
[[Testing for default credentials (OWASP-AT-003)|4.4.3 Testing for default credentials (OWASP-AT-003)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Weak lock out mechanism (OWASP-AT-004)|4.4.4 Testing for Weak lock out mechanism (OWASP-AT-004)]] [New! - Robert Winkel] &lt;br /&gt;
&lt;br /&gt;
&amp;gt; Account lockout DoS [New! - Robert Winkel - we can put it in the 4.4.4]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Bypassing Authentication Schema (OWASP-AT-005)|4.4.5 Testing for bypassing authentication schema (OWASP-AT-005)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Vulnerable Remember Password (OWASP-AT-006)|4.4.6 Testing for vulnerable remember &lt;br /&gt;
password functionality (OWASP-AT-006)]] [Robert Winkel]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Browser cache weakness (OWASP-AT-007)|4.4.7 Testing for Browser cache weakness (OWASP-AT-007)]] [New! - Abian Blome]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Weak password policy (OWASP-AT-008)|4.4.8 Testing for Weak password policy (OWASP-AT-008)]] [New! - Robert Winkel]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Weak or unenforced username policy (OWASP-AT-009)|4.4.9 Testing for Weak or unenforced username policy (OWASP-AT-009)]] [New! - Robert Winkel]&lt;br /&gt;
&lt;br /&gt;
&amp;gt; Weak security question/answer [New! - Robert Winkel - MAT Note: same as AT-006]&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Testing for failure to restrict access to authenticated resource(OWASP-AT-010)|4.4.10 Testing for failure to restrict access to authenticated resource (OWASP-AT-010)]] [New!]&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Testing for weak password change or reset functionalities (OWASP-AT-011)|4.4.11 Testing for weak password change or reset functionalities (OWASP-AT-011)]] [New! - Robert Winkel]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Testing for Captcha (OWASP-AT-012)|4.4.12 Testing for CAPTCHA (OWASP-AT-012)]]&lt;br /&gt;
&lt;br /&gt;
&amp;gt; Weaker authentication in alternative channel (e.g. mobile app, IVR, help desk) [New!: MAT Note: to explain better the kind of test to perform please]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Testing for Session Management|'''4.5 Session Management Testing''']] &lt;br /&gt;
&lt;br /&gt;
[[Testing for Session_Management_Schema (OWASP-SM-001)|4.5.1 Testing for Bypassing Session Management Schema (OWASP-SM-001)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for cookies attributes  (OWASP-SM-002)|4.5.2 Testing for Cookies attributes (Cookies are set not ‘HTTP Only’, ‘Secure’,  and no time validity) (OWASP-SM-002)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Session Fixation  (OWASP-SM-003)|4.5.3 Testing for Session Fixation  (OWASP-SM-003)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Exposed Session Variables  (OWASP-SM-004)|4.5.4 Testing for Exposed Session Variables   (OWASP-SM-004)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for CSRF  (OWASP-SM-005)|4.5.5 Testing for Cross Site Request Forgery (CSRF)  (OWASP-SM-005)]]&lt;br /&gt;
&lt;br /&gt;
&amp;gt; Weak Session Token (MAT NOTE included in 4.5.1)&lt;br /&gt;
 &lt;br /&gt;
[[Testing for Session token not restricted properly (OWASP-SM-006)|4.5.6 Testing for Session token not restricted properly (such as domain or path not set properly) (OWASP-SM-006)]] [New! - Abian Blome]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;gt; Session passed over http (NOTE: included in SM-004) [New!] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Testing for logout functionality (OWASP-SM-007)|4.5.7 Testing for logout functionality (OWASP-SM-007)]]&lt;br /&gt;
&lt;br /&gt;
&amp;gt;Session token not removed on server after logout [New!: NOTE included in the above test]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;gt; Logout function not properly implemented (NOTE:same above)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;gt; Persistent session token [New! NOTE: this is not a vulnerability if session time out is correctly performed]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Testing for Session puzzling (OWASP-SM-008)|4.5.8 Testing for Session puzzling (OWASP-SM-008)]] [New! - Abian Blome]&lt;br /&gt;
&lt;br /&gt;
&amp;gt; Missing user-viewable log of authentication events [NOTE: needs more details: which test perform?]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Testing for Authorization|'''4.6 Authorization Testing''']] &lt;br /&gt;
&lt;br /&gt;
[[Testing for Path Traversal  (OWASP-AZ-001)|4.6.1 Testing Directory traversal/file include (OWASP-AZ-001) [Juan Galiana] ]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Bypassing Authorization Schema  (OWASP-AZ-002)|4.6.2 Testing for bypassing authorization schema  (OWASP-AZ-002)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Privilege escalation  (OWASP-AZ-003)|4.6.3 Testing for Privilege Escalation  (OWASP-AZ-003) [Irene Abezgauz]]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Insecure Direct Object References (OWASP-AZ-004)|4.6.4 Testing for Insecure Direct Object References (OWASP-AZ-004) [Irene Abezgauz] ]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Failure to Restrict access to authorized resource (OWASP-AZ-005)|4.6.5 Testing for Failure to Restrict access to authorized resource (OWASP-AZ-005) [New!] ]]&lt;br /&gt;
&lt;br /&gt;
&amp;gt; Server component has excessive privileges (e.g. indexing service, reporting interface, file generator)[New!]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;gt; Lack of enforcement of application entry points (including exposure of objects)[New!]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Testing for business logic   (OWASP-BL-001)|'''4.7 Business Logic Testing  (OWASP-BL-001)''']] [To review--&amp;gt; contributor here]&lt;br /&gt;
Business Logic&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Business logic data validation[New!] NOTE MAT: to discuss this section&amp;lt;br&amp;gt;&lt;br /&gt;
Ability to forge requests[New!]&amp;lt;br&amp;gt;&lt;br /&gt;
Lack of integrity checks (e.g. overwriting updates) [New!]&amp;lt;br&amp;gt;&lt;br /&gt;
Lack of tamper evidence[New!]&amp;lt;br&amp;gt;&lt;br /&gt;
Use of untrusted time source[New!]&amp;lt;br&amp;gt;&lt;br /&gt;
Lack of limits to excessive rate (speed) of use[New!]&amp;lt;br&amp;gt;&lt;br /&gt;
Lack of limits to size of request[New!]&amp;lt;br&amp;gt;&lt;br /&gt;
Lack of limit to number of times a function can be used[New!]&amp;lt;br&amp;gt;&lt;br /&gt;
Bypass of correct sequence[New!]&amp;lt;br&amp;gt;&lt;br /&gt;
Missing user-viewable log of actvity[New!]&amp;lt;br&amp;gt;&lt;br /&gt;
Self-hosted payment cardholder data processing[New!]&amp;lt;br&amp;gt;&lt;br /&gt;
Lack of security incident reporting information[New!]&amp;lt;br&amp;gt;&lt;br /&gt;
Defenses against application mis-use[New!]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Testing for Data Validation|'''4.8 Data Validation Testing''']] &lt;br /&gt;
&lt;br /&gt;
[[Testing for Reflected Cross site scripting (OWASP-DV-001) |4.8.1 Testing for Reflected Cross Site Scripting (OWASP-DV-001) ]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Stored Cross site scripting (OWASP-DV-002) |4.8.2 Testing for Stored Cross Site Scripting (OWASP-DV-002) ]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for HTTP Verb Tampering (OWASP-DV-003)|4.8.3 Testing for HTTP Verb Tampering   [Brad Causey] ]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for HTTP Parameter pollution (OWASP-DV-004)|4.8.4 Testing for HTTP Parameter pollution [Luca Carettoni, Stefano Di Paola, Brad Causey] ]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Unvalidated Redirects and Forwards (OWASP-DV-004)|4.8.5 Testing for Unvalidated Redirects and Forwards [Brad Causey] ]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for SQL Injection (OWASP-DV-005)| 4.8.5 Testing for SQL Injection (OWASP-DV-005) Ismael Gonçalves]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Oracle|4.8.5.1 Oracle Testing]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for MySQL|4.8.5.2 MySQL Testing]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for SQL Server|4.8.5.3 SQL Server Testing]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for MS Access |4.8.5.4 MS Access Testing]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for NoSQL injection|4.8.5.5 Testing for NoSQL injection [New!]]]&lt;br /&gt;
&lt;br /&gt;
[[OWASP_Backend_Security_Project_Testing_PostgreSQL|4.8.5.5 Testing PostgreSQL (from OWASP BSP) ]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for LDAP Injection  (OWASP-DV-006)|4.8.6 Testing for LDAP Injection  (OWASP-DV-006)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for ORM Injection   (OWASP-DV-007)|4.8.7 Testing for ORM Injection   (OWASP-DV-007)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for XML Injection (OWASP-DV-008)|4.8.8 Testing for XML Injection (OWASP-DV-008)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for SSI Injection  (OWASP-DV-009)|4.8.9 Testing for SSI Injection  (OWASP-DV-009)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for XPath Injection  (OWASP-DV-010)|4.8.10 Testing for XPath Injection  (OWASP-DV-010)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for IMAP/SMTP Injection  (OWASP-DV-011)|4.8.11 IMAP/SMTP Injection  (OWASP-DV-011)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Code Injection  (OWASP-DV-012)|4.8.12 Testing for Code Injection  (OWASP-DV-012)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Command Injection   (OWASP-DV-013)|4.8.13 Testing for Command Injection   (OWASP-DV-013) [Juan Galiana]]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Buffer Overflow (OWASP-DV-014)|4.8.14 Testing for Buffer overflow (OWASP-DV-014)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Heap Overflow|4.8.14.1 Testing for Heap overflow]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Stack Overflow|4.8.14.2 Testing for Stack overflow]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Format String|4.8.14.3 Testing for Format string]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Incubated Vulnerability (OWASP-DV-015)|4.8.15 Testing for incubated vulnerabilities (OWASP-DV-015)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for HTTP Splitting/Smuggling  (OWASP-DV-016)|4.8.16 Testing for HTTP Splitting/Smuggling  (OWASP-DV-016) [Juan Galiana] ]]&lt;br /&gt;
&lt;br /&gt;
&amp;gt; Regular expression DoS[New!] note: to understand better&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Data Encryption (New!)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Insecure encryption usage (OWASP-EN-001)| 4.9.1  Testing for Insecure encryption usage (OWASP-EN-001]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Weak SSL/TSL Ciphers, Insufficient Transport Layer Protection (OWASP-EN-002)| 4.9.2 Testing for Weak SSL/TSL Ciphers, Insufficient Transport Layer Protection (OWASP-EN-002)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Padding Oracle (OWASP-EN-003)| 4.9.3 Testing for Padding Oracle (OWASP-EN-003) [Giorgio Fedon]]]&lt;br /&gt;
&lt;br /&gt;
&amp;gt; [[Testing for Cacheable HTTPS Response | x.x.3 Testing for Cacheable HTTPS Response&amp;lt;br&amp;gt;&lt;br /&gt;
Cache directives insecure&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;gt; Testing for Insecure Cryptographic Storage [put in x.x.1]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Testing for Sensitive information sent via unencrypted channels | x.x.4&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Web Service (XML Interpreter)|'''4.10 Web Service Testing''']] [Tom Eston] &lt;br /&gt;
&lt;br /&gt;
[[Scoping a Web Service Test (OWASP-WS-001)|4.10.1 Scoping a Web Service Test (OWASP-WS-001)]]&lt;br /&gt;
&lt;br /&gt;
[[WS Information Gathering (OWASP-WS-002)|4.10.2 WS Information Gathering (OWASP-WS-002)]]&lt;br /&gt;
&lt;br /&gt;
[[WS Authentication Testing (OWASP-WS-003)|4.10.3 WS Authentication Testing (OWASP-WS-003)]]&lt;br /&gt;
&lt;br /&gt;
[[WS Management Interface Testing (OWASP-WS-004)|4.10.4 WS Management Interface Testing (OWASP-WS-004)]]&lt;br /&gt;
&lt;br /&gt;
[[Weak XML Structure Testing (OWASP-WS-005)|4.10.5 Weak XML Structure Testing (OWASP-WS-005)]]&lt;br /&gt;
&lt;br /&gt;
[[XML Content-Level Testing (OWASP-WS-006)|4.10.6 XML Content-Level Testing (OWASP-WS-006)]]&lt;br /&gt;
&lt;br /&gt;
[[WS HTTP GET Parameters/REST Testing (OWASP-WS-007)|4.10.7 WS HTTP GET Parameters/REST Testing (OWASP-WS-007)]]&lt;br /&gt;
&lt;br /&gt;
[[WS Naughty SOAP Attachment Testing (OWASP-WS-008)|4.10.8 WS Naughty SOAP Attachment Testing (OWASP-WS-008)]]&lt;br /&gt;
&lt;br /&gt;
[[WS Replay/MiTM Testing (OWASP-WS-009)|4.10.9 WS Replay/MiTM Testing (OWASP-WS-009)]]&lt;br /&gt;
&lt;br /&gt;
[[WS BEPL Testing (OWASP-WS-010)|4.10.10 WS BEPL Testing (OWASP-WS-010)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Client Side Testing|'''4.11 Client Side Testing''']] [New!] &lt;br /&gt;
&lt;br /&gt;
[[Testing for DOM-based Cross site scripting  (OWASP-DV-003)|4.11.1 Testing for DOM based Cross Site Scripting  (OWASP-CS-001) [Stefano Di Paola]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for HTML5 (OWASP CS-002)|4.11.2 Testing for HTML5 (OWASP CS-002) [Juan Galiana] ]]&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Testing for Cross site flashing (OWASP-DV-004)|4.11.3 Testing for Cross Site Flashing   (OWASP-CS-003)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Testing for ClickHijacking (OWASP-CS-004)|4.11.4 Testing for Testing for ClickHijacking (OWASP-CS-004) ]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==[[Writing Reports: value the real risk |5. Writing Reports: value the real risk ]]==&lt;br /&gt;
&lt;br /&gt;
[[How to value the real risk |5.1 How to value the real risk]] [To review--&amp;gt; contributor here]&lt;br /&gt;
&lt;br /&gt;
[[How to write the report of the testing |5.2 How to write the report of the testing]] [To review--&amp;gt; contributor here]&lt;br /&gt;
&lt;br /&gt;
==[[Appendix A: Testing Tools |Appendix A: Testing Tools ]]==&lt;br /&gt;
&lt;br /&gt;
* Black Box Testing Tools [To review--&amp;gt; Amro. We need only tools fo webapp testing]&lt;br /&gt;
&lt;br /&gt;
==[[OWASP Testing Guide Appendix B: Suggested Reading | Appendix B: Suggested Reading]]==&lt;br /&gt;
* Whitepapers [To review--&amp;gt; David Fern]&lt;br /&gt;
* Books [To review--&amp;gt; David Fern]&lt;br /&gt;
* Useful Websites [To review--&amp;gt; David Fern]&lt;br /&gt;
&lt;br /&gt;
==[[OWASP Testing Guide Appendix C: Fuzz Vectors | Appendix C: Fuzz Vectors]]==&lt;br /&gt;
&lt;br /&gt;
* Fuzz Categories [To review--&amp;gt; contributor here]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==[[OWASP Testing Guide Appendix D: Encoded Injection | Appendix D: Encoded Injection]]==&lt;br /&gt;
&lt;br /&gt;
[To review--&amp;gt; contributor here]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP Testing Project]]&lt;/div&gt;</summary>
		<author><name>Robert WInkel</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Testing_for_User_Enumeration_and_Guessable_User_Account_(OWASP-AT-002)&amp;diff=138172</id>
		<title>Testing for User Enumeration and Guessable User Account (OWASP-AT-002)</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Testing_for_User_Enumeration_and_Guessable_User_Account_(OWASP-AT-002)&amp;diff=138172"/>
				<updated>2012-10-26T01:28:15Z</updated>
		
		<summary type="html">&lt;p&gt;Robert WInkel: moved Testing for user enumeration (OWASP-AT-002) to Testing for User Enumeration and Guessable User Account (OWASP-AT-002): Better title&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:OWASP Testing Guide v4}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Brief Summary ==&lt;br /&gt;
The scope of this test is to verify if it is possible to collect a set of valid usernames by interacting with the authentication mechanism of the application. This test will be useful for the brute force testing, in which we verify if, given a valid username, it is possible to find the corresponding password. &lt;br /&gt;
Often, web applications reveal when a username exists on system, either as a consequence of a misconfiguration or as a design decision. For example, sometimes, when we submit wrong credentials, we receive a message that states that either the username is present on the system or the provided password is wrong.&lt;br /&gt;
The information obtained can be used by an attacker to gain a list of users on system. This information can be used to attack the web application, for example, through a brute force or default username/password attack.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Description of the Issue == &lt;br /&gt;
The tester should interact with the authentication mechanism of the application to understand if sending particular requests causes the application to answer in different manners. This issue exists because the information released from web application or web server when we provide a valid username is different than when we use an invalid one.&lt;br /&gt;
&lt;br /&gt;
In some cases, we receive a message that reveals if the provided credentials are wrong because an invalid username or an invalid password was used. Sometimes, we can enumerate the existing users by sending a username and an empty password.&lt;br /&gt;
&lt;br /&gt;
== Black Box testing and example ==&lt;br /&gt;
In a black box testing, we know nothing about the specific application, username, application logic, error messages on login page, or password recovery facilities.&lt;br /&gt;
If the application is vulnerable, we receive a response message that reveals, directly or indirectly, some information useful for enumerating users. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===HTTP Response message===&lt;br /&gt;
&lt;br /&gt;
'''Testing for Valid user/right password''' &lt;br /&gt;
&lt;br /&gt;
Record the server answer when you submit a valid userID and valid password.&lt;br /&gt;
&lt;br /&gt;
'''Result Expected:'''&lt;br /&gt;
&lt;br /&gt;
Using WebScarab, notice the information retrieved from this successful authentication (HTTP 200 Response, length of the response).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Testing for valid user/wrong password''' &amp;lt;br&amp;gt;&lt;br /&gt;
Now, the tester should try to insert a valid userID and a wrong password and record the error message generated by the application.&lt;br /&gt;
&lt;br /&gt;
'''Result Expected:'''&amp;lt;br&amp;gt;&lt;br /&gt;
From the browser we will expect message similar to the following one:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:AuthenticationFailed.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or something like:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:NoConfFound.jpg]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
against any message that reveals the existence of user, for instance, message similar to:&amp;lt;br&amp;gt; 	&lt;br /&gt;
 Login for User foo: invalid password&lt;br /&gt;
&lt;br /&gt;
Using WebScarab, notice the information retrieved from this unsuccessful authentication attempt (HTTP 200 Response, length of the response).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Testing for a nonexistent username''' &lt;br /&gt;
&lt;br /&gt;
Now, the tester should try to insert an invalid userID and a wrong password and record the server answer (you should be confident that the username is not valid in the application). Record the error message and the server answer.&lt;br /&gt;
&lt;br /&gt;
'''Result Expected:'''&lt;br /&gt;
&lt;br /&gt;
If we enter a nonexistent userID, we can receive a message similar to:&amp;lt;br&amp;gt;&lt;br /&gt;
[[Image:Userisnotactive.png]]&amp;lt;br&amp;gt;&lt;br /&gt;
or message like the following one:&amp;lt;br&amp;gt;&lt;br /&gt;
 Login failed for User foo: invalid Account&lt;br /&gt;
&lt;br /&gt;
Generally the application should respond with the same error message and length to the different wrong requests. If you notice that the responses are not the same, you should investigate and find out the key that creates a difference between the two responses. For example: &lt;br /&gt;
* Client request: Valid user/wrong password --&amp;gt; Server answer:'The password is not correct'&lt;br /&gt;
* Client request: Wrong user/wrong password --&amp;gt; Server answer:'User not recognized'&lt;br /&gt;
The above responses let the client understand that for the first request we have a valid user name. So we can interact with the application requesting a set of possible userIDs and observing the answer.&lt;br /&gt;
&lt;br /&gt;
Looking at the second server response, we understand in the same way that we don't hold a valid username. So we can interact in the same manner and create a list of valid userID looking at the server answers.&lt;br /&gt;
&lt;br /&gt;
'''Other ways to enumerate users''' &lt;br /&gt;
&lt;br /&gt;
We can enumerate users in several ways, such as: &amp;lt;br&amp;gt;&lt;br /&gt;
'''- Analyzing the error code received on login pages'''&amp;lt;br&amp;gt;&lt;br /&gt;
Some web application release a specific error code or message that we can analyze.&lt;br /&gt;
&lt;br /&gt;
'''- Analyzing URLs, and URLs redirections'''&amp;lt;br&amp;gt;&lt;br /&gt;
For example:&amp;lt;br&amp;gt;&lt;br /&gt;
 http://www.foo.com/err.jsp?User=baduser&amp;amp;Error=0&amp;lt;br&amp;gt;&lt;br /&gt;
 http://www.foo.com/err.jsp?User=gooduser&amp;amp;Error=2&lt;br /&gt;
&lt;br /&gt;
As we can see above, when we provide a userID and password to the web application, we see a message indication that an error has occurred in the URL. &lt;br /&gt;
In the first case we has provided a bad userID and bad password. In the second, a good user and bad password, so we can identify a valid userID.&lt;br /&gt;
&lt;br /&gt;
'''- URI Probing'''&amp;lt;br&amp;gt;&lt;br /&gt;
Sometimes a web server responds differently if it receives a request for an existing directory or not. For instance in some portals every user is associated with a directory. If we try to access an existing directory we could receive a web server error.&lt;br /&gt;
A very common errors that we can receive from web server is:&amp;lt;br&amp;gt;&lt;br /&gt;
   403 Forbidden error code &lt;br /&gt;
and &amp;lt;br&amp;gt;&lt;br /&gt;
   404 Not found error code&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Example&amp;lt;br&amp;gt;&lt;br /&gt;
 http://www.foo.com/account1 - we receive from web server: 403 Forbidden &lt;br /&gt;
 http://www.foo.com/account2 - we receive from web server: 404 file Not Found&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In first case the user exists, but we cannot view the web page, in second case instead the user “account2” doesn’t exist.&lt;br /&gt;
Collecting this information we can enumerate the users.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''- Analyzing Web page Titles'''&amp;lt;br&amp;gt;&lt;br /&gt;
We can receive useful information on Title of web page, where we can obtain a specific error code or messages that reveal if the problems are on username or password.&lt;br /&gt;
For instance, if we cannot authenticate to an application and receive a web page whose title is similar to:&lt;br /&gt;
 Invalid user&lt;br /&gt;
 Invalid authentication&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''- Analyzing message received from recovery facilities'''&amp;lt;br&amp;gt; &lt;br /&gt;
When we use a recovery facilities the applications that is vulnerable could return a message that reveals if a username exists or not.&lt;br /&gt;
&lt;br /&gt;
For example, message similar to the following:&amp;lt;br&amp;gt;&lt;br /&gt;
 Invalid username: e-mail address are not valid or The specified user was not found&lt;br /&gt;
&lt;br /&gt;
 Valid username: Your recovery password has been successfully sent&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''- Friendly 404 Error Message'''&amp;lt;br&amp;gt;&lt;br /&gt;
When we request for a user within the directory that does not exist, we don't always receive 404 error code. Instead, we may receive “200 ok” with an image, in this case we can assume that when we receive the specific image the user doesn’t exist. This logic can be applied to other web server response; the trick is a good analysis of web server and web application messages.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Guessing Users'''&amp;lt;br&amp;gt;&lt;br /&gt;
In some cases the userIDs are created with specific policies of administrator or company.  &lt;br /&gt;
For example we can view a user with a userID created in sequential order:&amp;lt;br&amp;gt;&lt;br /&gt;
		CN000100&amp;lt;br&amp;gt;&lt;br /&gt;
		CN000101&amp;lt;br&amp;gt;&lt;br /&gt;
		…. &amp;lt;br&amp;gt;&lt;br /&gt;
Sometimes the usernames are created with a REALM alias and then a sequential numbers:&amp;lt;br&amp;gt;&lt;br /&gt;
		R1001 – user 001 for REALM1&amp;lt;br&amp;gt;&lt;br /&gt;
	 	R2001 – user 001 for REALM2&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Other possibilities are userIDs associated with credit card numbers, or in general a numbers with a pattern. &lt;br /&gt;
In the above sample we can create simple shell scripts that compose UserIDs and submit a request with tool like wget to automate a web query to discern valid userIDs.&lt;br /&gt;
To create a script we can also use Perl and CURL. &lt;br /&gt;
  &lt;br /&gt;
Again, we can guess a username from the information received from an LDAP query or from google information gathering for example from a specific domain.&lt;br /&gt;
Google can help to find domain users through a specific queries or through a simple shell script or tool.&lt;br /&gt;
&lt;br /&gt;
For other information on guessing userIDs see next section 4.5.3 Testing for Guessable (Dictionary) User Account.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''Attention:''' by enumerating user accounts, you risk locking out accounts after a predefined number of failed probes (based on application policy). Also, sometimes, our IP address can be banned by dynamic rules on the application firewall.&lt;br /&gt;
&lt;br /&gt;
== Gray Box testing and example == &lt;br /&gt;
'''Testing for Authentication error messages'''&amp;lt;br&amp;gt;&lt;br /&gt;
Verify that the application answers in the same manner for every client request that produces a failed authentication. For this issue the Black Box testing and  Gray Box testing have the same concept based on the analysis of messages or error codes received from web application.&amp;lt;br&amp;gt;&lt;br /&gt;
'''Result Expected:'''&amp;lt;br&amp;gt;&lt;br /&gt;
The application should answer in the same manner for every failed attempt of authentication.&amp;lt;br&amp;gt;&lt;br /&gt;
For Example: &amp;lt;br&amp;gt;&lt;br /&gt;
 Credentials submitted are not valid&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
* Marco Mella, ''Sun Java Access &amp;amp; Identity Manager Users enumeration: http://www.aboutsecurity.net&amp;lt;br&amp;gt;''&lt;br /&gt;
* ''Username Enumeration Vulnerabilities: http://www.gnucitizen.org/blog/username-enumeration-vulnerabilities&amp;lt;br&amp;gt;'' &lt;br /&gt;
&lt;br /&gt;
'''Tools'''&amp;lt;br&amp;gt;&lt;br /&gt;
* WebScarab: [[OWASP_WebScarab_Project]]&lt;br /&gt;
* CURL: http://curl.haxx.se/&lt;br /&gt;
* PERL: http://www.perl.org&lt;br /&gt;
* Sun Java Access &amp;amp; Identity Manager users enumeration tool: http://www.aboutsecurity.net&lt;/div&gt;</summary>
		<author><name>Robert WInkel</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Testing_for_user_enumeration_(OWASP-AT-002)&amp;diff=138173</id>
		<title>Testing for user enumeration (OWASP-AT-002)</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Testing_for_user_enumeration_(OWASP-AT-002)&amp;diff=138173"/>
				<updated>2012-10-26T01:28:15Z</updated>
		
		<summary type="html">&lt;p&gt;Robert WInkel: moved Testing for user enumeration (OWASP-AT-002) to Testing for User Enumeration and Guessable User Account (OWASP-AT-002): Better title&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Testing for User Enumeration and Guessable User Account (OWASP-AT-002)]]&lt;/div&gt;</summary>
		<author><name>Robert WInkel</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Testing_for_Credentials_Transported_over_an_Encrypted_Channel_(OTG-AUTHN-001)&amp;diff=138170</id>
		<title>Testing for Credentials Transported over an Encrypted Channel (OTG-AUTHN-001)</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Testing_for_Credentials_Transported_over_an_Encrypted_Channel_(OTG-AUTHN-001)&amp;diff=138170"/>
				<updated>2012-10-26T01:04:10Z</updated>
		
		<summary type="html">&lt;p&gt;Robert WInkel: moved Testing for credentials transport (OWASP-AT-001) to Testing for Credentials Transported over an Encrypted Channel (OWASP-AT-001): Better title&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:OWASP Testing Guide v4}}&lt;br /&gt;
&lt;br /&gt;
== Brief Summary ==&lt;br /&gt;
Testing for credentials transport means to verify that the user's authentication data are transferred via an encrypted channel to avoid being intercepted by malicious users. The analysis focuses simply on trying to understand if the data travels unencrypted from the web browser to the server, or if the web application takes the appropriate security measures using a protocol like HTTPS. The HTTPS protocol is built on TLS/SSL to encrypt the data that is transmitted and to ensure that user is being sent towards the desired site. Clearly, the fact that traffic is encrypted does not necessarily mean that it's completely safe. The security also depends on the encryption algorithm used and the robustness of the keys that the application is using, but this particular topic will not be addressed in this section. For a more detailed discussion on testing the safety of TLS/SSL channels you can refer to the chapter [[Testing for SSL-TLS  (OWASP-CM-001)|Testing for SSL-TLS]]. Here, the tester will just try to understand if the data that users put into web forms, for example, in order to log into a web site, are transmitted using secure protocols that protect them from an attacker or not. To do this we will consider various examples.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Description of the Issue == &lt;br /&gt;
Nowadays, the most common example of this issue is the login page of a web application. The tester should verify that user's credentials are transmitted via an encrypted channel. In order to log into a web site, usually, the user has to fill a simple form that transmits the inserted data with the POST method. What is less obvious is that this data can be passed using the HTTP protocol, that means in a non-secure way, or using HTTPS, which encrypts the data. To further complicate things, there is the possibility that the site has the login page accessible via HTTP (making us believe that the transmission is insecure), but then it actually sends data via HTTPS. This test is done to be sure that an attacker cannot retrieve sensitive information by simply sniffing the net with a sniffer tool. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Black Box testing and example ==&lt;br /&gt;
In the following examples we will use WebScarab in order to capture packet headers and to inspect them. You can use any web proxy that you prefer.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Case study: Sending data with POST method through HTTP''' &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Suppose that the login page presents a form with fields User, Pass, and the Submit button to authenticate and give access to the application. If we look at the header of our request with WebScarab, we get something like this:&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
POST http://www.example.com/AuthenticationServlet HTTP/1.1&lt;br /&gt;
Host: www.example.com&lt;br /&gt;
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8.1.14) Gecko/20080404&lt;br /&gt;
Accept: text/xml,application/xml,application/xhtml+xml&lt;br /&gt;
Accept-Language: it-it,it;q=0.8,en-us;q=0.5,en;q=0.3&lt;br /&gt;
Accept-Encoding: gzip,deflate&lt;br /&gt;
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7&lt;br /&gt;
Keep-Alive: 300&lt;br /&gt;
Connection: keep-alive&lt;br /&gt;
Referer: http://www.example.com/index.jsp&lt;br /&gt;
Cookie: JSESSIONID=LVrRRQQXgwyWpW7QMnS49vtW1yBdqn98CGlkP4jTvVCGdyPkmn3S!&lt;br /&gt;
Content-Type: application/x-www-form-urlencoded&lt;br /&gt;
Content-length: 64&lt;br /&gt;
&lt;br /&gt;
delegated_service=218&amp;amp;User=test&amp;amp;Pass=test&amp;amp;Submit=SUBMIT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
From this example the tester can understand that the POST sends the data to the page ''www.example.com/AuthenticationServlet'' simply using HTTP. So, in this case, data are transmitted without encryption and a malicious user could read our username and password by simply sniffing the net with a tool like Wireshark.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Case study: Sending data with POST method through HTTPS'''&lt;br /&gt;
&lt;br /&gt;
Suppose that our web application uses the HTTPS protocol to encrypt data we are sending (or at least for those relating to the authentication). In this case, trying to access the login page and to authenticate, the header of our POST request would be similar to the following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
POST https://www.example.com:443/cgi-bin/login.cgi HTTP/1.1&lt;br /&gt;
Host: www.example.com&lt;br /&gt;
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8.1.14) Gecko/20080404&lt;br /&gt;
Accept: text/xml,application/xml,application/xhtml+xml,text/html&lt;br /&gt;
Accept-Language: it-it,it;q=0.8,en-us;q=0.5,en;q=0.3&lt;br /&gt;
Accept-Encoding: gzip,deflate&lt;br /&gt;
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7&lt;br /&gt;
Keep-Alive: 300&lt;br /&gt;
Connection: keep-alive&lt;br /&gt;
Referer: https://www.example.com/cgi-bin/login.cgi&lt;br /&gt;
Cookie: language=English; &lt;br /&gt;
Content-Type: application/x-www-form-urlencoded&lt;br /&gt;
Content-length: 50&lt;br /&gt;
&lt;br /&gt;
Command=Login&amp;amp;User=test&amp;amp;Pass=test&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We can see that the request is addressed to&lt;br /&gt;
''www.example.com:443/cgi-bin/login.cgi'' using the HTTPS protocol.&lt;br /&gt;
This ensures that our data are sent through an encrypted channel and that they are not readable by other people. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Case study: sending data with POST method via HTTPS on a page reachable via HTTP'''&lt;br /&gt;
&lt;br /&gt;
Now, suppose to have a web page reachable via HTTP and that then only data sent from the authentication form are shipped via HTTPS. This means that our data is transmitted in a secure way through encryption. This situation occurs, for example, when we are on a portal of a big company that offers various information and services publicly available, without identification, but which has also a private section accessible from the home page through a login. So when we try to login, the header of our request will look like the following example:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
POST https://www.example.com:443/login.do HTTP/1.1&lt;br /&gt;
Host: www.example.com&lt;br /&gt;
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8.1.14) Gecko/20080404&lt;br /&gt;
Accept: text/xml,application/xml,application/xhtml+xml,text/html&lt;br /&gt;
Accept-Language: it-it,it;q=0.8,en-us;q=0.5,en;q=0.3&lt;br /&gt;
Accept-Encoding: gzip,deflate&lt;br /&gt;
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7&lt;br /&gt;
Keep-Alive: 300&lt;br /&gt;
Connection: keep-alive&lt;br /&gt;
Referer: http://www.example.com/homepage.do&lt;br /&gt;
Cookie: SERVTIMSESSIONID=s2JyLkvDJ9ZhX3yr5BJ3DFLkdphH0QNSJ3VQB6pLhjkW6F&lt;br /&gt;
Content-Type: application/x-www-form-urlencoded&lt;br /&gt;
Content-length: 45&lt;br /&gt;
&lt;br /&gt;
User=test&amp;amp;Pass=test&amp;amp;portal=ExamplePortal&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
We can see that our request is addressed to ''www.example.com:443/login.do'' using HTTPS. But if we have a look at the referer field in the header (the page from which we came), it is ''www.example.com/homepage.do'' and is accessible via simple HTTP. So, in this case, we have no lock inside our browser window that tells us that we are using a secure connection, but, in reality, we are sending data via HTTPS. This ensures us that no other people can read the data that we are sending.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Case study: Sending data with GET method through HTTPS'''&lt;br /&gt;
&lt;br /&gt;
In this last example, suppose that the application transfers data using the GET method. This method should never be used in a form that transmits sensitive data such as username and password, because they are displayed in clear in the URL and this entails a whole set of security issues. So this example is purely demonstrative, but, in reality, it is strongly suggested to use the POST method instead. This is because when the GET method is used, the URL that it requests is easily available from, for example, the server logs exposing your sensitive data to information leakage. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET https://www.example.com/success.html?user=test&amp;amp;pass=test HTTP/1.1&lt;br /&gt;
Host: www.example.com&lt;br /&gt;
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8.1.14) Gecko/20080404&lt;br /&gt;
Accept: text/xml,application/xml,application/xhtml+xml,text/html&lt;br /&gt;
Accept-Language: it-it,it;q=0.8,en-us;q=0.5,en;q=0.3&lt;br /&gt;
Accept-Encoding: gzip,deflate&lt;br /&gt;
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7&lt;br /&gt;
Keep-Alive: 300&lt;br /&gt;
Connection: keep-alive&lt;br /&gt;
Referer: https://www.example.com/form.html&lt;br /&gt;
If-Modified-Since: Mon, 30 Jun 2008 07:55:11 GMT&lt;br /&gt;
If-None-Match: &amp;quot;43a01-5b-4868915f&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can see that the data is transferred in clear text in the URL and not in the body of the message as before. But we must consider that TLS/SSL is a level 5 protocol, a lower level than HTTP, so the whole HTTP package  is still encrypted and the URL is unreadable to an attacker. It is not a good practice to use the GET method in these cases, because the information contained in the URL can be stored in many servers such as proxy and web servers, leaking the privacy of the user's credentials.&lt;br /&gt;
&lt;br /&gt;
== Gray Box testing and example == &lt;br /&gt;
Talk with the developers of the application and try to understand if they are aware of differences between HTTP and HTTPS protocols and why they should use the HTTPS for sensitive information transmissions.&amp;lt;br&amp;gt;&lt;br /&gt;
Then, check with them if HTTPS is used in every sensitive transmission, like those in login pages, to prevent unauthorized users to read the data.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
'''Whitepapers'''&amp;lt;br&amp;gt;&lt;br /&gt;
* HTTP/1.1: Security Considerations - http://www.w3.org/Protocols/rfc2616/rfc2616-sec15.html&amp;lt;br&amp;gt;&lt;br /&gt;
'''Tools'''&amp;lt;br&amp;gt;&lt;br /&gt;
* [[OWASP WebScarab Project|WebScarab]]&lt;/div&gt;</summary>
		<author><name>Robert WInkel</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Testing_for_credentials_transport_(OWASP-AT-001)&amp;diff=138171</id>
		<title>Testing for credentials transport (OWASP-AT-001)</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Testing_for_credentials_transport_(OWASP-AT-001)&amp;diff=138171"/>
				<updated>2012-10-26T01:04:10Z</updated>
		
		<summary type="html">&lt;p&gt;Robert WInkel: moved Testing for credentials transport (OWASP-AT-001) to Testing for Credentials Transported over an Encrypted Channel (OWASP-AT-001): Better title&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Testing for Credentials Transported over an Encrypted Channel (OWASP-AT-001)]]&lt;/div&gt;</summary>
		<author><name>Robert WInkel</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_Testing_Guide_v4_Table_of_Contents&amp;diff=138169</id>
		<title>OWASP Testing Guide v4 Table of Contents</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=OWASP_Testing_Guide_v4_Table_of_Contents&amp;diff=138169"/>
				<updated>2012-10-26T01:02:07Z</updated>
		
		<summary type="html">&lt;p&gt;Robert WInkel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&lt;br /&gt;
'''This is the DRAFT of the table of content of the New Testing Guide v4.'''&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;You can download the stable version v3[http://www.owasp.org/images/5/56/OWASP_Testing_Guide_v3.pdf here] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Back to the OWASP Testing Guide Project:&lt;br /&gt;
http://www.owasp.org/index.php/OWASP_Testing_Project&lt;br /&gt;
&lt;br /&gt;
'''Updated: 22nd October 2012'''&lt;br /&gt;
&lt;br /&gt;
[[ OWTGv4 Contributors list|'''Contributors List]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following is a DRAFT of the Toc based on the feedback already received.&lt;br /&gt;
&lt;br /&gt;
== Table of Contents ==&lt;br /&gt;
&lt;br /&gt;
==[[Testing Guide Foreword|Foreword by OWASP Chair]]== &lt;br /&gt;
[To review--&amp;gt; OWASP Chair]&lt;br /&gt;
&lt;br /&gt;
==[[Testing Guide Frontispiece |1. Frontispiece]]== &lt;br /&gt;
[To review--&amp;gt; Mat]&lt;br /&gt;
&lt;br /&gt;
'''[[Testing Guide Frontispiece|1.1 About the OWASP Testing Guide Project]]''' &lt;br /&gt;
[To review--&amp;gt; Mat]&lt;br /&gt;
&lt;br /&gt;
'''[[About The Open Web Application Security Project|1.2 About The Open Web Application Security Project]]''' &lt;br /&gt;
[To review--&amp;gt; ]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==[[Testing Guide Introduction|2. Introduction]]==&lt;br /&gt;
&lt;br /&gt;
'''2.1 The OWASP Testing Project'''&lt;br /&gt;
&lt;br /&gt;
'''2.2 Principles of Testing'''&lt;br /&gt;
&lt;br /&gt;
'''2.3 Testing Techniques Explained''' &lt;br /&gt;
&lt;br /&gt;
2.4 [https://www.owasp.org/index.php/Testing_Guide_Introduction#Security_Requirements_Test_Derivation Security requirements test derivation],[https://www.owasp.org/index.php/Testing_Guide_Introduction#Functional_and_Non_Functional_Test_Requirements functional and non functional test requirements], and [https://www.owasp.org/index.php/Testing_Guide_Introduction#Test_Cases_Through_Use_and_Misuse_Cases test cases through use and misuse cases]&lt;br /&gt;
&lt;br /&gt;
2.5 [https://www.owasp.org/index.php/Testing_Guide_Introduction#Security_Test_Data_Analysis_and_Reporting Security test data analysis and reporting: root cause identification and business/role case test data reporting]&lt;br /&gt;
&lt;br /&gt;
==[[The OWASP Testing Framework|3. The OWASP Testing Framework]]==&lt;br /&gt;
&lt;br /&gt;
'''3.1. Overview'''&lt;br /&gt;
&lt;br /&gt;
'''3.2. Phase 1: Before Development Begins '''&lt;br /&gt;
&lt;br /&gt;
'''3.3. Phase 2: During Definition and Design'''&lt;br /&gt;
&lt;br /&gt;
'''3.4. Phase 3: During Development'''&lt;br /&gt;
&lt;br /&gt;
'''3.5. Phase 4: During Deployment'''&lt;br /&gt;
&lt;br /&gt;
'''3.6. Phase 5: Maintenance and Operations'''&lt;br /&gt;
&lt;br /&gt;
'''3.7. A Typical SDLC Testing Workflow '''&lt;br /&gt;
&lt;br /&gt;
==[[Web Application Penetration Testing |4. Web Application Penetration Testing ]]==&lt;br /&gt;
&lt;br /&gt;
[[Testing: Introduction and objectives|'''4.1 Introduction and Objectives''']] [To review--&amp;gt; Mat]&lt;br /&gt;
&lt;br /&gt;
[[Testing Checklist| 4.1.1 Testing Checklist]] [To review at the end of brainstorming --&amp;gt; Mat]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Testing: Information Gathering|'''4.2 Information Gathering ''']] [To review--&amp;gt; contributor here]&lt;br /&gt;
&lt;br /&gt;
[[Testing: Spiders, Robots, and Crawlers (OWASP-IG-001)|4.2.1 Spiders, Robots and Crawlers (OWASP-IG-001)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing: Search engine discovery/reconnaissance (OWASP-IG-002)|4.2.2 Search Engine Discovery/Reconnaissance (OWASP-IG-002)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing: Identify application entry points (OWASP-IG-003)|4.2.3 Identify application entry points (OWASP-IG-003)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Web Application Fingerprint (OWASP-IG-004)|4.2.4 Testing for Web Application Fingerprint (OWASP-IG-004)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Application Discovery (OWASP-IG-005)|4.2.5 Application Discovery (OWASP-IG-005)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Error Code (OWASP-IG-006)|4.2.6 Analysis of Error Codes (OWASP-IG-006)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Testing for configuration management|'''4.3 Configuration and Deploy Management Testing ''']]&lt;br /&gt;
&lt;br /&gt;
[[Testing for infrastructure configuration management (OWASP-CM-003)|4.3.1 Testing for Infrastructure Configuration Management Testing weakness (OWASP-CM-001)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for application configuration management (OWASP-CM-004)|4.3.2 Testing for Application Configuration Management weakness (OWASP-CM-002)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for file extensions handling  (OWASP-CM-005)|4.3.3 Testing for File Extensions Handling  (OWASP-CM-003)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Old, Backup and Unreferenced Files (OWASP-CM-006)|4.3.4 Old, Backup and Unreferenced Files (OWASP-CM-004) ]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Admin Interfaces  (OWASP-CM-007)|4.3.5 Infrastructure and Application Admin Interfaces  (OWASP-CM-005)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for HTTP Methods and XST  (OWASP-CM-008)|4.3.6 Testing for Bad HTTP Methods (OWASP-CM-006)]][new - Abian Blome]&lt;br /&gt;
&lt;br /&gt;
&amp;gt; Informative Error Messages [MAT NOTE: in info gathering]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Testing for Database credentials/connection strings available|4.3.7 Testing for Database credentials/connection strings available (OWASP-CM-007)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Content Security Policy weakness|4.3.8 Testing for Content Security Policy weakness (OWASP-CM-008)]][New! - Simone Onofri]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Missing HSTS header|4.3.9 Testing for Missing HSTS header (OWASP-CM-009)]][New! Juan Manuel Bahamonde ]&lt;br /&gt;
&lt;br /&gt;
[[Testing for RIA policy files weakness|4.3.10 Testing for RIA policy files weakness (OWASP-CM-010)]] [New!]&lt;br /&gt;
&lt;br /&gt;
&amp;gt; Incorrect time[New! MAT NOTE: explain the test in detail please]&lt;br /&gt;
&lt;br /&gt;
&amp;gt; Unpatched components and libraries (e.g. JavaScript libraries)[New! NOTE: tu discuss it]&lt;br /&gt;
&lt;br /&gt;
&amp;gt; Test data in production systems (and vice versa)[New! MAT NOTE: this is not a particular test that could find a vulnerability]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Testing for authentication|'''4.4 Authentication Testing ''']] &lt;br /&gt;
&lt;br /&gt;
[[Testing for credentials transport (OWASP-AT-001)|4.4.1 Testing for Credentials Transported over an Encrypted Channel  (OWASP-AT-001)]] [Robert Winkel]&lt;br /&gt;
&lt;br /&gt;
[[Testing for user enumeration  (OWASP-AT-002)|4.4.2 Testing for User Enumeration and Guessable User Account  (OWASP-AT-002)]] [Robert Winkel]&lt;br /&gt;
&lt;br /&gt;
[[Testing for default credentials (OWASP-AT-003)|4.4.3 Testing for default credentials (OWASP-AT-003)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Weak lock out mechanism (OWASP-AT-004)|4.4.4 Testing for Weak lock out mechanism (OWASP-AT-004)]] [New! - Robert Winkel] &lt;br /&gt;
&lt;br /&gt;
&amp;gt; Account lockout DoS [New! - Robert Winkel - we can put it in the 4.4.4]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Bypassing Authentication Schema (OWASP-AT-005)|4.4.5 Testing for bypassing authentication schema (OWASP-AT-005)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Vulnerable Remember Password (OWASP-AT-006)|4.4.6 Testing for vulnerable remember &lt;br /&gt;
password functionality (OWASP-AT-006)]] [Robert Winkel]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Browser cache weakness (OWASP-AT-007)|4.4.7 Testing for Browser cache weakness (OWASP-AT-007)]] [New! - Abian Blome]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Weak password policy (OWASP-AT-008)|4.4.8 Testing for Weak password policy (OWASP-AT-008)]] [New! - Robert Winkel]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Weak or unenforced username policy (OWASP-AT-009)|4.4.9 Testing for Weak or unenforced username policy (OWASP-AT-009)]] [New! - Robert Winkel]&lt;br /&gt;
&lt;br /&gt;
&amp;gt; Weak security question/answer [New! - Robert Winkel - MAT Note: same as AT-006]&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Testing for failure to restrict access to authenticated resource(OWASP-AT-010)|4.4.10 Testing for failure to restrict access to authenticated resource (OWASP-AT-010)]] [New!]&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Testing for weak password change or reset functionalities (OWASP-AT-011)|4.4.11 Testing for weak password change or reset functionalities (OWASP-AT-011)]] [New! - Robert Winkel]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Testing for Captcha (OWASP-AT-012)|4.4.12 Testing for CAPTCHA (OWASP-AT-012)]]&lt;br /&gt;
&lt;br /&gt;
&amp;gt; Weaker authentication in alternative channel (e.g. mobile app, IVR, help desk) [New!: MAT Note: to explain better the kind of test to perform please]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Testing for Session Management|'''4.5 Session Management Testing''']] &lt;br /&gt;
&lt;br /&gt;
[[Testing for Session_Management_Schema (OWASP-SM-001)|4.5.1 Testing for Bypassing Session Management Schema (OWASP-SM-001)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for cookies attributes  (OWASP-SM-002)|4.5.2 Testing for Cookies attributes (Cookies are set not ‘HTTP Only’, ‘Secure’,  and no time validity) (OWASP-SM-002)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Session Fixation  (OWASP-SM-003)|4.5.3 Testing for Session Fixation  (OWASP-SM-003)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Exposed Session Variables  (OWASP-SM-004)|4.5.4 Testing for Exposed Session Variables   (OWASP-SM-004)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for CSRF  (OWASP-SM-005)|4.5.5 Testing for Cross Site Request Forgery (CSRF)  (OWASP-SM-005)]]&lt;br /&gt;
&lt;br /&gt;
&amp;gt; Weak Session Token (MAT NOTE included in 4.5.1)&lt;br /&gt;
 &lt;br /&gt;
[[Testing for Session token not restricted properly (OWASP-SM-006)|4.5.6 Testing for Session token not restricted properly (such as domain or path not set properly) (OWASP-SM-006)]] [New! - Abian Blome]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;gt; Session passed over http (NOTE: included in SM-004) [New!] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Testing for logout functionality (OWASP-SM-007)|4.5.7 Testing for logout functionality (OWASP-SM-007)]]&lt;br /&gt;
&lt;br /&gt;
&amp;gt;Session token not removed on server after logout [New!: NOTE included in the above test]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;gt; Logout function not properly implemented (NOTE:same above)&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;gt; Persistent session token [New! NOTE: this is not a vulnerability if session time out is correctly performed]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Testing for Session puzzling (OWASP-SM-008)|4.5.8 Testing for Session puzzling (OWASP-SM-008)]] [New! - Abian Blome]&lt;br /&gt;
&lt;br /&gt;
&amp;gt; Missing user-viewable log of authentication events [NOTE: needs more details: which test perform?]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Testing for Authorization|'''4.6 Authorization Testing''']] &lt;br /&gt;
&lt;br /&gt;
[[Testing for Path Traversal  (OWASP-AZ-001)|4.6.1 Testing Directory traversal/file include (OWASP-AZ-001) [Juan Galiana] ]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Bypassing Authorization Schema  (OWASP-AZ-002)|4.6.2 Testing for bypassing authorization schema  (OWASP-AZ-002)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Privilege escalation  (OWASP-AZ-003)|4.6.3 Testing for Privilege Escalation  (OWASP-AZ-003) [Irene Abezgauz]]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Insecure Direct Object References (OWASP-AZ-004)|4.6.4 Testing for Insecure Direct Object References (OWASP-AZ-004) [Irene Abezgauz] ]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Failure to Restrict access to authorized resource (OWASP-AZ-005)|4.6.5 Testing for Failure to Restrict access to authorized resource (OWASP-AZ-005) [New!] ]]&lt;br /&gt;
&lt;br /&gt;
&amp;gt; Server component has excessive privileges (e.g. indexing service, reporting interface, file generator)[New!]&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;gt; Lack of enforcement of application entry points (including exposure of objects)[New!]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Testing for business logic   (OWASP-BL-001)|'''4.7 Business Logic Testing  (OWASP-BL-001)''']] [To review--&amp;gt; contributor here]&lt;br /&gt;
Business Logic&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Business logic data validation[New!] NOTE MAT: to discuss this section&amp;lt;br&amp;gt;&lt;br /&gt;
Ability to forge requests[New!]&amp;lt;br&amp;gt;&lt;br /&gt;
Lack of integrity checks (e.g. overwriting updates) [New!]&amp;lt;br&amp;gt;&lt;br /&gt;
Lack of tamper evidence[New!]&amp;lt;br&amp;gt;&lt;br /&gt;
Use of untrusted time source[New!]&amp;lt;br&amp;gt;&lt;br /&gt;
Lack of limits to excessive rate (speed) of use[New!]&amp;lt;br&amp;gt;&lt;br /&gt;
Lack of limits to size of request[New!]&amp;lt;br&amp;gt;&lt;br /&gt;
Lack of limit to number of times a function can be used[New!]&amp;lt;br&amp;gt;&lt;br /&gt;
Bypass of correct sequence[New!]&amp;lt;br&amp;gt;&lt;br /&gt;
Missing user-viewable log of actvity[New!]&amp;lt;br&amp;gt;&lt;br /&gt;
Self-hosted payment cardholder data processing[New!]&amp;lt;br&amp;gt;&lt;br /&gt;
Lack of security incident reporting information[New!]&amp;lt;br&amp;gt;&lt;br /&gt;
Defenses against application mis-use[New!]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Testing for Data Validation|'''4.8 Data Validation Testing''']] &lt;br /&gt;
&lt;br /&gt;
[[Testing for Reflected Cross site scripting (OWASP-DV-001) |4.8.1 Testing for Reflected Cross Site Scripting (OWASP-DV-001) ]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Stored Cross site scripting (OWASP-DV-002) |4.8.2 Testing for Stored Cross Site Scripting (OWASP-DV-002) ]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for HTTP Verb Tampering (OWASP-DV-003)|4.8.3 Testing for HTTP Verb Tampering   [Brad Causey] ]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for HTTP Parameter pollution (OWASP-DV-004)|4.8.4 Testing for HTTP Parameter pollution [Luca Carettoni, Stefano Di Paola, Brad Causey] ]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Unvalidated Redirects and Forwards (OWASP-DV-004)|4.8.5 Testing for Unvalidated Redirects and Forwards [Brad Causey] ]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for SQL Injection (OWASP-DV-005)| 4.8.5 Testing for SQL Injection (OWASP-DV-005) Ismael Gonçalves]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Oracle|4.8.5.1 Oracle Testing]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for MySQL|4.8.5.2 MySQL Testing]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for SQL Server|4.8.5.3 SQL Server Testing]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for MS Access |4.8.5.4 MS Access Testing]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for NoSQL injection|4.8.5.5 Testing for NoSQL injection [New!]]]&lt;br /&gt;
&lt;br /&gt;
[[OWASP_Backend_Security_Project_Testing_PostgreSQL|4.8.5.5 Testing PostgreSQL (from OWASP BSP) ]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for LDAP Injection  (OWASP-DV-006)|4.8.6 Testing for LDAP Injection  (OWASP-DV-006)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for ORM Injection   (OWASP-DV-007)|4.8.7 Testing for ORM Injection   (OWASP-DV-007)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for XML Injection (OWASP-DV-008)|4.8.8 Testing for XML Injection (OWASP-DV-008)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for SSI Injection  (OWASP-DV-009)|4.8.9 Testing for SSI Injection  (OWASP-DV-009)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for XPath Injection  (OWASP-DV-010)|4.8.10 Testing for XPath Injection  (OWASP-DV-010)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for IMAP/SMTP Injection  (OWASP-DV-011)|4.8.11 IMAP/SMTP Injection  (OWASP-DV-011)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Code Injection  (OWASP-DV-012)|4.8.12 Testing for Code Injection  (OWASP-DV-012)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Command Injection   (OWASP-DV-013)|4.8.13 Testing for Command Injection   (OWASP-DV-013) [Juan Galiana]]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Buffer Overflow (OWASP-DV-014)|4.8.14 Testing for Buffer overflow (OWASP-DV-014)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Heap Overflow|4.8.14.1 Testing for Heap overflow]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Stack Overflow|4.8.14.2 Testing for Stack overflow]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Format String|4.8.14.3 Testing for Format string]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Incubated Vulnerability (OWASP-DV-015)|4.8.15 Testing for incubated vulnerabilities (OWASP-DV-015)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for HTTP Splitting/Smuggling  (OWASP-DV-016)|4.8.16 Testing for HTTP Splitting/Smuggling  (OWASP-DV-016) [Juan Galiana] ]]&lt;br /&gt;
&lt;br /&gt;
&amp;gt; Regular expression DoS[New!] note: to understand better&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Data Encryption (New!)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Insecure encryption usage (OWASP-EN-001)| 4.9.1  Testing for Insecure encryption usage (OWASP-EN-001]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Weak SSL/TSL Ciphers, Insufficient Transport Layer Protection (OWASP-EN-002)| 4.9.2 Testing for Weak SSL/TSL Ciphers, Insufficient Transport Layer Protection (OWASP-EN-002)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Padding Oracle (OWASP-EN-003)| 4.9.3 Testing for Padding Oracle (OWASP-EN-003) [Giorgio Fedon]]]&lt;br /&gt;
&lt;br /&gt;
&amp;gt; [[Testing for Cacheable HTTPS Response | x.x.3 Testing for Cacheable HTTPS Response&amp;lt;br&amp;gt;&lt;br /&gt;
Cache directives insecure&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;gt; Testing for Insecure Cryptographic Storage [put in x.x.1]&amp;lt;br&amp;gt;&lt;br /&gt;
[[Testing for Sensitive information sent via unencrypted channels | x.x.4&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Web Service (XML Interpreter)|'''4.10 Web Service Testing''']] [Tom Eston] &lt;br /&gt;
&lt;br /&gt;
[[Scoping a Web Service Test (OWASP-WS-001)|4.10.1 Scoping a Web Service Test (OWASP-WS-001)]]&lt;br /&gt;
&lt;br /&gt;
[[WS Information Gathering (OWASP-WS-002)|4.10.2 WS Information Gathering (OWASP-WS-002)]]&lt;br /&gt;
&lt;br /&gt;
[[WS Authentication Testing (OWASP-WS-003)|4.10.3 WS Authentication Testing (OWASP-WS-003)]]&lt;br /&gt;
&lt;br /&gt;
[[WS Management Interface Testing (OWASP-WS-004)|4.10.4 WS Management Interface Testing (OWASP-WS-004)]]&lt;br /&gt;
&lt;br /&gt;
[[Weak XML Structure Testing (OWASP-WS-005)|4.10.5 Weak XML Structure Testing (OWASP-WS-005)]]&lt;br /&gt;
&lt;br /&gt;
[[XML Content-Level Testing (OWASP-WS-006)|4.10.6 XML Content-Level Testing (OWASP-WS-006)]]&lt;br /&gt;
&lt;br /&gt;
[[WS HTTP GET Parameters/REST Testing (OWASP-WS-007)|4.10.7 WS HTTP GET Parameters/REST Testing (OWASP-WS-007)]]&lt;br /&gt;
&lt;br /&gt;
[[WS Naughty SOAP Attachment Testing (OWASP-WS-008)|4.10.8 WS Naughty SOAP Attachment Testing (OWASP-WS-008)]]&lt;br /&gt;
&lt;br /&gt;
[[WS Replay/MiTM Testing (OWASP-WS-009)|4.10.9 WS Replay/MiTM Testing (OWASP-WS-009)]]&lt;br /&gt;
&lt;br /&gt;
[[WS BEPL Testing (OWASP-WS-010)|4.10.10 WS BEPL Testing (OWASP-WS-010)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Client Side Testing|'''4.11 Client Side Testing''']] [New!] &lt;br /&gt;
&lt;br /&gt;
[[Testing for DOM-based Cross site scripting  (OWASP-DV-003)|4.11.1 Testing for DOM based Cross Site Scripting  (OWASP-CS-001) [Stefano Di Paola]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for HTML5 (OWASP CS-002)|4.11.2 Testing for HTML5 (OWASP CS-002) [Juan Galiana] ]]&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Testing for Cross site flashing (OWASP-DV-004)|4.11.3 Testing for Cross Site Flashing   (OWASP-CS-003)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Testing for ClickHijacking (OWASP-CS-004)|4.11.4 Testing for Testing for ClickHijacking (OWASP-CS-004) ]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==[[Writing Reports: value the real risk |5. Writing Reports: value the real risk ]]==&lt;br /&gt;
&lt;br /&gt;
[[How to value the real risk |5.1 How to value the real risk]] [To review--&amp;gt; contributor here]&lt;br /&gt;
&lt;br /&gt;
[[How to write the report of the testing |5.2 How to write the report of the testing]] [To review--&amp;gt; contributor here]&lt;br /&gt;
&lt;br /&gt;
==[[Appendix A: Testing Tools |Appendix A: Testing Tools ]]==&lt;br /&gt;
&lt;br /&gt;
* Black Box Testing Tools [To review--&amp;gt; Amro. We need only tools fo webapp testing]&lt;br /&gt;
&lt;br /&gt;
==[[OWASP Testing Guide Appendix B: Suggested Reading | Appendix B: Suggested Reading]]==&lt;br /&gt;
* Whitepapers [To review--&amp;gt; David Fern]&lt;br /&gt;
* Books [To review--&amp;gt; David Fern]&lt;br /&gt;
* Useful Websites [To review--&amp;gt; David Fern]&lt;br /&gt;
&lt;br /&gt;
==[[OWASP Testing Guide Appendix C: Fuzz Vectors | Appendix C: Fuzz Vectors]]==&lt;br /&gt;
&lt;br /&gt;
* Fuzz Categories [To review--&amp;gt; contributor here]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==[[OWASP Testing Guide Appendix D: Encoded Injection | Appendix D: Encoded Injection]]==&lt;br /&gt;
&lt;br /&gt;
[To review--&amp;gt; contributor here]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP Testing Project]]&lt;/div&gt;</summary>
		<author><name>Robert WInkel</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_Testing_Guide_v4_Table_of_Contents&amp;diff=135266</id>
		<title>OWASP Testing Guide v4 Table of Contents</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=OWASP_Testing_Guide_v4_Table_of_Contents&amp;diff=135266"/>
				<updated>2012-09-04T02:03:52Z</updated>
		
		<summary type="html">&lt;p&gt;Robert WInkel: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&lt;br /&gt;
'''This is DRAFT of the table of content of the New Testing Guide v4.'''&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;You can download the stable version [http://www.owasp.org/images/5/56/OWASP_Testing_Guide_v3.pdf here] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Back to the OWASP Testing Guide Project:&lt;br /&gt;
http://www.owasp.org/index.php/OWASP_Testing_Project&lt;br /&gt;
&lt;br /&gt;
'''Updated: 31st August 2012'''&lt;br /&gt;
&lt;br /&gt;
[[ OWTGv4 Contributors list|'''Contributors List]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
The following are the main improvements we have to realize: &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(1) - Add new testing techniques and OWASP Top10 update: &amp;lt;br&amp;gt;&lt;br /&gt;
- Testing for HTTP Verb tampering&amp;lt;br&amp;gt;&lt;br /&gt;
- Testing for HTTP Parameter Pollutions&amp;lt;br&amp;gt;&lt;br /&gt;
- Testing for URL Redirection&amp;lt;br&amp;gt;&lt;br /&gt;
- Testing for Insecure Direct Object References&amp;lt;br&amp;gt;&lt;br /&gt;
- Testing for Insecure Cryptographic Storage&amp;lt;br&amp;gt;&lt;br /&gt;
- Testing for Failure to Restrict URL Access&amp;lt;br&amp;gt;&lt;br /&gt;
- Testing for Insufficient Transport Layer Protection&amp;lt;br&amp;gt;&lt;br /&gt;
- Testing for Unvalidated Redirects and Forwards.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
(2) - Review and improve all the sections in v3,&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
(3) - Create a more readable guide, eliminating some sections that are not&lt;br /&gt;
really useful, Rationalize some sections as Session Management Testing.&lt;br /&gt;
&lt;br /&gt;
(4) Pavol says: - add new opensource testing tools that appeared during last 3 years&lt;br /&gt;
(and are missing in the OWASP Testing Guide v3)&lt;br /&gt;
&lt;br /&gt;
- add few useful and life-scenarios of possible&lt;br /&gt;
vulnerabilities in Bussiness Logic Testing (many testers have no idea what&lt;br /&gt;
vulnerabilities in Business Logic exactly mean)&lt;br /&gt;
&lt;br /&gt;
- &amp;quot;Brute force testing&amp;quot; of &amp;quot;session ID&amp;quot; is missing in &amp;quot;Session Management&lt;br /&gt;
Testing&amp;quot;, describe other tools for Session ID entropy analysis&lt;br /&gt;
(e.g. Stompy)&lt;br /&gt;
&lt;br /&gt;
- in &amp;quot;Data Validation Testing&amp;quot; describe some basic obfuscation methods for&lt;br /&gt;
malicious code injection including the statements how it is possible to&lt;br /&gt;
detect it (web application obfuscation is quite succesfull in bypassing&lt;br /&gt;
many data validation controls)&lt;br /&gt;
&lt;br /&gt;
- split the phase Logout and Browser Cache Management&amp;quot; into two sections&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The following is a DRAFT of the Toc based on the feedback already received.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''T A B L E    o f    C O N T E N T S (DRAFT)'''&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==[[Testing Guide Foreword|Foreword by OWASP Chair]]== [To review--&amp;gt; OWASP Chair]&lt;br /&gt;
&lt;br /&gt;
==[[Testing Guide Frontispiece |1. Frontispiece]]== [To review--&amp;gt; Mat]&lt;br /&gt;
&lt;br /&gt;
'''[[Testing Guide Frontispiece|1.1 About the OWASP Testing Guide Project]]''' [To review--&amp;gt; Mat]&lt;br /&gt;
&lt;br /&gt;
'''[[About The Open Web Application Security Project|1.2 About The Open Web Application Security Project]]''' [To review--&amp;gt; ]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==[[Testing Guide Introduction|2. Introduction]]==&lt;br /&gt;
&lt;br /&gt;
'''2.1 The OWASP Testing Project'''&lt;br /&gt;
&lt;br /&gt;
'''2.2 Principles of Testing'''&lt;br /&gt;
&lt;br /&gt;
'''2.3 Testing Techniques Explained''' &lt;br /&gt;
&lt;br /&gt;
2.4 [https://www.owasp.org/index.php/Testing_Guide_Introduction#Security_Requirements_Test_Derivation Security requirements test derivation],[https://www.owasp.org/index.php/Testing_Guide_Introduction#Functional_and_Non_Functional_Test_Requirements functional and non functional test requirements], and [https://www.owasp.org/index.php/Testing_Guide_Introduction#Test_Cases_Through_Use_and_Misuse_Cases test cases through use and misuse cases]&lt;br /&gt;
&lt;br /&gt;
2.5 [https://www.owasp.org/index.php/Testing_Guide_Introduction#Security_Test_Data_Analysis_and_Reporting Security test data analysis and reporting: root cause identification and business/role case test data reporting]&lt;br /&gt;
&lt;br /&gt;
==[[The OWASP Testing Framework|3. The OWASP Testing Framework]]==&lt;br /&gt;
&lt;br /&gt;
'''3.1. Overview'''&lt;br /&gt;
&lt;br /&gt;
'''3.2. Phase 1: Before Development Begins '''&lt;br /&gt;
&lt;br /&gt;
'''3.3. Phase 2: During Definition and Design'''&lt;br /&gt;
&lt;br /&gt;
'''3.4. Phase 3: During Development'''&lt;br /&gt;
&lt;br /&gt;
'''3.5. Phase 4: During Deployment'''&lt;br /&gt;
&lt;br /&gt;
'''3.6. Phase 5: Maintenance and Operations'''&lt;br /&gt;
&lt;br /&gt;
'''3.7. A Typical SDLC Testing Workflow '''&lt;br /&gt;
&lt;br /&gt;
==[[Web Application Penetration Testing |4. Web Application Penetration Testing ]]==&lt;br /&gt;
&lt;br /&gt;
[[Testing: Introduction and objectives|'''4.1 Introduction and Objectives''']] [To review--&amp;gt; Mat]&lt;br /&gt;
&lt;br /&gt;
[[Testing Checklist| 4.1.1 Testing Checklist]] [To review at the end of brainstorming --&amp;gt; Mat]&lt;br /&gt;
&lt;br /&gt;
[[Testing: Information Gathering|'''4.2 Information Gathering ''']] [To review--&amp;gt; contributor here]&lt;br /&gt;
&lt;br /&gt;
[[Testing for configuration management|'''4.3 Configuration and Deploy Management Testing ''']]&lt;br /&gt;
&lt;br /&gt;
Infrastructure Configuration management weakness&amp;lt;br&amp;gt;&lt;br /&gt;
Application Configuration management weakness&amp;lt;br&amp;gt;&lt;br /&gt;
File extensions handling&amp;lt;br&amp;gt;&lt;br /&gt;
Old, backup and unreferenced files&amp;lt;br&amp;gt;&lt;br /&gt;
Access to Admin interfaces&amp;lt;br&amp;gt;&lt;br /&gt;
Bad HTTP Methods enabled, [new]&amp;lt;br&amp;gt;&lt;br /&gt;
Informative Error Messages&amp;lt;br&amp;gt;&lt;br /&gt;
Database credentials/connection strings available&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Testing for authentication|'''4.4 Authentication Testing ''']] &lt;br /&gt;
&lt;br /&gt;
Credentials transport over an unencrypted channel [Robert Winkel]&amp;lt;br&amp;gt;&lt;br /&gt;
User enumeration (also Guessable user account) [Robert Winkel]&amp;lt;br&amp;gt;&lt;br /&gt;
Default passwords [Robert Winkel]&amp;lt;br&amp;gt;&lt;br /&gt;
Weak lock out mechanism [New! - Robert Winkel] &amp;lt;br&amp;gt;&lt;br /&gt;
Account lockout DoS [New! - Robert Winkel]&amp;lt;br&amp;gt;&lt;br /&gt;
Bypassing authentication schema&amp;lt;br&amp;gt; &lt;br /&gt;
Directory traversal/file include &amp;lt;br&amp;gt;&lt;br /&gt;
Vulnerable remember password [Robert Winkel]&amp;lt;br&amp;gt;&lt;br /&gt;
Browser cache weakness [New!]&amp;lt;br&amp;gt;&lt;br /&gt;
Weak password policy [New! - Robert Winkel]&amp;lt;br&amp;gt;&lt;br /&gt;
Weak username policy [New! - Robert Winkel]&amp;lt;br&amp;gt;&lt;br /&gt;
Weak security question/answer [New! - Robert Winkel]&amp;lt;br&amp;gt; &lt;br /&gt;
Failure to restrict access to authenticated resource [New!]&amp;lt;br&amp;gt; &lt;br /&gt;
Weak password change function [New! - Robert Winkel]&amp;lt;br&amp;gt;&lt;br /&gt;
Testing for CAPTCHA&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Testing for Session Management|'''4.5 Session Management Testing''']] &lt;br /&gt;
&lt;br /&gt;
Bypassing Session Management Schema &amp;lt;br&amp;gt;&lt;br /&gt;
Weak Session Token &amp;lt;br&amp;gt;&lt;br /&gt;
Cookies are set not ‘HTTP Only’, ‘Secure’,  and no time validity&amp;lt;br&amp;gt; &lt;br /&gt;
Exposed sensitive session variables &amp;lt;br&amp;gt;&lt;br /&gt;
CSRF &amp;lt;br&amp;gt;&lt;br /&gt;
Session passed over http [New!] &amp;lt;br&amp;gt;&lt;br /&gt;
Session token within URL [New!]&amp;lt;br&amp;gt;&lt;br /&gt;
Session Fixation &amp;lt;br&amp;gt;&lt;br /&gt;
Session token not removed on server after logout [New!]&amp;lt;br&amp;gt;&lt;br /&gt;
Persistent session token [New!]&amp;lt;br&amp;gt;&lt;br /&gt;
Session token not restrcited properly (such as domain or path not set properly) [New!]&amp;lt;br&amp;gt;&lt;br /&gt;
Logout function not properly implemented &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Testing for Authorization|'''4.6 Authorization Testing''']] &lt;br /&gt;
&lt;br /&gt;
Bypassing authorization schema &amp;lt;br&amp;gt;&lt;br /&gt;
Privilege Escalation &amp;lt;br&amp;gt;&lt;br /&gt;
Insecure Direct Object References &amp;lt;br&amp;gt;&lt;br /&gt;
Failure to Restrict access to authorized resource [New!]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Testing for business logic   (OWASP-BL-001)|'''4.7 Business Logic Testing  (OWASP-BL-001)''']] [To review--&amp;gt; contributor here]&lt;br /&gt;
Business Logic&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Testing for Data Validation|'''4.8 Data Validation Testing''']] &lt;br /&gt;
&lt;br /&gt;
Reflected XSS &amp;lt;br&amp;gt;&lt;br /&gt;
Stored XSS &amp;lt;br&amp;gt;&lt;br /&gt;
HTTP Verb Tampering [Brad Causey]&amp;lt;br&amp;gt; &lt;br /&gt;
HTTP Parameter pollution [Brad Causey]&amp;lt;br&amp;gt;&lt;br /&gt;
Unvalidated Redirects and Forwards [Brad Causey]&amp;lt;br&amp;gt; &lt;br /&gt;
SQL Injection [Brad Causey]&amp;lt;br&amp;gt;&lt;br /&gt;
LDAP Injection &amp;lt;br&amp;gt;&lt;br /&gt;
ORM Injection &amp;lt;br&amp;gt;&lt;br /&gt;
XML Injection &amp;lt;br&amp;gt;&lt;br /&gt;
SSI Injection &amp;lt;br&amp;gt;&lt;br /&gt;
XPath Injection &amp;lt;br&amp;gt;&lt;br /&gt;
SOAP Injection &amp;lt;br&amp;gt;&lt;br /&gt;
IMAP/SMTP Injection &amp;lt;br&amp;gt;&lt;br /&gt;
Code Injection &amp;lt;br&amp;gt;&lt;br /&gt;
OS Commanding &amp;lt;br&amp;gt;&lt;br /&gt;
Buffer overflow &amp;lt;br&amp;gt;&lt;br /&gt;
Incubated vulnerability &amp;lt;br&amp;gt; &lt;br /&gt;
HTTP Splitting/Smuggling &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Testing for Data Encryption (New!)]]&lt;br /&gt;
&lt;br /&gt;
Application did not use encryption &amp;lt;br&amp;gt;&lt;br /&gt;
Weak SSL/TSL Ciphers, Insufficient &amp;lt;br&amp;gt;&lt;br /&gt;
Transport Layer Protection&amp;lt;br&amp;gt;&lt;br /&gt;
Cacheable HTTPS Response&amp;lt;br&amp;gt;&lt;br /&gt;
Cache directives insecure&amp;lt;br&amp;gt;&lt;br /&gt;
Insecure Cryptographic Storage [mainly CR Guide]&amp;lt;br&amp;gt;&lt;br /&gt;
Sensitive information sent via unencrypted&lt;br /&gt;
channels &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[ XML Interpreter? (New!)]]&lt;br /&gt;
&lt;br /&gt;
Weak XML Structure&lt;br /&gt;
XML content-level&lt;br /&gt;
WS HTTP GET parameters/REST&lt;br /&gt;
WS Naughty SOAP attachments&lt;br /&gt;
WS Replay Testing&lt;br /&gt;
&lt;br /&gt;
[[ Client Side Testing (New!) ]]&lt;br /&gt;
&lt;br /&gt;
DOM XSS&amp;lt;br&amp;gt;&lt;br /&gt;
Cross Site Flashing&amp;lt;br&amp;gt;&lt;br /&gt;
ClickHijacking&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
==[[Writing Reports: value the real risk |5. Writing Reports: value the real risk ]]==&lt;br /&gt;
&lt;br /&gt;
[[How to value the real risk |5.1 How to value the real risk]] [To review--&amp;gt; contributor here]&lt;br /&gt;
&lt;br /&gt;
[[How to write the report of the testing |5.2 How to write the report of the testing]] [To review--&amp;gt; contributor here]&lt;br /&gt;
&lt;br /&gt;
==[[Appendix A: Testing Tools |Appendix A: Testing Tools ]]==&lt;br /&gt;
&lt;br /&gt;
* Black Box Testing Tools [To review--&amp;gt; Amro. We need only tools fo webapp testing]&lt;br /&gt;
&lt;br /&gt;
==[[OWASP Testing Guide Appendix B: Suggested Reading | Appendix B: Suggested Reading]]==&lt;br /&gt;
* Whitepapers [To review--&amp;gt; contributor here]&lt;br /&gt;
* Books [To review--&amp;gt; contributor here]&lt;br /&gt;
* Useful Websites [To review--&amp;gt; contributor here]&lt;br /&gt;
&lt;br /&gt;
==[[OWASP Testing Guide Appendix C: Fuzz Vectors | Appendix C: Fuzz Vectors]]==&lt;br /&gt;
&lt;br /&gt;
* Fuzz Categories [To review--&amp;gt; contributor here]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==[[OWASP Testing Guide Appendix D: Encoded Injection | Appendix D: Encoded Injection]]==&lt;br /&gt;
&lt;br /&gt;
[To review--&amp;gt; contributor here]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP Testing Project]]&lt;/div&gt;</summary>
		<author><name>Robert WInkel</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_Testing_Guide_v4_Table_of_Contents&amp;diff=135261</id>
		<title>OWASP Testing Guide v4 Table of Contents</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=OWASP_Testing_Guide_v4_Table_of_Contents&amp;diff=135261"/>
				<updated>2012-09-04T01:51:18Z</updated>
		
		<summary type="html">&lt;p&gt;Robert WInkel: Added Robert Winkel as contributor to several Authentication Testing test cases&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&lt;br /&gt;
'''This is DRAFT of the table of content of the New Testing Guide v4.'''&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;You can download the stable version [http://www.owasp.org/images/5/56/OWASP_Testing_Guide_v3.pdf here] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Back to the OWASP Testing Guide Project:&lt;br /&gt;
http://www.owasp.org/index.php/OWASP_Testing_Project&lt;br /&gt;
&lt;br /&gt;
'''Updated: 31st August 2012'''&lt;br /&gt;
&lt;br /&gt;
[[ OWTGv4 Contributors list|'''Contributors List]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
The following are the main improvements we have to realize: &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(1) - Add new testing techniques and OWASP Top10 update: &amp;lt;br&amp;gt;&lt;br /&gt;
- Testing for HTTP Verb tampering&amp;lt;br&amp;gt;&lt;br /&gt;
- Testing for HTTP Parameter Pollutions&amp;lt;br&amp;gt;&lt;br /&gt;
- Testing for URL Redirection&amp;lt;br&amp;gt;&lt;br /&gt;
- Testing for Insecure Direct Object References&amp;lt;br&amp;gt;&lt;br /&gt;
- Testing for Insecure Cryptographic Storage&amp;lt;br&amp;gt;&lt;br /&gt;
- Testing for Failure to Restrict URL Access&amp;lt;br&amp;gt;&lt;br /&gt;
- Testing for Insufficient Transport Layer Protection&amp;lt;br&amp;gt;&lt;br /&gt;
- Testing for Unvalidated Redirects and Forwards.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
(2) - Review and improve all the sections in v3,&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
(3) - Create a more readable guide, eliminating some sections that are not&lt;br /&gt;
really useful, Rationalize some sections as Session Management Testing.&lt;br /&gt;
&lt;br /&gt;
(4) Pavol says: - add new opensource testing tools that appeared during last 3 years&lt;br /&gt;
(and are missing in the OWASP Testing Guide v3)&lt;br /&gt;
&lt;br /&gt;
- add few useful and life-scenarios of possible&lt;br /&gt;
vulnerabilities in Bussiness Logic Testing (many testers have no idea what&lt;br /&gt;
vulnerabilities in Business Logic exactly mean)&lt;br /&gt;
&lt;br /&gt;
- &amp;quot;Brute force testing&amp;quot; of &amp;quot;session ID&amp;quot; is missing in &amp;quot;Session Management&lt;br /&gt;
Testing&amp;quot;, describe other tools for Session ID entropy analysis&lt;br /&gt;
(e.g. Stompy)&lt;br /&gt;
&lt;br /&gt;
- in &amp;quot;Data Validation Testing&amp;quot; describe some basic obfuscation methods for&lt;br /&gt;
malicious code injection including the statements how it is possible to&lt;br /&gt;
detect it (web application obfuscation is quite succesfull in bypassing&lt;br /&gt;
many data validation controls)&lt;br /&gt;
&lt;br /&gt;
- split the phase Logout and Browser Cache Management&amp;quot; into two sections&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The following is a DRAFT of the Toc based on the feedback already received.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
'''T A B L E    o f    C O N T E N T S (DRAFT)'''&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==[[Testing Guide Foreword|Foreword by OWASP Chair]]== [To review--&amp;gt; OWASP Chair]&lt;br /&gt;
&lt;br /&gt;
==[[Testing Guide Frontispiece |1. Frontispiece]]== [To review--&amp;gt; Mat]&lt;br /&gt;
&lt;br /&gt;
'''[[Testing Guide Frontispiece|1.1 About the OWASP Testing Guide Project]]''' [To review--&amp;gt; Mat]&lt;br /&gt;
&lt;br /&gt;
'''[[About The Open Web Application Security Project|1.2 About The Open Web Application Security Project]]''' [To review--&amp;gt; ]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==[[Testing Guide Introduction|2. Introduction]]==&lt;br /&gt;
&lt;br /&gt;
'''2.1 The OWASP Testing Project'''&lt;br /&gt;
&lt;br /&gt;
'''2.2 Principles of Testing'''&lt;br /&gt;
&lt;br /&gt;
'''2.3 Testing Techniques Explained''' &lt;br /&gt;
&lt;br /&gt;
2.4 [https://www.owasp.org/index.php/Testing_Guide_Introduction#Security_Requirements_Test_Derivation Security requirements test derivation],[https://www.owasp.org/index.php/Testing_Guide_Introduction#Functional_and_Non_Functional_Test_Requirements functional and non functional test requirements], and [https://www.owasp.org/index.php/Testing_Guide_Introduction#Test_Cases_Through_Use_and_Misuse_Cases test cases through use and misuse cases]&lt;br /&gt;
&lt;br /&gt;
2.5 [https://www.owasp.org/index.php/Testing_Guide_Introduction#Security_Test_Data_Analysis_and_Reporting Security test data analysis and reporting: root cause identification and business/role case test data reporting]&lt;br /&gt;
&lt;br /&gt;
==[[The OWASP Testing Framework|3. The OWASP Testing Framework]]==&lt;br /&gt;
&lt;br /&gt;
'''3.1. Overview'''&lt;br /&gt;
&lt;br /&gt;
'''3.2. Phase 1: Before Development Begins '''&lt;br /&gt;
&lt;br /&gt;
'''3.3. Phase 2: During Definition and Design'''&lt;br /&gt;
&lt;br /&gt;
'''3.4. Phase 3: During Development'''&lt;br /&gt;
&lt;br /&gt;
'''3.5. Phase 4: During Deployment'''&lt;br /&gt;
&lt;br /&gt;
'''3.6. Phase 5: Maintenance and Operations'''&lt;br /&gt;
&lt;br /&gt;
'''3.7. A Typical SDLC Testing Workflow '''&lt;br /&gt;
&lt;br /&gt;
==[[Web Application Penetration Testing |4. Web Application Penetration Testing ]]==&lt;br /&gt;
&lt;br /&gt;
[[Testing: Introduction and objectives|'''4.1 Introduction and Objectives''']] [To review--&amp;gt; Mat]&lt;br /&gt;
&lt;br /&gt;
[[Testing Checklist| 4.1.1 Testing Checklist]] [To review at the end of brainstorming --&amp;gt; Mat]&lt;br /&gt;
&lt;br /&gt;
[[Testing: Information Gathering|'''4.2 Information Gathering ''']] [To review--&amp;gt; contributor here]&lt;br /&gt;
&lt;br /&gt;
[[Testing for configuration management|'''4.3 Configuration and Deploy Management Testing ''']]&lt;br /&gt;
&lt;br /&gt;
Infrastructure Configuration management weakness&amp;lt;br&amp;gt;&lt;br /&gt;
Application Configuration management weakness&amp;lt;br&amp;gt;&lt;br /&gt;
File extensions handling&amp;lt;br&amp;gt;&lt;br /&gt;
Old, backup and unreferenced files&amp;lt;br&amp;gt;&lt;br /&gt;
Access to Admin interfaces&amp;lt;br&amp;gt;&lt;br /&gt;
Bad HTTP Methods enabled, [new]&amp;lt;br&amp;gt;&lt;br /&gt;
Informative Error Messages&amp;lt;br&amp;gt;&lt;br /&gt;
Database credentials/connection strings available&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Testing for authentication|'''4.4 Authentication Testing ''']] &lt;br /&gt;
&lt;br /&gt;
Credentials transport over an unencrypted channel [Robert Winkel]&amp;lt;br&amp;gt;&lt;br /&gt;
User enumeration (also Guessable user account) [Robert Winkel]&amp;lt;br&amp;gt;&lt;br /&gt;
Default passwords [Robert Winkel]&amp;lt;br&amp;gt;&lt;br /&gt;
Weak lock out mechanism [New! - Robert Winkel] &amp;lt;br&amp;gt;&lt;br /&gt;
Account lockout DoS [New! - Robert Winkel]&amp;lt;br&amp;gt;&lt;br /&gt;
Bypassing authentication schema&amp;lt;br&amp;gt; &lt;br /&gt;
Directory traversal/file include &amp;lt;br&amp;gt;&lt;br /&gt;
Vulnerable remember password &amp;lt;br&amp;gt;&lt;br /&gt;
Browser cache weakness [New!]&amp;lt;br&amp;gt;&lt;br /&gt;
Weak password policy [New! - Robert Winkel]&amp;lt;br&amp;gt;&lt;br /&gt;
Weak username policy [New! - Robert Winkel]&amp;lt;br&amp;gt;&lt;br /&gt;
Weak security question/answer [New! - Robert Winkel]&amp;lt;br&amp;gt; &lt;br /&gt;
Failure to Restrict access to authenticated resource [New!]&amp;lt;br&amp;gt; &lt;br /&gt;
Weak password change function [New! - Robert Winkel]&amp;lt;br&amp;gt;&lt;br /&gt;
Testing for CAPTCHA&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Testing for Session Management|'''4.5 Session Management Testing''']] &lt;br /&gt;
&lt;br /&gt;
Bypassing Session Management Schema &amp;lt;br&amp;gt;&lt;br /&gt;
Weak Session Token &amp;lt;br&amp;gt;&lt;br /&gt;
Cookies are set not ‘HTTP Only’, ‘Secure’,  and no time validity&amp;lt;br&amp;gt; &lt;br /&gt;
Exposed sensitive session variables &amp;lt;br&amp;gt;&lt;br /&gt;
CSRF &amp;lt;br&amp;gt;&lt;br /&gt;
Session passed over http [New!] &amp;lt;br&amp;gt;&lt;br /&gt;
Session token within URL [New!]&amp;lt;br&amp;gt;&lt;br /&gt;
Session Fixation &amp;lt;br&amp;gt;&lt;br /&gt;
Session token not removed on server after logout [New!]&amp;lt;br&amp;gt;&lt;br /&gt;
Persistent session token [New!]&amp;lt;br&amp;gt;&lt;br /&gt;
Session token not restrcited properly (such as domain or path not set properly) [New!]&amp;lt;br&amp;gt;&lt;br /&gt;
Logout function not properly implemented &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Testing for Authorization|'''4.6 Authorization Testing''']] &lt;br /&gt;
&lt;br /&gt;
Bypassing authorization schema &amp;lt;br&amp;gt;&lt;br /&gt;
Privilege Escalation &amp;lt;br&amp;gt;&lt;br /&gt;
Insecure Direct Object References &amp;lt;br&amp;gt;&lt;br /&gt;
Failure to Restrict access to authorized resource [New!]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Testing for business logic   (OWASP-BL-001)|'''4.7 Business Logic Testing  (OWASP-BL-001)''']] [To review--&amp;gt; contributor here]&lt;br /&gt;
Business Logic&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Testing for Data Validation|'''4.8 Data Validation Testing''']] &lt;br /&gt;
&lt;br /&gt;
Reflected XSS &amp;lt;br&amp;gt;&lt;br /&gt;
Stored XSS &amp;lt;br&amp;gt;&lt;br /&gt;
HTTP Verb Tampering [Brad Causey]&amp;lt;br&amp;gt; &lt;br /&gt;
HTTP Parameter pollution [Brad Causey]&amp;lt;br&amp;gt;&lt;br /&gt;
Unvalidated Redirects and Forwards [Brad Causey]&amp;lt;br&amp;gt; &lt;br /&gt;
SQL Injection [Brad Causey]&amp;lt;br&amp;gt;&lt;br /&gt;
LDAP Injection &amp;lt;br&amp;gt;&lt;br /&gt;
ORM Injection &amp;lt;br&amp;gt;&lt;br /&gt;
XML Injection &amp;lt;br&amp;gt;&lt;br /&gt;
SSI Injection &amp;lt;br&amp;gt;&lt;br /&gt;
XPath Injection &amp;lt;br&amp;gt;&lt;br /&gt;
SOAP Injection &amp;lt;br&amp;gt;&lt;br /&gt;
IMAP/SMTP Injection &amp;lt;br&amp;gt;&lt;br /&gt;
Code Injection &amp;lt;br&amp;gt;&lt;br /&gt;
OS Commanding &amp;lt;br&amp;gt;&lt;br /&gt;
Buffer overflow &amp;lt;br&amp;gt;&lt;br /&gt;
Incubated vulnerability &amp;lt;br&amp;gt; &lt;br /&gt;
HTTP Splitting/Smuggling &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Testing for Data Encryption (New!)]]&lt;br /&gt;
&lt;br /&gt;
Application did not use encryption &amp;lt;br&amp;gt;&lt;br /&gt;
Weak SSL/TSL Ciphers, Insufficient &amp;lt;br&amp;gt;&lt;br /&gt;
Transport Layer Protection&amp;lt;br&amp;gt;&lt;br /&gt;
Cacheable HTTPS Response&amp;lt;br&amp;gt;&lt;br /&gt;
Cache directives insecure&amp;lt;br&amp;gt;&lt;br /&gt;
Insecure Cryptographic Storage [mainly CR Guide]&amp;lt;br&amp;gt;&lt;br /&gt;
Sensitive information sent via unencrypted&lt;br /&gt;
channels &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[ XML Interpreter? (New!)]]&lt;br /&gt;
&lt;br /&gt;
Weak XML Structure&lt;br /&gt;
XML content-level&lt;br /&gt;
WS HTTP GET parameters/REST&lt;br /&gt;
WS Naughty SOAP attachments&lt;br /&gt;
WS Replay Testing&lt;br /&gt;
&lt;br /&gt;
[[ Client Side Testing (New!) ]]&lt;br /&gt;
&lt;br /&gt;
DOM XSS&amp;lt;br&amp;gt;&lt;br /&gt;
Cross Site Flashing&amp;lt;br&amp;gt;&lt;br /&gt;
ClickHijacking&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
==[[Writing Reports: value the real risk |5. Writing Reports: value the real risk ]]==&lt;br /&gt;
&lt;br /&gt;
[[How to value the real risk |5.1 How to value the real risk]] [To review--&amp;gt; contributor here]&lt;br /&gt;
&lt;br /&gt;
[[How to write the report of the testing |5.2 How to write the report of the testing]] [To review--&amp;gt; contributor here]&lt;br /&gt;
&lt;br /&gt;
==[[Appendix A: Testing Tools |Appendix A: Testing Tools ]]==&lt;br /&gt;
&lt;br /&gt;
* Black Box Testing Tools [To review--&amp;gt; Amro. We need only tools fo webapp testing]&lt;br /&gt;
&lt;br /&gt;
==[[OWASP Testing Guide Appendix B: Suggested Reading | Appendix B: Suggested Reading]]==&lt;br /&gt;
* Whitepapers [To review--&amp;gt; contributor here]&lt;br /&gt;
* Books [To review--&amp;gt; contributor here]&lt;br /&gt;
* Useful Websites [To review--&amp;gt; contributor here]&lt;br /&gt;
&lt;br /&gt;
==[[OWASP Testing Guide Appendix C: Fuzz Vectors | Appendix C: Fuzz Vectors]]==&lt;br /&gt;
&lt;br /&gt;
* Fuzz Categories [To review--&amp;gt; contributor here]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==[[OWASP Testing Guide Appendix D: Encoded Injection | Appendix D: Encoded Injection]]==&lt;br /&gt;
&lt;br /&gt;
[To review--&amp;gt; contributor here]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP Testing Project]]&lt;/div&gt;</summary>
		<author><name>Robert WInkel</name></author>	</entry>

	</feed>