Waraxe IT Security Portal  
  Login or Register
::  Home  ::  Search  ::  Your Account  ::  Forums  ::   Waraxe Advisories  ::  Tools  ::
March 21, 2023
 Members List
 IRC chat
 Base64 coder
 MD5 hash
 CRC32 checksum
 ROT13 coder
 SHA-1 hash
 Sql Char Encoder
 y3dips ITsec
 Md5 Cracker
 User Manuals
 Recommend Us
 Your Account

User Info
Welcome, Anonymous

Latest: MichaelSnaRe
New Today: 0
New Yesterday: 0
Overall: 9145

People Online:
Visitors: 444
Members: 0
Total: 444
PacketStorm News
·301 Moved Permanently

[waraxe-2004-SA#016] - Cross-Site Scripting aka XSS in phpnuke 6.x-7.2 part 3

Author: Janek Vind "waraxe"
Date: 12. April 2004
Location: Estonia, Tartu
Web: http://www.waraxe.us/index.php?modname=sa&id=16

Affected software description:

Php-Nuke is popular freeware content management system, written in php by
Francisco Burzi. This CMS (Content Management System) is used on many thousands
websites, because it`s free of charge, easy to install and has broad set of features.

Homepage: http://phpnuke.org


Here I am, on the road again, discussing about potential XSS case in phpnuke.
"AGAIN?". Yes, coz phpnuke is surprisingly generous software for finding different
security holes ;)

This XSS case is active, when website uses some specific nuke themes - for example generic
themes "Karate", "Anagram", "Kaput", "Milo", "NukeNews" and many other derivations and
custom themes. By the way, security issues here are phpnuke engine related, not theme related.

Let's be more specific. There is a function in nuke engine, called cookiedecode().
From mainfile.php:

function cookiedecode($user) {
global $cookie, $prefix, $db, $user_prefix;

$user = base64_decode($user);
$cookie = explode(":", $user);
$sql = "SELECT user_password FROM ".$user_prefix."_users WHERE username='$cookie[1]'";
$result = $db->sql_query($sql);
$row = $db->sql_fetchrow($result);
$pass = $row[user_password];
if ($cookie[2] == $pass && $pass != "") {
return $cookie;
} else {

As we can see, variable $user (from $_COOKIE[], $_GET[] or $_POST[]) gets base64 decoded and then
exploded to array $cookie. Then the code will ask from database the password md5 hash and if retrieved
password matches with browser supplied password, then function returns the array $cookie[] and next
phpnuke theme.php will use this valid username (it's checked in cookidecode) for visual feedback,
for example - "welcome, $username".
So, it seems, that we can't spoof username here, coz we can't fool the checking routine (we dont consider here
sql injection , coz it will be used in my next advisory ;) ). This is, what
code programmer was thinking, but reality is different...

From php manual:


(PHP 3, PHP 4)
unset -- Unset a given variable

void unset ( mixed var [, mixed var [, ...]])

unset() destroys the specified variables. Note that in PHP 3, unset() will always return TRUE (actually,
the integer value 1). In PHP 4, however, unset() is no longer a true function: it is now a statement.
As such no value is returned, and attempting to take the value of unset() results in a parse error.

The behavior of unset() inside of a function can vary depending on what type of variable you are attempting to destroy.
If a globalized variable is unset() inside of a function, only the local variable is destroyed.
The variable in the calling environment will retain the same value as before unset() was called.
So, this little code in function cookiedecode():
} else {
will destroy the array $cookie[] only IN LOCAL CONTEXT, but in global scope it will be UNDESTROYED!

Ok, now let's issue request like this


to the phpnuke enabled website, using vulnerable themes. And we can see, that XSS works!
What's inside of the "user"? If we base64_decode this variable, we see this:


So, in this way, we can exploit XSS and evade all contrameasures in phpnuke, set up against scripting tags etc.


Greets to torufoorum members and to all bugtraq readers in Estonia! Tervitused!
Special greets to Stefano from UT Bee Clan!


Janek Vind "waraxe"

Homepage: http://www.waraxe.us/

---------------------------------- [ EOF ] ------------------------------------

Copyright © by Waraxe IT Security Portal All Right Reserved.

Published on: 2005-01-06 (35722 reads)

[ Go Back ]
Top members by posts
waraxe  waraxe - 2407
vince213333  vince213333 - 737
pexli  pexli - 665
Mullog  Mullog - 540
demon  demon - 485
shai-tan  shai-tan - 477
Cyko  Cyko - 375
tsabitah  tsabitah - 328
y3dips  y3dips - 281
·301 Moved Permanently


Space Raider game for Android, free download - Space Raider gameplay video - Zone Raider mobile games
All logos and trademarks in this site are property of their respective owner. The comments and posts are property of their posters, all the rest (c) 2004-2020 Janek Vind "waraxe"
Page Generation: 0.092 Seconds