Menu

#33 xajax.inc.php possible defect - XSS

open
nobody
None
5
2010-04-07
2010-04-07
manful
No

Hi,

xajax 0.5 standard / xajax_core / xajax.inc.php

Here you are cleaning request URI from html tags:
Line 836:
Code: PHP
$_SERVER['REQUEST_URI'] = str_replace(
array('"',"'",'<','>'),
array('%22','%27','%3C','%3E'),
$_SERVER['REQUEST_URI']
);
$aURL = parse_url($_SERVER['REQUEST_URI']);

but if parse_url() fail to return array struct to $aURL (there are some XSS technique that can do that ) You are filling detectURI with:
line 901:
Code: PHP
if (empty($aURL['query']) && !empty($_SERVER['QUERY_STRING'])) {
$aURL['query'] = $_SERVER['QUERY_STRING'];
}

without any HTML tags filtering.

So if you are trust _detectURI function that is clean from XSS code it can surprise you after parse_url() fail.

You should add str_replace(..) to $_SERVER['QUERY_STRING'] in the same way like in $_SERVER['REQUEST_URI'].

Discussion


Log in to post a comment.