Tải bản đầy đủ (.pdf) (77 trang)

Xây Dựng Công Cụ Nhận Dạng Tấn Công Ứng Dụng WordPress Dựa Trên Sự Bất Thường (LV thạc sĩ)

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.84 MB, 77 trang )

HỌC VIỆN CÔNG NGHỆ BƢU CHÍNH VIỄN THÔNG
---------------------------------------

NGUYỄN TRỌNG NGHĨA

XÂY DỰNG CÔNG CỤ NHẬN DẠNG TẤN CÔNG
ỨNG DỤNG WORDPRESS DỰA TRÊN
SỰ BẤT THƢỜNG

LUẬN VĂN THẠC SĨ KỸ THUẬT
(Theo định hướng ứng dụng)

THÀNH PHỐ HỒ CHÍ MINH – 2017


HỌC VIỆN CÔNG NGHỆ BƢU CHÍNH VIỄN THÔNG
---------------------------------------

NGUYỄN TRỌNG NGHĨA

XÂY DỰNG CÔNG CỤ NHẬN DẠNG TẤN CÔNG
ỨNG DỤNG WORDPRESS DỰA TRÊN
SỰ BẤT THƢỜNG
Chuyên ngành : HỆ THỐNG THÔNG TIN
Mã số: 60.48.01.04

LUẬN VĂN THẠC SĨ KỸ THUẬT
(Theo định hướng ứng dụng)
NGƢỜI HƢỚNG DẪN KHOA HỌC: PGS.TS. TRẦN VĂN HOÀI

THÀNH PHỐ HỒ CHÍ MINH – 2017




i

LỜI CAM ĐOAN
Tôi cam đoan luận văn là công trình nghiên cứu của bản thân.
Các số liệu, kết quả nêu trong luận văn này là trung thực và chƣa từng đƣợc
ai công bố trong bất kỳ luận văn nào trƣớc đây.

TP. HCM, ngày 22 tháng 5 năm 2017
Học viên thực hiện luận văn

Nguyễn Trọng Nghĩa


ii

LỜI CẢM ƠN
Trƣớc tiên, tôi xin bày tỏ lòng biết ơn chân thành đến Thầy PGS.TS Trần
Văn Hoài đã tận tình chỉ dạy, hƣớng dẫn và tạo mọi điều kiện thuận lợi để tôi hoàn
thành tốt luận văn này. Đồng thời tôi cũng xin gởi lời cảm ơn đến anh Huỳnh
Hoàng Tân đã luôn nhiệt tình chỉ dẫn, bên cạnh tôi trong suốt thời gian tôi thực hiện
luận văn. Tôi cũng xin gửi lời cảm ơn đến Quý Thầy Cô tại Học Viện Công Nghệ
Bƣu Chính Viễn Thông Cơ sở TP. Hồ Chí Minh đã tận tình giảng dạy và trang bị
cho tôi những kiến thức quý báu trong quá trình tham gia học tập tại Trƣờng.
Tôi chân thành biết ơn sâu sắc đến gia đình và bạn bè đã động viên và giúp
đỡ tôi hoàn thành khóa học này.

TP. HCM, ngày 22 tháng 5 năm 2017
Học viên thực hiện luận văn


Nguyễn Trọng Nghĩa


iii

MỤC LỤC
Lời cam đoan ................................................................................................................i
Lời cảm ơn ................................................................................................................. ii
Mục lục ...................................................................................................................... iii
Danh mục các thuật ngữ, chữ viết tắt ..........................................................................v
Danh sách bảng ..........................................................................................................vi
Danh sách hình vẽ .................................................................................................... vii
Mở đầu ........................................................................................................................1
CHƢƠNG 1 – TỔNG QUAN VỀ BẢO MẬT VÀ CÁC GIẢI PHÁP NHẬN
DẠNG TẤN CÔNG ỨNG DỤNG WEB ...................................................................3
1.1. Những vấn đề bảo mật Website và CMS ......................................................3
1.1.1. Khái niệm về Website và CMS ...............................................................3
1.1.2. Kiến trúc của Wordpress .........................................................................5
1.1.3. Mô hình hoạt động của ứng dụng web ....................................................8
1.1.4. Vấn đề bảo mật Website và CMS ............................................................9
1.2. Phƣơng pháp bảo mật quan trọng ................................................................10
1.2.1. Danh sách rủi ro bảo mật cho ứng dụng Wordpress OWASP ...............14
1.2.2. Các phƣơng pháp nhận dạng tấn công ứng dụng web ...........................21
1.3. Học máy .......................................................................................................23
1.3.1. Tổng quan ..............................................................................................23
1.3.2. Các ứng dụng của học máy ....................................................................25
CHƢƠNG 2 – CÁC MÔ HÌNH NHẬN DẠNG TẤN CÔNG ỨNG DỤNG
WORDPRESS DỰA TRÊN SỰ BẤT THƢỜNG ....................................................26
2.1. Định nghĩa tổng quát về sự bất thƣờng .......................................................26

2.2. Các mô hình nhận dạng ...............................................................................29
2.2.1. Cấu trúc yêu cầu (Request structure) .....................................................29
2.2.2. Các giá trị yêu cầu (Request values) .....................................................30
2.2.3. Phản hồi (Response) ..............................................................................32
2.2.4. Cấu trúc phiên (Session structure) .........................................................33
2.2.5. Hồ sơ ngƣời dùng (User profile) ...........................................................35
2.2.6. Tổng quan hệ thống (System overview) ................................................36
CHƢƠNG 3 – PHƢƠNG PHÁP HỌC MÁY TRONG NHẬN DẠNG TẤN CÔNG
ỨNG DỤNG WORDPRESS DỰA TRÊN SỰ BẤT THƢỜNG .............................38


iv

