######################################################################
# Exploit Title: Java.com RXSS and DOM-XSS
# Date: 01/04/2015
# Author: Yann CAM @ Synetis - ASafety
# Vendor or Software Link: www.java.com
# Version: /
# Category: Reflected Cross Site Scripting and DOM based XSS
# Google dork:
# Tested on: Java.com main domain
######################################################################

Java description :
======================================================================
 
As of 2015, Java is one of the most popular programming languages in use, particularly for client-server web applications, with a reported 9 million developers.
Java was originally developed by James Gosling at Sun Microsystems (which has since been acquired by Oracle Corporation) and released in 1995 as a core component
of Sun Microsystems' Java platform. The language derives much of its syntax from C and C++, but it has fewer low-level facilities than either of them.
Java.com is the main website to acquire Java JRE or JDK software.


RXSS Vulnerability description - PoC n°1 :
======================================================================
A reflected XSS is available in the java.com main domain.
Through this vulnerability, an attacker could tamper with page rendering, redirect victims to fake Java portals, or capture Java's users credentials such cookies. 
It's also possible to forge a fake Java's page with this XSS to provide a backdoored version of softwares to users.
This reflected XSS is on GET "n" variable and is not properly sanitized before being used to his page.

Tested on Firefox 32.0.
 
PoC:
 
https://www.java.com/fr/download/faq/index_general.xml?n=20">2</a><script>alert(/Yann CAM @ASafety - www.synetis.com/);</script>

All language template pages (/fr/ and others) are impacted.


DOM-XSS Vulnerability description - PoC n°2 :
======================================================================

A reflected DOM-XSS is available in the java.com main domain.
Through this vulnerability, an attacker could tamper with page rendering, redirect victims to fake Java portals, or capture Java's users credentials such cookies. 
It's also possible to forge a fake Java's page with this XSS to provide a backdoored version of softwares to users.
This reflected XSS is based on the interpretation of the URL in the page.

Java.com online documentation provide a "printer icon" to access to the same documentation page but specially designed for printing.
This mechanism is provided by the GET param added to the url "?printFriendly=true".

http://java.com/fr/download/help/uninstall_needolder.xml?printFriendly=true

The page include his own URL (without GET param nor anchor) in the header. This is done by the JS code in the HTML source :

<script type='text/javascript'>document.write(document.location.href.split('?')[0]);</script>

Through this JS code, it's possible to inject Javascript into the page before the "?" char.
To add some javascript before this char without breaking the filename "uninstall_needolder.xml", it's possible to use the "%0a%0d" (\r\n) vector :

uninstall_needolder.xml%0a%0d<script>alert(/Yann_CAM_@ASafety_www.synetis.com/);</script>?printFriendly=true

Tested on Internet Explorer 6.0 (modern browsers not affected).

PoC:

http://java.com/fr/download/help/uninstall_needolder.xml%0a%0d<script>alert(/Yann_CAM_@ASafety_www.synetis.com/);</script>?printFriendly=true


Screenshots :
======================================================================

- http://www.asafety.fr/data/20141025-java.com_DOMXSS-01.png
- http://www.asafety.fr/data/20141025-java.com_DOMXSS-02.png
- http://www.asafety.fr/data/20141025-java.com_DOMXSS-03.png
- http://www.asafety.fr/data/20141025-java.com_Reflected_XSS-01.png
- http://www.asafety.fr/data/20141025-java.com_Reflected_XSS-02.png


Solution:
======================================================================

Fixed by Oracle/Java Security Team.
 
 
Additional resources :
======================================================================
 
- http://www.java.com/
- http://www.oracle.com/
- http://www.oracle.com/technetwork/topics/security/cpujan2015-1972971.html
- http://www.asafety.fr/actualites-news/contribution-java-com-dom-xss-reflected-xss
- http://www.synetis.com

 
Report timeline :
======================================================================
 
2014-10-25 : Oracle/Java Team alerted with details and PoC.
2014-10-27 : Oracle/Java response and confirm vulnerabilities.
2014-12-23 : Vulnerabilities seems to be fixed.
2015-04-01 : Public advisory

Credits :
======================================================================
 
    88888888
   88      888                                         88    88
  888       88                                         88
  788           Z88      88  88.888888     8888888   888888  88    8888888.
   888888.       88     88   888    Z88   88     88    88    88   88     88
       8888888    88    88   88      88  88       88   88    88   888
            888   88   88    88      88  88888888888   88    88     888888
  88         88    88  8.    88      88  88            88    88          888
  888       ,88     8I88     88      88   88      88   88    88  .88     .88
   ?8888888888.     888      88      88    88888888    8888  88   =88888888
       888.          88
                    88    www.synetis.com
                 8888  Consulting firm in management and information security
 
Yann CAM - Security Consultant @ Synetis | ASafety

--
SYNETIS | ASafety
CONTACT: www.synetis.com | www.asafety.fr