Trong quá trình hoạt động, ứng dụng web thường được phép truy xuất đến các tài nguyên quan trọng của hệ thống đó là máy chủ web và máy chủ cơ sở dữ liệu. Thông thường khi phát triển ứng dụng, các lập trình viên thường dành nhiều thời gian cho các chức năng, giao diện mà bỏ qua vấn đề bảo mật. Điều đó không có nghĩa là lập trình viên không quan tâm đến vấn đề bảo mật mà vấn đề ở chỗ họ thường thiếu kiến thức về bảo mật và vấn đề bảo mật thường bị bỏ qua trong giai đoạn thiết kế và xây dựng ứng dụng.
Trang 1MỤC LỤC
A GIỚI THIỆU : 1
I Các nguyên nhận và mối đe dọa Website : 1
II Khái niệm an ninh website : 1
B Tiêu chuẩn đánh giá an toàn các ứng dụng Web(OWASP) 1
I WEB Application là gì? 1
II Tiêu chuẩn OWASP 3
C THỰC TIỄN 8
I CÁC PHƯƠNG THỨC TẤN CÔNG WEB PHỔ BIẾN : 8
1 SQL INJECTION : 8
1.1 Cách thức tấn công : 8
1.2 Cách Phòng chống : 9
2 Cross-Site Scripting ( XSS ) : 11
2.1 Cách thức hoạt động : 11
2.2 Cách phát hiện lỗi : 12
2.3 Cách thức tấn công : 12
2.4 Cách phòng chống : 13
3 Denial of Service ( Dos ) : 14
3.1 Cách thức tấn công : 14
3.2 Cách phòng chống : 15
4 Phương thức tấn công Website Joomla : 16
4.1 Nguyên nhân dẫn đến Website joomla bị tấn công : 16
4.2 Các cách cần thiết để tránh bị tấn công : 17
5 Phương thức tấn công Website Wordpress : 19
5.1 Nguyên nhân dẫn đến Website Wordpress bị tấn công : 19
5.2 Các cách cần thiết đễ tránh bị tấn công : 19
II CÁC CÔNG CỤ QUÉT LỖ HỔNG WEBSITE : 21
1 OWASP Zed Attack Proxy ( ZAP 2.2.2 ) : 21
2 Acunetix Web Vulnerability Scanner ( Sử dụng Trail 14 Day ) : 22
Trang 2A GIỚI THIỆU :
I Các nguyên nhận và mối đe dọa Website :
Trong quá trình hoạt động, ứng dụng web thường được phép truy xuất đếncác tài nguyên quan trọng của hệ thống đó là máy chủ web và máy chủ cơ sở dữliệu Thông thường khi phát triển ứng dụng, các lập trình viên thường dành nhiềuthời gian cho các chức năng, giao diện mà bỏ qua vấn đề bảo mật Điều đó không
có nghĩa là lập trình viên không quan tâm đến vấn đề bảo mật mà vấn đề ở chỗ họthường thiếu kiến thức về bảo mật và vấn đề bảo mật thường bị bỏ qua trong giaiđoạn thiết kế và xây dựng ứng dụng
Ứng dụng có lỗ hỗng bảo mật thường bị tin tặc khai thác để chiếm quyền điềukhiển máy chủ web và máy chủ cơ sở dữ liệu Từ đó tin tặc có thể triển khai cáckiểu tấn công khác như:
Thay đổi giao diện trang web
Chèn các mã độc được cài đặt tự động vào máy người dùng khi họ truy cậpvào ứng dụng
Chèn các mã độc để lấy cắp các thông tin về phiên làm việc (session ID)
Lấy cắp thông tin về được lưu trữ trên cơ sở dữ liệu
Truy cập tự do vào những vùng cấm
II Khái niệm an ninh website :
An ninh Website là bằng các phương pháp khoa học và kỹ thuật đánh giámột cách tổng thể và chi tiết về an tòan bảo mật website Các phương pháp đánhgiá và phân tích được dựa trên cơ sở sử dụng các công cụ kỹ thuật chuyên dụng và
kỹ thuật tấn công phân tích Kết quả của việc đánh giá sẽ cho biết về mức độ antòan của hệ thống, khả năng phòng chống trước những tấn công ngày càng nhiều vànguy hiểm trên mạng Internet Kết quả cung sẽ chỉ ra các thiếu sót cần khắc phụctrong việc triển khai và vận hành hệ thống
WEB (OWASP).
I WEB Application là gì?
1 Khái quát web application
Web application là những ứng dụng phần mềm chạy được trên trình duyệtweb, nói cách khác bạn có thể truy xuất vào phần mềm của mình mọi lúcmọi nơi chỉ cần có kết nối internet
Trang 3 Ưu thế: đặc biệt của việc xây dựng ứng dụng Web để hỗ trợ những tính năng
chuẩn của trình duyệt đó là chúng sẽ hoạt động như mong muốn bất kể hệđiều hành hay phiên bản hệ điều hành nào được cài trên máy khách chotrước, ứng dụng có thể được viết chỉ một lần và triển khai mọi nơi
Nhược điểm: sự hiện thị không được ổn định của HTML, CSS, DOM và
những đặc tính trình duyệt khác có thể gây ra rắc rối trong việc phát triển và
hỗ trợ ứng dụng web Thêm vào đó, khả năng cho người dùng điều chỉnhnhiều cài đặt hiển thị cho trình duyệt của họ (như chọn kích thước font, màusắc, và kiểu chữ, hoặc tắt tính năng script) có thể can thiệp vào sự ổn địnhcủa ứng dụng web
Trang 43 Các rủi ro trong web application
Kẻ tấn công có thể lợi dụng nhiều con đường khác nhau thông qua ứng dụngcủa bạn và làm tổn hại doanh nghiệp hay tổ chức của bạn Mỗi con đườngthể hiện một rủi ro khác nhau mà có thể có hoặc không gây ra sự chú ý
Thường thì những con đường này khá dễ để tìm ra và tận dụng để phá hoại,tuy nhiên cũng có những trường hợp rất phức tạp Hiện nay có khá nhiều kĩthuật đã được khai thác trong các ứng dụng liên quan đến web
92% lỗ hỗng nằm ở lớp ứng dụng, không nằm trong lớp hạ tầng mạng 90%ngân sách tập trung vào hạ tầng mạng 75% cuộc tấn công nhằm vào lớp ứngdụng
Các lỗ hổng phổ biến nhất
II Tiêu chuẩn OWASP.
1 OWASP là gì?
- 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úpcác doanh nghiệp có thể phát triển, mua và bảo trì các ứng dụng web mộtcách an toàn
- OWASP cung cấp nhiều tài liệu hướng dẫn về các lĩnh vực khác nhau trongviệc bảo mật ứng dụng:
Các vấn đề về bảo mật ứng dụng (Application Security Desk Reference):cung cấp các định nghĩa và mô tả về tất cả các khái niệm quan trọng, cácloại lỗi, lỗ hổng, các phương pháp tấn công, phương pháp kiểm tra, các
Trang 5tác động kỹ thuật và tác động kinh doanh trong bảo mật ứng dụng Đây làtài liệu tham chiếu cho tất cả các tài liệu hướng dẫn khác của OWASP.
Hướng dẫn Phát triển (Developer’s Guide): bao gồm tất cả các yếu tố bảomật mà người phát triển ứng dụng cần quan tâm Trong tài liệu cung cấphàng trăm loại lỗ hổng phần mềm, có thể được sử dụng như một sáchhướng dẫn mạnh mẽ về kiểm soát bảo mật
Hướng dẫn Kiểm tra (Testing Guide): Là tài liệu cung cấp về các quytrình và công cụ kiểm tra bảo mật ứng dụng Cách sử dụng tài liệu tốtnhất là áp dụng vào việc kiểm tra điểm yếu bảo mật của một ứng dụnghoàn thiện
Hướng dẫn Kiểm tra mã nguồn (Code Review Guide): Kiểm tra ứng dụngbằng cách xem mã nguồn sẽ hỗ trợ phòng tránh cho ứng dụng khỏi cáctác động bên cạnh việc kiểm tra từ bên ngoài Người kiểm tra có thể chủđộng lựa chọn cách thức tiếp cận với ứng dụng phù hợp nhất
Ngoài ra, cộng đồng OWASP cũng giới thiệu tài liệu “OWASP Top 10”.Đây là một dự án tập trung vào phân loại 10 rủi ro bảo mật ứng dụng phổbiến nhất trong mối quan hệ với các tác động kỹ thuật và kinh doanh,đồng thời cung cấp các hướng dẫn cụ thể về cách thức kiểm tra, xác minh
và khắc phục những điểm yếu bảo mật dễ gặp phải của ứng dụng.OWASP Top 10 chủ yếu tập trung giải quyết vấn đề về các nguy cơ phổbiến hơn là việc bảo mật trên một ứng dụng web hoàn thiện Toàn bộ nộidung trong OWASP Top 10 được đăng tải tại địachỉ: www.owasp.org/index.php/Top10
- Có 1 số thay đổi giữa OWASP TOP phiên bản 2013 và phiên bản 2010 :
Trang 6- Ưu điểm của phương pháp OWASP
Khuyến khích các nhà phát triển thực hành mã hóa an toàn bằng cách tíchhợp kiểm tra an ninh ở từng giai đoạn phát triển Điều này sẽ giúp cho cácứng dụng trong quá trình phát triển tránh được các lỗi và an toàn hơn
Tài liệu Hướng dẫn Kiểm tra của OWASP cung cấp chi tiết về các kỹthuật đánh giá, cung cấp một cái nhìn rộng hơn vào nhiều nền tảng côngnghệ giúp người kiểm tra lựa chọn cách thức phù hợp nhất để tiến hànhkiểm tra
Tài liệu OWASP Top 10 cung cấp các hướng dẫn kỹ thuật giúp chống lạicác cuộc tấn công và điểm yếu bảo mật phổ biến nhất và duy trì tính bảomật (Confidentiality), tính toàn vẹn (Integrity) và tính sẵn sàng(Availability) của ứng dụng (CIA)
Cộng đồng OWASP cũng đã phát triển một số công cụ bảo mật và hướngdẫn sử dụng tập trung vào kiểm tra ứng dụng web một cách tự động Mộtvài công cụ như: WebScarab, Wapiti, JBroFuzz và SQLiX Các công cụnày cũng được cài đặt sẵn trong hệ điều hành BackTrack
Trang 7a Injection (nhúng mã)
Nguyên nhân: Các truy vấn đầu vào tại ứng dụng bị chèn các dữ liệu không
an toàn rồi gửi đến server
SQL ijection, XML injection, command injection,…
Nguy cơ:
Truy cập dữ liệu bất hợp pháp
Thêm, xóa, sửa dữ liệu nguy hiểm vào Database
Thực hiện một số tấn công từ chối dịch vụ
b Broken Authentication and Session Management (Sai lầm trong kiểm tra định danh)
Cho phép hacker từ bên ngoài có thẻ truy cập trái phép vào những tài nguyênnội bộ, thực hiện các hành vi nâng quyền quản trị hoặc tấn công dựa vào cácdạng như session,…
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ủangườ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ườidùng khác
c Cross-Site Scripting(XSS)
Cho phép hacker thực thi mã độ tại máy nạn nhân
Nguy cơ đánh cắp cookie/session
Thực hiện các truy vấn hại cho người dung
Phát tán mã độc
d Insecure Direct Object References (Đối tượng tham chiếu không an toàn)
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 thamchiếu này để truy cập dữ liệu một cách trái phép
Trang 8 Việc phân quyền yếu cho phép người dùng có thể truy cập dữ liệu của ngườikhác Và hacker có thể xác định được cấu trúc truy vấn gửi đến server và cóthể nhanh chóng thu nhập dữ liệu như Credit Card, mã khách hang, thông tin
cá nhân
e Security Misconfiguration (sai sót trong cấu hình)
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ểnkhai 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ậtphần mềm và những thư viện được sử dụng bởi ứng dụng
f Sensitive Data Exposure (Lưu trữ dữ liệu thiếu an toàn)
Các dữ liệu nhạy cảm được lưu trữ khôn an toàn ảnh hưởng đến hệ thốngmáy chủ cũng như khách hang
Thẻ tín dụng/ Tài khoản đăng nhập được lưu trữ dưới dạng không mã hóa(clear-text)
Kênh truyền HTTPS bị hacker nghe lén và dữ liệu được giải mã thông qua lỗhổng CRIME
g Missing Function Level Access Control (Sai sót trong 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ướckhi dựng các liên kết và nút nhấn được bảo vệ Tuy nhiên ứng dụng cũngphải thực hiện những kiểm tra tương tự mỗi khi những trang thông tin đượctruy cập trực tiếẩn này.p nếu không kẻ tấn công có thể giả mạo URL để truycập vào những trang thông tin ẩn này
h Cross-Site Request Forgery (Giả mạo yêu cầu)
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 hay chophép kẻ tấn công buộc trình duyệt của nạn nhân để tạo ra các yêu cầu ứngdụng vi phạm dưới dạng yêu cầu hợp pháp của nạn nhân
Với những hệ thống thanh toán không kiểm tra tính hợp lệ củatoken/Session/Domain,… thì nguy cơ người dùng bị mất tiền do bị lừa thựchiện các mã kịch bản do hacker cài vào
Trang 9i Using Components with Known Vulnerabilities (Sử dụng các thành phần có lỗ hỏng)
Việc sử dụng các lỗ hổng bảo mật trong các thư viện, plugin, module, ứngdụng, Được công khai trong cộng đồng giúp hacker nhanh chóng khai tháccác lỗ hổng bão mật
Các ứng dụng sử dụng các thành phần có lỗ hổng đã biết sẽ dẫn đến làm suyyếu bảo mật ứng dụng và cho phép một loạt các cuộc tấn công có thể và tácđộng
j Unvalidated Redirects and Forwards (Chuyển hướng và chuyển tiếp thiếu thẩm tra)
Việc chuyển hướng không an toàn người dùng đến một đường dẫn bên ngoàitrang có nguy cơ đưa người dung truy cập đến những trang chứa mã độcnhằm tấn công vào chính người dung và hệ thống
SQL Injection : được mô tả như là một trong những lỗ hổng bảo mật web
nguy hiểm nhất Khai thác Sql Injection, ngoài việc đoạt được quyền kiểm soát về
mặt dữ liệu như đã nói ở trên, hacker còn có thể cài đặt backdoor trên server màứng dụng đang chạy, qua đó kiểm soát toàn bộ hệ thống…
1.1 Cách thức tấn công :
Thông qua link web hacker có thể dùng những lệnh truy vấn database để tấncông
Trang 10- Dùng những câu lệnh Select để truy xuất dữ liệu :
http://www.example.com/product_details.php?idproduct=-NULL UNION SELECT1,@@VERSION,3,4,5—
TABLE_SCHEMA=DATABASE() - Lấy user, password từ Admin :
http:// www.example.com /product_details.php?idproduct=10’ UNIONSELECT
- Ngăn chặn thông báo lỗi :
Code chưa fix :
Trang 11$id = $_GET[id]; mysql_query("SELECT * FROM sanchoituoitre.vn WHEREid=$id");
Code đã fix :
* FROM sanchoituoitre.vn WHERE id=$id");
Kết quả in ra là : SELECT * FROM users WHERE user='' AND password=''
- Các câu truy vấn user , password đơn giản sẽ dễ bị tấn công :
using (SqlConnection connnection = new SqlConnection(ConnString))
{
// Build the query statement using dynamic data
string sql = "SELECT UserId FROM User WHERE " +
"UserName = '" + UserName + "' AND " +
- Có thể sữa truy vấn bằng cách thêm các tham số vào các giá trị :
string sql = "SELECT UserId FROM User WHERE " +
Trang 12"UserName = @UserName AND Password = @Password";
cmd.Parameters.Add("@Password", System.Data.SqlDbType.NVarChar,25);
XSS là một trong những lỗi phổ biến, có rất nhiều trang web mắc phải lỗinày
I.1 Cách thức hoạt động :
XSS cho phép attacker chèn các đoạn mã vào link của đường dẫn, để thực thitrên trình duyệt của người dùng, dẫn đến việc mất cookies, mật khẩu, session hayfishing lừa đảo hay chèn virus, Trojan, backdoor
Trang 13Thường thì XSS có dạng như sau:
http://www.xxx.com/index.php?query=<script>alert('hello');</script>
Và nội dung hiện ra trên trình duyệt sẽ là: “ hello ”
I.2 Cách phát hiện lỗi :
Chủ yếu lỗi XSS nằm ở các phần : search results, error messages, Web-form,
và những chỗ mà người dùng có thể nhập dự liệu vào và sau đó nhận được một kếtquả gì đó
Các thức tìm lỗi XSS :
- Có thể dùng các công cụ quét lỗi Website ở trang 4
- Chúng ta có thể tìm lỗi bằng tay với những phần mình nên trên như :search… Chúng ta thực hiện các bước sau :
Bước 1 : Mở website cần kiểm tra
Bước 2 : Bắt đầu kiểm tra , định vị 1 ô tìm kiếm hoặc 1 login form và gửi thôngtin đi (nhập thông tin và nhấn submit) , ví dụ nhập chữ "XSS" hay những từ khác Bước 3 : Xác định khả năng site có bị lỗi XSS hay không bằng cách xem thôngtin trả về :
Ví dụ bạn thấy như thế này : · "Your search for 'XSS' did not find any items"
· "Your search for 'XSS' returned the following results" · "User 'XSS' is not valid" ·
"Invalid login 'XSS'" hoặc là giá trị nào đó có liên quan tới "XSS" mà bạn nhập vàoban đầu thì 99% "Alert" này bị XSS
Hãy thữ lần lượt với các script khác : < script>alert('XSS')< /script> hoặc <i*gcsstest=java script:alert('XSS')> hoặc &{alert('XSS')};
Bước 4 : Chèn code thực sự vào nơi bị lỗi : < script>alert('XSS')< /script>vào ô nhập giá trị và nhấn SUBMIT Nếu sau đó bạn nhận được 1 popup có chữ
"XSS" thì "Alert" này 100% bị dính XSS
Một ví dụ khác thường gặp hơn :
http://sitebiloi.com/ là site bị dính lỗi XSS và ta tìm được nơi bị lỗi như thếnày : http://sitebiloi.com/index.php?page=<s < script> , nghĩa là ta có thể chèncode ngay trên thanh ADDRESS