Tập tành hack lấy mật khẩu Drupal admin bằng PHP

7th May 2022
Table of contents

Một số nhà cung cấp hosting không cho phép truy cập SSH vào máy chủ web nơi trang web Drupal được cài đặt, điều này khiến bạn không thể khôi phục mật khẩu tài khoản quản trị viên của Drupal thông qua dòng lệnh drush.

Phương pháp sau đây sẽ được sử dụng như một "phương pháp thay thế" khi các kỹ thuật khôi phục mật khẩu dựa trên dòng lệnh drush không hoạt động được.

Phương pháp đặt lại mật khẩu được mô tả bên dưới sử dụng tập lệnh PHP phải được tải lên máy chủ web để cài đặt lại mật khẩu quản trị viên. 

Bên dưới, tập lệnh PHP thực thi một script đầy đủ để có quyền truy cập vào các chức năng cần thiết tạo mật khẩu quản trị và sau đó cập nhật cơ sở dữ liệu bằng mật khẩu mới mà bạn chỉ định qua tham số trên URL khi bạn thực thi tập lệnh thông qua trình duyệt web .

Lưu ý: việc để lại tập lệnh đặt lại mật khẩu này trên máy chủ của bạn sau khi đặt lại mật khẩu tạo thành một lỗ hổng bảo mật rất quan trọng cho phép bất kỳ ai đặt lại mật khẩu quản trị viên của bạn. Sử dụng tập lệnh này cẩn thận và luôn xóa tập lệnh sau khi bạn sử dụng xong.

Bước 1

Đầu tiên, tạo một tệp có tên ngẫu nhiên (gh34tu9.php chẳng hạn).

Bước 2

Sao chép và dán các nội dung sau vào file php trên.

<?php
use Drupal\Core\DrupalKernel;
use Symfony\Component\HttpFoundation\Request;

if (pathinfo(__FILE__, PATHINFO_FILENAME) == 'admin-pass-reset') {
  die('Please change your file name to a random string to continue');
}

// Boot Drupal.
$autoloader = require __DIR__ . '/autoload.php';

$request = Request::createFromGlobals();
$kernel = DrupalKernel::createFromRequest($request, $autoloader, 'prod', FALSE);
$kernel->boot();

// Get password hasher service.
$password_hasher = $kernel->getContainer()->get('password');

// Hash password.
if (isset($_GET['pass']) && !empty($_GET['pass'])) {
 $newhash =  $password_hasher->hash($_GET['pass']);
}
else {
  die('Retry with ?pass=PASSWORD set in the URL');
}

// Update user password.
$updatepass = Drupal::database()->update('users_field_data')
  ->fields(array(
    'pass' => $newhash,
//  'name' => 'admin',
//    'mail' => '[email protected]'
  ))
  ->condition('uid', '1', '=')
  ->execute();

// Clean user 1 cache.
Drupal::cache('entity')->delete('values:user:1');

print "Done. Please delete this file as soon as possible";  

Bước 3

Tải tệp lên thư mục gốc của thư mục cài đặt Drupal

Thư mục root / cài đặt Drupal tức là nơi chứa index.php, update.php, robots.txt và các tệp và thư mục khác.

Bước 4

Thực thi tập lệnh, bằng cách chạy URL trong trình duyệt web như sau:

http://example.com/gh34tu9.php?pass=mypassword

Trong URL trên:

- thay thế example.com bằng tên miền thực của bạn.

- thay thế gh34tu9.php bằng tên tệp thực mà bạn đã chỉ định ở bước một ở trên,

- thay thế mypassword bằng mật khẩu mới mong muốn.

Lưu ý: Bạn nên chọn mật khẩu có chứa các chữ cái và chữ số viết hoa, viết thường và có độ dài ít nhất 12 chữ số. Tránh ký tự đặc biệt.

Nếu tập lệnh thực thi thành công, bạn sẽ thấy dòng chữ "Xong" trong trình duyệt web của mình.

Mật khẩu của tài khoản quản trị được tạo khi cài đặt Drupal (tức là người dùng / 1) sẽ được thay đổi thành "mypassword" (hoặc bất kỳ giá trị nào bạn chỉ định).

Cuối cùng, xóa tệp khỏi thư mục gốc cài đặt Drupal.
Đặt lại tên người dùng của tài khoản quản trị viên

Nếu bạn không thể nhớ (hoặc đơn giản là không biết) tên người dùng của tài khoản quản trị viên, trong tập lệnh ở trên, hãy thay đổi // 'name' => 'admin',  thành 'name' => 'admin' và tên người dùng cũng sẽ được đổi thành "admin".

Bạn cũng có thể đặt lại địa chỉ email của quản trị viên theo cách tương tự, bằng cách "bỏ ghi chú" (xóa //) dòng cho địa chỉ email trong tập lệnh ở trên.

Bạn thấy bài viết này như thế nào?
0 reactions

Add new comment

Image CAPTCHA
Enter the characters shown in the image.
Câu nói tâm đắc: “Điều tuyệt với nhất trong cuộc sống là làm được những việc mà người khác tin là không thể!”

Related Articles

Master list (in progress) of how to get parts of fields for use in Twig templates. I’m always having to look these up, so I thought I’d hash them out and write them down.

Litespeed Cache là plugin WordPress dùng để kết hợp với Web Server LiteSpeed nhằm tăng tốc website WordPress của bạn gấp nhiều lần

In this article, we are going to see how some tools & libraries will make people's lives easier during the development & code review process.

In this tutorial, you will learn how to improve the custom code, theme and module, and general code development by using the pre-commit hook on git

Trước khi tìm hiểu xem PHP Code Sniffer là gì thì các bạn cần phải nắm được coding convention là gì đã.