- vừa được xem lúc

Hướng dẫn tìm bug wordpress plugin (phần 1)

0 0 38

Người đăng: cmOs

Theo Viblo Asia

Viblo May Fest 2021 là sự kiện nhằm thúc đẩy việc chia sẻ kiến thức, chung tay phát triển cộng đồng IT Việt Nam. Những người tham gia sự kiện sẽ nhận được những phần quà hấp dẫn đến từ ban tổ chức.

Mình tham gia sự kiện với loạt bài viết về cách tìm bug wordpress plugin. Bài viết được đúc kết từ quá trình tìm bug của mình và hy vọng rằng nó phần nào hữu ích với bạn đọc (những bạn muốn tìm bug mà chưa biết bắt đầu từ đâu và tiến hành như thế nào). Qua loạt bài này các bạn sẽ biết được cách nên bắt đầu từ đâu và tiến hành tìm bug như thế nào.

Loạt bài mình tạm thời chia làm 3 phần:

  • Phần 1: Tìm hiểu wordpress, cài đặt môi trường, các chức năng cơ bản nên biết.
  • Phần 2: Tìm hiểu plugin wordpress.
  • Phần 3: Tìm lỗi SQL injection.

Wordpress là gì?

Những bài viết dạng trả lời câu hỏi này có rất nhiều trên mạng như:

  • Tổng quan về wordpress
  • Wordpress là gì và để làm gì
  • Ưu và nhược điểm của wordpress
  • So sánh với những CMS khác như Drupal, Joomla

Mình sẽ không nhắc lại lý thuyết về phần này nữa các bạn có thể lên google tìm đọc. Trong phần này mình chỉ nêu tổng quát sao cho các bạn chưa tiếp cận wordpress bao giờ có thể hiểu được.

Wordpress là một phần mềm quản trị nội dung (CMS) mã nguồn mở và được code bằng PHP. Wordpress cho phép người dùng quản trị website mà không cần biết code là gì. Người quản trị chỉ cần vào đó viết bài theo ý mình còn lại đã có wordpress lo.

Wordpress có cộng đồng sử dụng lớn nên các vấn đề gặp phải khi cài đặt và sử dụng sẽ được giải quyết một cách dễ dàng. Không chỉ vậy, wordpress có một kho các plugin khổng lồ với gần 60 nghìn plugin. Với số lượng lớn như vậy, nó có thể giải quyết hầu hết các vấn đề mà người quản trị gặp phải.

Cài đặt môi trường

Sau khi có cái nhìn tổng quan về wordpress giờ là lúc cài môi trường để tìm bug. Trong bài mình thực hiện cài đặt trên Ubuntu 20.04 LTS. Để bài viết có tính chính xác nhất mình đã tạo một server Ubuntu mới tinh trên Google Cloud. Khi tạo xong server mình SSH tới server và tiến hành cập nhật hệ thống.

sudo apt update -y
sudo apt upgrade -y

Sau khi cập nhật hệ thống xong mình bắt đầu cài các dịch vụ cho web server: Apache, MySQL, PHP.

Cài đặt Apache

Chạy lệnh sau để cài đặt apache

sudo apt install apache2 -y

Đợi quá trình cài đặt chạy xong mình truy cập vào địa chỉ IP server để kiểm tra apache đã chạy chưa.

Nếu kết quả hiện ra như hình trên là apache đã hoạt động bình thường.

Cài đặt MySQL

Cài đặt MySQL

sudo apt install mysql-server -y 

Cài đặt bảo mật cho MySQL

sudo mysql_secure_installation

Cặt đặt độ mạnh mật khẩu cho MySQL

Chọn y để chọn mức độ mạnh của mật khẩu đăng nhập vào MySQL.

Tiếp đó là chọn mức độ mạnh của mật khẩu. Trong trường hợp này mình chọn độ mạnh ở mức thấp nhất (tức là 0).

There are three levels of password validation policy: LOW Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary file Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 0

Sau khi chọn độ mạnh xong, hệ thống yêu cầu nhập mật khẩu cho root user.

Xóa bỏ tài khoản nặc danh Sau khi cài xác nhận mật khẩu cho root user. Hệ thống hỏi có muốn xóa tài khoản nặc danh không ta chọn y để xóa tất cả tài khoản nặc danh khỏi MySQL.

Từ chối tài khoản root đăng nhập remote

Xóa database test

Cập nhật quyền

