Making the default “Latest Posts” WordPress Widget Show Thumbnails

1) editing core files is not a good idea
You should only work/modify files within wp-content or below that folder

2) Instead of tweaking the core widget, it is much easier to create a custom widget class with for your own needs.
You can simply build your own plugin, which only uses a lightweight setup.
Create a folder, do the basic setup of a plugin,

Put this in a file called “stack-overflow-example-widget.php”, name the folder the same, and tadaa.. there you have your plugin. CSS should simply go into your theme css, or add a custom stylesheet later. I haven’t tested this code, but it should be working.

<?php
/*
Plugin Name: Stack Overflow Example Widget
Plugin URI:  https://wordpress.stackexchange.com/questions/333724/making-the-default-latest-posts-wordpress-widget-show-thumbnails
Description: A widget to show the latest posts with a thumbnail.
Version:     1.0.0
Author:      user
Author URI:  https://www.example.com
License:     GPL2
License URI: https://www.example.com/imprint
Text Domain: yourtextdomain
Domain Path: /languages
*/

if(!defined('ABSPATH')) {
    exit('NaNa nAnA NaNa nAnA NaNa nAnA Batman!');
}

$dir = plugin_dir_path(__FILE__);

/* Init the plugin Textdomain, you have to google that, it's easy */
require $dir . 'textdomain.php';

// Register the Widget in WordPress
function so_wp_register_widgets() {
    // Give it an ID
    register_widget('My_custom_widget');
}
add_action('widgets_init','so_wp_register_widgets');

//Widget Class for all custom post type items
class My_custom_widget extends WP_Widget {

// Widget Construct
function __construct() {
    parent::__construct(
        'so-example-widget', // Id
        __('Custom Latest Posts', 'yourtextdomain'), // Name
        array('description' => __( 'A widget to show the latest posts with a thumbnail.', 'yourtextdomain'))
    );
}

// Widget Init
function widget($args, $instance) {
    extract( $args );
    // these are the widget options
    $title = apply_filters('widget_title', $instance['title']);
    echo $before_widget;
    // Check if title is set
    if ( $title ) {
        echo $before_title . $title . $after_title;
    }
    $this->so_latest_posts_with_image(); // Call current Class, request Method
    echo $after_widget;
}

// Update Instance
function update($new_instance, $old_instance) {
    $instance = $old_instance;
    $instance['title'] = strip_tags($new_instance['title']);
    return $instance;
}   

// Widget Backend Form
function form($instance) {

    // Check values
    if( $instance) {
        $title = esc_attr($instance['title']);
    } else {
        $title="";
    } ?>
    <p>
        <label for="<?php echo $this->get_field_id('title'); ?>">
        <?php _e('Title', 'yourtextdomain'); ?></label>
        <input class="widefat" id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" type="text" value="<?php echo $title; ?>" />
    </p><?php
}

// HTML Widget Output
function so_latest_posts_with_image() {

    // Custom WP Query Arguments
    $custom_args = array(
        'post_type' => 'posts',
        'posts_per_page' => '96',
        'orderby' => 'taxonomy, name',
        'order' => 'ASC'
    );
    $loop = new WP_Query( $custom_args );
    // Setup Layout und Loop
    $html="<div class="so-wp-widget-wrap">";
        $html .= '<ul class="so-wp-posts-all">';
        while ( $loop->have_posts() ) : $loop->the_post();

            $html .= '<li class="so-wp-posts-item">';
                $html .= '<a href="'.get_the_permalink()'" class="preview-image">'.get_the_post_thumbnail().'</a>';
                $html .= '<a href="'.get_the_permalink().'" class="so-wp-posts-permalink" title="'.get_the_title().'">'.get_the_title().'</a>';
            $html .= '</li>';

        endwhile;
        $html .= '</ul>';
    $html .= '</div>';

    echo $html;
    wp_reset_postdata();
    }
}