PHP Web Host - Quality Web Hosting For All PHP Applications $35/month $250/year (Unlimited) - $25/month - 200,000 impressions - Your Ad Could be Here - Click For Details
  Login or Register
 • Home • Downloads • Your Account • Forums • 

View next topic
View previous topic


Google
 
Web RavenPHPScripts (This Site)
Post new topic   Reply to topic
Author Message
Johan1982
New Member
New Member


Joined: Oct 23, 2003
Posts: 24

PostPosted: Mon Apr 12, 2004 8:09 pm Reply with quote Back to top

I found in the SecurityFocus Bugtrag supposed vulnerabilities in the versions 6.x to the 7.2

User-level authentication bypass in phpnuke 6.x-7.2
Only registered users can see links on this board!
Get registered or login to the forums!


Admin-level authentication bypass in phpnuke 6.x-7.2
Only registered users can see links on this board!
Get registered or login to the forums!


The last one I imagine that it is solved with the Chatserv's fix in admin.php or it is not thus Question Question
View user's profile Send private message
Raven
Site Admin/Owner


Joined: Aug 27, 2002
Posts: 16987
Location: Kansas

PostPosted: Mon Apr 12, 2004 9:00 pm Reply with quote Back to top

This still revolves around the UNION exploit. Just install my hackattempt script and you are safe Wink
View user's profile Send private message Visit poster's website AIM Address Yahoo Messenger
Johan1982
New Member
New Member


Joined: Oct 23, 2003
Posts: 24

PostPosted: Tue Apr 13, 2004 12:33 am Reply with quote Back to top

Cool Thanks, I have installed it in my Web and everything seems to work well.
View user's profile Send private message
chatserv
The Mouse Is Extension Of Arm


Joined: May 02, 2003
Posts: 1396
Location: Puerto Rico

PostPosted: Tue Apr 13, 2004 7:09 am Reply with quote Back to top

If you use PHP-Nuke Patched you don't need to worry about either, else if you don't and don't wish to for whatever reason use Raven's Hack Alert script to block all UNION exploits, then make the following changes:
admin.php, below the file credits add:
Code:
if(stristr($_SERVER["QUERY_STRING"],'AddAuthor') || stristr($_SERVER["QUERY_STRING"],'UpdateAuthor')) {
die("Illegal Operation");
}

If using Hack Alert make that code:
Code:
if (stristr($_SERVER["QUERY_STRING"],'AddAuthor') || stristr($_SERVER["QUERY_STRING"],'UpdateAuthor')) header("Location: hackattempt.php");


auth.php, find:
Code:
  $admin = base64_decode($admin);

Before add:
Code:
  $admin = addslashes($admin);


mainfile.php, find:
Code:
   $admin = base64_decode($admin);

before add:
Code:
   $admin = addslashes($admin);


also find:
Code:
   $user = base64_decode($user);

before add:
Code:
   $user = addslashes($user);
View user's profile Send private message Visit poster's website
chatserv
The Mouse Is Extension Of Arm


Joined: May 02, 2003
Posts: 1396
Location: Puerto Rico

PostPosted: Wed Apr 14, 2004 11:37 am Reply with quote Back to top

Important update:
Only registered users can see links on this board!
Get registered or login to the forums!

Patches were updated today, version remains as 2.3 though.
View user's profile Send private message Visit poster's website
Johan1982
New Member
New Member


Joined: Oct 23, 2003
Posts: 24

PostPosted: Sat Apr 17, 2004 12:32 pm Reply with quote Back to top

The variable '$aid' in authors.php also is vulnerable? because I have listened that also is weakness in the treatment of that variable. Exclamation
View user's profile Send private message
Johan1982
New Member
New Member


Joined: Oct 23, 2003
Posts: 24

PostPosted: Sat Apr 17, 2004 9:39 pm Reply with quote Back to top

Other hole:

PHP-Nuke CookieDecode Cross-Site Scripting Vulnerability
Only registered users can see links on this board!
Get registered or login to the forums!
View user's profile Send private message
sixonetonoffun
Spouse Contemplates Divorce


Joined: Jan 02, 2003
Posts: 2499

PostPosted: Sat Apr 17, 2004 10:05 pm Reply with quote Back to top

Try this from the PostNuke playbook if an official patch isn't available?
Where you able to do anything with the proof of concept?
Honestly I think this is a little far fetched for most people to worry about.
Maybe on the gamer networks or a genuine ecommerce site but...

Anyway there is a slight performance decrease with adding this blanket filter.
Do I do it yes.

In mainfile.php after the other sec filters add this:
Code:

if (isset($_COOKIE)) {
              foreach (($_COOKIE) as $secvalue) {
               if ((eregi("<[^>]*script.*\"?[^>]*>", $secvalue)) ||
                    (eregi(".*[[:space:]](or|and)[[:space:]].*(=|like).*", $secvalue)) ||
                    (eregi("<[^>]*object.*\"?[^>]*>", $secvalue)) ||
                    (eregi("<[^>]*iframe.*\"?[^>]*>", $secvalue)) ||
                    (eregi("<[^>]*applet.*\"?[^>]*>", $secvalue)) ||
                    (eregi("<[^>]*meta.*\"?[^>]*>", $secvalue)) ||
                    (eregi("<[^>]*style.*\"?[^>]*>", $secvalue)) ||
                    (eregi("<[^>]*form.*\"?[^>]*>", $secvalue)) ||
                    (eregi("<[^>]*window.*\"?[^>]*>", $secvalue)) ||
                    (eregi("<[^>]*alert.*\"?[^>]*>", $secvalue)) ||
                    (eregi("<[^>]*document.*\"?[^>]*>", $secvalue)) ||
                    (eregi("<[^>]*cookie.*\"?[^>]*>", $secvalue)) ||
                    (eregi("<[^>]*img.*\"?[^>]*>", $secvalue))) {
                    echo("Forbidden Cookie... Stop Trying To Tamper With This Site!"); 
                  exit;
                   }
              }
        }


Just paste that in right before:

if (eregi("mainfile.php",$_SERVER['PHP_SELF'])) {
Header("Location: index.php");
die();
}
View user's profile Send private message
sixonetonoffun
Spouse Contemplates Divorce


Joined: Jan 02, 2003
Posts: 2499

PostPosted: Sat Apr 17, 2004 10:17 pm Reply with quote Back to top

Actually this doesn't address that specific vulnerability either. Grr! But this is another lol!
View user's profile Send private message
sixonetonoffun
Spouse Contemplates Divorce


Joined: Jan 02, 2003
Posts: 2499

PostPosted: Sat Apr 17, 2004 10:25 pm Reply with quote Back to top

Then again after reading the full exploit I think it would.

Here is the details




{================================================================================}
{ [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:
Only registered users can see links on this board!
Get registered or login to the forums!



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:
Only registered users can see links on this board!
Get registered or login to the forums!




Vulnerabilities:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

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 Wink

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 {
unset($user);
unset($cookie);
}

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 Wink ). This is, what
code programmer was thinking, but reality is different...

From php manual:

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
unset

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

Description
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 {
unset($user);
unset($cookie);
}
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
Only registered users can see links on this board!
Get registered or login to the forums!


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:

1:<script>alert(document.cookie);</script>foobar

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




Greetings:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

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



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

come2waraxe_yahoo_DOT_com
Janek Vind "waraxe"

Homepage:
Only registered users can see links on this board!
Get registered or login to the forums!


---------------------------------- [ EOF ] ------------------------------------
View user's profile Send private message
Johan1982
New Member
New Member


Joined: Oct 23, 2003
Posts: 24

PostPosted: Tue Apr 20, 2004 1:29 pm Reply with quote Back to top

SQL injection in Private_Messages Module
Only registered users can see links on this board!
Get registered or login to the forums!


Exploit:
Only registered users can see links on this board!
Get registered or login to the forums!


Exclamation Exclamation Exclamation
View user's profile Send private message
Raven
Site Admin/Owner


Joined: Aug 27, 2002
Posts: 16987
Location: Kansas

PostPosted: Tue Apr 20, 2004 1:41 pm Reply with quote Back to top

Been working with this for several hours. I have not been able to reproduce the results, at least in 7.2. In the future you might want to start contacting us via PM with these things to not give the kiddies more to play with Wink
View user's profile Send private message Visit poster's website AIM Address Yahoo Messenger
sixonetonoffun
Spouse Contemplates Divorce


Joined: Jan 02, 2003
Posts: 2499

PostPosted: Tue Apr 20, 2004 1:46 pm Reply with quote Back to top

I haven't either but I tried a little too. Wonder if wasn't in reference to the phpbb 2.08 and 2.08a updates? Technically I spose the listed versions weren't patched yet?
View user's profile Send private message
Raven
Site Admin/Owner


Joined: Aug 27, 2002
Posts: 16987
Location: Kansas

PostPosted: Tue Apr 20, 2004 1:51 pm Reply with quote Back to top

Well there are a couple more that I and Chat have reviewed and the proposed solution should work. I have mixed feelings about exposing.
View user's profile Send private message Visit poster's website AIM Address Yahoo Messenger
Display posts from previous:       
Post new topic   Reply to topic

View next topic
View previous topic
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
Forums ©
 

All logos and trademarks in this site are property of their respective owner.
The comments are property of their posters, all the rest © 2002-2011 by Raven

You can syndicate our news using the file xml

CSE HTML Validator Helped Clean up This Page! [Valid RSS] valid RSS 2.0 Valid robots.txt Stop Spam Harvesters, Join Project Honey Pot

Website engines core code is © copyright by PHP-Nuke but has been heavily patched and modified by myself and others.
PHP-Nuke is a free software released under the GNU/GPL.


:: fisubice phpbb2 style by Daz :: PHP-Nuke theme by www.nukemods.com ::
:: fisubice Theme Modified by the RavenNuke™ Team ::

:: W3C CSS Compliance Validation :: W3C HTML 4.01 Transitional Compliance Validation ::

zerosum