Sau khi thực hiện các bước cài đặt trên cuối cùng là cập nhật lại quyền MySQL.

Kiểm tra MySQL Sau khi cài đặt thành công tiến hành kiểm tra xem MySQL có hoạt động bình thường không bằng cách truy cập vào MySQL thông qua terminal.

sudo mysql

Kết quả như trên hình là đã cài đặt thành công.

Thêm tài khoản MySQL

Thông thường mình không dùng tài khoản root để đăng nhập mà mình sẽ tạo thêm một tài khoản nữa và cấp quyền cho tài khoản này.

Thêm tài khoản MySQL

CREATE USER 'admin'@'localhost' IDENTIFIED BY 'admin123123';

Gán quyền

GRANT ALL PRIVILEGES ON * . * TO 'admin'@'localhost';

Cập nhật lại quyền

FLUSH PRIVILEGES;

Kết quả

Thêm database

Ta sẽ tạo thêm database để lát nữa cài wordpress.

create database wordpress;

Vậy là đã cài đặt xong MySQL.

Cài đặt PHP

Chạy lệnh dưới đề cài đặt các gói cần thiết.

sudo apt install php libapache2-mod-php php-mysql -y

Đợi đến khi cài đặt xong ta kiểm tra PHP.

php -v

Cài đặt Apache tải file .php trước

Sửa file dir.conf

sudo vim /etc/apache2/mods-enabled/dir.conf

Thêm index.php vào file để được nội dung như dưới.

<IfModule mod_dir.c> DirectoryIndex index.php index.html index.cgi index.pl index.php index.xhtml index.htm
</IfModule>

Reload lại apache

sudo systemctl reload apache2

Tạo info.php

Trước tiên cần phải cài lại quyền sở hữu cho thư mục /var/wwww/html.

sudo chown -R www-data:$USER /var/www/html/

Cấp lại quyền

sudo chmod -R 775 /var/www/html/

Tạo file info.php

echo '<?= phpinfo();?>' > /var/www/html/info.php

Kiểm tra kết quả Sau khi tạo file info.php ta truy cập vào địa chỉ http://IP/info.php nếu có kết quả như hình dưới là đã cài PHP thành công.

Cài đặt Wordpress

Sau khi cài các gói cần thiết biến server thông thường thành web server. Tiếp đến ta tải và cài đặt wordpress, công việc cài đặt này rất đơn giản.

Tải wordpress Để tải wordpress ta có thể truy cập vào https://wordpress.org/download/ và chọn bản mới nhất. Trên server của mình không có giao diện nên mình sẽ thực hiện tải bằng lệnh.

Di chuyển vào thư mục DocumentRoot.

cd /var/www/html

Nếu không biết DocumentRoot của mình ở đâu thì chạy lệnh.

cat /etc/apache2/sites-enabled/000-default.conf | grep DocumentRoot

Tải Wordpress bản mới nhất

wget https://wordpress.org/latest.zip

Giải nén

unzip latest.zip

nếu hệ thống báo không tìm thấy unzip thì chạy lệnh dưới.

sudo apt install unzip -y

Chuyển tất cả file ra thư mục Root

