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ìn
Trang 1Mục lục
Trang 2LỜ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
Trang 32. 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
3. 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
Trang 4DANH MỤC VIẾT TẮT
Từ viết tắt Viết đầy đủ Ý nghĩa
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
CSS Cascading Style Sheets 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 URL Uniform Resource Locator Địa chỉ tài nguyên chứa thư mục và tập tin XML eXtensible Markup Language Ngôn ngữ đánh dấu Mở rộng
SQL Structured Query Language Ngôn ngữ truy vấn mang tính cấu trúc
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 Bảo mật tầng truyền tải
OWASP Open Web Application Security Project Dự án bảo mật ứng dụng web mở
OSSTMM Open Source Security Testing Methodology Manual Bảo mật mã nguồn mở thử nghiệm phương pháp hướng dẫn sử dụngWAF Web Application Firewall Tường lửa ứng dụng Web
Trang 5DANH 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 Mô 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
Trang 6là 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 này bị xem như là BlackHat (Hacker mũ đen).
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
Trang 7đượ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
Trang 8Proxy 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
Trang 9Chươ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 view-controller)
MVC(model 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
Trang 10- 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:
Trang 11Hì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
Trang 12ứ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ó
Trang 13- 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
Trang 14Tê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
Trang 15Chươ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ụ:
Trang 16SQLQuery=”SELECT csdlUsername FROM User WHERE csdlUsername=
‘’’ & strUsername & “’ AND Password= ‘’’ & csdlPassword & ‘‘’ ”
flag = GetQueryResult (SQLQuery)
if flag = “” then
check=FALSEelse
check=TRUEend
Đ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ì TRUEPassword ‘’: không nhập thì sẽ không có trong csdlpassword rồi FALSE
Trang 17‘’=‘’ vế này thì TRUEVậ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
Trang 18phâ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ó
Trang 19thể 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,
Trang 20Hì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
Trang 21Hì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
Trang 22Qua 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.
Trang 23Cho 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"
Trang 24- 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
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
Trang 252.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
Trang 26nhà cung cấp dịch vụ liên hệ và thông báo nên thay mật khẩu, người dùng cần thực hiện ngay.
Người dùng cần cảnh giác với những email lừa đảo từ những kẻ tấn công yêu cầu nhập mật khẩu , tránh truy cập những website lạ Sử dụng các dịch vụ và website uy tín , bởi họ sẽ là những người đầu tin vá lỗ hổng bí mật này , theo dõi tài khoản ngân hàng và thẻ tín dụng đẻ phát hiện những khoản chi tiêu bất thường
Không truy cập vào những miền lạ với bất kỳ phần mềm nào và nguengf sử dụng các dịch vụ proxy chưa được vá lỗi, cập nhật phần cứng và phần mền ngay khi nhà sản xuất công bố bản vá , sử dụng một trình khách VPN và những dịch vụ được đảm bảo không bị ảnh hưởng bởi heartbeat khi truy cập trên các mạng công cộng
2.5 Khai thác qua Phishing
2.5.1 Định nghĩa
Phishing là một hình thức gian lận để có những thông tin nhạy cảm như: username , password ,…bằng cách giả mạo như là một thực thể đáng tin cậy trong các giao tiếp trên mạng quá trình giao tiếp thường diễn ra tại các trang mạng xã hội nổi tiếng , các trang web đấu giá , mua bán hàng online ,… mà đa số nguwoif dùng đều không cảnh giác với nó
2.5.2 Cách hoạt động
Phishing sử dụng email hoặc tin nhắn tức thời , gửi đến người dùng , yêu cầu
họ cung cấp thông tin cần thiết.Người dùng vì sự chủ quan của mình đã cung cấp thông tin cho một trang web , trông thì có vẻ hợp pháp , nhưng lại là trang web giả mạo do hacker lập nên
Phishing là một ví dụ của Social Engineering được sử dụng đẻ lừa đảo người dùng và khai thác lỗ hổng trong việc sử dụng công nghệ kém an ninh của các
Trang 27website hiện hành Những nổ lực mạnh mẽ trong thời gian qua để chống lại Phishing bao gồm việc ứng dụng các công nghệ an ninh mới đến việc đào tạo cho nhân viên , và nâng cao ý thức cộng đồng.
Những yếu tố tuy đơn giản nhưng đã góp phàn để một cuộc tấn công Phishing thành công như : sự thiếu hiểu biết , nghệ thuật đánh lừa ảo giác , không chú ý đến những chỉ tiêu an toàn Do cách tấn công đơn giản nhưng lại hiệu quả cao nên phishing nhanh chóng trở thành một trong những kiểu lừa đảo phổ biến nhất trên mạng
2.5.3 Cách phòng chống
Cách phòng chống tấn công phishing hiện nay là sử dụng một số tool như: phishTank SiteChecker , SoppfGuard ,Netcraft Tool
Trang 28Chương 3 Kỹ thuật và công cụ phát hiện lỗ hổng
trong ứng dụng web.
3.1 Thực trạng an toàn ứng dụng web hiện nay
Thực trạng an toàn web là vấn đề không chỉ riêng mỗi quốc gia nào Mỗi ngày, mỗi giờ luôn có những website bị tấn công trên khắp thế giới
Theo thống kê của BKAV, trung bình mỗi tháng ở Việt Nam có 300 website của các tổ chức, doanh nghiệp bị hacker tấn công và tới 40% trang web trong nước tồn tại lỗ hổng bảo mật
Theo thống kê năm 2015 của Kaspersky, Việt Nam có hơn 10.000 trang/cổng thông tin điện tử có tên miền vn bị tấn công, chiếm quyền điều khiển, thay đổi giao diện, cài mã độc (tăng 68% so với năm 2014), trong đó có 224 trang thuộc quản lý của các cơ quan nhà nước (giảm 11% so với năm 2014)
Trong năm 2015, các cuộc tấn công mạng có quy mô và mức độ lớn gia tăng dẫn đến gây mất mát dữ liệu, thiệt hại về kinh tế Theo thống kê của VNCERT, xu hướng tấn công lừa đảo, mã độc, thay đổi giao diện trở nên phổ biến Cụ thể, đã có 4.484 sự cố tấn công lừa đảo, 6.122 sự cố thay đổi giao diện, 14.115 sự cố về mã độc và 3.257 sự cố khác được ghi nhận trong 11 tháng đầu năm Bên cạnh đó, trong các trang web/cổng thông tin điện tử của Cơ quan nhà nước đã có 9 website
bị tấn công thay đổi giao diện với 144 đường dẫn bị thay đổi; 106 website bị cài
mã độc với 227 đường dẫn phát tán mã độc, 1 website bị tấn công cài mã lừa đảo Các hình thức lừa đảo trực tuyến gia tăng, bao gồm lừa đảo chiếm đoạt thẻ cào điện thoại di động và tài khoản mạng xã hội, lấy cắp thông tin cá nhân Các hình thức quảng cáo rác, tin nhắn rác vẫn chưa được kiểm soát Đặc biệt, tấn công có chủ đích vào các cơ quan nhà nước chiếm 2,5% Quý I và gia tăng 7,1% trong Quý
II
3.2 Nhận biết website bị tấn công
Trang 293.2.1 Dấu hiệu nhận biết website của bạn bị tấn công
Làm thế nào để biết website của mình đang bị tấn công? Dưới đây là những dấu hiệu giúp bạn phát hiện tình trạng website của mình đã hoặc đang bị tấn công
3.2.1.1 Dao diện Website bị thay đổi
Trang chủ hoặc một đường dẫn tới một trang con của website bị tin tặc thay đổi giao diện Xuất hiện nhiều dòng chữ được hacker chèn vào website, kiểu như:
“hacked by …”, “God verify…”, “security is low”…
Hình 3.1: Giao diện website bì đổi giao diện
(Vietnam Airlines bị hack 29/07/2016.)
Điều đó chứng cho website của bạn đã bị tin tặc hack thành công và chiếm hoàn toàn quyền điều khiển Một mẹo nhỏ để phát hiện các đường dẫn mà tin tặc
Trang 30gửi lên là bạn có thể tìm kiếm trên Google theo cú pháp như sau: “site.com hacked” (với site.com là tên miền website của bạn).
3.1.1.2 Website của bạn bị chèn các đường dẫn tới các website khác mà bạn không biết, chèn các đoạn mã HTML để tăng truy cập cho các website khác, tồn tại nhiều đường dẫn tới các website chứa nội dung đồi trụy, khiêu dâm…
Hình 3.2 Website của bạn bị chèn các đường dẫn tới các website khác
Nên thường xuyên và định kỳ kiểm tra các backlink (đường dẫn tới website khác) trên website của mình hoặc thực hiện viewsource của website (Ấn chuột phải trên trang web / chọn viewpage source / Rà soát nội dung nguồn HTML của website để phát hiện đường dẫn lạ)
3.1.1.3 Website của bạn bị chèn các đường dẫn giả mạo các website danh tiếng khác (giả mạo website của ngân hàng, giả mạo website giao dịch trực tuyến, giả mạo website Facebook, Gmail…) Các đường dẫn này được sử dụng để lửa đảo
và chiếm tài khoản của người dùng
Trang 31Hình 3.3 Trang web bị chèn các đường dẫn giả mạo các website khác
3.1.1.4 Một số dấu hiệu khác
Trang web của bạn bị tự động đăng các tin tức Spam, các tin tức trái phép lên website
Các hệ thống hay các module giám sát thông báo rằng nhiều tệp tin trên website đã
bị thay đổi nội dung
Phát hiện website của mình thường xuyên gửi các yêu cầu HTTP đến các website khác…
Phát hiện các tệp tin, đoạn mã độc hại trên website, các tệp tin có chữ nhiều đoạn
mã đã được mã hóa
Trang 32 Bạn nhận được thông báo từ các đơn vị bảo mật về việc website của bạn bị tấn công, bị hack hay website của bạn được đưa lên các diễn đàn mạng, các trang thông kê các website bị tin tặc hack thành công.
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
Bất cứ website nào cũng có thể bị tấn công vào bất cứ thời điểm nào, điều quan trọng đầu tiên là chúng ta cần hiểu rõ các mối rủi ro tiềm ẩn những ảnh hưởng tới doanh nghiệp, tổ chức, thường xuyên rà soát để phát hiện sớm các nguy
cơ, hiện trạng này để đưa ra phương án khắc phục triệt để, tránh bị hack tương tự trong lần tiếp theo Việc website bị tấn công đối với nhiêu doanh nghiệp, tổ chức là rất ảnh hưởng, ảnh hưởng uy tín, tiền bạc và sự tin tưởng của khách hàng
3.1.2 Những việc cẩn làm sau khi website bị tấn công.
3.1.2.1 Khôi phục lại hoạt động của website bị tấn công
Trang 33Trước tiên bạn cần sao lưu lại toàn bộ trạng thái của thư mục web để phục
vụ cho việc kiểm tra sau này Thay đổi các tài khoản của hệ thống, các tài khoản có thể cho phép tin tặc tiếp tục truy cập vào hệ thống của bạn: Tài khoản SSH, tài khoản Remote desktop, tài khoản quản trị của website, tài khoản kết nối CSDL, phpmyadmin…
Trong trường hợp bạn có bản sao lưu của mã nguồn hoàn chỉnh, có thể tải bản mới lên bản mã nguồn mới cho website của bạn, trong trường hợp không có bạn cần thực hiện xóa bỏ các dấu hiệu mà hacker đã để lại, tìm và xóa các trang web lừa đảo mà hacker đã để lại Có thể sử dụng công cụ Website malware scanner của Sucuri để phát hiện các mã độc mà hacker đã chèn vào wesite của, tại đây (https://sitecheck.sucuri.net/)
3.1.2.2 Tìm và loại bỏ các mã độc, backup, webshell đang tồn tại trên hệ thống
Hacker thường để lại mã độc trên website của bạn theo 3 hình thức sau
Chèn code mã độc vào các tệp tin trên website của bạn
Tải các tệp tin webshell, backdoor lên website để có thể kiểm soát website của bạn thông qua backdoor này
Cài đặt chương trình độc hại chạy ngầm, mở cổng để hacker truy cập vào trong lần sau
Để phát hiện các webshell, backdoor bạn cần tìm và quét toàn bộ thư mục web của mình để phát hiện Bạn có thể sử dụng một số công cụ tìm kiếm: FileSeek, Everything, Webshell Detector… bạn có thể theo dõi thêm bài viết: Kinh nghiệm tìm kiếm WebShell trong mã nguồn để được hướng dẫn chi tiết về cách thực hiện công việc này
Trang 34Để phát hiện các mã độc hại được nhúng và mã nguồn website, bận cần tìm
và kiểm tra tất cả các tệp tin có ngày thay đổi (date modified) xung quanh thời điểm tấn công Rất có thể hacker đã chèn các mã độc vào các tệp tin “sạch” của bạn
Ngoài ra bạn có thể đọc trong Log access để biết các backdoor mà hacker đã truy cập vào trước thời gian mà website của bạn bị tấn công
Với các tiến trình mã độc trên website, bạn cần thực hiện một cuộc điều tra
về các tiến trình đang hoạt động, các tiến trình cho phép khởi động cùng hệ điều hành, các tiến trình được cài đặt để chạy theo lịch trong Crontab Từ đó phát hiện
ra các tiến trình độc hại trên máy chủ của bạn
Trước tiên bạn cần biết ai là người đã tấn công bạn hacker đã tấn công bạn như thế nào, hacker đã làm gì trên website của bạn, hacker còn cài đặt, ẩn giấu mã độc gì trên website của bạn?
3.1.2.3 Tìm nguyên nhân mà website của bạn bị tấn công, ai là người đã tấn công website của bạn?
Để biết được ai là người đã tấn công và nguy nhân của cuộc tấn công, nếu website không có các hệ thống giám sát an ninh mạng để thu thập dữ liệu log trên máy chủ thì cách duy nhất là cần tận dụng các dữ liệu log trên website
Bạn có thể tìm kiếm các truy cập vào tệp tin mã độc để xác định đối tượng tấn công, đọc log access trong thời gian tệp tin mã độc được tạo hoặc các tệp tin khác bị thay đổi hoặc tạo mới để tìm được cách mà hacker đã thực hiện để tấn công bạn, lọc toàn bộ các yêu cầu được gửi trong log từ địa chỉ IP của đối tượng tấn công
Trang 35Bạn cũng có thể đọc thêm các dữ liệu log audit, log secure, history… để biết được hacker đã làm gì với website của bạn.
3.1.2.4 Vá các lỗ hổng mà hacker đã khai thác
Sau khi đã biết được cách mà hacker đã khai thác, tấn công website bạn cần
vá lại các lỗ hổng mà hacker đã khai thác, cập nhật các bản vá mới cho phần mềm, cấu hình phần quyền cho website
3.1.3 Một số biến pháp chống tấn công website.
Tấn công website thường được tin tặc thực hiện bằng cách tạo ra các đoạn
mã tự động dò quét lỗ hổng của các website trên Internet nhằm cố gắng khai thác các lỗ hổng phổ biến tồn tại trong các ứng dụng web Một số biện pháp chống hack website giúp bạn vận hành website an toàn hơn
3.1.3.1 Cập nhật phiên bản ứng dụng thường xuyên để chống hack websiteĐiều này trông có vẻ hiển nhiên nhưng hãy chắc chắn rằng tất cả ứng dụng của mình đều được cập nhật phiên bản mới nhất, đây là công việc quan trọng giúp website trở nên an toàn Biện pháp này được áp dụng trên cả hệ điều hành máy chủ hoặc bất cứ ứng dụng nào đang chạy trên website, ví dụ như một hệ quản trị nội dung (CMS) hay một diễn đàn Khi một lỗ hổng bảo mật được tìm thấy trong ứng dụng, tin tặc luôn biết cách để lợi dụng triệt để chúng Đây là một mối lo mà bất kỳ quản trị viên nào cũng phải đối mặt
Nếu bạn sử dụng hosting mà website của bạn không được cập nhật thường xuyên, bạn phải nhanh chóng yêu cầu nhà cung cấp dịch vụ để thực hiện
3.1.3.2 Chống tấn công SQL Injection
Chống hack website SQL Injection