Checkout hackeado

Hola, les escribo porque hace una semana parece que me jaquearon la parte del checkout de un sitio.
Uso el plugin de mercadopago con la función que te lleva a la plataforma de mp para cobrar.
Lo que me está sucediendo es que me aparece en el checkout (aunque desactive todas las formas de cobrar) un formulario para que los usuarios ingreses sus datos de tarjeta de crédito.

No logro desactivarlo de ninguna manera y no se que hacer. Alguna recomendación?

Fíjate en los archivos del theme, vas a una carpeta que se llama WooCommerce y luego busca checkout

Te agregaron el código ahí

1 me gusta

Gracias Wanderlust, pero entre a la carpeta: /wp-content/themes/mitema/woocommerce
y borre todos los archivos desde el ftp y posteriormente subí todos archivos nuevos y me sigue apareciendo esa falsa solicitud de datos.

Se te ocurre alguna otra opción?

probaste desactivando todos los plugins, menos woocommerce?
e ir activando de a uno?

Recién desactivé todos los plugins (menos woocomerce) y sigue el problema. :exploding_head:

que version de woo tenes?

fijate en woo, dentro del plugin:

woocommerce/templatescheckout/form-checkout.php

1 me gusta

Encontré un posteo en otro blog, que uno que usa la plataforma magento tiene exactamente el mismo problema: https://magento.stackexchange.com/questions/330122/hack-in-magento-2-payment

La vesión de Woo que tengo actualmente es la 5.5.2, pero no recuerdo si cuando apareció el problema tenía una anterior.

revisaste aca?

woocommerce/templatescheckout/form-checkout.php

1 me gusta

Este es el código del archivo form-checkout.php

<?php
/**
 * Checkout Form
 *
 * This template can be overridden by copying it to yourtheme/woocommerce/checkout/form-checkout.php.
 *
 * HOWEVER, on occasion WooCommerce will need to update template files and you
 * (the theme developer) will need to copy the new files to your theme to
 * maintain compatibility. We try to do this as little as possible, but it does
 * happen. When this occurs the version of the template file will be bumped and
 * the readme will list any important changes.
 *
 * @see https://docs.woocommerce.com/document/template-structure/
 * @package WooCommerce\Templates
 * @version 3.5.0
 */

if ( ! defined( 'ABSPATH' ) ) {
	exit;
}

do_action( 'woocommerce_before_checkout_form', $checkout );

// If checkout registration is disabled and not logged in, the user cannot checkout.
if ( ! $checkout->is_registration_enabled() && $checkout->is_registration_required() && ! is_user_logged_in() ) {
	echo esc_html( apply_filters( 'woocommerce_checkout_must_be_logged_in_message', __( 'You must be logged in to checkout.', 'woocommerce' ) ) );
	return;
}

?>

<form name="checkout" method="post" class="checkout woocommerce-checkout" action="<?php echo esc_url( wc_get_checkout_url() ); ?>" enctype="multipart/form-data">

	<?php if ( $checkout->get_checkout_fields() ) : ?>

		<?php do_action( 'woocommerce_checkout_before_customer_details' ); ?>

		<div class="col2-set" id="customer_details">
			<div class="col-1">
				<?php do_action( 'woocommerce_checkout_billing' ); ?>
			</div>

			<div class="col-2">
				<?php do_action( 'woocommerce_checkout_shipping' ); ?>
			</div>
		</div>

		<?php do_action( 'woocommerce_checkout_after_customer_details' ); ?>

	<?php endif; ?>
	
	<?php do_action( 'woocommerce_checkout_before_order_review_heading' ); ?>
	
	<h3 id="order_review_heading"><?php esc_html_e( 'Your order', 'woocommerce' ); ?></h3>
	
	<?php do_action( 'woocommerce_checkout_before_order_review' ); ?>

	<div id="order_review" class="woocommerce-checkout-review-order">
		<?php do_action( 'woocommerce_checkout_order_review' ); ?>
	</div>

	<?php do_action( 'woocommerce_checkout_after_order_review' ); ?>

