Tải bản đầy đủ (.docx) (71 trang)

Kỹ thuật và công cụ phát hiện lỗ hổng web

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.26 MB, 71 trang )

Mục lục

1


LỜI MỞ ĐẦU
1.

Lý do thực hiện đề tài.
Như chúng ta đã biết Internet ra đời thực sự là một cuộc cách mạng công
nghệ vĩ đại của nhân loại. Internet không chỉ kết nối hàng tỷ người trên thế giới lại
với nhau, mà nó còn là một bách khoa toàn thư khổng lồ…
Nói đến ứng dụng trên Internet không thể không đề cập đến World Wide
Web (www). Ra đời vào 13/03/1989 và trở thành ứng dụng phát triển nhất và được
nhiều người dùng nhất. WWW không chỉ được sử dụng để quảng bá thông tin,
đăng tin tức mà đó còn là nơi các công ty, doanh nghiệp giới thiệu quảng bá sản
phẩm của mình, đồng thời thực hiện các giao dịch của mình với khách hàng nhanh
chóng và thuận tiện…
Vấn đề đáng quan ngại là khi ứng dụng Web càng phát triển, và phổ biến thì
khả năng xuất hiện các lỗi, các lỗ hổng càng cao… đó chính là con đường mà các
cá nhân, tổ chức tin tặc(hacker) đột nhập và tấn công vào với các mục đích khác
nhau.
Thực trạng cho thấy rằng số lượng tấn công vào ứng dụng web trên Internet
ngày càng cao, và tăng theo cấp số nhân, các lỗ hỗng được phát hiện ngày càng
nhiều, thiệt hại do những ứng dụng web bị tấn công không hề nhỏ chút nào. Hacker
có thể xâm nhập vào hệ thống để lấy đi và làm sai lệch thông tin nhạy cảm của các
cá nhân, tổ chức, cơ quan…Việc này không chỉ thiệt hại về mặt kinh tế mà còn ảnh
hưởng đến uy tín của cá nhân, công ty, doanh nghiệp…
Do đó “Kỹ thuật và công cụ phát hiện lỗ hổng trong ứng dụng Web” là
một đề tài gắn liền với thực tế. Qua đề tài này chúng em có thể vận dụng những
kiến thức mà chúng em được học, vận dụng vào đây.


2


2.

3.

Muc tiêu
- Tìm hiểu một số lỗ hổng bảo mật phổ biến trên ứng dụng web hiện nay.
- Tìm hiểu nguyên nhân vì sao một ứng dụng web mất tính an toàn.
- Tìm hiểu một số cách phát hiện và tấn công lỗ hổng trong úng dụng web.
- Làm được một vài Demo thực nghiệm.
Lời cảm ơn
Để hoàn thành được đề tài này, chúng em chân thành cảm ơn các giảng viên
khoa Công nghệ thông tin – Học viện kỷ thuật Mật Mã đặc biệt là thầy Phạm Văn
Hưởng người trực tiếp hướng dẫn nhóm, đã tận tình hướng dẫn và giúp đỡ cho
chúng em.
Do kiến thức và thời gian có hạn nên đề tài của chúng em không thể tránh
những sai sót được. Kính mong quý thầy cô có thể góp ý và bổ sung cho chúng em,
để chúng em có thể hoàn thiện tốt hơn trong những đề tài sau cũng như có thêm
những kỹ năng làm việc tốt hơn cho công việc sau này.
Chúng em chân thành cảm ơn!
1.
2.
3.

Hà Nội, ngày tháng 9 năm 2016.
Nhóm sinh viên thực hiện:
Lê Thị Hải.
Phạm Thị Hoài.

Hà Văn Triệu.

3


DANH MỤC VIẾT TẮT

Từ viết tắt

Viết đầy đủ

HTML

Hypertext Markup Language

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

HTTP

Hypertext Tranfer Protocol

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

Ý nghĩa

Ngôn ngữ được sử dụng để tìm và định dạng lại
các phần tử được tạo ra bởi các ngôn ngữ đánh
dấu

CSS


Cascading Style Sheets

URL

Uniform Resource Locator

XML

eXtensible Markup Language

SQL

Structured Query Language

XSS

Cross Site Scripting

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à sẽ
được thực thi ở phía người dùng

CSRF

Cross Site Request Forgery

Là kỹ thuật tấn công bằng cách sử dụng quyền
chứng thực của người sử dụng đối với 1 website
khác


SSL

Secure Sockets Layer

