Lucene search
+L

JpGraph 3.0.6 Cross Site Scripting

🗓️ 22 Dec 2009 00:00:00Reported by Martin BarbellaType 
packetstorm
 packetstorm
🔗 packetstormsecurity.com👁 22 Views

JpGraph 3.0.6 XSS Vulnerability in GetURLArguments Functio

Code
`XSS Vulnerability in JpGraph 3.0.6  
  
Discovered by Martin Barbella <[email protected]>  
  
Description of Vulnerability:  
-----------------------------  
JpGraph is an object oriented library for PHP that can be used to create  
various types of graphs which also contains support for client side  
image maps.  
  
The GetURLArguments function for the JpGraph's Graph class does not  
properly sanitize the names of get and post variables, leading to a  
cross site scripting vulnerability.  
  
  
Systems affected:  
-----------------  
This has been confirmed in version 3.0.6 of JpGraph's free release.  
Previous versions and the professional versions may be affected as well.  
  
  
Impact:  
-------  
When a user is tricked into clicking on a malicious link or submitting a  
specially crafted form, the injected code travels to the vulnerable web  
server, which reflects the attack back to the user’s browser. The  
browser then executes the code because it came from a "trusted" server.  
(From OWASP: http://www.owasp.org/index.php/Cross-site_Scripting_%28XSS%29)  
  
  
Mitigating factors:  
-------------------  
The vulnerability seems to be exploitable only in cases where client  
side image maps are used.  
  
  
Proof of concept:  
-----------------  
This can be demonstrated in the csim_in_html_ex1.php example provided  
with jpgraph (as well various other csim examples) as shown below.  
  
http://site/csim_in_html_ex1.php?"/><script>alert('XSS')</script>=arbitrary  
  
  
Solution:  
---------  
  
The following patch can be applied to jpgraph.php to correct the  
vulnerability.  
  
--- jpgraph.php.orig 2009-11-14 14:45:01.000000000 -0500  
+++ jpgraph.php 2009-11-14 14:55:34.000000000 -0500  
@@ -1286,11 +1286,11 @@  
while( list($key,$value) = each($_GET) ) {  
if( is_array($value) ) {  
foreach ( $value as $k => $v ) {  
- $urlarg .= '&'.$key.'%5B'.$k.'%5D='.urlencode($v);  
+ $urlarg .=  
'&'.urlencode($key).'%5B'.urlencode($k).'%5D='.urlencode($v);  
}  
}  
else {  
- $urlarg .= '&'.$key.'='.urlencode($value);  
+ $urlarg .= '&'.urlencode($key).'='.urlencode($value);  
}  
}  
  
@@ -1301,11 +1301,11 @@  
while( list($key,$value) = each($_POST) ) {  
if( is_array($value) ) {  
foreach ( $value as $k => $v ) {  
- $urlarg .= '&'.$key.'%5B'.$k.'%5D='.urlencode($v);  
+ $urlarg .=  
'&'.urlencode($key).'%5B'.urlencode($k).'%5D='.urlencode($v);  
}  
}  
else {  
- $urlarg .= '&'.$key.'='.urlencode($value);  
+ $urlarg .= '&'.urlencode($key).'='.urlencode($value);  
}  
}  
  
`

Data

Build on a solid foundation with Vulners data

We provide the essential building blocks for cybersecurity solutions with comprehensive, structured, and constantly updated vulnerability and exploits data

Api

Power your application with Vulners API

The Vulners REST API offers reliable, high-performance access to vulnerability intelligence, with 99.9% SLA uptime and CDN-backed data delivery for seamless global access

App

Assess and manage vulnerabilities with Vulners tools

Built on top of Vulners' database and SDK, end-user solutions give security professionals and developers lightweight and powerful tools for vulnerability remediation

22 Dec 2009 00:00Current
22