</form>

<?php do_action( 'woocommerce_after_checkout_form', $checkout ); ?>

Mientras resolves, podrias esconder todos esos campos con CSS (suponiendo que vas a continuar con la tienda online). De esa forma ningun cliente ve esos campos y no los completa.

Busca en el codigo de Woocommerce esta linea: “<?php echo esc_url( wc_get_checkout_url() ); ?>” y fijate a donde te lleva. Te tiene que aparecer una URL en algun momento. Si la ubicas, cambia la URL. Ahi es donde estan enviando los datos.

De igual forma, hay que depurar todo el sitio. Yo me fijaria tambien, si estas en un hosting compartido, los otros sitios (pueden estar infectados con lo mismo e infectar nuevamente el tuyo)

1 me gusta

Gracias Fer y Wanderlust, la verdad que me cansé de buscar el problema y pude recuperar el sitio con un backup.

1 me gusta

No se donde tenes hosteado el sitio pero seria bueno que lo hables con ellos porque si es como te dijeron arriba y es hosting compartido te puede volver a pasar, hasta puede ser alguien de los que estas compartiendo el server. Por las dudas asi te quedas tranquilo.

1 me gusta

Hola Chris, alegra escuchar que has levantado backup.

Sugiero que prestes atención en la seguridad en general de la aplicación, ya que puede ser una opción que el backup tenga algún virus no activo (pronto active), o bien que el nivel de seguridad del sitio permita que se repita la vulneración del mismo (espero que no)
Sugiero que del lado del servidor host: escaneen todos los archivos y solicitá confirmar que no acepten tls 1.0 y 1.1. . Mientras que de tu lado escanea la aplicación nuevamente + configures un firewall, instalá recaptcha google v3, actualiza wp, woo, themes, plugis, oculta el acceso al wp-login y si podes…y además tomá todas las medidas que fortalezcan la seguridad de la aplicación.

Saludos

1 me gusta

Hola como estas, según tu experiencia cuál es la mejor manera para ocultar el login. Vi opciones desde cambiar URLs a instalar plugins pero quiero saber por experiencia de otros que te parecio mejor? Gracias

WPS Hide Login es una alternativa interesante por ejemplo: WPS Hide Login – Plugin de WordPress | WordPress.org Español (Argentina) . Mi experiencia es buena con dicha herramienta, luego de probar otras.

Saludos

1 me gusta

Hola Chris. Resolviste el problema satisfactoriamente? Y como lo hiciste?

Por mis conocimientos no tiene porque entrar por tu login. Lo más probable es que entre por un login de una web con una contraseña poca segura porque su propietario no tiene nada que proteger. De ahí se pasa por las carpetas del server buscando los plugin de Woocommerce para introducir la etiqueta que oculta los modos de pago originales y mostrar el de él.
Así que él hacker ni siquiera sabe cuál es tu dominio ni a cuáles dominios ha afectado.

Mientras resuelven el problema., porque el principal problema lo tiene el propietario del hosting, al que tienes que informarle tal cual te lo escribo. Tú, si quieres seguir mostrando tu página quita todos los permisos al archivo nuevo y sano antes hackeado que es form-checkout.php. Así no podrá reescribirlo y tú podrás seguir mostrando la página. Inconvenientes son que nadie podrá pagar y Woocommerce no podrá actualizarse., pero no robaran los datos de las tarjetas de tus clientes.

Podríamos estar horas hablando de la seguridad en WP, hay miles de factores a tener en cuenta. Desde proveedor (hosting o vps), plugins, versiones de wp, buenas practicas, etc.

Les comparto algunos links. Saludos.

1 me gusta

No se está hablando de seguridad general en WordPress. Se está hablando de una vulnerabilidad concreta con dos modos operándis definidos en Woocommerce.
Aportar unos enlaces de seguridad general de WordPress., aporta lo mismo que invitar a un polo de limón.