Là tiêu chuẩn của công nghệ bảo mật, truyền
thông mã hoá giữa máy chủ Web server và trình
duyệt (browser)

TLS

Transport Layer Security

OWASP

Open Web Application
Security Project

OSSTMM

Open Source Security Testing
Methodology Manual

WAF

Web Application Firewall

Địa chỉ tài nguyên chứa thư mục và tập tin
Ngôn ngữ đánh dấu Mở rộng
Ngôn ngữ truy vấn mang tính cấu trúc


Bảo mật tầng truyền tải
Dự án bảo mật ứng dụng web mở
Bảo mật mã nguồn mở thử nghiệm phương
pháp hướng dẫn sử dụng
Tường lửa ứng dụng Web

4


DANH MỤC HÌNH VẼ
Hình 1.1 Mô hình thể hiện quan hệ của 3 lớp trong ứng dụng web………………12
Hình

1.2



hình

của

một

dịch

vụ

ứng


dụng

web………………………………..13
Hình 1.3 Mô hình hoạt động của ứng dụng web………………………………….13
Hình 2.1 nguyên lí hoạt động của XSS………………………………..………….21
Hình 2.2: Tấn công XSS đối với ứng dụng WEB blog. ………………………….22
Hình 2.3: Tấn công XSS thông qua email…………..…………..…………..…….23
Hình 2.4: Các bước thự hiện XSS đánh cắp Cookie người dùng.. ……………….24
Hình 3.1: Giao diện website bì đổi giao diện …………………………………….31
Hình 3.2 Website của bạn bị chèn các đường dẫn tới các website khác………….32
Hình 3.3 Trang web bị chèn các đường dẫn giả mạo các website khác ………….33
Hình 3.4 Các website bị tấn công tại một thời điểm trên trang mạng Zone-h.org..34
Hình 3.5 Kết quả thu đuợc từ Paros…………..…………..…………..…………..49
Hình 3.6 Giao diện của tool Acunetix Web Security Scanner…………..………51
Hình 3. 7 Mô hình của một hệ thống Tường lửa ứng dụng Web (WAF) ……….53
Hình 3.8 Một ví dụ triển khai WAF trong máy chủ web Windows………………54

5


GIẢI THÍCH THUẬT NGỮ
1.

Hacker
Hacker là một thuật ngữ dùng để chuyên chỉ những kẻ phá hoại các hệ thống
mạng… Hacker thường là những chuyên gia về máy tính. Hacker không tạo ra các
kẽ hở cho hệ thống, nhưng hacker lại là những người am hiểu về hệ điều hành, hệ
quản trị dữ liệu, các ngôn ngữ lập trình…
Họ sử dụng kiến thức của mình trong việc tìm tòi và khai thác các lỗ hổng
của hệ thống mạng. Một số hacker chỉ dừng lại việc phát hiện và thông báo lỗi tìm

được cho những nhà bảo mật hay người phát triển chương trình, họ được xem như
là WhiteHat (Hacker mũ trắng). Một số hacker dựa vào những lỗ hổng thực hiện
việc khai thác trái phép nhằm mục đích phá hoại hay mưu lợi riêng, những người

2.

này bị xem như là BlackHat (Hacker mũ đen).
Lỗ hổng (Vulnerability)
Lỗ hổng là điểm yếu hay thiếu xót trong ứng dụng, hệ thống hay qui trình.
Cho phép kẻ tấn công có thể khai thác để truy cập trái phép vào các tài nguyên của
hệ thống, làm tổn hại tới các bên tham gia hệ thống. Lỗ hổng có thể nằm trong

3.

khâu thiết kế hay việc thực thi, cài đặt, triển khai ứng dụng, hệ thống.
Cookie
Cookie là một đoạn văn bản ghi thông tin được tạo ra và lưu trên trình duyệt
của máy người dùng. Cookie thường được tạo ra khi người dùng truy cập một
website, cookie sẽ ghi nhớ những thông tin như tên đăng nhâp, mật khẩu, các lựa
chọn do người dùng lựa chọn đi kèm. Các thông tin này lưu trong máy tính thường
được dùng để nhận ra người dùng khi viếng thăm một trang web. Nó là những tập
tin mà trang web gửi đến máy tính của người dùng.
Khi người dùng truy cập đến một trang web có sử dụng cookie, trang web đó
sẽ tự động gửi cookie đến máy tính của người dùng. Những cookie này tự động
được tổ chức trong hệ thống máy tính. Khi truy cập đến các trang web sử dụng
6