3.1. Nhận xét và đánh giá mô hình .....................................................................38
3.2. Đề xuất mô hình nhận dạng .........................................................................43
3.3. Phƣơng pháp tạo tập dữ liệu huấn luyện .....................................................44
3.4. Mô hình và thuật toán kết hợp nhận dạng ...................................................46
3.5. Mô hình nhận dạng ......................................................................................51
CHƢƠNG 4 – CÀI ĐẶT, THỰC NGHIỆM VÀ ĐÁNH GIÁ .................................55
4.1. Thực nghiệm ................................................................................................57
4.2. Kết quả thực nghiệm và đánh giá ................................................................60
KẾT LUẬN VÀ HƢỚNG PHÁT TRIỂN ................................................................64
TÀI LIỆU THAM KHẢO .........................................................................................65
PHỤ LỤC I. DANH SÁCH MÃ TRẠNG THÁI HTTP ..........................................67


v

DANH MỤC CÁC THUẬT NGỮ, CHỮ VIẾT TẮT
Viết tắt


Tiếng Anh

Tiếng Việt

CMS

Content Management System

Hệ quản trị nội dung

CSRF

Cross-Site Request Forgery

Giả mạo yêu cầu

DDoS

Distributed Denial of Service

Tấn công từ chối dịch vụ phân tán

HTML

Hyper Text Markup Language

Ngôn ngữ đánh dấu siêu văn bản

HTTP


Hypertext Transfer Protocol

Giao thức truyền tải siêu văn bản

ICD

Idealized Character Distribution

Sự phân bố ký tự lý tƣởng

IDS

Intrusion Detection System

Hệ thống phát hiện xâm nhập

NFA

Non-deterministic finite automaton Ôtômát hữu hạn không đơn định

NIDS

Network-based Intrusion Detection Hệ thống phát hiện xâm nhập trên
System
mạng

OWASP

Open Web Application Security

Project

Dự án mở về bảo mật ứng dụng
web

PHP

Hypertext Preprocessor

Ngôn ngữ lập trình PHP

RBID

Rule-based Intrusion Detection

Phát hiện xâm nhập dựa vào các
luật

SQL

Structured Query Language

Ngôn ngữ truy vấn cấu trúc

SSL

Secure Sockets Layer

Giao thức bảo mật SSL


TCP

Transmission Control Protocol

Giao thức điều khiển truyền vận

URL

Uniform Resource Locator

Định vị Tài nguyên thống nhất

URI

Uniform Resource Identifier

Định dạng tài nguyên thống nhất

XML

eXtensible Markup Language

Ngôn ngữ đánh dấu mở rộng

XSS

Cross-Site Scripting

Thực thi mã lệnh xấu



vi

DANH SÁCH BẢNG
Bảng 3.1. Đánh giá mô hình cấu trúc yêu cầu

38

Bảng 3.2. Đánh giá mô hình các giá trị của yêu cầu

39

Bảng 3.3. Đánh giá mô hình phản hồi

40

Bảng 3.4. Đánh giá mô hình cấu trúc phiên

41

Bảng 3.5. Đánh giá mô hình hồ sơ ngƣời dùng

42

Bảng 3.6. Đánh giá mô hình tổng quan hệ thống

43

Bảng 4.1. Thống kê mẫu dữ liệu trong tập dữ liệu kiểm tra


58

Bảng 4.2. Kết quả dự báo trong trƣờng hợp 1

60

Bảng 4.3. Kết quả dự báo trong trƣờng hợp 2

62


vii

DANH SÁCH HÌNH VẼ
Hình 1.1. Quy trình xử lý dữ liệu Wordpress

4

Hình 1.2. Kiến trúc tổng quan của Wordpress
Hình 1.3. Chi tiết nạp môi trƣờng trong Wordpress

5
6

Hình 1.4. Các giá trị cần có để kết nối cơ sở dữ liệu của Wordpress

6

Hình 1.5. Cấu trúc tổ chức thƣ mục mặc định của Wordpress
Hình 1.6. Cấu trúc tổ chức thƣ mục hiện đại của Wordpress


7
7

Hình 1.7. Mô hình hoạt động của ứng dụng web
Hình 1.8. Các mã salts và khóa bảo mật trong Wordpress
Hình 1.9. Phƣơng pháp phát hiện tấn công ứng dụng web

9
13
22

Hình 2.1. Hình minh họa sự bất thƣờng trong dữ liệu
Hình 2.2. Hình minh họa các kỹ thuật cơ bản trong nhận dạng bất thƣờng
Hình 2.3. Phân loại sự bất thƣờng
Hình 2.4. Hình mô tả phân loại bất thƣờng
Hình 3.1. Thông tin chi tiết một lỗ hổng đối với My Gaming Ladder Combo

26
28
28
29

System 7.5 ngày 07/4/2017 bị tấn công SQL Injection

44

Hình 3.2. Ví dụ một phần tử trong nhật ký truy cập máy chủ web
Hình 3.3. Mô hình chức năng nhận dạng bất thƣờng
Hình 3.4. Một phần dữ liệu đƣợc trích xuất trong giai đoạn tiền xử lý

Hình 3.5. Một phần dữ liệu mô tả kết quả dựng mô hình
Hình 3.6. Mô hình chi tiết giai đoạn dự báo lớp
Hình 4.1. Cách cài plugin từ thƣ viện trên Dashboard
Hình 4.2. Cách cài plugin từ file .zip của plugin
Hình 4.3. Cách kích hoạt plugin khi đã copy
Hình 4.4. Tiền xử lý dữ liệu huấn luyện

46
51
53
53
54
55
56
57
58

Hình 4.5. Tiền xử lý dữ liệu kiểm tra
Hình 4.6. Sử dụng dữ liệu huấn luyện để dựng mô hình
Hình 4.7. Sử dụng mô hình để dự báo lớp cho dữ liệu kiểm tra
Hình 4.8. Biểu đồ tỉ lệ dự báo từng loại tấn công trƣờng hợp 1

59
59
60
61

Hình 4.9. Biểu đồ tỉ lệ dự báo từng loại tấn công trƣờng hợp 2

63



1

