Критичен бъг в Elementor може да засегне 500 000 сайта

Добре де. Така не се ли влошава качеството и тези бизнеси? Всеки един даунтайм, кофти изпълнение на софтуера, и всичко, което клиента може да забележи, не го ли дръпва назад от съответната услуга и продукт.
Лол, не се връзвай. Станимирчо в америка само бъбрека може да си продаде.
 
Преди време имаше подобна простотия, още по-брутална, пак на елементор - RCE , без да е нужно да си логнат, може да инсталираш плъгин на сайта.

4
435
436
437
438
439
440
PHP:
add_action( 'admin_init', function() {
if ( wp_doing_ajax() &&
isset( $_POST['action'] ) &&
isset( $_POST['_nonce'] ) &&
[B]wp_verify_nonce( $_POST['_nonce'], Ajax::NONCE_KEY )[/B]
) {
$this->maybe_handle_ajax();


Не ти трябва даже да си логнат!!!!!! и вече , имаш достъп до един суич, дето ти трябва това:
PHP:
case 'elementor_upload_and_install_pro':
            $result = $this->upload_and_install_pro();

Липсват всякакви проверки. И вече като се колне upload_and_install_pro - ето го :

PHP:
private function upload_and_install_pro() {
    $result = [];
    $error_message = __( 'There was a problem uploading your file', 'elementor' );

    if ( empty( $_FILES['fileToUpload'] ) ) {
        $result = [
            'status' => 'error',
            'payload' => [
                'error_message' => $error_message,
            ],
        ];

        return $result;
    }

    if ( ! class_exists( 'Automatic_Upgrader_Skin' ) ) {
[B]        require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';[/B]
    }

    $skin = new Automatic_Upgrader_Skin();
    $upgrader = new Plugin_Upgrader( $skin );
    $upload_result   = $upgrader->install( $_FILES['fileToUpload']['tmp_name'], [ 'overwrite_package' => false ] );


И:
$activated = activate_plugin( WP_PLUGIN_DIR . '/elementor-pro/elementor-pro.php', false, false, true );

И си готов, пейлоуда е качен.


Та то е ясно - функционално програмиране, няма как да се меинтеинва голям код бейз без подобни глупости, виждате кода какъв мазаляк е. Сигурен съм, че подобен code по размери който и да го пише, ще има проблеми заради липсата на OOP ( истинско, не това дето правят с функциите )




 

Горе