được cookie đã lưu, những cookie này tự động gửi thông tin của người dùng về
cho chủ của nó (người tạo ra cookie). Tuy nhiên những thông tin do cookie ghi

nhận không được tiết lộ rộng rãi, chỉ có website chứa cookie mới có thể xem được
những thông tin này. Cookie được xem là một thành phần không thể thiếu được với
những website có khối lượng dữ liệu lớn, có số lượng người dùng đông, và có
những chức năng đi kèm với thành viên đăng kí. Phần lớn các website này là các
website thương mại điện tử
Cookie thường được xóa hoặc hủy bỏ sau một thời gian nhất định
4.

Tường lửa

Tường lửa là một thiết bị phần cứngvà/hoặc một phần mềm hoạt động trong
một môi trường máy tính nối mạng để ngăn chặn một số liên lạc bị cấm bởi chính
sách an ninh của cá nhân hay tổ chức, việc này tương tự với hoạt động của các
bức tường ngăn lửa trong các tòa nhà.
Nhiệm vụ cơ bản của tường lửa là kiểm soát giao thông dữ liệu giữa hai
vùng có độ tin cậy khác nhau. Các vùng tin cậy điển hình bao gồm:
mạng Internet (vùng không đáng tin cậy) và mạng nội bộ (một vùng có độ tin cậy
cao). Mục đích cuối cùng là cung cấp kết nối có kiểm soát giữa các vùng với độ tin
cậy khác nhau thông qua việc áp dụng một chính sách an ninh và mô hình kết nối
dựa trên nguyên tắc quyền tối thiểu.
5.

Proxy
Proxy cung cấp cho ngƣời sử dụng truy xuất Internet những nghi thức đặt

biệt hoặc một tập những nghi thức thực thi trên dual_homed host hoặc basion host.
Những chương trình client của ngƣời sử dụng sẽ qua trung gian proxy server thay
thế cho server thật sự mà người sử dụng cần giao tiếp.

7



Proxy server xác định những yêu cầu từ client và quyết định đáp ứng hay
không đáp ứng, nếu yêu cầu được đáp ứng, proxy server sẽ kết nối với server thật
thay cho client và tiếp tục chuyển tiếp những yêu cầu từ client đến server, cũng
như trả lời của server đến client. Vì vậy proxy server giống cầu nối trung gian giữa
server và client

8


Chương 1. Tổng quan về ứng dụng web.
1.1 Khái niệm về ứng dụng web
Mang tính kỹ thuật nhiều hơn có thể giải thích các ứng dụng Web truy vấn
máy chủ chứa nội dung (chủ yếu trên cơ sở dữ liệu lưu trữ nội dung) và tạo tài liệu
Web động đẻ phục vụ yêu cầu của máy khách ( chính là người sử dụng
website).Tài liệu được tạo trong kiểu định dạng tiêu chuẩn hỗ trợ trên tất cae mọi
trình duyệt như HTML , XHTML,…javasript là một dạng script client- side cho
phép yếu tố động có ở trên từng trang(như thay đổi ảnh của mỗi lần người dùng di
chuột tới). Trình duyệt Web chính là chìa khóa.Noa dịch và chạy tất cả script,
lệnh .. khi hiển thị trang web và nội dung được yêu cầu.
Dưới góc độ chức năng, ứng dụng web là các chương trình máy tính cho
phép người dùng website đăng nhập, truy vấn vào dữ liệu qua mạng Internet trên
trình duyệt Web yêu thích của họ. Dữ liệu sẽ được gửi tới người dùng trong trong
trình duyệt theo kiểu thông tin động (trong một định dạng cụ thể, như với HTML
thì dùng CSS ) từ ứng dụng Web qua một Web Server.
Để hiểu rõ hơn được ý nghĩa, khái niệm này chúng ta cùng đi sâu vào tìm
hiểu cấu trúc và cách hoạt động của ứng dụng Web.
1.2 Cấu trúc và cách hoạt động của ứng dụng web
1.2.1 Cấu trúc của ứng dụng web

Mô hình của một ứng dụng Web đơn giản chính là mô hình MVC(modelview-controller)
- Tầng Model : chứa các code connect tới database , truy vấn và thêm cóa
sữa dữ liệu.

9