MỞ ĐẦU
CMS (Content Management System) hay còn gọi là hệ thống quản lý nội
dung đƣợc sử dụng nhằm mục đích giúp ngƣời quản trị trang web dễ dàng quản lý,
chỉnh sửa nội dung. Nội dung có thể là tin tức điện tử, báo chí hay các media hình
ảnh, video, ... Nó giúp tiết kiệm thời gian quản lý, chi phí vận hành và bảo trì nên
hiện nay đƣợc sử dụng rất phổ biến, bên cạnh đó còn tiết kiệm đƣợc chi phí xây
dựng trang web. Trong những năm gần đây, các trang web đƣợc xây dựng dựa trên
nền tảng Wordpress ngày càng chiếm ƣu thế. Hệ thống CMS của Wordpress đƣợc
sử dụng rất phổ biến và chiếm thị phần cao nhất so với các hệ thống khác 59,1%,
trong khi Joomla chiếm 6,9%, Drupal chiếm 4,7%, Magento chiếm 2,5% và Blogrer
chiếm 2,2% [15] theo số liệu khảo sát từ đầu tháng 5 năm 2017 của w3techs, một
trang web chuyên cung cấp các nguồn thông tin đáng tin cậy và phổ biến nhất về sử
dụng công nghệ web. Hằng ngày có hơn 600 site Wordpress đƣợc tạo ra và trên
thực tế có hơn 27% các trang web trên thế giới đang sử dụng nền tảng của
Wordpress.
Tuy nhiên, bên cạnh sự phát triển mạnh mẻ Wordpress luôn tìm ẩn các lỗ
hổng bảo mật bên trong hệ thống và các ứng dụng đƣợc cài đặt. Những năm gần
đây, các ứng dụng nói chung và các ứng dụng web nói riêng đang là mục tiêu tấn
công phổ biến [5] của bọn tin tặc nhằm khai thác các lỗ hổng. Qua tìm hiểu và
nghiên cứu danh sách các lỗ hổng ứng dụng đã bị khai thác tại trang web nổi tiếng
và cơ sở dữ liệu các lỗ hổng đã đƣợc công bố tại [16]
dành riêng cho Wordpress có thể thấy kẻ tấn công đang có xu hƣớng tập trung tấn
công vào các ứng dụng của Wordpress nhƣ nhằm vào các plugin đƣợc viết với mã
không an toàn về bảo mật. Các hình thức tấn công chủ yếu tập trung vào các kiểu
tấn công phổ biến nằm trong danh sách OWASP Top 10 [11] nhƣ: chèn mã, thực thi
mã lệnh xấu, phá vỡ xác thực và quản lý phiên làm việc… Do đó sớm phát hiện các

dấu hiệu tấn công từ bên ngoài vào hệ thống để đƣa ra chính sách cách ly hoặc theo
dõi tự động là một nhu cầu cấp thiết. Chính vì vậy, tôi chọn đề tài “Xây dựng công


2

cụ nhận dạng tấn công ứng dụng Wordpress dựa trên sự bất thƣờng” để làm đề tài
luận văn.
Qua tìm hiểu thông tin trên các trang diễn đàn, trang chuyên bảo mật
Wordpress trong nƣớc dễ dàng nhận thấy đội ngũ phát triển ứng dụng và các chuyên
gia bảo mật chúng ta ít tham gia và xây dựng các plugin bảo mật xuất bản lên kho
plugin chính thức của Wordpress tại Phần lớn chỉ
nghiên cứu các giải pháp sẵn có và triển khai áp dụng vào hiện trạng đơn vị, chƣa
tập trung nghiên cứu các giải pháp mới để phát hiện và ngăn chặn các tấn công mới.
Để bảo vệ các ứng dụng Wordpress cần xây dựng một lớp bảo vệ có khả năng tùy
biến cao, dễ dàng cài đặt và cập nhật cơ chế phát hiện kịp thời nhằm sớm nhận biết
các dấu hiệu bất thƣờng của các tấn công mới.
Đề tài này tập trung nghiên cứu và xây dựng công cụ nhận dạng các tấn công
phổ biến từ bên ngoài vào hệ thống Wordpress dựa trên các mô hình học các hành
vi bình thƣờng, từ đó đƣa ra các thông báo, chính sách ngăn chặn hoặc cách ly theo
dõi tự động trên hệ thống.
Phạm vi luận văn nghiên cứu các dấu hiệu bất thƣờng của các truy vấn từ bên
ngoài về dữ liệu học dựa trên phân tích các yêu cầu HTTP đƣợc gởi tới các ứng
dụng Wordpress.
Ý nghĩa khoa học: kết quả nghiên cứu có thể dùng làm báo cáo tổng quan về
bảo mật, tài liệu tham khảo về các giải pháp nhận dạng tấn công, tài liệu kỹ thuật
cho việc xây dựng hệ thống nhận dạng bất thƣờng, phát hiện xâm nhập các ứng
dụng Wordpress.
Ý nghĩa thực tiễn của đề tài: sản phẩm của đề tài đƣợc triển khai thử nghiệm
trên nền tảng Wordpress. Sản phẩm đạt hiệu quả cao sẽ là cơ sở để xây dựng hệ

thống an toàn an ninh thông tin cho các Website chạy trên nền tảng Wordpress.


3

CHƢƠNG 1 – TỔNG QUAN VỀ BẢO MẬT VÀ CÁC
GIẢI PHÁP NHẬN DẠNG TẤN CÔNG ỨNG DỤNG WEB
Chƣơng này, trình bày tổng quan về vấn đề bảo mật Website, hệ thống quản
lý nội dung CMS, kiến trúc Wordpress, mô hình hoạt động của ứng dụng web,
phƣơng pháp bảo mật quan trọng, tổng quan học máy và các ứng dụng của học máy.

1.1. Những vấn đề bảo mật Website và CMS
1.1.1. Khái niệm về Website và CMS
Website là một “trang web” trên mạng Internet, là nơi giới thiệu những thông
tin, hình ảnh về một tổ chức, đơn vị, doanh nghiệp… và sản phẩm, dịch vụ của họ
để khách hàng (ngƣời dùng) có thể truy cập ở bất kỳ nơi đâu, bất cứ lúc nào khi
đƣợc kết nối Internet. Website là tập hợp nhiều trang [web page]. Khi xây dựng
Website nghĩa là đang xây dựng nhiều trang thông tin, catalog sản phẩm, dịch vụ...
Để tạo nên một Website cần phải có 3 yếu tố cơ bản sau:
 Tên miền (domain – là địa chỉ Website để truy cập từ trình duyệt).
 Nơi lƣu trữ Website (hosting – là nơi chứa nội dung hay dữ liệu Website).
 Nội dung các trang thông tin [web page].
