Securimage 3.6.2 Cross Site Scripting

2016-03-22T00:00:00
ID PACKETSTORM:136341
Type packetstorm
Reporter redteam-pentesting.de
Modified 2016-03-22T00:00:00

Description

                                        
                                            `Advisory: Cross-site Scripting in Securimage 3.6.2  
  
RedTeam Pentesting discovered a cross-site scripting (XSS) vulnerability  
in the Securimage CAPTCHA software, which allows attackers to inject  
arbitrary JavaScript code via a crafted URL.  
  
  
Details  
=======  
  
Product: Securimage  
Affected Versions: >= 3.2RC1  
Fixed Versions: 3.6.4  
Vulnerability Type: Cross-site Scripting  
Security Risk: high  
Vendor URL: https://www.phpcaptcha.org/  
Vendor Status: fixed version released  
Advisory URL: https://www.redteam-pentesting.de/advisories/rt-sa-2016-002  
Advisory Status: published  
CVE: GENERIC-MAP-NOMATCH  
CVE URL: https://cve.mitre.org/cgi-bin/cvename.cgi?name=GENERIC-MAP-NOMATCH  
  
  
Introduction  
============  
  
"Securimage is an open-source free PHP CAPTCHA script for generating  
complex images and CAPTCHA codes to protect forms from spam and abuse.  
It can be easily added into existing forms on your website to provide  
protection from spam bots. It can run on most any web server as long as  
you have PHP installed, and GD support within PHP. Securimage does  
everything from generating the CAPTCHA images to validating the typed  
code. Audible codes can be streamed to the browser with Flash for the  
vision impaired."  
  
(from the project's homepage)  
  
  
More Details  
============  
  
The Securimage download package and GitHub repository include several  
example scripts to demonstrate the usage of the library. Among these  
scripts is the file example_form.ajax.php. It returns JavaScript code  
that includes an unencoded value from the variable $_SERVER['PHP_SELF']  
directly embedded into the website.  
  
In Securimage versions from 3.2RC1 to 3.5 the following code is  
vulnerable:  
  
------------------------------------------------------------------------  
function processForm()  
{  
new Ajax.Request('<?php echo $_SERVER['PHP_SELF'] ?>', {  
method: 'post',  
parameters: $('contact_form').serialize(),  
onSuccess: function(transport) {  
------------------------------------------------------------------------  
  
In Securimage versions from 3.5.2 to 3.6.2 the following code is  
vulnerable:  
  
------------------------------------------------------------------------  
function processForm()  
{  
jQuery.ajax({  
url: '<?php echo $_SERVER['PHP_SELF'] ?>',  
type: 'POST',  
data: jQuery('#contact_form').serialize(),  
dataType: 'json',  
}).done(function(data) {  
------------------------------------------------------------------------  
  
The problem here is that the value of the variable $_SERVER['PHP_SELF']  
can, depending on the configuration of the web server, often be  
manipulated by an attacker to include special characters like  
apostrophes.  
  
  
Proof of Concept  
================  
  
The following URL can be used to demonstrate the vulnerability for  
Securimage versions from 3.2RC1 to 3.5 on with a vulnerable web server  
configuration:  
  
http://www.example.com/example_form.ajax.php/');}alert('RedTeam Pentesting');a=function(){a('  
  
Securimage versions from 3.5.2 to 3.6.2 can be exploited with the  
following URL:  
  
http://www.example.com/example_form.ajax.php/'});}alert('RedTeam Pentesting');a=function(){a({x:'  
  
The result is a notification showing the text "RedTeam Pentesting". The  
value of the variable $_SERVER['PHP_SELF'] is embedded in verbatim into  
the HTML source code of the resulting web page.  
  
  
Workaround  
==========  
  
The file example_form.ajax.php should be deleted from the Securimage  
directory on a web server.  
  
  
Fix  
===  
  
Update to version 3.6.4.  
  
  
Security Risk  
=============  
  
This security vulnerability is rated as a high risk. It allows executing  
arbitrary JavaScript code in users' browsers if they access URLs  
prepared by attackers. This provides many possibilities for further  
attacks against these users. Since Securimage is usually used as a  
software library to provide CAPTCHA functionality for web applications,  
the vulnerability could be used to exploit all web applications hosted  
on the same domain.  
  
  
Timeline  
========  
  
2016-02-03 Vulnerability identified  
2016-02-12 Customer approved disclosure to vendor  
2016-02-23 CVE number requested  
2016-02-24 CVE number not assigned, "non-prioritized product"  
2016-03-02 Vendor contacted  
2016-03-03 Vendor releases fixed version  
2016-03-22 Advisory released  
  
  
References  
==========  
  
https://www.phpcaptcha.org/uncategorized/securimage-3-6-4-released/  
  
  
RedTeam Pentesting GmbH  
=======================  
  
RedTeam Pentesting offers individual penetration tests performed by a  
team of specialised IT-security experts. Hereby, security weaknesses in  
company networks or products are uncovered and can be fixed immediately.  
  
As there are only few experts in this field, RedTeam Pentesting wants to  
share its knowledge and enhance the public knowledge with research in  
security-related areas. The results are made available as public  
security advisories.  
  
More information about RedTeam Pentesting can be found at:  
https://www.redteam-pentesting.de/  
  
--   
RedTeam Pentesting GmbH Tel.: +49 241 510081-0  
Dennewartstr. 25-27 Fax : +49 241 510081-99  
52068 Aachen https://www.redteam-pentesting.de  
Germany Registergericht: Aachen HRB 14004  
Geschäftsführer: Patrick Hof, Jens Liebchen  
`