- Tầng View : chứa các code tạo giao diện tương tác với người dùng , dữ liệu
được vẽ ra như thế nào.
- Tầng Controller : chứa các code điều khiển dòng dữ liệu (flow control) ,
gắn kết tầng Model và tầng View lại với nhau.
Ứng dụng được chia thành các layer như thế sẽ làm tăng tính reuse và dễ
dàng mở rộng. Nên nếu chúng ta muốn ứng dụng có thể truy xuất trên di động ,
chúng ta chỉ cần tạo một tầng view mới riêng cho di động , tầng model và
controller không thay đổi.Hay nếu chúng ta muốn thay đổi database , việc đó cũng
dễ dàng hơn , chỉ cần ta tạo tầng model mới , phần view và controller không bị ảnh
hưởng.
-

Mô hình thể hiện quan hệ của 3 lớp trong ứng dụng web :

Hình 1.1 mô hình thể hiện quan hệ của 3 lớp trong ứng dụng web
-

Mô hình của 1 dịch vụ ứng dụng web:

10


Hình 1.2 Mô hình của một dịch vụ ứng dụng web

1.2.2 Cách hoạt động của ứng dụng web

Hình 1.3 Mô hình hoạt động của ứng dụng web
Bước 1: Tại trình duyệt của máy khách gõ địa chỉ trang web vào, lúc này
trình duyệt sẽ tạo HTTP request gởi đến máy chủ ứng dụng web. Nếu như thành
công thì sẽ tải được trang web về ngược lại nếu thất bại ta cần phải kiểm tra kết nối
từ máy khách đến máy chủ web là phải thông suốt có thể thử bằng lệnh ping.
Bước 2: Sau khi tải được trang web, máy chủ web yêu cầu người dùng đăng
nhập tên tài khoản và mật khẩu, tất nhiên người dùng phải biết mình đang sử dụng
11


ứng dụng nào và tài khoản, mật khẩu là gì. Nếu chưa có tài khoản chúng ta có thể
đăng kí một tài khoản để được truy cập.
Bước 3: Thông báo đăng nhập thành công được hiển thị trên trình duyệt của
máy khách. Giả sử người dùng muốn thực hiện rút tiền trong tài khoản ngân hàng,
người dùng sử dụng ứng dụng web rút tài khoản ngân hàng. Sau khi thực hiện các
bước rút tiền theo yêu cầu thì tại máy chủ web gói tin yêu cầu rút tiền sẽ đến ứng
dụng web, ứng dụng web sẽ kiểm tra tài khoản này có đủ tiền tối thiểu được rút
hay không nếu đủ thì nó chuyển đến máy chủ cơ sở dữ liệu.
Bước 4: Tại máy chủ cơ sở dữ liệu nó sẽ truy vấn các thông tin cần thiết để
tính toán như là số tài khoản dư và lưu trữ các thông tin cần thiết như thời gian,
thông tin tài khoản,...
Bước 5: Sau khi đã truy vấn xong thì nó sẽ gởi lại cho máy khách những
thông báo cần thiết.

1.2.3 Nguyên nhân phổ biến cho ứng dụng web mất tính an toàn
Khi một ứng dụng web mất tính an toàn , điều đó tương đương với việc
trang web đó sẽ có khả năng tấn công và gây thiệt hại bởi những ý đồ xấu của kẻ
tán công .Để khắc phục cho lỗ hổng đó , việc trước tiên cần phải làm là tìm ra

nguyên nhân. Đây là một số nguyên nhân có thể gây ra điểm yếu đó cho ứng dụng
web :
- Thiếu nhận thức về an toàn cho ứng dụng web của người dùng và người
lập trình.
- Thiếu các giải pháp bảo mật sẵn có.

12


- Sự thúc ép sản phẩm nhanh chóng , dẫn đến các nhà lập trình làm nhanh và
ẩu quên đi việc áp dụng các giải pháp cho bảo mật.
1.3 Nguy hiểm và mối đe dọa của các lỗ hổng
1.3.1 Lỗi SQL Injection
Tác hại của dạng tấn công SQL Injection tùy thuộc vào môi trường và cách
cấu hình hệ thống .Nếu ứng dụng sử dụng quyền dbo (quyền của nguwoif sỡ hữu
CSDL) khi thao tác dữ kiệu , nó có thể xóa toàn bộ các dạng dữ liệu , tạo các bảng
dữ liệu mới … nếu ứng dụng sử dụng quyền sa ( quyền quản trị hệ thống) , nó có
thể điều khiển toàn bộ hệ CSDL và thậm chí có thể tạo ra các tài khoản người dùng
bất hợp pháp để điều khiển hệ thống của bạn
1.3.2 Lỗi Cross Site Scripting (XSS)
XSS thường được sử dụng với các mục đích sau:
-Đánh cắp thông tin
-Giúp hacker có thể truy cập được vào những thông tin nhạy cảm
-Lấy được quyền truy cập miễn phí vào những nội dung đúng ra phải trả tiền
mới có được
-Dò xét sở thích của người sử dụng mạng
-Thay đổi diện mạo (deface) một trang web nào đó tấn công từ chối dịch vụ
(DoS)
-Mã javascript độc có thể truy cập bất cứ thông tin nào sau đây:
Cookie cố định (của site bị looic XSS) được duy trì bởi trình duyệt

