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.
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
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
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
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
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
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
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
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ó
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
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ư
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