[39141] in bugtraq

home help back first fref pref prev next nref lref last post

Re: Arbitrary code execution in eping plugin

daemon@ATHENA.MIT.EDU (exon)
Mon Jun 13 14:58:32 2005

Message-ID: <42AC1F18.50505@home.se>
Date: Sun, 12 Jun 2005 13:40:08 +0200
From: exon <exon@home.se>
MIME-Version: 1.0
To: bugtraq@securityfocus.com
In-Reply-To: <20050611201509.27599.qmail@securityfocus.com>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit

oliver@codersquad.de wrote:
> Hello,
> 
> the problem is in function eping_validaddr() in functions.php where the host is checked if it is valid as the name says...
> But the only check is to see if it is a valid ip adress for eping, here is the code:
> 
> --------------8<-----------------------------------------8<-------------------------------------
> function eping_validaddr($eping_hosttocheck)
> {
> If (ereg("(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)", $eping_hosttocheck))
>    {
>        return true;
>    }
>    else
>    {
>        return false;
>    }
> --------------8<-----------------------------------------8<-------------------------------------
> 
> I am sorry but I am a coder and my eyes are bleeding when looking at stuff like that so here is my suggestion for replaceing the if-statement:
> if(preg_match("/^[0-9]{2,3}?\.[0-9]{1,3}?\.[0-9]{1,3}?\.[0-9]{1,3}?$/", $eping_hosttocheck))
> 

Your suggestion would block 1.1.1.1 which is a valid IP, while letting 
through 999.999.999.999 which isn't. It's a bad regex for finding valid 
IP's.

Implementing an inet_aton()-like function would be several orders of 
magnitude faster than a preg_match() and several times more accurate.

> So only IP-Adresses are allowed and no kind of code injection is possible.
> 
> And everyone who thinks 'will he ever stop writeing?' will be disappointed:
> The same vulnerability also exists in the eTrace modul from E107. It looks like the same Author of the ePing modul.
> The only difference is the you have to search for 'etrace' instead of 'eping' in the files
> 
> Greetings from Germany
> Oliver
> 


home help back first fref pref prev next nref lref last post