RAM Cookie
13


Tên của tất cả các cửa sổ được mở từ site bị lỗi XSS
Bất cứ thông tin mà có truy cập được từ DOM hiện đại ( như value , mã
HTML…)
1.3.3 Lỗi Cross-Site Request Forgery(CSRF)
- Đạt được những hành động theo ý muốn từ những request mà nạn nhân vô
tình tạo ra như thực hiện một số tác vụ lên ứng dụng web đó là xóa bài , thêm
người dùng , thay đổi eamil , thay đổi mật khẩu của victim.
- Cài các loại virus, backdoor trên máy tính victim
-Chiếm quyền điều khiển wesite nếu nạn nhân bị lừa chính là Admin.

14


Chương 2. Một số lỗ hổng bảo mật ứng dụng web.
2.1 Lỗi SQL Injection
2.1.1 Khái niệm
SQL Injection là một kỹ thuật điền vào những đoạn mã SQL bất hợp pháp
cho phép khai thác một lỗ hổng bảo mật tồn tại trong cơ sở dữ liệu của ứng dụng
.Lỗ hổng bảo mật này có thể xuất hiện khi ứng dụng không có đoạn mã kiểm tra
chuỗi ký tự thoát nhúng trong câu truy vấn SQL hoặc do sự định kiểu đầu vào
không rõ ràng hay do lỗi cú phá SQL của lập trình viên khiến cho một đoạn mã
ngoại lai có thể được xử lý ngoài ý muốn. Nó là một ví dụ của sự rủi ro khi một
ngôn ngữ lập trình hay ngôn ngũ kịch bản được nhúng trong một ngôn ngữ
khác.Tấn công SQL injection còn có thể hiểu là hình thức tấn công chèn bất hợp
pháp các đoạn mã SQL.
SQL Injection là một dạng tấn công để thực hiện , hầu hết mọi thao tác

người tấn công cần được thực hiện với một trình duyệt web , có thể kèm theo một
ứng dụng proxy server.Chính vì đơn giản như vậy cho nên bất cứ ai cũng có thể
học cách tiến hành một cuộc tấn công.Lỗi bắt nguồn từ mã nguồn của ứng dụng
web chứ không phải từ database , chính vì thế bất cứ thành phần nào của ứng dụng
mà người dùng có thể tương tác được để điều khiển nội dung ( như các form , tham
số URL , ..) đều có thể được sử dụng để tiến hành chèn truy vấn có hại.
2.1.2 Các dạng tấn công
Tấn công SQL Injection vượt form đăng nhập đơn giản
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ện Sql thao tác trên cơ sở dữ liệu của ứng dụng web.
Xét một ví dụ:
15


SQLQuery=”SELECT csdlUsername FROM User WHERE csdlUsername=
‘’’ & strUsername & “’ AND Password= ‘’’ & csdlPassword & ‘‘’ ”
flag = GetQueryResult (SQLQuery)
if flag = “” then
check=FALSE
else
check=TRUE
end
...
Đoạn mã trên kiểm tra chuỗi nhập Username và Password. Nếu nhập đúng
tài khoản

và mật khẩu thì sẽ check=true và ngược lại là check=false. Hacker thì

không có tài khoản rồi nhưng lại phát hiện lỗ hổng trong forum đăng nhập và anh
ta gõ username và password là ‘ OR ‘’=’ như hình 3.10. Thì đoạn code trong form

kết hợp với chuối Hacker nhập vào sẽ thành như thế này.
SELECT csdlUsername FROM User WHERE csdlUername= ‘’ OR ‘’=‘’
AND Password ‘’ OR ‘’=‘’
Phân tích câu này thì:
csdlUsername ‘’: không nhập nhập gì thì FALSE
‘’=‘’: vế này thì TRUE
Password ‘’: không nhập thì sẽ không có trong csdlpassword rồi
FALSE
16