rm -f index.html; mv wordpress/* .; rm -rf wordpress

Phân quyền cho thư mục

sudo chown -R www-data:$USER /var/www/html/; sudo chmod -R 775 /var/www/html/

Cài đặt wordpress

Để cho không phải nhớ địa chỉ IP mình sẽ sử dụng DNS local. Sửa file /etc/hosts (file trên máy tính của mình không phải trên server).

sudo vim /etc/hosts

Thêm dòng vào file hosts

35.220.200.32 wordpress.lab

Truy cập vào http://wodpress.lab sẽ hiện ra màn hình cài dặt.

Cấu hình database

Tại bước này ta điền thông tin database đã cài đặt ở trên.

Cấu hình Site

Bước này điền thông tin tùy ý, sau khi điền sau chọn nút Install WordPress.

Lưu ý: Mật khẩu wordpress mặc định là mật khẩu phức tạp. Nếu muốn mật khẩu không an toàn thì phải tích vào ô "Confirm use of weak password"

Sau khi cài đặt xong màn hình thông báo thành công sẽ hiện ra.

Giới thiệu tính năng

Để truy cập vào trang quản trị ta truy cập vào đường dẫn http://wordpress.lab/wp-login.php và đăng nhập với thông tin đã tạo ra ở bước cài đặt. Khi đăng nhập thành công màn hình quản trị của admin sẽ hiện ra.

Trong phần này mình sẽ không nêu toàn bộ tính năng mà chỉ tập trung vào các tính năng phục vụ cho quá trình tìm bug. Còn lại các bạn nên google tìm đọc thêm.

Các tính năng nên biết:

  1. Plugins: Thêm mới, kích hoạt, hủy plugin.
  2. User: Thêm mới, xóa, các vài trò của tài khoản.
  3. Post: Tạo mới, xóa, sửa.

Tính năng Plugins

Khi tìm bug trong wordpress plugin thì tính năng đầu tiên cần biết đó là plugins. Ta cần biết tìm cài đặt và sử dụng plugin thì mới có thể tìm bug trong plugin đó được.

Khi mới cài đặt wordpress mặc định sẽ có 2 plugin được cài theo nhưng chúng không được kích hoạt. Để thêm mới plugin ta chọn vào Add New và tìm kiếm plugin muốn cài đặt. Để cài đặt plugin nào đó ta chọn Instal Now.

Trong ví dụ này mình cài My Calendar

Sau khi cài xong ta active lên để plugin có thể hoạt động.

Tính năng User

Wordpress cho phép quản trị viên tạo nhiều tài khoản để quản trị trang web, với mỗi user có thể có các quyền khác nhau. Wordpress cung cấp 6 vai trò khác nhau.

  1. Super Administrator: Có quyền truy cập vào trang quản trị network và tất cả các tính năng khác.
  2. Administrator: Có quyền dùng tất cả các tính năng không có quyền truy cập vào network.
  3. Editor: Publish post và quản lý bài viết của các người dùng trong wordpress.
  4. Author: Publish post và quản lý bài biết của chính người này tạo ra.
  5. Contributor: Viết và quản lý bài viết của mình nhưng không được publish.
  6. Supscriber: Chỉ quản lý profille của chính họ.

Tính năng Post

Wordpress cho phép người dùng viết nội dung sau đó sẽ publish lên trang web.

Đến đây thì phần 1 cũng đã kết thúc. Mong rằng qua phần này các bạn mới hiểu được các tạo một web server, tạo database, cài đặt wordpress và dùng một số tính năng cơ bản.

Bình luận

Bài viết tương tự

- vừa được xem lúc

Linux Hardening and System Auditing (P1)

. Ngày nay, các hệ thống Linux được sử dụng trong suốt quá trình tính toán, từ các hệ thống nhúng đến hầu như tất cả các siêu máy tính, đồng thời đảm bảo một vị trí quan trọng trong các hệ thống máy chủ trên toàn thế giới. Linux đem lại cho người dùng khả năng tùy biến cao, sự ổn định và độ tin cậy

0 0 43

- vừa được xem lúc

Tìm bug với Eyewitness

. Chào các bạn, trong bài này mình sẽ viết về tool Eyewitness. Eyewiteness có tính năng chính là chụp hình lại giao diện trang web sau đó tạo một report thông qua file .

0 0 35

- vừa được xem lúc

Tôi đã debug code PHP như nào!

. Nhân dịp đầu xuân năm mới, mình xin gửi lời chúc an lành tới tất cả thành viên của viblo.asia.

0 0 57

- vừa được xem lúc

OAuth 2.0 và vài vấn đề bảo mật liên quan (Phần 2)

III. Demo một số tấn công vào cơ chế OAuth. Trong phần này mình sẽ demo một số kiểu tấn công của OAuth dựa trên các bài lab được thiết kế bởi Portswigger. a.

0 0 97

- vừa được xem lúc

OAuth 2.0 và vài vấn đề bảo mật liên quan (Phần 1)

Trong thời đại công nghệ ngày nay, việc đăng nhập bằng các tài khoản của các nền tảng khác không phải điều gì xa lạ đối với mỗi người dùng chúng ta. Việc này khả thi nhờ một vài cơ chế khác nhau, một trong số đó là OAuth 2.

0 0 50

- vừa được xem lúc

Hành trình pass OSCP trong lần thi đầu tiên (2020)

Vào một chiều đông 17/12/2020, tôi nhận được cái email thông báo đã pass OSCP ngay lần thử đầu tiên. Sau đó, tôi bắt đầu tìm hiểu về Security và quyết định học cái gì đó cho riêng mình.

0 0 195