Trong khi đó, CMS (Content Management System) là hệ thống quản trị nội
dung nhằm mục đích giúp ngƣời quản trị dễ dàng quản lý, chỉnh sửa nội dung.
Nó cung cấp cho chúng ta các tính năng nhƣ hệ thống quản lý media, hình ảnh, trình
soạn thảo văn bản và điều đáng nói nhất là khả năng tùy biến giao diện phải cao
[17]. Có rất nhiều CMS trên thế giới, nhƣng thông dụng nhất hiện nay vẫn là
Wordpress. Wordpress là một phần mềm nguồn mở (Open Source Software) đƣợc
viết bằng ngôn ngữ lập trình PHP (Hypertext Preprocessor) và sử dụng hệ quản trị
cơ sở dữ liệu MySQL. Wordpress đƣợc ra mắt lần đầu tiên vào ngày 27/5/2003 bởi

tác giả Matt Mullenweg và Mike Little. Hiện nay Wordpress đƣợc sở hữu và phát
triển bởi công ty Automattic có trụ sở tại San Francisco, California thuộc hợp chủng
quốc Hoa Kỳ.


4

Wordpress đƣợc xem nhƣ là một hệ quản trị nội dung vƣợt trội để hỗ trợ
ngƣời dùng tạo ra nhiều thể loại Website khác nhau nhƣ blog, Website tin tức/tạp
chí, giới thiệu doanh nghiệp, bán hàng – thƣơng mại điện tử, thậm chí với các loại
Website có độ phức tạp cao nhƣ đặt phòng khách sạn, thuê xe, đăng dự án bất động
sản,…Hầu nhƣ mọi hình thức Website với quy mô vừa và nhỏ đều có thể triển khai
trên nền tảng Wordpress. Nhƣng không có nghĩa là Wordpress chỉ thích hợp với các
dự án nhỏ, mà hiện nay có tới khoảng 27% Website trong danh sách 100 Website
lớn nhất thế giới sử dụng mã nguồn Wordpress. Ví dụ nhƣ trang tạp
chí TechCrunch, Mashable, CNN, BBC America, Variety, Sony Music, MTV
News, Bata, Quartz. Ở Việt Nam hiện nay Wordpress đang chiếm ƣu thế nhất bởi
tính dễ sử dụng, dễ xây dựng và nâng cấp thêm các chức năng mới thông qua một
thành phần gọi là plugin.
Plugin là một trình cắm thêm vào Website để bổ sung các chức năng. Plugin
đơn giản là những plugin không cần tƣơng tác với cơ sở dữ liệu, nhƣ plugin tạo ra
các icons social, chèn link để truy cập tới facebook đƣợc chỉ định. Ngƣợc lại những
plugin phức tạp có tƣơng tác với cơ sở dữ liệu, hỗ trợ tạo ra các trang shopping,
social network,…Hình 1.1 cho thấy vị trí plugin đƣợc nạp trong quá trình xử lý dữ
liệu của Wordpress.
Wordpress URL

wp-config Loaded

Functions Loaded


Translations Loaded

Pluggables Loaded

Plugins Loaded

Theme Loaded

Page Content
Hình 1.1: Quy trình xử lý dữ liệu Wordpress

Nhìn vào sơ đồ trên, đầu tiên khi nhập địa chỉ Website đƣợc xây dựng bằng
mã nguồn Wordpress thì hệ thống sẽ nạp các cấu hình nằm trong file wpconfig.php, tiếp đến nạp tiếp các cấu hình nằm trong cơ sở dữ liệu. Nạp xong 2


5

phần này sẽ gọi các hàm xử lý chính trong lõi Wordpress. Nạp tiếp toàn bộ plugin
vào hệ thống. Ở bƣớc này các plugin vẫn chƣa hoạt động. Plugin chỉ hoạt động khi
hệ thống Wordpress gọi đến action hook (action hook cho phép kích hoạt các mã
plugin bổ sung tại các vị trí đƣợc chỉ định) hoặc các filter hook (filter hook có
nhiệm vụ thay đổi nội dung của các bài viết trƣớc khi lƣu vào database). Sau cùng
nạp các phƣơng thức chính nằm trong file pluggable.php, phần định dạng ngôn ngữ,
themes và hiển thị tất cả nội dung thông qua Page content.

1.1.2. Kiến trúc của Wordpress
Wordpress đƣợc xây dựng dựa vào kiến trúc nhƣ hình 1.2 sau:

Hình 1.2: Kiến trúc tổng quan của Wordpress