‘’=‘’ vế này thì TRUE
Vậy ta xét lại như sau: (F or T) and (F or T) => T and T. Với cấu trúc trên thì
Hacker hoàn toàn đột nhập vào hệ thống mà không cần bất kì tài khoản nào. Sau
khi đăng nhập thành công thì hệ thống sẽ chuyển đến tài khoản đầu tiên trong cơ sở
dữ liệu của hệ thống. Việc tiếp theo của Hacker có thể là khám phá tài khoản này
hoặc là sẽ tiếp tục tấn công sang các tài khoản khác hoặc sẽ nhòm ngó đến tài
khoản có quyền nhất trong hệ thống chính là Admin.
Đấy chỉ là những cái cơ bản nhất của SQL Injection, nó còn có thể tấn công
với câu lệnh như SELECT, HAVING, INSERT,...
2.1.3 Cách phòng chống và bảo mật
Việc tấn công SQL Injection dựa vào những câu thông báo lỗi do đó việc
phòng chống hữu hiệu nhất là không cho hiển thị những thông điệp lỗi hệ thống
cho người dùng thay vào đó bằng một thông báo lỗi do người lập trình hay quản trị
viên phát triển thiết kế mỗi khi lỗi xảy ra trên ứng dụng.
Kiểm tra kỹ giá trị nhập vào của người dùng, những kí tự đặt biệt,...
Hãy loại bỏ các kí tự “, ’, ”, /, \, ;, “ và các từ khóa như NULL, CR, LF,...
Sử dụng phương thức POST và mã hóa thanh URL của trình duyệt máy
khách.
Cô lập máy chủ CSDL và máy chủ WEB hay nói cách khách là máy chủ

CSDL không được cài trên máy chủ WEB để đảm bảo tính bảo mật.
Nên sử dụng tài khoản với đặc quyền thấp để truy xuất vào CSDL. Có nghĩa
là không phải nhất thiết khi nào cũng phải xài đến quyền Admin hay Root mà nên

17


phân quyền cho các User đúng với mục đích của công việc, đúng với ý đồ của
người quản trị viên.

2.2 Lỗi Cross Site Scripting (XSS)
2.2.1 Khái niệm
Kỹ thuật tấn công 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ã lệnh có khả năng đánh cắp hay
thiết lập được những thông tin quan trọng như Cookie, mật khẩu,... vào nguồn ứng
dụng web để từ đó chúng được chạy như là một phần của ứng dụng WEB và có
chức năng cung cấp hoặc thực hiện những điều Hacker muốn.
Phương pháp này không nhằm vào máy chủ của hệ thống mà chủ yếu tấn
công trên chính máy người sử dụng. Hacker sẽ lợi dụng sự kiểm tra không chặt chẽ
từ ứng dụng và hiểu biết hạn chế của người dùng cũng như biết đánh vào sự tò của
họ dẫn dến người dùng bị mất thông tin một cách dễ dàng.
Kỹ thuật tấn công này là một trong những kỹ thuật tấn công phổ biến nhất
của các ứng dụng WEB và mối de dọa của chúng đối với người sử dụng ngày càng
lớn.
2.2.2 Các dạng tấn công
Hacker tấn công thông máy chủ ứng dụng WEB
Hacker dùng các công cụ quét lỗ hổng XSS cho các máy chủ ứng dụng
WEB. Vào một ngày đẹp trời, Hacker cũng đã tìm thấy một máy chủ ứng dụng
WEB bị lỗi XSS và thế là Hacker tải các Scrip (kịch bản) lên máy chủ WEB và
thông qua máy chủ WEB các máy khách lên trang web của ứng dụng WEB ấy có


18


thể sẽ bị mất thông tin cá nhân do Hacker đã lấy, hình sau sẽ mô tả quá trình thực
hiện.

Hình 2.1 Nguyên lý hoạt động của XSS.
Có thể hiểu các bước như sau: người dùng truy vấn một ứng dụng WEB đến
máy chủ thì máy chủ liền phản hồi các thông tin cần thiết từ máy khách yêu cầu.
Nhưng ứng dụng WEB đấy lại bị lỗi XSS vậy là Hacker thông qua lỗ hỗng đấy có
thể đánh cắp thông tin người dùng trong hình trên thì Hacker chỉ chèn một thông
điệp đưa ra cảnh báo lỗi. Với hình thức tấn công như trên Hacker hoàn toàn có thể
tấn công các ứng dụng WEB như viết blog, bình luận bài trong forum hay các scrip
độc hại trên mạng xã hội,...

