{================================================================================} { [waraxe-2004-SA#007] } {================================================================================} { } { [ XSS and SQL injection bugs in 4nguestbook module for PhpNuke ] } { } {================================================================================} Author: Janek Vind "waraxe" Date: 15. March 2004 Location: Estonia, Tartu Affected software description: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ >From developer's infofile: 4nGuestbook Version 0.92 (German & English & Finnish) for phpNUKE Version 6.5 - 6.9 (www.phpnuke.org) By WarpSpeed (Marco Wiesler) (warpspeed@4thDimension.de) @ Sep/2oo3 http://www.warp-speed.de @ 4thDimension.de Networking With this addon/module for phpNUKE you can offer a comfortable guestbook to your users. - Admin: Edit, delete and managing the guestbook entrys - Admin: Generell Settings from Addon/Module - Admin: Settings: Allow NB-Code, HTML or Smilies ... - Admin: Settings: Only Members can post... - Preview of entry - Show IP or ID from poster (only for Admin) - Full Multilanguage support - And mutch more... Vulnerabilities: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 1. Cross-Site scripting aka XSS Example: http://localhost/nuke71/modules.php?name=4nGuestbook&entry=x[xss%20code%20here] Because PhpNuke will filter GET request for some symbols, it will be wise to use POST request for exploiting. Remark 1 - this XSS case is by standard classification sql injection bug, but because the script will display mysql errors for any user (not only for admin), we can "convert" the sql injection to xss. Remark 2 - when MySql version 4.1 will be widely used in future, then many "not so useful" sql injections, including this one, can be used with full power - because of the "subselects" feature, not available in current MySql versions. Why? Because if we can inject malicious code to sql sentence after "ORDER BY" or after "LIMIT", then in current MySql versions, all we can do, is to fail the sql request. No UNION-s etc. But in version 4.1 we can have something like this - "ORDER BY desc ASC LIMIT (SELECT pwd FROM nuke_authors)...". 2. Sql injection Not useful at all in this case, because we must have superadmin rights, but anyway - this bug needs to be fixed... Example: http://localhost/nuke71/admin.php?op=NukebookEditEntry&nbid=-2%20UNION%20SELECT%20null%20/* and we have sql error: MySQL Error : Query Error Error Number: 1222 The used SELECT statements have a different number of columns Greetings: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Greets to ulljobu, djzone, raider and to all IT freaks in Estonia! Contact: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ come2waraxe@yahoo.com Janek Vind "waraxe" ---------------------------------- [ EOF ] ------------------------------------