Theo khảo sát, hơn 90% các ứng dụng web và website tồn tại các lỗ hổng an ninh, khoảng 75% các cuộc tấn công mạng được thực hiện thông qua ứng dụng web hoặc thông qua website. Các trang web mục tiêu không bị ảnh hưởng trực tiếp bởi các cuộc tấn công làm cho các cuộc tấn công khó có thể bị phát hiện và cảnh báo. Theo Imperva, chiến dịch đang tiếp diễn và các hacker đang tiếp tục tìm kiếm và nhắm vào các website có nhiều lỗ hỗng. Trong tháng 2 – 2016, hacker đã đột nhập vào trang web chính thức của Linux Mint và âm thầm cài backdoor của họ vào các bản phiên bản của hệ điều hành cho hàng ngàn người sử dụng mà không hề hay biết. Vào tháng 10 – 2015, hacker đã chiếm hữu hàng ngàn website được xây dựng bởi nền tảng thương mại điện tử Magento eBay thông qua lỗ hổng zeroday và lạm dụng chúng để phân phối các phần mềm độc hại đến người dùng. Hầu hết các công ty đã đảm bảo dữ liệu của họ ở mức độ mạng, nhưng đã bỏ qua các bước quan trọng của việc bảo đảm các ứng dụng web. Website hoàn toàn không được bảo vệ bởi tường lửa và do đó dễ dàng làm mồi cho những kẻ tấn công.
Trang 1
TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TPHCM
- KHOA CÔNG NGHỆ THÔNG TIN
BÀI BÁO CÁO MÔN HỌC
AN NINH MẠNG
TÌM HIỂU VÀ THỰC NGHIỆM VỀ CÁC DẠNG TẤN CÔNG WEBSITE
Giảng viên hướng dẫn: Th.S Nguyễn Thị Thanh Vân
Nhóm thực hiện:
- Nguyễn Trường Hận 14110054
- Trần Thị Ngọc Anh 14110003
TP.Hồ Chí Minh, tháng 12 năm 2017
Trang 2MỤC LỤC
DANH SÁCH HÌNH ẢNH Error! Bookmark not defined CÁC THUẬT NGỮ, TỪ VIẾT TẮT Error! Bookmark not defined
PHẦN LÝ THUYẾT 3
Chương 1: Giới thiệu về tấn công website 3
1.1 Tổng quan về bảo mật web (Web security) 3
1.2 Cách tấn công website 4
Chương 2: Các dạng tấn công web 7
2.1 SQL Injection 7
2.2 Cross-Site Request Forgery (CSRF) 8
2.3 Cross-Site Scripting (XSS) 8
2.4 Tấn công từ chối dịch vụ (DDOS) 11
2.5 File Inclusion 12
Chương 3: Công cụ triển khai các dạng tấn công web 14
3.1 Damn Vulnerable Web Application 14
PHẦN THỰC NGHIỆM 15
Trang 3PHẦN LÝ THUYẾT
Chương 1: Giới thiệu về tấn công website
1.1 Tổng quan về bảo mật web (Web security)
Hiện nay, bảo mật thông tin đang là thách thức rất lớn đổi với các nhà nghiên cứu chuyên gia trong ngành, bởi các lỗ hổng và phương thức khai thác lỗ hổng ngày càng phức tạp và tinh vi
Theo khảo sát, hơn 90% các ứng dụng web và website tồn tại các lỗ hổng an ninh, khoảng 75% các cuộc tấn công mạng được thực hiện thông qua ứng dụng web hoặc thông qua website Các trang web mục tiêu không bị ảnh hưởng trực tiếp bởi các cuộc tấn công làm cho các cuộc tấn công khó có thể bị phát hiện và cảnh báo Theo Imperva, chiến dịch đang tiếp diễn và các hacker đang tiếp tục tìm kiếm và nhắm vào các website có nhiều lỗ hỗng Trong tháng 2 – 2016, hacker đã đột nhập vào trang web chính thức của Linux Mint và âm thầm cài backdoor của họ vào các bản phiên bản của hệ điều hành cho hàng ngàn người sử dụng mà không hề hay biết Vào tháng 10 – 2015, hacker đã chiếm hữu hàng ngàn website được xây dựng bởi nền tảng thương mại điện tử Magento eBay thông qua lỗ hổng zero-day và lạm dụng chúng để phân phối các phần mềm độc hại đến người dùng
Hầu hết các công ty đã đảm bảo dữ liệu của họ ở mức độ mạng, nhưng đã bỏ qua các bước quan trọng của việc bảo đảm các ứng dụng web Website hoàn toàn không được bảo vệ bởi tường lửa và do đó dễ dàng làm mồi cho những kẻ tấn công 1.2 Lỗ hổng bảo mật
1.2.1 Lỗ hổng bảo mật
Lỗ hổng bảo mật là các điểm yếu trên website, có thể gây ra do: lỗi cấu hình, phân quyền cho website, lỗi lập trình của người lập trình, lỗi nằm trong các hệ thống, thành phần tích hợp
Tin tặc có thể lợi dụng các lỗ hổng này để khai thác và tấn công phá hoại website
Lỗ hổng bảo mật rất khó để nhận biết ngay, cần được thực hiện bởi các chuyên gia hàng đầu
1.2.2 Phân loại lỗ hổng bảo mật
Có nhiều tổ chức khác nhau tiến hành phân loại các dạng lỗ hổng đặc biêt Theo cách phân loại của Bộ quốc phòng Mỹ, các loại lỗ hổng bảo mật trên một hệ thống được chia như sau:
• Lỗ hổng loại C: các lỗ hổng loại này cho phép thực hiện các phương thức tấn công theo DoS (Dinal of Services – Từ chối dịch vụ) Mức độ nguy hiểm thấp, chỉ ảnh hưởng tới chất lượng dịch vụ, có thể làm ngưng trệ, gián đoạn
hệ thống; không làm phá hỏng dữ liệu hoặc đạt được quyền truy nhập bất hợp pháp
Trang 4• Lổ hổng loại B: Các lỗ hổng cho phép người sử dụng có thêm các quyền trên
hệ thống mà không cần thực hiện kiểm tra tính hợp lệ Mức độ nguy hiểm trung bình; Những lỗ hổng này thường có trong các ứng dụng trên hệ thống;
có thể dẫn đến mất hoặc lộ thông tin yêu cầu bảo mật
• Lỗ hổng loại A: Các lỗ hổng này cho phép người sử dụng ở ngoài có thể truy nhập vào hệ thống bất hợp pháp Lỗ hổng rất nguy hiểm, có thể làm phá hủy toàn bộ hệ thống
Dự án mở về an ninh ứng dụng web OWASP đã phân loại 10 lỗ hổng ứng dụng web phổ biến và nguy hiểm nhất hiện nay gồm:
• A1- Nhúng mã (Injection)
• A2- Xác thực hay quản lý phiên thiếu chính xác
• A3- Thực thi mã Script xấu (XSS)
• A4- Đối tƣợng tham chiếu không an toàn
• A5- Sai sót trong cấu hình an ninh
• A6- Lộ dữ liệu nhạy cảm
• A7- Điều khiển truy cập mức chức năng không an toàn
• A8- Tấn công giả mạo (CSRF)
• A9- Sử dụng thành phần chứa lỗ hổng đã công khai
• A10- Chuyển huớng và chuyển tiếp không an toàn
1.3 Cách tấn công website
Với 1 hacker, quá trình tấn công 1 mục tiêu có thể được khái quát 3 giai đoạn:
• Giai đoạn 1: Thu thập thông tin
• Giai đoạn 2: Phân tích và hành động
• Giai đoạn 3: Dừng và xóa dấu vết
Trang 5Ở đây sẽ tập trung vào phân tích giai đoạn 1 và giai đoạn 2
• Giai đoạn 1: Khảo sát ứng ứng dụng Web
• Gai đoạn 2: Tấn công mục tiêu
1.3.1 Giai đoạn 1: Khảo sát ứng ứng Web
Tiến hành thu thập thông tin ở mức trên về hạ tầng của mục tiêu:
Thu thập một số thông tin quan trọng như có bao nhiêu server, mô hình của các Web server, các client nào sẽ tương tác với ứng dụng Web, kiểu giao tiếp thông tin (stranport) và thông qua các cổng (port) nào, những site liên quan đến việc thực hiện chức năng của site mục tiêu
Tiếp đó khảo sát ứng dụng Web:
Một trong những phương pháp khảo sát khá phổ biến, đó là xem mã nguồn
và lợi dụng các lỗi cho phép xem mã nguồn các ngôn ngữ Web như Active Server Pages (ASP), Common Gateway Interface (CGI), ColdFusion Server (CFM), Hypertext Preprocessor (PHP)
Sử dụng một số phép thử như thêm dấu ‘ vào các url theo khuôn dạng truyền vào giá trị rất phổ biến, đưa vào những mẫu thử cở bản của form xác thực đăng nhập để khảo sát các lỗi SQL Injection
▪ Đưa vào các thông tin “lạ” ở các form ứng dụng Web hay trên url để xem các thông điệp chuyển xuống cho người dùng khi ứng dụng có lỗi Các thông báo lỗi thường tiết lộ các chi tiết kỹ thuật, dựa vào đó có thể biết được điểm yếu của hệ thống
▪ Sử dụng các công cụ để đưa các trang Web mục tiêu vào do tìm các lỗi của người phát triển ứng dụng để từ đố xây dựng nên kịch bản tấn công
và chọn cách tấn công cụ thể
▪ Tìm hiểu sâu về các chức năng của ứng dụng Web Tìm hiểu các thực hiện của các phần trong ứng dụng, đặc biệt như các order input, confimation, order tracking
▪ Tìm hiểu luồng di chuyển của thông tin Các thông tin tương tác giữa client và server, các thông tin trương tác với database Hiện nay việc viết
mã để thực hiện việc giao tiếp thông tin thường phải đảm bảo được tính hiệu quả (nhanh) và bảo mật (có thể sẽ chậm hơn) Thường thì tính hiệu quả được ưu tiên hơn do đó có thể sẽ phát sinh lỗi, các hacker có thể lợi dụng các lỗi này để đoạt quyền điều khiển hệ thống
1.3.2 Giai đoạn 2: Tấn công mục tiêu
Trang 6Việc thu thập thông là vấn đề quan trọng cho việc tấn công vào một hệ thống máy mục tiêu Cho dù hacker tấn công theo phương diện phần cứng hay qua ứng dụng thì việc thu thâp vẫn cần thiết
Sau khi đã khảo sát và thu thập thông tin mục tiêu, hacker bắt đầu thực hiện tấn công nhằm xâm nhập vào hệ thống lấy thông tin, đưa thông tin xấu vào, dành quyền kiểm soát Có thể không cần phải đi theo thứ tự hay qua hết những bước này, nhưng việc nắm rõ thông tin của máy mục tiêu luôn là điều kiện tiên quyết để dẫn đến thành công trong việc tấn công Tùy vào thông tin thu thập được mà hacker sẽ quyết địnnh tấn công theo kỹ thuật nào, xây dựng một kịch bản tấn công phù hợp
Một số kịch bản tấn công:
▪ Tấn công đồng loạt các trang thông tin điện tử, làm thay đổi nội dung, đưa thông tin sai lệch
▪ Tấn công vào các ứng dụng Web mua bán, giao dịch để đánh cấp thông tin
cá nhân, thẻ tín dụng
▪ Tấn công ứng dụng Web, đặt mã độc tại trang Web, sử dụng máy chủ bị lỗi
để thực hiện hành vi tấn công khác
Mục đích tấn công cơ bản trên Web:
▪ Mục đích chính trị: tấn công các trang thuộc chính phủ, thành phố, các ban ngành
▪ Mục đích lợi nhuận: các trang thương mại điện tử, tài chính, ngân hàng
▪ Mục đích cá nhân
Nếu không thành công trong việc xâm nhập bằng các kỹ thuật phổ biến, thì Dos là cách thức mà hacker thường lựa chọn để làm cho hệ thống không thể hoạt động được
Do đó, việc bảo mật cho mọt hệ thống cần đòi hỏi sự kết hợp không chỉ của riêng nhà quản trị hệ thống mà còn của nhà thiết kế ứng dụng và sự hợp tác của những khách hàng thường sử dụng
Trang 7Chương 2: Các dạng tấn công web
2.1 SQL Injection
SQL injection là một kỹ thuật cho phép những kẻ tấn công lợi dụng lỗ hổng của việc kiểm tra dữ liệu đầu vào trong các ứng dụng web và các thông báo lỗi của hệ quản trị cơ sở dữ liệu trả về để inject (tiêm vào) và thi hành các câu lệnh SQL bất hợp pháp SQL injection có thể cho phép những kẻ tấn công thực hiện các thao tác, delete, insert, update, v.v Trên cơ sở dữ liệu của ứng dụng, thậm chí là server mà ứng dụng đó đang chạy SQL injection thường được biết đến như là một vật trung gian tấn công trên các ứng dụng web có dữ liệu được quản lý bằng các hệ quản trị cơ sở dữ liệu như SQL Server, MySQL, Oracle, DB2, Sysbase
Một số dạng tấn công thường gặp với các ứng dụng web
2.1.1 Dạng tấn công vượt qua kiểm tra lúc đăng nhập
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ệnh SQL thao tác trên cơ sở dữ liệu của ứng dụng web Thông thường để cho phép người dùng truy cập vào các trang web được bảo mật, hệ thống thường xây dựng trang đăng nhập để yêu cầu người dùng nhập thông tin về tên đăng nhập và mật khẩu Sau khi người dùng nhập thông tin vào, hệ thống
sẽ kiểm tra tên đăng nhập và mật khẩu có hợp lệ hay không để quyết định cho phép hay từ chối thực hiện tiếp
2.1.2 Dạng tấn công sử dụng câu lệnh SELECT
Dạng tấn công này phức tạp hơn Để thực hiện được kiểu tấn công này, kẻ tấn công phải có khả năng hiểu và lợi dụng các sơ hở trong các thông báo lỗi từ hệ thống để dò tìm các điểm yếu khởi đầu cho việc tấn công Ví dụ, trong các trang tìm kiếm Các trang này cho phép người dùng nhập vào các thông tin tìm kiếm như Họ, Tên, …
2.1.3 Dạng tấn công sử dụng câu lệnh INSERT
Thông thường các ứng dụng web cho phép người dùng đăng ký một tài khoản
để tham gia Chức năng không thể thiếu là sau khi đăng ký thành công, người dùng
có thể xem và hiệu chỉnh thông tin của mình SQL injection có thể được dùng khi
hệ thống không kiểm tra tính hợp lệ của thông tin nhập vào
2.1.4 Dạng tấn công sử dụng stored-procedures
Việc tấn công bằng stored-procedures sẽ gây tác hại rất lớn nếu ứng dụng được thực thi với quyền quản trị hệ thống 'sa' Ví dụ, nếu ta thay đoạn mã tiêm vào dạng: '; EXEC xp_cmdshell ‘cmdd.exe dir C: ' Lúc này hệ thống sẽ thực hiện lệnh
Trang 8liệt kê thư mục trên ổ đĩa C:\ cài đặt server Việc phá hoại kiểu nào tuỳ thuộc vào câu lệnh đằng sau cmd.exe
2.2 Cross-Site Request Forgery (CSRF)
Cross-site Request Forgery (CSRF), XSRF nói đến việc tấn công vào chứng thực request trên web thông qua việc sử dụng Cookies, nơi mà các hacker có khả năng sử dụng thủ thuật để tạo request mà bạn không hề biết Vì vậy, một CSRF là hacker lạm dụng sự tin tưởng của một ứng dụng web trên trình duyệt của nạn nhân CSRF là một kiểu tấn công gây sự nhầm lẫn tăng tính xác thực và cấp quyền của nạn nhân khi gửi một request giả mạo đến máy chủ Vì thế một lỗ hổng CSRF ảnh hưởng đến các quyền của người dùng ví dụ như quản trị viên, kết quả là chúng truy cập được đầy đủ quyền
Trong khi một tấn công CSRF trình duyệt của nạn nhân bị lừa để gửi đi các request đến ứng dụng web theo mong muốn của kẻ tấn công, thông thường, ví dụ một yêu cầu sẽ được gửi lên để thay đổi một vài dữ liệu phía server
Khi gửi một request HTTP (hợp pháp hoặc cách khác), trình duyệt của nận nhân sẽ bao gồm các tiêu đề cookie Các cookie thường được dùng để lưu trữ một session
để định danh người dùng không phải xác thực lại cho mỗi yêu cầu gửi lên, điều này hiển nhiên là không thực tế
Nếu phiên làm việc đã xác thực của nạn nhân được lưu trữ trong một Cookie vẫn còn hiệu lực (một cửa sổ trình duyệt không nhất thiết phải mở), và nếu ứng dụng dễ
bị tấn công CSRF, kẻ tấn công có thể thử dụng CSRF để chay bất cứ yêu cầu nào với trang web mà trang web không thể phân biệt được request nào là hợp pháp hay không
2.3 Cross-Site Scripting (XSS)
XSS 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à chúng được thực thi ở người dùng(trên trình duyệt của người dùng).Khi trình duyệt của victims thực thi những đoạn script độc hại đó,chúng sẽ gửi cho hacker những thông tin của victims qua email hoặc server
Phân loại: Có 3 loại Reflected XSS, Stored XSS và DOM-based XSS
2.3.1 Reflected XSS (Non-Persistent)
Reflected XSS là dạng tấn công thường gặp nhất trong các loại hình XSS Với Reflected XSS, hacker không gửi dữ liệu độc hại lên server nạn nhân mà gửi trực tiếp link có chứa mã độc cho người dùng, khi người dùng click vào link này thì trang web sẽ được load chung với các đoạn script độc hại Reflected XSS thường dùng để ăn cắp cookie, chiếm session, … của nạn nhân hoặc cài keylogger, trojan,… vào máy tính nạn nhân
Trang 9Như hình trên ta thấy, khi nạn nhân đăng nhập vào một ứng dụng web, attacker sẽ gửi thẳng một URL để khai thác thông tin tới nạn nhân, nạn nhân truy cập URL của attacker tới server sau đó nhận phản hồi từ server kèm với đoạn mã độc của attacker Khi đoạn mã độc được thực thi trên trình duyệt của nạn nhân, session của người dùng sẽ được gửi tới attacker Attacker dựa vào thông tin nhận được trong session để chiếm quyền và giả mạo nạn nhân
2.3.2 Stored XSS (Persistent XSS)
Stored XSS là dạng tấn công mà hacker chèn trực tiếp các mã độc vào cơ sở
dữ liệu của website Dạng tấn công này xảy ra khi các dữ liệu được gửi lên server không được kiểm tra kỹ lưỡng mà lưu trực tiếp vào cơ sở dữ liệu Khi người dùng truy cập vào trang web này thì những đoạn script độc hại sẽ được thực thi chung với quá trình load trang web
Trang 10Như trên hình ta thấy, attacker sẽ tiến hành gửi tới server một nội dung kèm mã độc, khi nạn nhân đăng nhập và truy cập vào nội dung chứa mã độc thì server sẽ phản hồi kèm với mã độc của hacker, nạn nhân nhận được phản hồi của server thì tiến hành thực thi trên trình duyệt và gửi phiên làm việc tới attacker Từ đó hacker sẽ có được thông tin như tên đăng nhập, password, … và chiếm session của nạn nhân
2.3.3 DOM-based XSS
DOM-based XSS là một dạng tấn công XXS làm thay đổi cấu trúc cảu một trang web bằng cách thay đổi cấu trúc HTML Đối với dạng tấn công này, hacker
sẽ chèn các đoạn script nhằm làm thay đổi giao diện mặc định của trang web thành giao diện giả, ví dụ như tạo ra form đăng nhập giả và dụ người dùng đăng nhập để chiếm mật khẩu của họ
DOM-based XSS là một biến thể của Persistent XSS và Non-Persistent XSS
Trang 11Như hình trên ta thấy rằng, khi nạn nhân đăng nhập vào ứng dụng web, attacker sẽ gửi tới nạn nhân URL chữa đoạn javaScript, nạn nhân gửi yêu cầu truy cập tới server
và nhận phản hồi từ server trang web chữa mã của attacker Khi trình duyệt sử lí phản hồi từ server, trình duyệt sẽ gửi thông tin session cho attacker từ đó attacker chiếm được session của nạn nhân
2.4 Tấn công từ chối dịch vụ (DDOS)
Tấn công từ chối dịch vụ phân tán (DDoS - Distributed Denial Of Service)
là kiểu tấn công làm cho hệ thống máy tính hay hệ thống mạng quá tải, không thể cung cấp dịch vụ hoặc phải dừng hoạt động Trong các cuộc tấn công DDoS, máy chủ dịch vụ sẽ bị "ngập" bởi hàng loạt các lệnh truy cập từ lượng kết nối khổng lồ Khi số lệnh truy cập quá lớn, máy chủ sẽ quá tải và không còn khả năng xử lý các yêu cầu Hậu quả là người dùng không thể truy cập vào các dịch vụ trên các trang web bị tấn công DdoS