19


Hình 2.2: Tấn công XSS đối với ứng dụng WEB blog.
Hacker tấn công thông qua máy khách
Có thể nói Hacker rất là khôn khéo khi tấn công XSS đối với người dùng,
chỉ cần gởi một thông điệp cho người dùng và dụ người sử dụng click vào thì
Hacker có thể lấy các thông tin cần thiết của người dùng. Vì người dùng đâu phải
ai cũng biết rõ về các vấn đề bảo mật giống như một quản trị viên được. Theo
thống kê của thế giới thì hơn 90% các cuộc tấn công của Hacker là xuất phát từ sự
thiếu hiểu biết của người dùng và hiện nay thế giới đang kêu gọi người dùng hãy
bảo vệ chính mình trước Internet.

20



Hình 2.3: Tấn công XSS thông qua email.
(1) Hacker biết rõ ứng dụng web của người dùng hay sử dụng và cũng soạn
sẵn một email có chứa link mã độc gởi cho người sử dụng.
(2) Khi người dùng nhận được mở ra với nội dung của Hacker nói trong
email đầy hu thút người sử dụng ví dụ: như bạn đã trúng thưởng 1000$ hãy click
vào đây để nhập thông tin tài khoản ngân hàng và tiền sẽ được chuyển đến tài
khoản của bạn. Khi người dùng click vào link có chứa mã độc thì lập tức sẽ chuyển
đến máy chủ ứng dụng WEB giả sử ở đây là trang web ngân hàng.
(3) Ngân hàng yêu cầu người dùng đăng nhập và người sử dụng đăng nhập
thì lập tức thông tin của người dùng sẽ được tải xuống máy khách.
(4) Vì ở bước (2) người dùng có click vào link bị nhiễm độc nên sau khi lấy
đủ thông tin cần thiết thì nó sẽ chuyền về máy chủ của Hacker cũng có thể là email
và việc còn lại của Hacker thì rất đơn giản.
21


Qua ví dụ trên ta thấy được sự nguy hiểm của kỹ thuật này, nó nhắm vào
những người không hiểu biết là chính. Ở bước (2) giả sử link chứa mã độc đấy
cũng có thể là một trang web giả mạo của Hacker lập ra giống y trang web của
ngân hàng để lừa người dùng được minh họa Hình 3.13. Thì lúc này người dùng
đang giao tiếp chính với máy chủ Hacker. Phần demo mình sẽ trình bày rõ gởi
spam mail hay giả mạo email của bất kì người nào.
Ngoài ví dụ trên Hacker còn có thể đánh cắp tập tin chưa thông tin người
dùng như Cookie, Session ID,..

Hình 2.4: Các bước thự hiện XSS đánh cắp Cookie người dùng.
22



Cho dù các cách thức tấn công XSS có khác một chút nhưng mục đích của
Hacker cuối cùng chính là tìm cách lấy những thông tin cần thiết của người dùng
và sử dụng chúng vào mục đích nhất định.

2.2.3 Cách phòng chống và bảo mật
Đối với người thiết kế WEB hay lập trình cần chú ý các điểm này:




Xóa bỏ thẻ <script> hay tắt thẻ chứng năng script.
Tạo danh sách thẻ HTML được phép sử dụng.
Cho phép nhập những kí tự đặc biệt nhưng sẽ mã hóa theo chuẩn




riêng.
Đối với người dùng:
Cần ý thức được sự nguy hiểm từ những đường link không rõ nguồn



gốc cũng như từ người lạ gởi đến.
Việc giả mạo một email của ai đó đối với Hacker rất là dễ dàng, đối
với những email đã được chuyển vào hòm thư spam thì không nên mở




lên xem.
Cần cài đặt chương trình diệt virus và cập nhập phiên bản thường
xuyên để có thể tốt hơn. Một số phần mềm như kapersky, avg, avast,
bitdefender,…

2.3 Lỗi Cross-Site Request Forgery(CSRF)
2.3.1 Khái niệm
CSRF (Cross-Site Request Forgery) là kỹ thuật tấn công bằng cách sử dụng
quyền chứng thực của người dùng đối với một website.CSRF là kỹ thuật tấn công
vào người dùng , dựa vào đó hacker có thể thực thi những thao tác phải yêu cầu sự
chứng thực. Hiểu một cách nôm na , đây là kỹ thuật tấn công dựa vào mượn quyền
trái phép.
CSRF còn được gọi là “ session ”, "XSRF"
23


