Index: wp-includes/functions.php
===================================================================
--- wp-includes/functions.php	(revision 57623)
+++ wp-includes/functions.php	(working copy)
@@ -7441,6 +7441,19 @@
 }
 
 /**
+ * Check whether user registration is disabled and password reset is also disabled
+ * for existing users, and in this case, redirects to login page.
+ *
+ * @since Future
+ */
+function wp_redirect_if_registration_and_reset_disabled() {
+	if ( apply_filters( 'disable_password_reset', false ) ) {
+		wp_safe_redirect( 'wp-login.php' );
+		exit();
+	}
+}
+
+/**
  * Returns RegEx body to liberally match an opening HTML tag.
  *
  * Matches an opening HTML tag that:
Index: wp-login.php
===================================================================
--- wp-login.php	(revision 57376)
+++ wp-login.php	(working copy)
@@ -823,6 +823,7 @@
 
 	case 'lostpassword':
 	case 'retrievepassword':
+		wp_redirect_if_registration_and_reset_disabled();
 		if ( $http_post ) {
 			$errors = retrieve_password();
 
@@ -925,6 +926,7 @@
 
 	case 'resetpass':
 	case 'rp':
+		wp_redirect_if_registration_and_reset_disabled();
 		list( $rp_path ) = explode( '?', wp_unslash( $_SERVER['REQUEST_URI'] ) );
 		$rp_cookie       = 'wp-resetpass-' . COOKIEHASH;
 