(Nguồn: />

6

Không nhƣ kiến trúc của các nền tảng web khác, Wordpress xử lý các chức
năng độc lập trên từng ứng dụng nhƣ: post.php, wp-login.php,...Ứng dụng
index.php của Wordpress không thực hiện gì cả, chỉ nạp ứng dụng wp-blogheader.php lên để tạo môi trƣờng và giao diện chuẩn của Wordpress. Hình 1.3 cho
thấy trình tự tạo môi trƣờng thông qua các hàm và lời gọi các ứng dụng tƣơng ứng.
/**
* Loads the WordPress environment and template.
* @package WordPress
*/
if ( !isset($wp_did_header) ) {
$wp_did_header = true;
// Load the WordPress library.
require_once( dirname(__FILE__) . '/wp-load.php' );
// Set up the WordPress query.
wp();
// Load the theme template.
require_once( ABSPATH . WPINC . '/template-loader.php' );
}

Hình 1.3: Chi tiết nạp môi trƣờng trong Wordpress

Tiếp đến sẽ nạp lần lƣợt các chƣơng trình wp-config.php, wp-settings.php để
thiết lập môi trƣờng làm việc của Wordpress. Ứng dụng wp-config.php là tập tin
cấu hình để Wordpress có thể hoạt động và tƣơng tác với cơ sở dữ liệu. Bên trong
tập tin này bao gồm các giá trị bắt buộc và quan trọng nhƣ hình 1.4 dƣới đây.
/** The name of the database for WordPress */
define('DB_NAME', 'wp'); // Thông tin cơ sở dữ liệu

/** MySQL database username */
define('DB_USER', 'mysql'); // User để kết nối với cơ sở dữ liệu
/** MySQL database password */
define('DB_PASSWORD', ' mysql '); // Mật khẩu của user
/** MySQL hostname */
define('DB_HOST', 'localhost'); // Để mặc định là localhost

Hình 1.4: Các giá trị cần có để kết nối cơ sở dữ liệu của Wordpress

Cấu trúc thƣ mục và tập tin mặc định của Wordpress đƣợc tổ chức nhƣ hình
1.5 sau đây:


7

 wp-admin
 wp-content
 mu-plugins
 plugins
 plugin-name
 plugin-file.php
 themes
 parent-theme
 child-theme
 uploads
 wp-includes
 wp-config.php
Hình 1.5: Cấu trúc tổ chức thƣ mục mặc định của Wordpress

Cấu trúc mặc định này đƣợc định nghĩa trong quá trình nạp bởi các hàm:

Wp_initial_constants(), Wp_plugin_directory_constants(),
Wp_temlating_constant(). Cấu trúc hiện đại đƣợc tổ chức nhƣ hình 1.6 dƣới đây:
 wp
 wp-admin
 wp-content (no constant! Just happens to be here)
 themes (register_theme_directory())
 twentyfifteen
 wp-includes
 content (WP_CONTENT_DIR)
 mu-plugins
 plugins
 plugins-name
 plugins-file.php
 themes
 twentyfifteen-child
 uploads
 wp-config.php (dirname(ABSPATH).’/wp-config.php’)
Hình 1.6: Cấu trúc tổ chức thƣ mục hiện đại của Wordpress


8

Cấu trúc trên cho thấy các thay đổi nhƣ: lõi Wordpress có thƣ mục riêng; thƣ
mục nội dung đƣợc cấu hình cùng cấp thƣ mục lõi, không lồng bên trong lõi nhƣ
cấu trúc chung; thƣ mục themes đƣợc cấu hình riêng nhƣ thƣ mục bổ sung riêng
biệt; tập tin cấu hình đƣợc đặt ở mức trên thƣ mục chính.
Việc tách thƣ mục lõi và thƣ mục nội dung ra có lợi ở chổ:
-

Cấu trúc rõ ràng hơn;


-

Quản lý công việc đơn giản và thuận tiện hơn (ví dụ nhƣ sao lƣu);

-

Áp dụng các nguyên tắc phát triển hiện đại.

Nhìn chung hệ thống Wordpress gồm 3 thƣ mục chính: wp-admin, wpcontent, wp-includes và một số tập tin chạy ngoài thƣ mục gốc, mỗi loại tập tin
(ứng dụng) sẽ phục vụ cho một mục đích cụ thể của Wordpress nhƣ đã đề cặp.

1.1.3. Mô hình hoạt động của ứng dụng web
Ứng dụng web là một ứng dụng chủ/khách sử dụng giao thức HTTP để
tƣơng tác với ngƣời dùng hay hệ thống khác thông qua Internet hay intranet. Ứng
dụng web cho phép ngƣời dùng gửi và lấy dữ liệu đến/từ một cơ sở dữ liệu thông
qua trình duyệt web. Dữ liệu sẽ đƣợc hiển thị trong trình duyệt ngƣời dùng, thông
tin đƣợc tạo ra một cách tự động (theo một định dạng cụ thể nhƣ định dạng CSS
trong HTML) bởi vì ứng dụng web phải thông qua một máy chủ web.
Ứng dụng web thông thƣờng đƣợc cấu trúc nhƣ một ứng dụng ba lớp. Lớp
đầu tiên thƣờng là một trình duyệt Web hoặc giao diện ngƣời dùng dạng Winform,
lớp thứ hai là công cụ sử dụng công nghệ tạo ra các nội dung động nhƣ Java
serverlets (JSP) hoặc Active Server Pages (ASP), lớp thứ ba là cơ sở dữ liệu chứa
nội dụng (nhƣ tin tức, sản phẩm) và dữ liệu khách hàng (ví dụ nhƣ tên ngƣời dùng
và mật khẩu, thông tin cá nhân,…). Hình 1.2 bên dƣới mô tả chi tiết mô hình ứng
dụng web ba lớp.


9


Trình duyệt phía ngƣời dùng

Ngƣời dùng gửi các yêu
cầu theo giao thức HTTP/
HTTPs đến máy chủ web

Hệ thống phía máy chủ

Internet
Phản hồi từ
máy chủ web
(HTML, CSS,
JavaScript, hình
ảnh )

Máy chủ web
Máy chủ
ứng dụng web

Máy chủ cơ sở dữ liệu

Hình 1.7: Mô hình hoạt động của ứng dụng web
(Nguồn: windowsecurity.com)

Các ứng dụng web truy cập vào các máy chủ cơ sở dữ liệu để thực hiện các
nhiệm vụ nhƣ cập nhật và lấy các thông tin trong cơ sở dữ liệu. Sau đó các ứng
dụng web chuyển thông tin đến trình duyệt web để cung cấp cho ngƣời dùng.
Luồng thông tin giữa máy chủ web và ngƣời dùng (máy khách) là luồng
thông tin hợp lệ. Nếu tin tặc tìm thấy lỗ hổng trong ứng dụng web thì hệ thống sẽ dễ
bị khai thác. Các kỹ thuật tấn công thƣờng tập trung vào những lỗ hổng trong quá

trình tạo ứng dụng của nhà phát triển web hơn là tấn công trực tiếp vào hệ thống
mạng, hệ điều hành. Tuy nhiên, tin tặc cũng có thể lợi dụng các lỗ hổng web để mở
rộng sự tấn công của mình vào các hệ thống không liên quan khác.

1.1.4. Vấn đề bảo mật Website và CMS
Có một mối tƣơng quan giữa sự an toàn và tính tiện dụng của bất kỳ hệ thống
thông tin nào. Đôi khi việc làm hạn chế các tính năng trên Website lại khiến cho nó
an toàn hơn, nhƣng lại khó sử dụng hơn. Và đôi khi cấu hình cho Website dễ sử
dụng lại làm cho nó kém an toàn hơn và dễ bị tin tặc khai thác hơn.
Có ba giai đoạn quan trọng để đảm bảo an toàn cho Website: bảo vệ, phát
hiện và phục hồi. Nếu thực sự muốn an toàn, chúng ta cần phải thực hiện cả ba.


10

 Bảo vê: Điều tiên quyết là cấu hình và phân quyền chặc chẻ trên Website để
giữ cho nó an toàn. Cần đƣa ra chính sách “bế môn tỏa cảng”, giảm thiểu số
port (cổng) đƣợc mở, tạo lớp bảo vệ và thực hiện bất cứ giải pháp nào có thể
để ngăn chặn các cuộc tấn công trƣớc khi chúng bắt đầu. Đây là bƣớc đầu
tiên tất yếu và không thể lơ là bỏ qua.
 Phát hiện: Điều quan trọng là cần biết khi nào một cuộc tấn công sẽ xảy ra.
Các cuộc tấn công không phải lúc nào cũng diễn ra một cách rầm rộ và phô
trƣơng, đôi khi chúng âm thầm lén lút và các “bots” (bots là một phần mềm
thực hiện nhiệm vụ tự động trên Internet có tính lặp lại cao) sẽ cài đặt các
đoạn mã ẩn vào Website. Các chƣơng trình độc hại và tin tặc có thể đã xâm
nhập vào Website, và chúng ta sẽ không bao giờ biết nếu không sớm phát
hiện ra chúng. Trong phạm vi luận văn, đây là giai đoạn tôi tập trung nghiên
cứu và phát triển ứng dụng.

 Phục hồi: Cuối cùng là cần có một kế hoạch để phục hồi lại Website và vận

hành lại sau khi nó đã bị đánh gục. Đây là một thực tế, cho dù các chính sách
bảo vệ và phát hiện tốt nhất đƣợc áp dụng vẫn có thể thất bại và các nhà quản
trị cần phải chuẩn bị sẵn sàng cho điều này. Một bản sao lƣu cẩn thận sẽ rất
quan trọng đối với các nguyên nhân khác bên cạnh vấn đề an ninh.

1.2. Phƣơng pháp bảo mật quan trọng
Dựa vào danh sách kiểm tra bảo mật của Wordpress [18], có nhiều vấn đề
cần phải đặc biệt quan tâm để thực hiện các chính sách bảo mật phù hợp nhƣ:
 Phần mềm bị lỗi thời (Out-of-date): Đây là một trong những lỗ hổng bảo mật
lớn nhất trong Wordpress. Có ba thành phần chính của Wordpress cần phải
đƣợc xem xét khi triển khai thực hiện các giải pháp đó là:
1. Core (lõi): các tập tin đƣợc cài đặt mặc định cơ bản để cung cấp hầu
hết các chức năng trên hệ thống
2. Plugins: mã đƣợc viết đặc biệt để cải thiện và mở rộng các chức năng
cơ bản


11

3. Themes: lớp trình bày giao diện của Wordpress với một số chức năng
mở rộng hạn chế
 Cập nhật: việc cập nhật có tầm quan trọng sống còn để giữ cho lõi
Wordpress, plugins và các themes đƣợc an toàn. Một khi một bản cập nhật
đƣợc phát hành, cần phải đƣợc áp dụng càng sớm càng tốt để hạn chế bất kỳ
lỗ hổng nào. Vấn đề chức năng với bản cập nhật cũng cần đƣợc cân nhắc
trƣớc khi áp dụng vì có thể một bản cập nhật sẽ phá vỡ một số chức năng
hiện tại trên hệ thống. Vì vậy cần tạo một bản sao lƣu trƣớc khi cập nhật
phần lõi. Cốt lõi Wordpress có ba loại khác nhau của các cập nhật:
1. Cập nhật phát triển cốt lõi, đƣợc gọi là "bleeding edge"
2. Cập nhật lõi nhỏ, chẳng hạn nhƣ bảo trì và bảo mật phát hành

3. Cập nhật phát hành lõi chính
Bắt đầu với phiên bản 3.7, cập nhật nền tự động đã đƣợc tích hợp mặc định
cho phần cập nhật lõi nhỏ. Hành động mặc định này có thể đƣợc ghi đè bằng cách
chỉnh sửa nội dung file wp-config.php nhƣ sau:
define ( 'WP_AUTO_UPDATE_CORE', true);
Khi thiết lập đúng tất cả các bản cập nhật sẽ đƣợc kích hoạt.
Các theme và plugin có thể đƣợc cập nhật tự động bằng cách sử dụng các bộ
lọc (filter). Nơi tốt nhất để đặt bộ lọc là trong mục quản lý plugin. Wordpress
khuyên không nên đặt bộ lọc trong file wp-config.php vì sẽ xung đột với các phần
khác của mã nguồn. Để kích hoạt cập nhật tự động cho các theme và plugin, thêm
đoạn mã sau:
add_filter ( 'auto_update_plugin', '__return_true');
add_filter ( 'auto_update_theme', '__return_true');
Nên giữ các bản sao lƣu và di chuyển chúng đến một vị trí không thể tiếp cận
từ bản cài đặt Wordpress.


12

 Loại bỏ các plugin và các theme không sử dụng: nếu ai đó biết đƣợc vị trí
của các plugin và theme càng làm tăng cơ hội trong việc xâm nhập một
trƣờng hợp cụ thể. Nhìn vào danh sách CVE [25] cho Wordpress ta thấy
trong những năm qua hầu hết các lỗi bảo mật đều ảnh hƣởng từ các plugin,
theme chứ không phải ở lõi Wordpress. Khi sử dụng một plugin cần kiểm tra
độ an toàn của nó trƣớc. Các điểm cần chú ý gồm:
-

Plugin có đƣợc xuất bản trong kho plugin chính thức tại
hay không?


-

Các đánh giá và bình luận của ngƣời dùng về plugin đó nhƣ thế nào?

-

Số phiên bản?

-

Cập nhật bản cuối cùng và tần suất cập nhật nhƣ thế nào?

-

Khả năng tƣơng thích với các phiên bản hiện tại của lõi Wordpress?

 Mật khẩu: nếu sử dụng mật khẩu đơn giản, Website sẽ dễ bị tấn công với kỹ
thuật Brute Force (Brute Force Attacks là kỹ thuật dò mật khẩu bằng cách
thử đúng sai liên tục). Mật khẩu đủ mạnh phải chứa số, chữ hoa, ký tự đặc
biệt (@, #, *, v.v…) dài và độc đáo. Mật khẩu Wordpress thậm chí có thể
chứa các khoảng trắng và có cả cụm từ mật khẩu “passphrase”. Không nên
sử dụng cùng một mật khẩu ở nhiều nơi. Ghi nhớ mật khẩu khác nhau là điều
khó khăn, nhƣng Website bị tấn công thì còn tồi tệ hơn.
 Thay đổi các khóa (keys) bảo mật và mã muối (salts) của Wordpress:
Wordpress sử dụng thông tin đƣợc lƣu trữ trong trình duyệt là cookie để xác
minh những ngƣời dùng đã đăng nhập và bình luận trên trang. Các mã salts
và khóa bảo mật đƣợc thêm vào Wordpress để mã hóa và bảo vệ thông tin tốt
hơn. Về cơ bản, các khóa này là một chuỗi dữ liệu chứa các mật khẩu dài,
ngẫu nhiên và phức tạp, gần nhƣ không thể phá vỡ đƣợc chứa trong tập tin
wp-config.php. Chi tiết về kỹ thuật này có thể tìm hiểu thêm tại

Việc cập nhật khóa bảo mật và mã salts sẽ buộc
tất cả ngƣời dùng đã đăng nhập phải đăng nhập lại, bởi thay đổi chúng sẽ tự


13

động làm mất hiệu lực phiên đăng nhập của bất kỳ ngƣời dùng đang đăng
nhập. Hình 1.8 cho thấy các mã đƣợc sử dụng trong Wordpress.
define('AUTH_KEY','pK/7r(|,BK+X=|dzrK}Y|ttP%+8u<$so#|`zUrA*RIxNSfgo$-w|UrQ# )RR8+DEz');
define('SECURE_AUTH_KEY',')|IL/>/**t|;6/z,LMC3xs>X5#+,?>ZH#>2F8ik|LziZhk+YogWdefine('LOGGED_IN_KEY','w3+SAaRLl]22i{|#-7>76i>qHV-P5d<{Q3tRh5D2|<L>XKHpbD-I@(51Rd2W|Z#7');
define('NONCE_KEY','SPD.R?ynL?qf|NXW#n(jO%kmz=]_+n|DiHrN549u>Ea{v!${-9lhoZ# .z7k(85n:');
define('AUTH_SALT','|6f>K{-aje<define('SECURE_AUTH_SALT','mo>b+|dr(mY??KSkZe[dOmuoAu|qla<4q]>=EY;6&-YXt#: ],T<)0FJuc9FdwtG');
define('LOGGED_IN_SALT','*8u:v_n,-L`FJ+qyE*fm`kzw|G%m!B^J|!8?]kK?,#5vO2#*f~ PL=|tw?Chg+{o)');
define('NONCE_SALT','7+%dZ!tcm{2K+l(JPL7d<-B;.Jb7Cx.lj%9xQ|(ftY*|1+Qgl6q*m% L,n<.8?WXI');

Hình 1.8: Các mã salts và khóa bảo mật trong Wordpress

 Dù mật khẩu có mạnh cũng vô nghĩa nếu quản trị viên yếu kém kiến thức về
bảo mật. Hiểu đƣợc vai trò và gán đúng cách quyền truy cập cho ngƣời dùng
là điều cần thiết để tách biệt quá trình phân quyền. Càng nhiều ngƣời có
quyền truy cập admin, cơ hội bị tấn công càng cao.
 Thực hiện cơ chế xác thực 2 bƣớc (Two-Factor Authentication): lợi ích của
phƣơng pháp này là ngay cả nếu ai đó đoán đƣợc mật khẩu của ngƣời dùng
(quản trị viên) thì họ cũng cần phải có đƣợc điện thoại của ngƣời đó để đột
nhập trái phép vào tài khoản.
 Di chuyển hoặc thay đổi tài khoản quản trị mặc định là điều cần thiết. Có hai
lý do chính cho việc tạo mới một tài khoản quản trị hoặc sửa đổi cái cũ:
1. Sau khi cài đặt tên ngƣời dùng mặc định là "admin"; kẻ tấn công cố

gắng dò mật khẩu để thử tên ngƣời dùng mặc định này.
2. Các id mặc định của tài khoản quản trị là 1; khi kẻ tấn công phát hiện
ra một lỗi SQL injection (xem mục 1.2.1.1) thì sẽ cố gắng cập nhật
cho ngƣời dùng id = 1 này.
Cả hai công việc có thể đƣợc thực hiện thủ công trong cơ sở dữ liệu mà
không cần phải xóa các tài khoản quản trị hoặc có thể đƣợc thực hiện trong giao
diện quản lý ngƣời dùng.


14

 Một số chính sách bảo mật quan trọng khác cũng đƣợc khuyến nghị nhƣ:
thay đổi tiền tố (prefix) cơ sở dữ liệu; kiểm soát các bình luận; kiểm tra
quyền truy cập file; xóa file readme.html và install.php; di chuyển tập tin wpconfig.php ra bên ngoài thƣ mục web gốc; thực thi mã hóa lớp vận chuyển
cho các tác vụ quản trị; sử dụng một tƣờng lữa ứng dụng web (WAF); vô
hiệu hoá chế độ chỉnh sửa các plugin và theme cần đƣợc áp dụng.

1.2.1. Danh sách rủi ro bảo mật cho ứng dụng Wordpress OWASP [11]
OWASP viết tắt của Open Web Application Security Project (dự án mở về
bảo mật ứng dụng web), dự án là một sự cố gắng chung của cộng đồng nhằm giúp
các tổ chức có thể phát triển, mua hoặc bảo trì các ứng dụng an toàn. Mục tiêu chính
của OWASP Top 10 là để hƣớng dẫn các lập trình viên, ngƣời thiết kế, kỹ sƣ, quản
lí và cả tổ chức về hậu quả của những điểm yếu quan trọng nhất trong ứng dụng
web. OWASP Top 10 xuất hiện lần đầu tiên vào năm 2003, đƣợc cập nhật sửa đổi
cho phù hợp với từng giai đoạn trong những năm 2004, 2007, 2013 và đến nay
phiên bản 2017 sắp đƣợc chính thức ra mắt.

1.2.1.1. Chèn mã
Rủi ro chèn mã (Injection) xảy ra trong các ứng dụng nhƣ SQL, LDAP khi
dữ liệu không xác thực đƣợc gửi tới hệ thống biên dịch nhƣ một phần của mã lệnh.

Những dữ liệu này của kẻ tấn công có thể lừa hệ thống biên dịch thực hiện những
mã lệnh độc hại hoặc giúp kẻ tấn công xâm nhập đến những dữ liệu quan trọng một
cách trái phép.
- Ví dụ kịch bản tấn công:
+ Kịch bản 1: ứng dụng sử dụng dữ liệu không tin cậy
String query = “SELECT * FROM accounts WHERE custID='“ + $id + “'“;

+ Kịch bản 2: tƣơng tự nhƣ vậy, sự tin cậy mù quáng của ứng dụng vào các
framework có thể dẫn đến các truy vấn mà vẫn còn dễ bị tổn thƣơng, ví dụ HQL:


15

Query HQLQuery = session.createQuery(“FROM accounts WHERE custID='“
+ $id + “'“);

Trong cả hai trƣờng hợp, kẻ tấn công có thể thay đổi giá trị tham số “id”
trong trình duyệt của mình để gửi đi: 'or' 1 '=' 1. Ví dụ:
or '1'='1

Thay đổi này có ý nghĩa là cả hai câu truy vấn đều trả về kết quả tất cả các
bản ghi từ bảng “accounts”. Các tấn công nguy hiểm hơn có thể sửa đổi dữ liệu
hoặc thậm chí gọi các thủ tục lƣu trữ.

1.2.1.2. Phá vỡ xác thực và quản lý phiên làm việc
Rủi ro phá vỡ xác thực và quản lý phiên làm việc (Broken Authentication
and Session Management) xảy ra khi những đoạn chƣơng trình kiểm tra danh tính
và quản lý phiên làm việc của ngƣời dùng thực hiện không đúng cách và thiếu chính
xác, giúp kẻ xâm nhập có thể ăn cắp mật mã, khóa, mã của các phiên làm việc hoặc
tận dụng những lỗi khác để giả mạo danh tính các ngƣời dùng khác, cho phép kẻ tấn

công từ bên ngoài có thể truy cập vào những tài nguyên nội bộ trái phép (ví dụ:
trang quản trị). Ngoài ra kẻ tấn công còn có thể thực hiện các hành vi nâng quyền
quản trị hoặc tấn công dựa vào các dạng nhƣ ấn định phiên (session fixation).
- Ví dụ kịch bản tấn công:
+ Kịch bản 1: ứng dụng đặt vé máy bay hỗ trợ URL viết lại (rewrite), đặt mã
phiên (session id) trong URL:
/>?dest=Nhatrang

Một ngƣời sử dụng Website này đã chứng thực và muốn cho bạn bè của
mình biết về chƣơng trình khuyến mãi. Anh ta gửi mail chia sẻ liên kết trên mà
không biết rằng cũng đã gởi đi ID phiên của mình. Khi bạn bè anh ta sử dụng liên
kết đó, họ sẽ sử dụng đƣợc phiên và thẻ tín dụng của anh ta.
+ Kịch bản 2: thời gian chờ (timeout) của ứng dụng không đƣợc thiết lập
đúng cách. Trƣờng hợp ngƣời dùng sử dụng máy tính công cộng để truy cập


16

Website mà chỉ đóng trình duyệt và bỏ đi thay vì “Thoát” (logout) đúng cách. Kẻ
tấn công sử dụng cùng trình duyệt trên máy đó một giờ sau đó, và trình duyệt vẫn
còn đƣợc chứng thực.
+ Kịch bản 3: kẻ tấn công truy cập vào cơ sở dữ liệu mật khẩu của hệ thống.
Mật khẩu ngƣời dùng không đƣợc mã hóa thích hợp, để lộ mật khẩu ngƣời dùng
cho kẻ tấn công.

1.2.1.3. Thực thi mã lệnh xấu
Rủi ro thực thi mã lệnh xấu (Cross-Site Scripting) xảy ra khi một ứng dụng
tiếp nhận những dữ liệu không đáng tin cậy và gửi chúng đến cho trình duyệt web
mà không kiểm duyệt. XSS cho phép kẻ tấn công thực hiện mã độc trên trình duyệt
của nạn nhân và lợi dụng ăn cắp phiên truy cập để mạo danh, phá hoại Website hoặc

lừa ngƣời sử dụng đến những Website chứa mã độc khác.
- Ví dụ kịch bản tấn công: ứng dụng sử dụng dữ liệu không tin cậy trong việc
xây dựng đoạn mã sau mà không kiểm tra tính hợp lệ:
(String) page += “request.getParameter(“CC”) + “'>“;

Kẻ tấn công sửa đổi tham số “CC” trong trình duyệt của mình thành:
'><script>document.location = ' />
Đây là nguyên nhân mà ID phiên của nạn nhân đƣợc đƣa đến Website của kẻ
tấn công, cho phép kẻ tấn công chiếm quyền điều khiển phiên của ngƣời dùng.

1.2.1.4. Tham chiếu đối tượng trực tiếp không an toàn
Tham chiếu đối tƣợng trực tiếp không an toàn (Insecure Direct Object
References) xảy ra khi ngƣời phát triển ứng dụng để lộ một tham chiếu đến những
đối tƣợng trong hệ thống nhƣ các tập tin, thƣ mục hay khóa dữ liệu. Nếu không có
một hệ thống kiểm tra truy cập, kẻ tấn công có thể lợi dụng những tham chiếu này
để truy cập dữ liệu trái phép. Trƣờng hợp kẻ tấn công xác định đƣợc cấu trúc truy


×