Tiếp theo chúng ta sẽ đi nghiên cứu chi tiết về 3 loại tấn công này trong chương 2 và một vài lỗ hổng ít được chú ý hơn, chúng sẽ được miêu tả tại chương 4 khi thực thi các công cụ trên
Trang 1MỤC LỤC
LỜI CAM ĐOAN 1
LỜI CẢM ƠN 4
DANH MỤC BẢNG BIỂU 6
DANH MỤC HÌNH VẼ 7
CHƯƠNG 1 GIỚI THIỆU 11
1.1 Tính cấp thiết của đề tài 11
1.2 Mục tiêu đề tài 11
1.3 Bố cục luận văn 12
1.4 Tổng quan về vấn đề bảo mật trên nền Web 12
1.5 Một số nguyên nhân phổ biến cho ứng dụng Web mất tính an toàn 13
1.6 Thống kê các loại tấn công 13
CHƯƠNG 2 MỘT SỐ NGUY CƠ AN NINH THƯỜNG GẶP 15
2.1 Tấn công DoS 15
2.1.1 Giới thiệu về DoS 15
2.1.2 Mục đích và các dạng tấn công DoS 15
2.1.3 Tấn công DDoS 18
2.2 Cross-Site Scripting (XSS) 20
2.2.1 Tổng quan về XSS 20
2.2.2 Ảnh hưởng do XSS gây ra 21
2.2.3 Phân loại 21
2.2.4 Cách phát hiện ra sâu XSS 24
2.2.5 Các phương pháp ngăn chặn lỗ hổng bảo mật XSS 24
2.3 Tổng quan SQL Injection 25
2.3.1 Định nghĩa 25
2.3.2 Các kỹ thuật tấn công SQL Injection 25
2.3.3 Những ảnh hưởng gây ra của SQL Injection 28
2.3.4 Các phương pháp phòng chống SQL Injection phổ biến 29
CHƯƠNG 3 MỘT SỐ CÔNG CỤ PHÁT HIỆN NGUY CƠ AN NINH 30
3.1 Netsparker 30
3.2 Websecurify 31
3.3 Acunetix 34
Trang 23.9 W3af 49
3.10 Công cụ tấn công DoS 51
CHƯƠNG 4 THỰC NGHIỆM VÀ PHÂN TÍCH KẾT QUẢ 54
4.1 Acunetix 54
4.1.1 Thực nghiệm 54
4.1.2 Phân tích thực nghiệm 54
4.2 BurpSuite 55
4.2.1 Thực nghiệm 55
4.2.2 Phân tích thực nghiệm 57
4.3 Netsparker 58
4.3.1 Thực nghiệm 58
4.3.2 Phân tích thực nghiệm 58
4.4 Skipfish 59
4.4.1 Thực nghiệm 59
4.4.2 Phân tích thực nghiệm 61
4.5 W3af 62
4.5.1 Thực nghiệm 62
4.5.2 Phân tích thực nghiệm 62
4.6 Websecurify 64
4.6.1 Thực nghiệm 64
4.6.2 Phân tích thực nghiệm 65
4.7 Tổng hợp đánh giá 65
CHƯƠNG 5 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 69
TÀI LIỆU THAM KHẢO 70
Trang 3
DANH MỤC BẢNG BIỂU
Bảng 2.1: Các mẫu đầu vào 26
Bảng 4.1: Danh sách các lỗ hổng trên các công cụ 66
DANH MỤC HÌNH VẼ Hình 1.1: Thống kê các loại tấn công 14
Hình 2.1: Tấn công SYN 16
Hình 2.2: Tấn công Smurf 17
Hình 2.3: Phân loại tấn công DDOS 18
Hình 2.4: Tấn công TCP SYN 20
Hình 2.5: Mô hình tấn công XSS 22
Hình 2.6: Mô hình tấn công Reflected XSS 23
Hình 2.7: DOM-base XSS 24
Hình 3.1: Thực nghiệm công cụ Netsparket 30
Hình 3.2: Thực nghiệm công cụ Websecurify trên ứng dụng 33
Hình 3.3: Kết quả khi chạy công cụ Websecurify 34
Hình 3.4: Cách thức làm việc của Acunetix 35
Hình 3.5: Thống kê các công cụ năm 2012 của Benchmark 36
Hình 3.6: Ví dụ về Acunetix 40
Hình 3.7: Kết quả chạy Acunetix 40
Hình 3.8: Phân tích chi tiết kết quả 41
Hình 3.9: Thƣ̣c nghiệm khi lỗi xảy ra 41
Hình 3.10: Ví dụ khi chạy WebScarab 43
Hình 3.11: Thƣ̣c nghiệm công cụ Havij 44
Hình 3.12: Vị trí thay thế giá trị tấn công 46
Hình 3.13: Các giá trị thay thế trong thẻ Positions 46
Hình 3.14: Kết quả sau khi tấn công 47
Hình 3.15: Ví dụ về công cụ XSS-ME 49
Hình 3.16: Mối quan hệ các Plugin trong công cụ W3af 51
Hình 3.17: Tấn công DOS 52
Hình 4.1: Kết quả chạy công cụ Acunetix 54
Trang 4Hình 4.8: Chi tiết về thông tin cảnh báo của công cụ Skipfish 61
Hình 4.7: Kết quả chạy công cụ Skipfish 61
Hình 4.9: Công cụ W3af bật các plugin 62
Hình 4.10: Thông tin các lỗ hổng và các lỗi trên công cụ W3af 63
Hình 4.11: Kết quả các lỗ hổng được tìm thấy bởi W3af 64
Hình 4.12: Kết quả chạy công cụ Websecurify 65
Trang 5DANH MỤC CÁC CHỮ VIẾT TẮT
API Application Programming Interface Giao diện lập trình ứng dụng
AJAX Asynchronous JavaScript and XML JavaScript và XML không đồng bộ CSS Cascading Style Sheets Tập tin định kiểu theo tầng
CPU Central Processing Unit Đơn vị xử lý thông tin
XSS Cross-Site Scripting Kỹ thuật tấn công kịch bản liên trang DoS Denial Of Service Tƣ̀ chối dịch vụ
DDoS Distributed Denial of Service Dạng tấn công từ chối dịch vụ phân
tán DOM Document Object Model Là định dạng có cấu trúc đƣợc sử
dụng để đại diện tài liệu trong trình duyệt
HTML HyperText Markup Language Ngôn ngữ đánh dấu văn bản
PHP Hypertext Preprocessor Ngôn ngữ lập trình kịch bản
HTTP Hypertext Transfer Protocol Giao thức truyền tải siêu văn bản
OWASP Open Web Application Security
mạng URL Uniform Resource Locator Định vị tài nguyên về mặt địa chỉ WAN Wide Area Network Mạng truyền dữ liệu diện rộng
Trang 7CHƯƠNG 1 GIỚI THIỆU
Nội dung của chương 1 trình bày về tính cấp thiết, mục tiêu, bố cục của đề tài và tìm hiểu chung những vấn đề về bảo mật anh ninh trên nền Web, đưa ra một vài nguyên nhân gây ra mất an toàn an ninh trên các ứng dụng Web và các lỗ hổng thường thấy nhiều nhất hiện nay
1.1 Tính cấp thiết của đề tài
Với sự phát triển rất nhanh của các ứng dụng trên nền Web, việc bảo mật an ninh
an toàn cho các trang Web là một lĩnh vực đặc biệt quan vì nó đư ợc truy cập mọi lúc mọi nơi và bất kỳ ai Tuy vậy không phải bất kỳ nhà phát triển phần mềm Web nào cũng chú tâm đến việc bảo mật anh ninh , vì vậy nhiều ứng dụng Web vẫn tồn tại với các nguy cơ an ninh/an toàn/bảo mật (security vularability) và gây ra nhiều thiệt hại khi bị tấn công Tuy nhiên việc tìm kiếm và phát hiện ra các nguy cơ an ninh thủ công khá khó khăn trong khi đó có nhiều nguy cơ an ninh có thể phát hiện được bằng các công cụ tự động
Bên cạnh đó, các loại nguy cơ an ninh không ít, và cũng có rất nhiều công cụ tự động phát hiện nguy cơ bảo mật nên người phát triển phần mềm khi muốn kiểm tra mức độ an ninh an toàn của trang web của mình cũng gặp phải nhiều khó khăn Chính
vì vậy đề tài này nghiên cứu m ột số kiểu tấn công đang ph ổ biến và các công cụ tự động phát hiện nguy cơ an ninh an toàn đ ồng thời thử nghiệm chúng vào phần mềm
“Trường Nhà” ở trang web http://truongnha.com Ứng dụng “Trường Nhà” là một
trang Web quản lý trường học phổ thông và hiện đang được xây dựng bởi một đội phát triển phần mềm Chính vì vậy, đề tài sẽ đi thử nghiệm vào ứng dụng này để đưa ra lỗ hổng và một vài khuyến cáo cho đội phát triển phần mềm và từ đó kiểm tra được tính đúng đắn của kết quả cũng như các khuyến cáo của luận văn đưa ra
Qua việc nghiên cứu và thử nghiệm này, đề tài đưa ra các nguy cơ bảo mật và công
cụ để phát hiện/kiểm tra cho phần mềm Trường Nhà Từ đó để tài cũng tổng quát hóa
và đưa ra các khuyến cáo cho các nhóm phát triển phần mềm nói chung và đặc biệt khi
sử dụng các công nghệ tương tự như của Trường Nhà (sử dụng khung ứng dụng Django) về các nguy cơ bảo mật và các công cụ kiểm tra để các đơn vị phát triển phần mềm có thể tham khảo, áp dụng vào các ứng dụng Web Đề tài hy vọng sẽ giúp người phát triển phần mềm có thêm hiểu biết về an ninh an toàn cũng như các công cụ nên sử dụng để tăng cường anh ninh, bảo mật cho hệ thống Web của mình
1.2 Mục tiêu đề tài
Mục tiêu của đề tài là trình bày được tổng quan và cập nhật về các nguy cơ bảo mật, các cách thức tấn công và các cách phát hi ện lỗ hổng bả o mật trên các hệ thống
Trang 81.3 Bố cục luận văn
Luận văn bao gồm các chương sau:
Chương 1: Tổng quan an toàn bảo mật trên nền Web: Chương này giới thiệu về
vấn đề bảo mật, vai trò quan trọng của bảo mật trên nền web và các nguy cơ gây ra bởi việc thiếu an toàn bảo mật cho ứng dụng web
Chương 2: Tấn công an toàn thông tin trong ứng dụng Web: Chương này mô
tả về một vài kỹ thuật tấn công an toàn Web phổ biến (DoS/DDoS, XSS, SQL injection), ví dụ và cách thức tấn công của chúng
Chương 3: Giới thiệu một vài công cụ tìm kiếm lỗ hổng bảo mật: Chương này
giới thiệu một vài công cụ hỗ trợ trong việc tìm kiếm lỗ hổng trên nền Web Bên cạnh đó, chương này cũng nêu lên cách thức làm việc và các lỗ hổng mà các ứng dụng này có thể phát hiện ra, đưa ra được nhận xét về các công cụ
Chương 4: Thực nghiệm và phân tích kết quả: Thực nghiệm chạy một số công
cụ ở chương 3 vào việc tìm các lỗ hổng cho ứng dụng Web là http://truongnha.com
và phân tích cách thức phương pháp chạy để tìm ra lỗi Chương 4 cũng đưa ra được một vài khuyến cáo cho các nhà phát triển phần mềm
Chương 5: Kết luận và hướng phát triển: Chương này đi trình bày những kết
quả đạt được của luận văn và hướng phát triển trong tương lai
1.4 Tổng quan về vấn đề bảo mật trên nền Web
Ngày nay, với sự phát triển mạnh mẽ của công nghệ thông tin và đặc biệt là sự ra đời hàng loạt của các trang Web đã mang l ại cho con người rất nhiều tiện ích cho các doanh nghiệp Các hoạt động giao dịch trực tuyến như thương mại điện tử hay thanh toán trực tuyến ngày càng phổ biến và được thực hiện thông qua các ứng dụng Web Ở bất kỳ đâu, khi một máy tính có nối mạng internet, con người có thể thực hiện các giao dịch của mình một cách thuận tiện và nhanh chóng Mọi thông tin của người dùng sẽ được lưu trên Web Nếu như thông tin đó b ị sửa đổi với ý đồ xấu, câu truy vấn cơ sở
dữ liệu có thể bị thay đổi cấu trúc, từ đó kết quả trả về sẽ khác với ý muốn của người lập trình, hoặc những kẻ lạc danh có thể đá nh cắp thông tin , gây lên những thiệt hại lớn Có thể thấy việc xây dựng các trang Web động cho phép xây dựng câu truy vấn
Trang 9động từ đầu vào do người sử dụng cung cấp, chúng tiềm ẩn một nguy cơ mất an toàn cao nếu như không có một cơ chế kiểm tra dữ liệu đầu vào một cách chặt chẽ Tóm lại, các ứng dụng Web luôn luôn tiềm ần và có nguy cơ bị tấn công bởi các kẻ tấn công với ý đồ xấu, vậy nên vấn đề bảo mật trên nền Web luôn là cấp thiết
1.5 Một số 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 đi 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 các lỗ hổng đó, việc trước tiên cần làm là tìm ra nguyên nhân Dưới đây là một vài nguyên nhân có thể gây ra những điểm yếu đó cho ứng dụng Web:
o 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
o Thiếu các giải pháp bảo mật sẵn có
o 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.6 Thống kê các loại tấn công
Vấn đề an toàn bảo mật cho một ứng dụng Web là một vấn đề hết sức quan trọng, bởi nó ảnh hưởng tới chất lượng an ninh của cả một hệ thống cơ quan Với tình trạng hiện tại khi hàng loạt các kẻ tấn công lợi dụng sơ hở của phần mềm để tấn công vào hệ thống nhằm phá hủy, ăn cắp dữ liệu thì việc làm này lại càng cấp bách và cần thiết Theo thống kê Web Hacking Incident Database năm từ 1999 tới 2011, chúng ta có thể nhìn thấy tỷ lệ các phương thức tấn công web theo dạng XSS, DoS và SQL injection luôn đứng đầu trong so sánh như sau [12]:
Trang 10Hình 1.1: Thống kê các loại tấn công Nhìn biểu đồ Hình 1.1 chúng ta thấy rằng rất nhiều loại tấn công tồn tại nhưng trong
đó có tấn công liên trang (XSS), tấn công từ chối dịch vụ (Denial of Service) và SQL Injection là chủ yếu Tiếp theo chúng ta sẽ đi nghiên cứu chi tiết về 3 loại tấn công này trong chương 2 và một vài lỗ hổng ít được chú ý hơn, chúng sẽ được miêu tả tại chương 4 khi thực thi các công cụ trên ứng dụng “Trường Nhà”
Trang 11CHƯƠNG 2 MỘT SỐ NGUY CƠ AN NINH THƯỜNG GẶP
Chương này mô tả về một vài kỹ thuật tấn công an toàn Web phổ biến như: DoS/DDoS, XSS, SQL injection, đưa ra ví dụ và cách thức tấn công của chúng
2.1 Tấn công DoS
2.1.1 Giới thiệu về DoS
Một trong những cách thức tấn công trang web có từ lâu nhưng đến giờ vẫn tồn tại
và gây ra nhiều thiệt hại cho các tổ chức mạng mà các kẻ tấn công thường sử dụng rất nhiều hiện nay là dạng tấn công từ chối dịch vụ (DoS) DoS là một phương pháp tấn công làm tê liệt hoàn toàn máy chủ, khiến người dùng không thể truy cập được
Gần đây có rất nhiều trang web hay các tổ chức bị nhiễm dạng tấn công DoS, ví dụ như trang web của Bkav đã bị tê liệt trong suốt mấy ngày vì bị tin tặc tấn công từ chối dịch vụ DDoS Microsoft (15 tháng 8 năm 2003) đã chịu đợt tấn công DoS cực mạnh [1] Gây ra những thiệt hại không nhỏ Cuộc chiến chống lại những cuộc tấn công từ chối dịch vụ DDoS được coi là vô cùng khó khăn
Dos là một dạng tấn công nguy hiểm, mặc dù nó không truy cập vào dữ liệu của hệ thống nhưng nó có thể làm cho hệ thống không có khả năng sử dụng, hoặc làm cho hệ thống rơi vào tình trạng chậm đáng kể, kẻ tấn công dùng mọi cách làm quá tải tài nguyên của hệ thống
2.1.2 Mục đích và các dạng tấn công DoS
Tấn công theo phương pháp DoS nhằm mục đích sau:
Chiếm băng thông mạng và làm hệ thống mạng bị quá tải, khi đó hệ thống mạng
sẽ không có khả năng đáp ứng những dịch vụ khác cho người dùng bình thường
Cố gắng làm ngắt kết nối giữa hai máy, và ngăn chặn quá trình truy cập vào dịch
vụ
Cố gắng ngăn chặn các dịch vụ không cho người khác có khả năng truy cập vào
Khi tấn công DoS xảy ra người dùng có cảm giác khi truy cập vào dịch vụ đó như bị:
Trang 12nguồn điện, điều hoà Chúng gây ảnh hưởng rất lớn cho hệ thống
Các cách để tấn công từ chối dịch vụ cơ bản là:
* Tấn công SYN
Với kiểu tấn công SYN này, kẻ tấn công gửi rất nhiều các yêu cầu ảo, các gói TCP SYN tới máy chủ bị tấn công Để xử lý lượng gói tin SYN này hệ thống cần tốn một lượng bộ nhớ cho kết nối Cách tấn công này dựa vào phương thức bắt tay ba bước của TCP/IP Giống như Hình 2.1 dưới đây:
Hình 2.1: Tấn công SYN Khi có rất nhiều gói SYN ảo tới máy chủ và chiếm hết các yêu cầu xử lý của máy chủ Một người dùng bình thường kết nối tới máy chủ ban đầu thực hiện yêu cầu TCP SYN và lúc này máy chủ không còn khả năng đáp lại, vì vậy kết nối không được thực hiện
* Tấn công Smurf
Đây là một kiểu tấn công hàng loạt trong đó chúng sinh ra cực nhiều giao tiếp ICMP (ping) tới địa chỉ Broadcast của nhiều mạng với địa chỉ nguồn là mục tiêu cần
Trang 13tấn công Kết quả đích tấn công sẽ phải chịu nhận một đợt phản hồi gói ICMP cực lớn và làm cho mạng bị dớt hoặc bị chậm lại không có khả năng đáp ứng các dịch vụ khác như trong Hình 2.2
Hình 2.2: Tấn công Smurf
* Tấn công Ping of Death
Kẻ tấn công sử dụng các địa chi IP giả mạo rồi từ các địa chỉ này ping liên tục đến máy chủ Một số lượng lớn phản hồi từ máy chủ tới các địa chỉ IP giả Nếu số lượng
IP giả quá lớn máy chủ có thể bị sụp hay là ngừng hoạt động
* Tấn công Buffer Overflow
Dạng tấn công này xảy ra tại bất kỳ thời điểm nào có chương trình ghi lượng thông tin lớn hơn dung lượng của bộ nhớ đệm trong bộ nhớ Kẻ tấn công có thể ghi đè lên
dữ liệu và điều khiển chạy các chương trình và đánh cắp quyền điều khiển của một số chương trình hằm thực thi các đoạn mã nguy hiểm Ví dụ như quá trình gửi một bức thư điện tử mà tệp đính kèm dài quá 256 ký tự có thể sẽ xảy ra quá trình tràn bộ nhớ đệm
* Tấn công Teardrop
Kiểu tấn công này xảy ra khi gói tin IP rất lớn khi đến Router sẽ bị chia nhỏ làm nhiều phần nhỏ Từ đó kẻ tấn công sử dụng sử dụng gói IP với các thông số rất khó hiểu để chia ra các phần nhỏ (fragment) Nếu hệ điều hành nhận được các gói tin đã
Trang 14Tấn công DDoS là sự tấn công từ một mạng máy tính được thiết kế để tấn công tới một đích cụ thể nào đó Dạng tấn công này cũng nhằm mục đích giống như DoS, tuy nhiên nó được thiết lập trên nhiều địa chỉ IP khác nhau và cùng tấn công vào một đích
2.1.3.2 Phân loại tấn công DDoS
Có rất nhiều kỹ thuật tấn công DDoS, dựa trên mục đích của kiểu tấn công này, ta
có thể chia DDoS thành hai loại dựa trên mục đích tấn công: Làm cạn kiệt băng thông và làm cạn kiệt tài nguyên hệ thống Hình 2.3 dưới đây là sơ đồ mô tả sự phân loại các kiểu tấn công DDoS [4]
Hình 2.3: Phân loại tấn công DDOS
a Kiểu tấn công làm cạn kiệt băng thông của mạng
Sử dụng hết băng thông là kiểu tấn công nhằm tràn ngập mạng, với mục đích làm giảm tối thiểu khả năng của các lệnh gửi, truyền hợp lệ đến được với hệ thống cung cấp dịch vụ của máy chủ
Trang 15Có hai loại tấn công dạng sử dụng hết băng:
Tràn băng thông: Là cách gửi một lượng lớn đến hệ thống dịch vụ của máy
chủ, làm dịch vụ này bị hết khả năng về băng thông, hệ thống bị treo hay đạt đến trạng thái hoạt động bão hòa Việc này dẫn đến người dùng thực sự của hệ thống không sử dụng được dịch vụ Ta có thể chia loại này thành hai loại:
o Tấn công tràn băng thông UDP: Gửi một lượng lớn UDP đến hệ thống dịch vụ
và làm tràn hệ thống
o Tấn công tràn băng thông ICMP: Kẻ tấn công gửi một lượng lớn gói CMP_ECHO_REPLY đến hệ thống mục tiêu thì hệ thống này phải phản hồi một lượng tương ứng các gói để trả lời, sẽ dẫn đến nghẽn đường truyền
Khuếch đại giao tiếp: Điều khiển các tác nhân hay máy khách tự gửi thông điệp
đến một địa chỉ IP broadcast, làm cho tất cả các máy trong subnet này gửi thông điệp đến hệ thống dịch vụ của mục tiêu Phương pháp này làm gia tăng mạch giao thông không cần thiết, làm suy giảm băng thông của mục tiêu
b Những kiểu tấn công làm cạn kiệt tài nguyên
Trong kiểu tấn công này là cách mà kẻ tấn công gửi những gói bằng phương pháp dùng các giao thức sai chức năng thiết kế, hay gửi những gói với dụng ý làm tắt nghẽn tài nguyên mạng làm cho các tài nguyên này không phục vụ người dùng thông thường khác được
Khai thác lỗ hổng trên các giao thức
o Tấn công gói TCP SYS: Giao thức điều khiển chuyển giao hỗ trợ truyền nhận với độ tin cậy cao nên sử dụng phương thức bắt tay giữa bên gửi và bên nhận trước khi truyền dữ liệu Khi một kẻ tấn công gửi một gói SYN đến nạn nhân với địa chỉ bên gởi là giả mạo, kết quả là nạn nhân gửi một phản hồi SYN/ACK đến một địa chỉ khác và sẽ không bao giờ nhận được gói ACK cuối cùng, cho đến hết thời gian timeout nạn nhân mới nhận ra được điều này và giải phóng các tài nguyên hệ thống Tuy nhiên, nếu lượng gói SYN giả mạo đến với số lượng nhiều và dồn dập, hệ thống của nạn nhân có thể bị hết tài nguyên Kiểu tấn công dạng SYN được mô phỏng trong Hình 2.4:
Trang 16Hình 2.4: Tấn công TCP SYN
o Tấn công ACK: Hệ thống sẽ không thể xử lý được lượng lớn gói tin gửi đến và
sẽ bị treo
Gửi các gói tin khó hiểu
Đây là cách tấn công dùng các tác nhân để gửi các gói tin có cấu trúc không đúng chuẩn nhằm làm cho hệ thống của nạn nhân bị treo
Có hai loại tấn công dạng này:
o Tấn công địa chỉ IP
o Tấn công gói lựa chọn IP
Trên đây là lý thuyết cơ bản về dạng tấn công DOS và DDOS được các kẻ tấn công hay sử dụng
2.2 Cross-Site Scripting (XSS)
2.2.1 Tổng quan về XSS
XSS là một trong những loại tấn công Web phổ biến nhất, mục đính của chúng là nhúng các kịch bản (script) chứa mã độc vào trong một trang web và thực thi chúng ở phía máy khách Một trang Web có khả năng dễ bị tấn công XSS nhất là khi ứng dụng không kiểm tra dữ liệu vào và tạo ra một đầu ra ngoài tầm kiểm soát của trang
đó Lỗ hổng này dẫn tới rất nhiều loại tấn công, ví dụ: đánh cắp các thông tin mật Ngay cả những nhà an toàn thông tin lớn nhât như: McAfee, Symantec, Verisign cũng đã có ít nhất 30 lỗ hổng XSS trên trang Web của họ [2]
Về loại tấn công này, các kẻ tấn công sẽ tiêm vào các trang web hợp lệ những mã độc từ phía máy khách của kẻ tấn công Sau đó một người sử dụng khác khi vào trang web đó, đoạn mã độc của kẻ tấn công sẽ được thực thi và gửi thông tin đến máy kẻ tấn công Thực tế có rất nhiều biến thể của loại tấn công XSS, nhưng tất cả chúng đều theo một số bước như sau:
Kẻ tấn công nhúng vào trang web một đoạn mã độc
Khi nạn nhân ghé thăm trang web thì sẽ tự động chạy đoạn mã độc đó và gửi lại
Trang 17cookie của nạn nhân cho kẻ tấn công
Kẻ tấn công làm một vài việc dưới danh nghĩa là của nạn nhân (ví dụ: đọc, ăn cắp thông tin…)
2.2.2 Ảnh hưởng do XSS gây ra
Việc khai thác tấn công bởi XSS sẽ được sử dụng để đạt được những mục đích sau đây:
Đánh cắp nhận dạng
Truy cập những thông tin nhạy cảm và thông tin giới hạn
Đạt được truy cập miễn phí tới các nội dung phải mất phí
Làm gián điệp trên các trình duyệt để theo dõi thói quen của người dùng
Thay đổi các chức năng của trình duyệt
Mang nội dung xấu nhằm mục đích bôi nhọ danh dự của một cá nhân hoặc công
ty
Làm mất đi uy tín của trang web ứng dụng
Gây lên tấn công dạng từ chối dịch vụ
2.2.3 Phân loại
Dưới đây là một vài kiểu tấn công dạng XSS:
Tấn công liên trang dạng lưu trữ (Stored Cross site scripting)
Tấn công liên trang dạng phản chiếu (Reflected Cross site scripting)
Tấn công liên trang dựa trên DOM (DOM-based Cross site scripting)
a) Stored XSS
Stored Cross site scripting: Là một loại tấn công nguy hiểm nhất của XSS Các ứng dụng Web cho phép người sử dụng lưu trữ dữ liệu có tiềm năng gây ra loại tấn công này Stored XSS là cách tấn công mà mã độc được lưu lại trên máy chủ Web thông qua cách chèn một đoạn script nguy hiểm (thường Javascript) vào ứng dựng Web thông qua một chức năng nào đó như là gửi bài, viết lời bình Sau đó những người dùng sau đó khi truy cập vào các chức năng này sẽ bị dính mã độc từ website có chèn mã của kẻ tấn công đó giống như mô tả ở Hình 2.5 sau
Trang 18Hình 2.5: Mô hình tấn công XSS Ngày nay thì các ứng dụng web không còn là các trang web tĩnh nữa, mà thay vào
đó là các trang web động với dữ liệu được lấy và thay đổi từ rất nhiều nguồn khác nhau Dữ liệu này chứ đựng hỗn hợp như là: text, hình ảnh và các thẻ HTML như <p>,
<img>, <script> Kẻ tấn công sẽ sử dụng tính năng „comment‟ của ứng dụng web để chèn các bình luận (comment) có chứa các thẻ script Mỗi người dùng ghé thăm sẽ tải
về đoạn bình luận đó và thực thi nó trên trình duyệt của họ Giống như chức năng bình luận của Facebook hoặc những diễn đàn, kẻ tấn công có thể sử dụng để tấn công theo phương pháp này
b) Reflected XSS
Kiểu tấn công Reflected XSS được biết đến như kiểu loại 1 (non-persistent XSS),
là loại tấn công XSS thường thấy nhất ngày nay Khi một ứng dụng có thể bị nhiễm loại tấn công này, nó sẽ không kiểm tra các đầu vào thông qua yêu cầu của máy khách Chương trình của kẻ tấn công được viết bởi Javascript, hoặc ActionScript, VBScript Những kẻ tấn công dạng này thường làm cho những lỗ hổng được cài đặt, ăn trộm cookies của nạn nhận, thay đổi nội dung của trang web Một trong những vấn đề quan trọng về việc khai thác các điểm yếu lỗ hổng XSS đó là việc mã hóa các ký tự Trong một số trường hợp, các máy chủ Web hoặc ứng dụng Web không thể lọc được một vài
ký tự mã hóa Ví dụ, ứng dụng Web có thể lọc được thẻ <script> nhưng lại không thể lọc được '%3cscript%3e'
Trang 19Hình 2.6: Mô hình tấn công Reflected XSS Trong trường hợp này, kẻ tấn công gửi một email cho nạn nhân có chứa mã độc là một đường liên kết để lấy cookie Nạn nhân sau khi nhận mail, kích lên liên kết đó và
từ đó khởi tạo một yêu cầu HTTP tới ứng dụng Web và gây nhiễm cho ứng dụng Đoạn JavaScript có chứa mã độc sau đó được gửi trở lại trình duyệt của nạn nhân
c) DOM-based Cross site scripting
Trong khi các loại tấn công dạng XSS xảy ra trên phía máy chủ thì DOM base XSS là một loại tấn công mà ảnh hưởng tới kịch bản mã nguồn tại trình duyệt của máy khách DOM-base XSS là một kiểu tấn công truy cập vào cấu trúc của trang, ở lại đó
và thực thi những nội dung của trang web Giống như mã nguồn phía máy chủ, thì mã nguồn tại phía máy khách cũng chấp nhận những đầu vào của người dùng có chứa dữ liệu độc Do đó, nếu như kẻ tấn công nhập vào các dữ liệu độc, sẽ dẫn đến một gây nhiễm độc dạng DOM-bases XSS DOM-based XSS là một kiểu tấn công XSS, kết quả của việc chỉnh sửa DOM tại trình duyệt của nạn nhân Vì vậy mã nguồn của phía máy khách sẽ chạy theo một cách thức không mong đợi
Khả năng mã nguồn của người dùng đưa vào có chứa sự tấn công như là:
Trang 20Hình 2.7: DOM-base XSS Nếu chuỗi document.referrer có chứa mã JavaScript, đoạn mã đó sẽ được thực thi
Để khai thác loại tiêm nhiễm mã độc này, kẻ tấn công phải có một trang trung gian từ trang mà họ liên kết tới trang lây nhiễm Kẻ tấn công này sẽ gửi liên kết của trang tới nạn nhân:
http://www.attacker.com/domxsspage.html?<script>themaliciouscode</script>
Bởi việc sử dụng gửi trực tiếp JavaScript hoặc tương tác của người sử dụng, kẻ tấn công liên kết tới trang web nhiễm độc, nguyên nhân dẫn đến đoạn mã nhiễm độc được thực thi
2.2.4 Cách phát hiện ra sâu XSS
Trong những trang Web bị dính sâu XSS, thường là khi người sử dụng đăng nhập hoặc gửi một vài thông tin nào đó tớ máy chủ, mà kết quả được gửi về có liên quan tới thông tin của chuỗi người dùng đã nhập thì khả năng cao là đã bị dính sâu XSS Kẻ tấn công thường dùng thẻ <script> để nhúng vào các form của ứng dụng hoặc cũng có thể đưa vào URL Bạn có thể thử đăng nhập với chuỗi: <script>alert(“XSS found”)</script>, nếu thấy xuất hiện một popup thì ứng dụng đó đã bị nhiễm XSS, hoặc tương tự khi nhúng nó vào URL
2.2.5 Các phương pháp ngăn chặn lỗ hổng bảo mật XSS
Để các trang Web có thể tránh được việc tấn công XSS, những nhà phát triển phần mềm nên kiểm tra cẩn thận hơn:
Kiểm tra và chỉ chấp nhận những dữ liệu hợp lệ
Trang 21 Có chức năng nắm giữ và từ chối nhận các dữ liệu hỏng
Thực hiện kiểm tra và sàng lọc dữ liệu một cách liên tục
Tuy vậy nhưng thực tế thì việc kiểm tra và loại bỏ những dữ liệu không hợp lệ là không thể vét cạn được, bởi đôi khi vẫn phải chấp nhận những ký tự đó Vì vậy, có thêm một cách nữa đó là mã hóa các ký tự để không gây nguy hiểm cho người dùng
2.3 Tổng quan SQL Injection
2.3.1 Định nghĩa
SQL injection là một kỹ thuật được sử dụng cho việc muốn tìm ra những điểm yếu kém của ứng dụng về cơ sở dữ liệu Nó thường được sử dụng trên các ứng dụng Web, khi mà yêu cầu nhập thông tin từ người dùng để xử lý Kỹ thuật này thường thấy trong các trường hợp yêu cầu đăng nhập vào các ứng dụng hay bất kỳ một khung đăng thông tin từ người dùng mà ứng dụng sử dụng câu truy vấn SQL injection có thể xuất hiên hiện trên bất kỳ ứng dụng web có sử dụng các công nghệ như: ASP, ASP.NET và PHP với SQL Ví dụ như khi người sử dụng nhập thông tin vào trang đăng nhập và yêu cầu được gửi đi những thông tin về người dùng và mật khẩu sẽ được mang đi để
so sánh với một tập hợp các người dùng hợp pháp trong cơ sở dữ liệu [9]
SQL Injection là một trong những kiểu tấn công phổ biến nhất hiện giờ ở tầng ứng dụng được sử dụng trên mạng Mặc dù dạng lỗ hổng này có một vài cách dễ dàng để bảo vệ chống lại SQL injection, nhưng một số lớn các ứng dụng web vẫn tồn lại những
lỗ hổng dạng này
2.3.2 Các kỹ thuật tấn công SQL Injection
Có 4 loại tấn công thuộc SQL Injection: Đăng nhập không cần mật khẩu, sử dụng câu lệnh SELECT, sử dụng các Stored-procedures, sử dụng câu lệnh INSERT [8]
a) Đăng nhập mà không cần mật khẩu
Dựa vào sơ hở của ứng dụng, kẻ tấn công sẽ sử dụng chức năng đăng nhập vào hệ thống, nhập những dữ liệu có khả năng thực thi câu lệnh SQL một cách bất hợp pháp,
từ đó kẻ tấn công không cần có mật khẩu vẫn có thể đăng nhập vào hệ thống và thực thi các chức năng của hệ thống đó, điều này rất nguy hiểm, có thể dẫn tới sập hệ thống Đây là dạng tấn công cơ bản của SQL Injection
Ví dụ, một trang web của ngân hàng có một trang đăng nhập với mã nguồn như sau:
<form action="/cgi-bin/login" method=post>
Username: <input type=text name=username>
Trang 22Nhập vào đoạn ' OR ' ' = ' cho cả 2 ô username và password, lúc đó câu lệnh truy vấnSQL sẽ trở thành:
SELECT * FROM T_USERS WHERE USR_NAME ='' OR ''='' and
USR_PASSWORD= '' OR ''=''
Từ đó kẻ tấn công có thể đăng nhập thành công mà không cần biết mật khẩu, và có thể thực thi các ứng dụng của trang web như là: chuyển khoản, ăn cắp thông tin Gây ra rất nhiều nguy hiểm cho công ty và người dùng Kẻ tấn công cũng có thể sử dụng một vài mẫu tấn công như trong bảng Bảng 2.1 dưới đây để có được truy cập tương tự:
Bảng 2.1: Các mẫu đầu vào Mẫu 1 ' or 1=1
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ụ:
<%
Dim vNewsID, objRS, strSQL
vNewsID = Request("ID")
strSQL = "SELECT * FROM T_NEWS WHERE NEWS_ID =" & vNewsID
Set objRS = Server.CreateObject("ADODB.Recordset")
Trang 23Dạng tấn công này rất nguy hiểm nếu ứng dụng được thực thi với quyền quản trị
hệ thống Ví dụ, nếu ta thay đoạn mã tiêm vào dạng: ';EXEC xp_cmdshell „cmd.exe dir C: ' Lúc này hệ thống sẽ thực hiện lệnh liệ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 Nếu cài SQL Server
ở chế độ mặc định thì SQL Server chạy trên nền SYSTEM, tương đương mức truy cập ở Windows Có thể dùng master xp_cmdshell để thi hành lệnh từ xa:
; exec master xp_cmdshell 'ping 10.10.1.2'
Thử dùng dấu nháy đôi (") nếu dấu nháy đơn (') không làm việc
Dưới đây là một số extended stored procedure mà kẻ tấn công thường hay sử dụng để thực thi những câu lệnh xem nội dung thông tin trong máy nạn nhân:
Xp_availablemedia: Hiển thị những ổ đĩa hiện hành trên máy
Xp_dirtree: Hiển thị tất cả các thư mục kể cả thư mục con
Xp_loginconfig: Lấy thông tin về chế độ bảo mật trên server
Xp_makecab: Cho phép người sử dụng tạo các tập tin lưu trữ trên Server (hay bất cứtập tin nào mà server có thể truy xuất
Xp_ntsec_enumdomain: Liệt kê những domain mà server có thể truy vấn
Xp_terminate_process: Chấm dứt một tiến trình với tham số PID của nó
d) 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 để
Trang 24Nếu đoạn mã xây dựng câu lệnh SQL có dạng :
<%
strSQL = "INSERT INTO TableName VALUES(' " & strValueOne & " ', ' " _
& strValueTwo & " ', ' " & strValueThree & " ') "
Set objRS = Server.CreateObject("ADODB.Recordset")
như bạn đã yêu cầu thực hiện thêm một lệnh nữa đó là: SELECT TOP 1 FieldName FROM TableName
2.3.3 Những ảnh hưởng gây ra của SQL Injection
Một khi kẻ tấn công đã nhận ra hệ thống có điểm yếu và có thể tiêm mã độc SQL Injection vào, chúng sẽ đưa vào các câu lệnh hoặc truy vấn SQL thông qua một trường nhập đầu vào nào đó Điều đó tương đương với việc giao cơ sở dữ liệu của bạn cho kẻ tấn công và cho phép kẻ tấn công thực thi bất kỳ một lệnh SQL nào đó bảo gồm cả câu lệnh “DROP TABLE” để xóa hẳn cơ sở dữ liệu của bạn đi
Kẻ tấn công có lẽ thực thi những trạng thái SQL một cách tùy ý trên các hệ thống
có khả năng tiêm nhiễm đó Điều này gây nguy cho toàn bộ cơ sở dữ liệu của bạn hoặc làm phơi bày ra những thông tin nhạy cảm Phụ thuộc vào back-end của cơ sở dữ liệu, khả năng tiêm nhiễm SQL Injection dẫn đến nhiều mức độ của việc truy cập dữ liệu/hệ thống của kẻ tấn công Nó có khả năng thực thi những truy vấn tồn tại, UNION các dữ liệu một các tùy ý, sử dụng các lựa chọn con hoặc thêm vào các truy vấn theo sau Trong một số trường hợp, nó có khả năng đọc hoặc viết ra các tệp, hoặc thực thi các lệnh shell trên các hệ thống thao tác cơ bản Một số các SQL servers giống như Microsoft SQL server chứa đựng những thủ tục lưu trữ và mở rộng Nếu kẻ tấn công
có thể đạt được truy cập tới các thủ tục đó, nó có thể gây ra thảm họa Không may mắn những ảnh hưởng của SQL injection là chỉ được phát hiện khi những tên trộm được phát hiện ra
Trang 25Ví dụ về một tấn công SQLInjection:
Dưới đây là một khung đăng nhập có 2 trường Username và password:
<form method="post" action="http://testasp.vulnweb.com/login.asp">
<input name="tfUName" type="text" id="tfUName">
<input name="tfUPass" type="password" id="tfUPass">
</form>
Trong tệp “login.asp” sẽ chứa một truy vấn vào cơ sở dữ liệu như sau:
SELECT id
FROM logins
WHERE username = '$username'
AND password = '$password’
Kẻ tấn công sẽ đăng nhập với một tên và password như sau:
Username: myname
Password: anything' OR 'x'='x
Từ đó kẻ tấn công có thể đăng nhập như một người sử dụng hợp pháp và thao tác trên hệ thống với ý đồ xấu gây thiệt hại cho hệ thống một cách khó lường được
2.3.4 Các phương pháp phòng chống SQL Injection phổ biến
Các loại tấn công SQL Injection đều dựa trên những điểm yếu về cơ sở dữ liệu Thông thường các nhà lập trình thường quên đi việc ngăn chặn lỗi bảo mật khi lập trình dẫn đến những sơ hở này Dưới đây là một vài phương pháp có thể giúp ngăn chặn được tấn công SQL Injection như sau:
Kiểm tra tất cả các dữ liệu đầu vào trên các form: Loại bỏ các ký tự lạ, đối với các ký tự numeric nên chuyển chúng sang số nguyên trước khi thực hiện các câu lệnh truy vấn hoặc dùng thuật toán để mã hóa dữ liệu
Quản lý chặt chẽ SQL Server: kiểm soát các tài khoản có trong ứng dụng, phân quyền thấp cho các ứng dụng
Thiết lập cấu hình an toàn cho hệ quản trị cơ sở dữ liệu
Tóm lại, chương 2 đã miêu tả được về 3 loại tấn công nguy hiểm và phổ biến nhất hiện nay Ngoài những loại lỗ hổng đó, các trang Web còn tồn tại rất nhiều những dạng lỗ hổng khác như: lộ thông tin cấu hình máy chủ, lộ trường thông tin mật khẩu hay cookies, lỗ hổng tấn công liên trang giả mạo Những lỗ hổng này thường ít được để ý đến nhưng chúng lại cung cấp những thông tin hữu ích cho kẻ tấn công để nhằm thực thi tấn công vào trang Web, chúng
sẽ được miêu tả chi tiết hơn trong các chương sau
Trang 26W3af, Havij, Wapiti, BurpSuite, Exploit-Me, Rcvalle-rapache
3.1 Netsparker
Netsparker là một công cụ duyệt tìm lỗ hổng do SQL injection và XSS gây ra, là một phần mềm miễn phí cho tất cả các trang web muốn tìm lỗ hổng Công cụ này sẽ phát hiện những vấn đề về bảo mật trong ứng dụng Web, Netsparker có thể kiểm tra và phát hiện ra một số lượng điểm yếu lớn về SQL injection như: Error Based, Blind và Time Based SQL Injections Sau khi xác nhận ra các lỗ hổng đó, công cụ này có khả năng thực thi kiểm tra rộng hơn để xác định rõ nếu người sử dụng ứng dụng có quyền của người quản lý Trong trường hợp này Netsparker sẽ báo cáo một vấn đề riêng biệt được gọi là “Admin User DB Connection”
Netsperker tìm và khai thác rất nhiều tầng back-end của các cơ sở dữ liệu khác nhau, có khả năng tìm thấy 98.53% của tất các SQL injection Ví dụ chạy trên ứng
dụng: http://localhost/topman và kết quả khi chạy công cụ này được mô tả trong Hình
3.1 như sau:
Hình 3.1: Thực nghiệm công cụ Netsparket Một số vấn đề được phát hiện tại ứng dụng này mà công cụ Netsparker tìm được
Trang 27như sau:
http://localhost/topman/index.php: Mật khẩu bị truyền thông qua HTTP, kẻ tấn công có thể chặn lại mạng và ăn trộm chứng thực của người sử dụng Cũng giống như trang web trên, người phát triển nên sử dụng HTTPs khi truyền những thông tin nhạy cảm để bảo mật thông tin hơn
http://localhost/topman/?'"-></style></script><script>alert(0x01C214)</script>:Tồn tại một tấn công liên trang (XSS) trong ứng dụng Cho phép kẻ tấn công thực
thi những đoạn mã động như: Javascript, VbScript Biểu thức mẫu tấn công:
“'" ></style></script><script>alert(0x01C214)</script> “ Dựa vào lỗ hổng này,
rất nhiều tấn công khác có thể lợi dụng để khai thác:
Thay đổi nội dung của trang web bên trong trình duyệt của nạn nhân
Lấy trộm phiên làm việc của người sử dụng
Gắn kết thành công một lừa đảo tấn công
Chặn dữ liệu và thực thi tấn công
Vấn đề này xảy ra bởi các trình duyệt ngăn chặn các giá trị đầu vào giống như HTML, JavaScript hoặc VBScript Để tránh điều này, tất cả đầu vào và đầu ra từ form nên được lọc một cách cẩn thận
http://localhost/topman/.svn/all-wcprops : Công cụ phát hiện ra 1 tệp chứa thông tin
về SVN, thông tin về địa chỉ SVN, tên người sử dụng SVN và thông tin ngày giờ sẽ
bị lộ Những thông tin này sẽ rất hữu ích khi kết hợp với các lỗ hổng khắc hoặc trong khi khai thác những lỗ hổng khác Để khác phục lỗi này, nên xóa toàn bộ những tệp về SVN trước khi mang ra sử dụng để tránh lỗ hổng này xảy ra
Bên cạnh đó, còn rất nhiều lỗ hổng ở mức độ ảnh hưởng trung bình và thấp như: hiển thị thông tin một vài trường, lộ thông tin về ngôn ngữ lập trình Những thông tin
mà rất hữu ích cho kẻ muốn tấn công Dựa trên các công cụ này, nó đã giúp phát hiện được các lỗ hổng, từ đó các nhà phát triển biết được và khắc phục trước khi bị tấn công gây ra hậu quả
3.2 Websecurify
Websecurify là một công cụ kiểm thử phần mềm tự động có khả năng quét các thông số an ninh khác nhau trên trang web và đưa ra phân tích thống kê toàn diện giúp bạn có thể tìm thấy lỗ hổng an ninh để giữ cho trang web tránh được sự tấn công của kẻ tấn công [14]
Ưu điểm:
Trang 28một cách chính xác
o Làm việc trên nhiều nền tảng như: add-on của firefox, chrome, phiên bản desktop, Mobile [14]
o Nó có khả năng tìm ra rất nhiều loại lỗ hổng như:
▪ Tấn công liên trang (XSS)
▪ Tấn công liên trang giả mạo (Cross-site Request Forgery)
▪ Từ chối liệt kê thư mục (Directory Listing Denied)
▪ Lộ thông tin Email
▪ Lỗi SQL
▪ Đăng tải tệp (File Upload)
▪ Lộ các thông tin biểu ngữ
▪ Phiên Cookie không được bảo mật
▪ Lộ thông tin IP
▪ Lộ đường dẫn
▪ Lộ các lỗi máy chủ
o Có thể được cài đặt và tích hợp với các ứng dụng web khác
o Kết quả có thể được xuất ra CSV, XML, HTML và JSON
o Hỗ trợ của nhiều nền của hệ điều hành ví dụ như Windows, Mac OS X
và Linux
o Cung cấp một API để hỗ trợ nhiều cho loại động cơ thử nghiệm thương mại và miễn phí
o Hỗ trợ địa phương hoá để kết quả có thể được dịch ra nhiều ngôn ngữ
o Websecurity được thiết kế một cách nhanh gọn, các chức năng dễ sử dụng Có khả năng quét nhiều trình duyệt tại một thời điểm
Trang 29Bên cạnh đó thì Websecurify chứa một vài nhược điểm như sau:
Nhược điểm:
o Tài liệu hỗ trợ công cụ này là không có sẵn
o Không phát hiện được lỗ hổng dạng: stored XSS
Tóm lại: Websecurify tuy không hoàn toàn tìm ra các lỗ hổng một cách đầy đủ Nhưng công cụ này lại rất tốt trong các trường hợp không đủ thời gian kiểm thử và muốn thực thi một kiểm thử nhanh chóng Nó cũng phát hiện được những lỗ hổng cơ bản mà một trang Web hay gặp phải
Xét một thực nghiệm trên ứng dụng sau: http://localhost/topman:
Hình 3.2: Thực nghiệm công cụ Websecurify trên ứng dụng Kết quả thu được của thực nghiệm trên như sau:
Trang 30Hình 3.3: Kết quả khi chạy công cụ Websecurify Một loạt các lỗ hổng được tìm thấy bởi công cụ này Giống như Hình 3.3 trên miêu
tả một lỗ hổng về SQL injection Kẻ tấn công khi biết được điều này sẽ lợi dụng và áp dụng các kỹ thuật tấn công trang web
Cũng tương tự như bản trên desktop, Websecurify là một đuôi mở rộng của firefox
và việc phân tích mã nguồn không thể hiểu được ứng dụng sẽ có hành vi như thế nào trong khi nó đang bị tấn công Do vậy việc kết hợp những kỹ thuật đó với nhau để đạt được những kết quả tương xứng hơn việc sử dụng các bộ phân tích mã nguồn và quét hộp đen một cách độc lập [5]
a) Lợi ích của việc sử dụng công nghệ Acunetix AcuSensor:
Trang 31 Cho phép bạn định vị và sửa chữa những điểm yếu dễ tấn công nhanh hơn bởi vì khả năng tìm ra nhiều thông tin hơn về những điểm dễ tấn công đó, giống như: dòng code, stack trace, những truy vấn SQL có ảnh hưởng
Có thể giảm đáng kể khả năng lỗi khi quét một trang web bởi vì chúng ta có thể hiểu hành vi bên trong của ứng dụng web đó tốt hơn
Có thể thông báo cho bạn những vấn đề cấu hình của ứng dụng, những cấu hình
mà có thể là nguyên nhân gây ra lỗ hổng đó hoặc lộ ra những chi tiết bên trong của ứng dụng
Cung cấp cho bạn biết về tất cả các tệp trong thư mục của ứng dụng, những tệp
đó sẽ được tìm thấy và được quét khi đang sử dụng công nghệ AcuSensor và bạn sẽ được thông báo
Công nghệ AcuSensor có khả năng phân chia đầu vào của tất cả các ứng dụng web và dựng lên một danh sách bao hàm toàn diện với tất cả các khả năng đầu vào trong website và kiểm tra chúng
Khả năng kiểm tra việc tạo ra tệp tùy ý và tìm ra lỗ hổng
Khả năng kiểm tra việc tiêm nhiễm email
b) Cách thức làm việc của Acunetix
Khi AcuSensor được sử dụng, nó giao tiếp với Web server để tìm ra cấu hình của ứng dụng web và cấu hình nền tảng của ứng dụng (như là PHP, NET) Một khi có trigger từ Acunetix WVS, Sensor này sẽ lấy một danh sách tất cả các tệp đại diện trong thư mục ứng dụng web, liệt kê ra tất cả các đầu vào của ứng dụng Do đó nó biết được các kiểu đầu vào mà ứng dụng mong đợi, nó có thể khởi động một vùng rộng hơn và kiểm thử lại ứng dụng [2]
Hình 3.4: Cách thức làm việc của Acunetix
Nó cũng có khả năng quét tất cả các giao dịch SQL giữa các ứng dụng web và cơ
Trang 32SQL injection, XSS và các loại lỗ hổng khác, giống như thống kê dưới đây [Error! Reference source not found.]:
Hình 3.5: Thống kê các công cụ năm 2012 của Benchmark Acunetix là một công cụ nổi tiếng và được rất nhiều các công ty lớn trên thế giới
sử dụng để quét lỗ hổng đảm bảo an toàn cho ứng dụng web của họ Nó cũng là một công cụ để phân tích và khai thác điểm yếu của ứng dụng Web, Acunetix WVS thực thi kiểm tra bảo mật của Web thông qua 3 bước sau:
* Bước1: Xác định điểm đích:
WVS kiểm tra nếu điểm đích đang chạy là một web server
Thông tin được thu thập trên tất cả các công nghệ được sử dụng, giống như kiểu của web server và khả năng phản hồi chính xác tương ứng với việc lọc những kiểm thử
* Bước 2: Quét qua trang web và cấu trúc của nó
Tệp đầu tiên trên web được lấy về (Ví dụ: index.html)
Trang 33 Tệp robots.txt và sitemap.txt được phân tích
Những phản hồi được nhận về được phân tích để tìm những liên kết, form, trường dữ liệu đầu vào, tham số và đoạn mã Script từ phía máy khách Nó làm lên một danh sách các thư mục và tệp bên trong trang web
Tất cả các tệp được tìm thấy trong bước 1 được đi qua và xử lý
* Bước 3: Phân tích mẫu
Acunetix bắt đầu kiểm tra một vài bảo mật chống lại đích của website phụ thuộc vào thông tin quét đã được chọn
Tìm ra các thông báo về điểm yếu được thông báo tại nốt “Web Alert” Mỗi alert thông báo chi tiết thông tin về điểm yếu, đưa ra cách để gỡ những lỗ hổng
đó
Nếu như AcuSensor được kích hoạt, thông tin về gỡ lỗi được báo cáo, giống như lỗ hổng truy vấn SQL tới SQL injection và dòng code của lỗ hổng này được đưa ra cho khai thác.Sau khi hoàn thành việc quét, nó được lưu tới tệp cho việc phân tích sau đó và so sánh với các lần quét trước đó Kết quả quét đó có thể lưu dưới dạng AVDL và XML
Acunetix có khả năng quét và phát hiện hàng loạt vấn đề như:
Kiểm tra cấu hình Web Server:
Kiểm tra vấn đề về Web: xác định nếu có nguy hiểm của phương thức HTTP cho máy chủ eb server (Ví dụ: PUT, TRACE, DELETE)
Kiểm tra các công nghệ của máy chủ Web
Lỗ hổng trên các máy chủ Web
Các công nghệ về lỗ hổng trên nó (Ví dụ: lộ tệp PHP 4.3.0 và khả năng thực thi mã nguồn)
Kiểm tra các thao tác của tham số:
Tấn công liên trang (XSS)
Tấn công liên trang giả mạo (Cross-Site Request Forgery)
Tiêm nhiễm SQL
Thực thi mã nguồn