2.3.2 Các dạng tấn công
Tấn công qua phương thức GET và POST

2.3.3 Cách phòng chống và bảo mật
- Sử dụng thêm token chèn thêm token vào đường link thực hiện thao tác.giá
trị token này phải mạnh , khó đoán , thường là hash của sesion ID của user kết hợp
với password , id của user , thời điểm đăng nhập ,..mục đích của token là làm cho
hacker không thể xác định được chính xác đường link thực hiện thao tác.
- Chèn bước xác nhận trung gian trước những thao tác nhạy cảm
- Có thể yêu cầu user nhập lại mật khẩu để xác định thao tác thực hiện hoặc
yêu cầu nhập captcha.
2.4 Một số lỗ hổng ứng dụng web nổi bật hiện nay
2.4.1 Định nghĩa
SSL và TLS là các giao thức cung cấp tính năng bảo vệ bí mật và riêng tư

cho các ứng dụng như website , email , tin nhắn instant message và cả mạng riêng
ảo VPN.Heartbleed là một lỗi rất nghiêm trongjcuar thư viện mã háo OpenSQL ,
xảy ra khi triển khai thêm tính năng mở rộng TLS vad DTLS heartbeat của
OpenSSL.lỗi này cho phép kẻ tấn công có thể đọc được bộ nhớ của các hệ thống
được bảo vệ bởi phiên bản của phần mềm OpenSSL.kẻ tấn công có thể lấy được
mã bí mật – được sử dụng để định danh máy chủ dịch vụ và để mã háo thông tin
được chuyển đi , mã hóa tên và mật khẩu của người dùng cũng như của cả bản thân
thông tin. Từ đó kẻ tấn công có thể lấy chộm thông tin, dữ liệu.

24


2.4.2 Cách hoạt động.
Lỗ hổng bảo mật không nằm ở công nghệ TLS/SSL mà ở các dòng lệnh
trong heartbeat.Sử dụng phần mở rộng Heartbeat, hai máy tính sẽ truyền
duwxlieeuj qua lại để đảm bảo rằng đầu bên kia vẫn còn hoạt động.Máy trạm sẽ
truyền một mẫu tin (heartbeat ) đến máy chủ(website) và máy chủ hồi đáp.Trong
quá trình trao đổi , nếu một trong 2 máy ngừng hoạt động thì máy còn lại sẽ biết
được nhờ vào cơ chế đồng bộ heartbeat.Khi heartbeat được gửi đi , một phần bộ
nhớ tạm thời trên máy chủ chứa những thông tin nhạy cảm như nội dugn của bản
tin , thông tin đăng nhập , khóa phiên và khóa riêng của máy chủ sẽ bị rò rỉ và kẻ
tấn công có thể bắt được.Bằng cách gửi các yêu cầu heartbeat nhiều lần , kẻ tấn
công có thể lấy được nhiều thông tinhown từ bộ nhớ máy chủ.Điều đó có ý nghĩa
là tất cả các thông tin chứa trên bộ nhớ máy chủ trở nên dễ tổn thương trước tội
phạm mạng.
2.4.3 Cách phòng tránh và khắc phục:
Đối với tổ chức :đây là một lỗ hổng thuộc thư viện OpenSSL và không phải
là lỗi nằm trong SSL/TLS hay những chứng chỉ cấp cho máy chủ.Các tổ chắc đang
sử dụng OpenSSL 1.0.1 tới 1.0.1f , nên cập nhật bản vá mới nhất của phần
mềm(1.0.1g) hoặc thiết bị lại OpenSSL đẻ loại bỏ heartbeat.

Sau khi nâng cấp lên phiên bản OpenSSL vá lỗi , nếu nghi ngờ rằng chứng
chỉ máy chủ web có thể đã bị lỗi , lấy cắp hoặc bị khai thác , hãy liên hệ với đơn vị
cấp chứng chỉ để thay thế , nên cân nhắc thiết lập lại mật khẩu của người dùng cuối
, vì mật khẩu này có thể đã bị lộ trên bộ nhớ máy chủ.
Đối với người dùng cuối : có thể dữ liệu của nguwoif dùng đã bị lộ cho một
bên thứ 3 , vì sử dụng nhà cung cấp dịch vụ có chứa lỗ hổng bảo mật. Cần phải
theo dõi để biết bất kì thông báo nào tù nhà cung cấp dịch vụ đang sử dụng .Khi

25


×