Kể từ khi trình duyệt Web hỗ trợ việc thực hiện các script,các kịch bản được nhúng trong nội dung, kẻ tấn công có thể sử dụng lỗi bảo mật này đểtruy nhập thông tin người d
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
-Trang phụ bìa
PHÁT TRIỂN GIẢI PHÁP VÀ CÔNG CỤ ĐẢM BẢO AN NINH CHO CÁC DỊCH VỤ TRỰC TUYẾN
Chuyên ngành : Công nghệ thông tin
LUẬN VĂN THẠC SĨ KĨ THUẬTCÔNG NGHỆ THÔNG TIN
NGƯỜI HƯỚNG DẪN KHOA HỌC:
TS Nguyễn Khanh Văn
Hà Nội – Năm 2013
Trang 2LỜI CAM ĐOANTôi xin cam đoan: Luận văn thạc sĩ Công nghệ thông tin “Phát triển giải pháp và công cụ đảm bảo an ninh cho các dịch vụ trực tuyến” này là công trình nghiên cứu
thực sự của cá nhân, được thực hiện trên cơ sở nghiên cứu lý thuyết và dưới sự hướng
dẫn khoa học của Tiến sĩ: Nguyễn Khanh Văn.
Tôi xin chịu trách nhiệm về lời cam đoan này
Hà Nội, ngày 01 tháng 03 năm 2013
Tác giả
Đinh Thái Sơn
Trang 3LỜI CẢM ƠN
Để hoàn thành chương trình cao học và viết luận văn này, tôi xin chân thành cảm
ơn đến quí thầy cô trong Viện Công nghệ thông tin và Truyền Thông, trường Đại họcBách Khoa Hà Nội đã tận tình dạy bảo tôi trong thời gian học
Tôi xin gửi lời biết ơn sâu sắc đến Tiến Sĩ Nguyễn Khanh Văn đã dành rất nhiềuthời gian và nhiệt huyết để hướng dẫn tôi hoàn thành luận văn này
Nhân đây, tôi cũng xin cảm ơn Ban giám hiệu trường Đại học Hùng Vương và cácthầy cô trong khoa Toán công nghệ đã tạo điều kiện cho lớp cao học Công nghệ thông tin2010B tại Hùng Vương chúng tôi được học tập thuận lợi
Mặc dù tôi đã cố gắng hết sức hoàn thiện luận văn, tuy nhiên chắc chắn vẫn cònnhiều thiếu sót, rất mong sự góp ý quý báu của quí thầy cô và các bạn
Hà Nội, ngày 01 tháng 03 năm 2013
Tác giả
Đinh Thái Sơn
Trang 4MỤC LỤC
Trang phụ bìa 1
MỤC LỤC 4
DANH MỤC CÁC THUẬT NGỮ, TỪ VIẾT TẮT 6
DANH MỤC CÁC HÌNH VẼ 7
PHẦN MỞ ĐẦU 9
1 Lý do chọn đề tài 9
2 Mục đích nghiên cứu luận văn, đối tượng, phạm vi nghiên cứu 10
3 Cấu trúc luận văn 10
Chương 1 11
TỔNG QUAN VỀ AN NINH TRỰC TUYẾN 11
1.1 An ninh trực tuyến 11
1.2 Thống kê an ninh 11
1.3 Đánh giá 13
Chương 2 14
PHƯƠNG PHÁP PHÁT HIỆN VÀ NGĂN CHẶN CROSS-SITE SCRIPTING 14
2.1 Tìm hiểu về Cross-site scripting 14
2.2 Các mối đe dọa từ Cross-site Scripting : 14
2.3 Phân loại Cross-site Scripting 16
2.4 Các cách ngăn chặn XSS: 20
2.4.1 Ngăn chặn XSS trong giai đoạn phát triển web 21
2.4.2 Ngăn chặn XSS bằng phần mềm 22
2.4.3 Ngăn chặn XSS bằng việc phân tích việc truyền dữ liệu 23
2.4.4 Ngăn chặn XSS bằng việc theo dõi dữ liệu nhạy cảm 25
2.4.5 Mã hóa an toàn (Secure Coding) 25
2.4.6 Tường lửa ứng dụng Web (Web Application Firewalls - WAF): 26
2.4.7 Phương pháp phòng chống phía máy khách (client-side) 28
2.5 Các cách phát hiện lỗi bảo mật chung 29
2.5.1 Phương pháp tấn công 29
2.5.2 Penetration Testing thủ công 30
2.5.3 Phân tích mã 32
Trang 52.6 Mô hình hoạt động của WVS 35
2.6.1 Sự thực thi nội tuyến (inline) trong iStar 37
2.6.2 Thực thi hoàn chỉnh trong iStar 38
2.6.3 Hạn chế của máy quét lỗ hổng Web hiện nay 40
2.6.4 Một máy ghi trình tự điển hình 42
2.6.5 Phát hiện các lỗ hổng bảo mật trên lớp mạng 43
2.6.6 Sự phát hiện tự động các lỗ hổng bảo mật XSS loại 2 (thế hệ thứ 2) 43
Chương 3 46
PHƯƠNG PHÁP PHÁT HIỆN VÀ PHÒNG TRÁNH XSS WORM 46
3.1 Khái niệm XSS Worm 46
3.2 Phương pháp lan truyền của sâu 46
3.3 Phương pháp phát hiện XSS worm 48
3.4 Chương trình XSS Detection : 54
3.5 Đánh giá chương trình 59
KẾT LUẬN 61
TÀI LIỆU THAM KHẢO 63
Trang 6DANH MỤC CÁC THUẬT NGỮ, TỪ VIẾT TẮT
tell Computers and Humans Apart
Trang 7DANH MỤC CÁC HÌNH VẼ
1.3 Mức độ nghiêm trọng do các lỗ hổng bảo mật gây ra 13
2.2 Ví dụ về một tin nhắn, tấn công Stored XSS để lấy cắp
3.2 Mô hình kiến trúc kiểm soát các gói tin từ phía trình duyệt
Trang 83.5 Một đoạn mã của hàm list_url 55
Trang 9PHẦN MỞ ĐẦU
1 Lý do chọn đề tài
Sự phát triển nhanh chóng của Internet đem lại cho người dùng rất nhiều dịch vụhữu ích đặc biệt là các dịch vụ thanh toán hoặc giải trí trực tuyến Tuy nhiên hầu hết cácứng dụng này đều tiềm ẩn nguy cơ chứa các lỗi bảo mật mà tin tặc có thể khai thác và tấncông Cross-Site Scripting là một trong các lỗi chính mà kẻ tấn công khai thác để tấncông vào nhiều dịch vụ Web Kể từ khi trình duyệt Web hỗ trợ việc thực hiện các script,các kịch bản được nhúng trong nội dung, kẻ tấn công có thể sử dụng lỗi bảo mật này đểtruy nhập thông tin người dùng một cách bất hợp pháp Việc phát hiện các mã script độchại là rất cần thiết đối với người sử dụng dịch vụ và việc phát hiện này có thể được thựchiện bằng cách sử dụng các công cụ có sẵn do các công ty bảo mật uy tín cung cấp.Tuynhiên ở Việt Nam việc phòng chống tác hại các lỗi do XSS gây ra chưa được nghiên cứucụ thể và chi tiết.Vì vậy dưới sự hướng dẫn của TS Nguyễn Khanh Văn, em đã chọn đề
tài “Phát triển giải pháp và công cụ đảm bảo an ninh cho các dịch vụ trực tuyến”
nhằm mô tả tổng quan các dịch vụ trực tuyến và đi sâu tìm hiểu cách thức tấn công vàcác tác hại do cách tấn công Cross- Site Scripting gây ra, khả năng giải quyết nhằmgiảm bớt sự nguy hiểm của các cuộc tấn công bằng cách thức này mang lại Đồng thờitrong luận văn này, tác giả cũng nghiên cứu về XSS worm, nghiên cứu phương pháp lantruyền và đưa ra mô hình ngăn chặn sử dụng thuật toán tri-grams, tác giả cũng phát triểnmột công cụ mới được xây dựng bằng ngôn ngữ python, được tác giả đặt tên là XSSDetection.Công cụ này nhằm phát hiện một số lỗi XSS thường gặp trên website, và sẽđược đánh giá dựa trên hai yếu tố: hiệu suất và độ chính xác Kết quả so sánh vớichương trình Web Vulnerability Scanner của hãng Acunetix Kết quả cho thấy tínhchính xác của công cụ XSS Detection là có thể chấp nhận được, đủ để đáp ứng cho sự antoàn của người dùng mà không cần so sánh với các công cụ khác
2 Mục đích nghiên cứu luận văn, đối tượng, phạm vi nghiên cứu
-Theo đánh giá của tác giả, đây là đề tài tuy không mới trên thế giới nhưng ở ViệtNam đây là đề tài tương đối mới và khó với nhiều vấn đề kỹ thuật mới Trong phạm viđiều kiện và khả năng nghiên cứu, mục đích, đối tượng và phạm vi nghiên cứu được xácđịnh như sau:
Trang 10- Nghiên cứu tổng quan chung về an ninh các dịch vụ trực tuyến
- Nghiên cứu Cross Site Scripting:
Scripting
- Nghiên cứu về XSS Worm
- Thuật toán ngăn chặn sự lây lan của XSS Worm
- Phát triển một công cụ được gọi là XSS Detection nhằm kiểm tra và phát hiện lỗiXSS trong các website và so sánh với công cụ WVS (Web Vulnerability Scanner )
3 Cấu trúc luận văn
Phần nội dung chính của luận văn được chia thành 3 chương, trong đó:
Chương 1 - Tổng quan về an ninh trực tuyến : Thống kê và đánh giá mức độ rủi ro của
một số lỗi bảo mật hay bị mắc phải
Chương 2 - Phương pháp phát hiện và ngăn chặn Cross Site Scripting: Nghiên cứu
về Cross site Scripting, phân loại Cross site Scripting, cách thức phát hiện và ngăn chặnlỗi XSS
Chương 3 - Phương pháp phát hiện và phòng tránh XSS worm: Chương này giới
thiệu các phương pháp phát hiện từ phía người xây dựng ứng dụng và từ phía ngườingười dùng Mô tả thuật toán ngăn chặn XSS worm, đồng thời xây dựng một ứng dụngđược tác giả đặt tên là XSS Detection nhằm quét và phát hiện lỗ hổng XSS
Chương 1 TỔNG QUAN VỀ AN NINH TRỰC TUYẾN 1.1 An ninh trực tuyến
Ngày nay, khi Internet ngày càng phát triển, việc tiếp cận đến các dịch vụ trựctuyến ngày càng dễ dàng hơn.Cùng với sự phát triển đó là sự xuất hiện của hàng loạt cácwebsite thương mại điện tử, thanh toán trực tuyến, các mạng xã hội, các trò chơi trựctuyến, vv….Việc đảm bảo an ninh, an toàn thông tin cho các giao dịch này là hết sứcquan trọng Thống kê an ninh cho thấy sự quan tâm của tin tặc đối với các hình thức giaodịch trực tuyến này Cụ thể là cùng với sự tăng lên của số lượng các dịch vụ thanh toán
Trang 11trực tuyến, thì số lỗi bảo mật được phát hiện trên các website đó ngày càng tăng Đặcbiệt, người quản trị website cũng không nhận thấy các lỗi bảo mật này Đến khi phát hiệnđược, thì tác hại là không nhỏ.
Các lỗi bảo mật liên quan đến các dịch vụ trực tuyến thường liên quan đến các ứngdụng web, công cụ dùng để triển khai thanh toán điện tử Lý do là những lập trình viênthiết kế các ứng dụng web này chưa quan tâm đúng mức đến việc đảm bảo an ninh chocác giao dịch điện tử, hoặc có thể họ chưa được đầu tư, đào tạo bài bản cho những vấn đềnày Chính vì thế, mặc dù có quan tâm, rà soát các chương trình, tuy nhiên vẫn không thểtránh khỏi một ứng dụng web dính các lỗi bảo mật
Theo thống kê của BKAV (bkav.com.vn) trong năm 2012 có khoảng hơn 2203website của các doanh nghiệp và cơ quan Việt Nam bị tấn công, lỗi phổ biến là khai thác
lỗ hổng trên các hệ thống mạng Cũng theo thống kê này thì số lượng website bị lỗi hầunhư không giảm mà đang có chiều hướng tăng lên
Thực trạng cho thấy, an ninh mạng, an ninh trực tuyến vẫn chưa được quan tâmđúng mức tại các cơ quan, doanh nghiệp, hầu hết các cơ quan này cũng chưa bố trí đượcnhân sự phụ trách an ninh mạng, hoặc đội ngũ chưa đáp ứng được với tình hình thực tế
1.2 Thống kê an ninh
Theo thống kê an ninh từ tổ chức whitehat (www.whitehatsec.com) số lượng các lỗi liênquan đến việc đánh cắp thông tin người dùng, hay truy xuất vào cơ sở dữ liệu ngày càngtăng Cụ thể, tổ chức này thống kê 10 lỗi website thường gặp phải trong năm 2011 nhưsau :
Hình 1.1 : Thống kê 10 lỗi website thường gặp phải
Trang 12Số lỗi liên quan đến Cross-site Scripting tăng dần theo từng năm.Mặc dù các nhàphát triển ứng dụng web có quan tâm đến lỗi bảo mật này, tuy nhiên số lượng website bịlỗi này không hề giảm.Theo tổ chức này, năm 2010 lỗi “Information Leakage” chiếm64%, thì năm 2011 lại có xu hướng giảm chỉ còn 53%.
Việc vá lỗi cũng không hề đơn giản, vì nó liên quan đến cấu trúc của cả ứng dụngweb đang được triển khai Trong ngành công nghiệp CNTT, tổ chức whitehat vẫn đánhgiá thời gian sửa lỗi XSS là lâu nhất Trung bình là khoảng 35 ngày
Hình 1.2 : Thời gian vá lỗi
Cũng theo tổ chức này, họ tiến hành thống kê đánh giá các website dễ bị tổnthương do các lỗ hổng này mang lại Và một lần nữa lỗi XSS được đánh giá là nghiêmtrọng hơn cả
Trang 131.3 Đánh giá
Tình hình an ninh mạng, an ninh trực tuyến mặc dù có được quan tâm nhưng không hềđược cải thiện.Số lỗi, website bị khai thác vẫn đang có chiều hướng tăng lên.Vì vậy cầnphải có các nghiên cứu sâu hơn, đánh giá chi tiết hơn về các lỗi bảo mật này
Đặc biệt đối với lỗi Cross-site Scripting ngày càng phát triển mạnh và không có chiềuhướng giảm.Chính vì thế việc nghiên cứu nhằm phát hiện và ngăn chặn từng bước lỗiXSS là hết sức quan trọng.Trong chương 2, và chương 3 chúng tôi sẽ đề cập chi tiết hơnvề vấn đề này.Chúng tôi sẽ tiến hành tìm hiểu lỗi XSS, phân loại chúng, đánh giá mức độnguy hiểm, đưa ra các giải pháp phát hiện và ngăn chặn XSS.Đồng thời trong chương 3,chúng tôi sẽ nghiên cứu sâu hơn về XSS worm, một dạng sâu, virus, tìm hiểu phươngpháp lây lan, và đưa ra thuật toán ngăn chặn và phòng tránh
Trang 14Chương 2 PHƯƠNG PHÁP PHÁT HIỆN VÀ NGĂN CHẶN CROSS-SITE SCRIPTING 2.1 Tìm hiểu về Cross-site scripting
XSS là một kiểu khai thác lỗ hổng an ninh mạng mà ở đó cho phép kẻ tấn côngchèn mã độc vào một website Mã này có thể có thể chứa JavaScript hay chỉ là HTMLnằm trên máy chủ web hoặc được chèn vào khi người dùng duyệt đến một trang web Khiđoạn mã được kích hoạt, kẻ tấn công có thể chiếm quyền sử dụng các trang web của bênthứ ba hoặc sử dụng tài nguyên của máy chủ Các cuộc tấn công XSS thường chèn mãJavaScript vào một dịch vụ web độc hại thực hiện trên trình duyệt web của người dùng
XSS là một trong các ứng dụng tấn công web phổ biến nhất mà các tin tặc sử dụngđể gửi các mã độc hại cho người sử dụng Nó cũng được sử dụng để thay đổi nội dunghoặc chiếm quyền điều khiển trang web hay thực hiện các cuộc tấn công để lấy thông tin
và dữ liệu người dùng
Bằng việc khai thác lỗ hổng XSS cross-site scripting, kẻ tấn công có thể xây dựngmột cuộc tấn công Kỹ thuật này thường được sử dụng bởi những kẻ tấn công với mụcđích là tiêm đoạn mã JavaScript, VBScript, ActiveX, HTML, hoặc Flash để thực hiệntrên hệ thống của nạn nhân với quyền của nạn nhân Khi một cuộc tấn công được kíchhoạt, tất cả mọi thứ từ lấy tài khoản, thay đổi các thiết lập của người sử dụng, lấy cookiehoặc quảng cáo có thể sai lệch
2.2 Các mối đe dọa từ Cross-site Scripting :
- Theo thống kê về các lỗ hổng bảo mật thường bị tấn công nhất vào năm 2009, ta có kếtquả như dưới đây:
Trang 15Hình 2.1 : Thống kê các lỗ hổng thường bị tấn công năm 2009
- Một số website tìm thấy lỗ hổng XSS (2009)
www.microsoft.com/
http://www.microsoft.com/education/?ID=MCTN&target=http://
www.microsoft.com/education/?
ID=MCTN&target=<script>alert(document.cookie)</script>
FTcs?
pagename=<script>alert(document.cookie)</script>&urlname=smallbusiness/direct
eBayISAPI.dll?SSLRegisterShow
&countryid=3&siteId=3&co_partnerId
=0&UsingSS
Trang 16L=1&aolemail=<script>alert(document.cookie) </script>
Cross-Site Scripting (XSS) chiếm một tỉ lệ rất cao so với các phương pháp tấn côngkhác Hầu hết các tác hại tiềm ẩn của kĩ thuật này đã được biết đến Tuy nhiên, chúng tamới chỉ khắc phục được một phần của nó
Từ lỗi Cross-site scripting, kẻ tấn công có thể gây ra những rủi ro nghiêm trọng:
cắp cookie, mật khẩu người dùng,…
Tạo ra những thông tin sai lệch, bôi nhọ danh tiếng của cá nhân, tổ chức…
Tạo các cuộc tấn công lừa đảo trực tuyến
Chiếm quyền sử dụng của nạn nhân: chẳng hạn như thêm mã JavaScript để chuyểnhướng người dùng
Đoạn mã độc hại có thể làm cho trang web của bạn không thể truy cập, cũng nhưcó thể làm cho trình duyệt lỗi hoặc trở nên không thể hoạt động
Thông qua đoạn mã kẻ tấn công có thể theo dõi lịch sử truy cập các trang web,theo dõi thông tin bạn đăng lên một trang web và truy cập vào dữ liệu cá nhân như (thẻtín dụng, tài khoản ngân hàng,…)
2.3 Phân loại Cross-site Scripting
Có ba loại tấn công XSS khác nhau là : Stored XSS, Reflected XSS và DOM-base XSS.
Cụ thể như sau:
-Stored XSS :
Còn được gọi là kiểu tấn công liên tục (Persistent) là loại mà các mã được chènvào website thông qua một chức năng nào đó, chẳng hạn như: gửi một lời bình luận haytin nhắn, gửi bài trên các diễn đàn, để từ đó khi các thành viên khác truy cập website sẽbị dính mã độc từ kẻ tấn công này
Với tấn công kiểu tấn công Stored XSS, kẻ tấn công sẽ lưu trữ đoạn mã độc trênứng dụng web (ví dụ trong cơ sở dữ liệu - Database) Vì vậy, nó được gọi là Stored
Trang 17XSS… Sau đó, khi một người dùng gửi yêu cầu đến trang web mà có chứa đoạn mã độcđó thì đoạn mã độc sẽ được kích hoạt và thực hiện mưu đồ của kẻ tấn công.
Ví dụ như một web site là một diễn đàn, nơi mọi người có thể đưa các bài viết lênhiển thị cho tất cả mọi người Trang web này có thể được sử dụng để thực hiện loại tấncông này Kẻ tấn công viết một mẩu tin như hình 1 mà trong đó có chứa một đoạn mã độcđể ăn cắp cookie, sau đó mẩu tin được lưu trữ trong CSDL Khi một người dùng muốnđọc bài viết trên thì phải tải cả đoạn mã độc xuống trình duyệt của mình Đoạn mã độcđược chạy trên trình duyệt web của người dùng, nó sẽ gửi cookie của người dùng cho mộtmáy chủ web mà được kiểm soát bởi kẻ tấn công
Hình 2.2 : Ví dụ về một tin nhắn, tấn công Stored XSS để lấy cắp cookie.
Trước tiên, kẻ tấn công lưu bài viết chứa mã XSS trên diễn đàn Đầu tiên, ngườidùng đăng nhập vào diễn đàn và sẽ được xác định bởi một cookie được thiết lập trêntrình duyệt Sau đó, người dùng có thể đọc bài viết của kẻ tấn công đã đăng, các mã độcđược gửi trả lại như một phần của bài viết và sau đó nó sẽ được dịch và chạy trên trìnhduyệt của người dùng Đoạn mã XSS sẽ gửi cookie của người dùng cho kẻ tấn công Vớithông tin này của nạn nhân, kẻ tấn công có thể giả danh nạn nhân trong diễn đàn này vàcó tất cả các quyền của nạn nhân
Trang 18Hình 2.3 : Các bước tấn công stored XSS -Reflected XSS :
- Còn được gọi là kiểu tấn công XSS không liên tục (Non-Persistent) Đây là loạitấn công phổ biến Trong loại này, mã độc được gửi trở lại người dùng với sự giúp đỡcủa ứng dụng web Chúng dưới dạng một tin nhắn thông báo lỗi, kết quả tìm kiếm… gửiđến người dùng Để làm điều này, kẻ tấn công gửi một liên kết cho người dùng có thểbằng email (đoạn mã hình 2.4) Trong liên kết là mã HTML có chứa một script để tấncông các máy client nhận được email này Nếu người dùng nhấp chuột vào liên kết thì sẽhiển thị các trang web được yêu cầu trong liên kết này Trên trang web có thể chứa mãđộc hại, chúng sẽ được gửi tới trình duyệt của người dùng và nó được thực thi
Hình 2.4: Ví dụ về tấn công “Reflected XSS”.
Tóm tắt các bước thực hiện:
• Bước 1: Hacker biết được người dùng đang sử dụng một ứng dụng Web có lỗ hổng
Trang 19• Bước 2: Người dùng nhận được 1 liên kết thông qua email hay trên chính trang Web(như trên guestbook, banner dễ dàng thêm 1 liên kết do chính hacker tạo ra…) Thôngthường hacker khiến người dùng chú ý bằng những câu kích thích sự tò mò của ngườidùng như “ Kiểm tra tài khoản”, “Một phần thưởng hấp dẫn đang chờ bạn!”,…
• Bước 3: Chuyển nội dung thông tin (cookie, tên, mật khẩu…) về máy chủ của hacker
• Bước 4: Hacker tạo một chương trình cgi (ở ví dụ 3 này là steal.cgi) hoặc một trangWeb để ghi nhận những thông tin đã đánh cắp vào 1 tập tin
• Bước 5: Sau khi nhận được thông tin cần thiết, hacker có thể sử dụng để thâm nhập vàotài khoản của người dùng
Hình 2.5 : Các bước tấn công XSS Reflected
- Dom- based Xss :
Đây là loại thứ ba của kiểu tấn công XSS gây hại đến trình duyệt của người dùng Trongtrường hợp này, kẻ tấn công đặt một tập tin Flash độc trên một trang web mà người dùngghé thăm Khi trình duyệt của người dùng tải về các video, tập tin kích hoạt một scripttrong trình duyệt, kẻ tấn công có thể kiểm soát các yếu tố của các trang web bên trongtrình duyệt của người sử dụng
Một XSS DOM-base hoạt động hoàn toàn trong phạm vi của trình duyệt của nạnnhân và thậm chí một số cuộc tấn công còn có thể không được phát hiện thấy trên máychủ
2.4 Các cách ngăn chặn XSS:
Một số cuộc tấn công có thể được ngăn chặn bằng chính sách “Same sourceOrigination Policy” Mô hình này được sử dụng rộng rãi trong vấn đề đảm bảo an ninh
Trang 20Scripting Chính sách này ngăn cản việc một document mà được tải từ một website có thểtruy cập các thành phần của một document được tải từ một website khác Tuy nhiên,trong một cuộc tấn công XSS các script có thể truy cập dữ liệu trong bối cảnh củadocument bị tấn công Nếu kẻ tấn công nhúng mã độc vào liên kết tương tự như hình 2.3,
mô hình bảo mật đó có thể không còn tác dụng bởi vì đoạn script đó được chạy trongchính trang web đó chứ không phải là một trang web khác Nó có thể lấy tài nguyên trongtrang web và truyền ra ngoài
Để tránh các lỗi này, cách đơn giản nhất là người dùng nên vô hiệu hóa việc thựcthi các ngôn ngữ script trên trình duyệt của mình Về cơ bản điểu này là đúng nhưng giảipháp này ảnh hưởng đến tất cả các trang web dù chúng có bị lỗ hổng hay không Và điềuđó làm giảm các chức năng của một trang web Ví dụ, một trang web mà sử dụng Ajaxdựa trên JavaScript (là một sự kết hợp các công nghệ để cải tiến tính tương tác của trangweb) mà nếu script bị vô hiệu hóa thì việc này sẽ không thực hiện được Một lựa chọnkhác là chỉ vào những trang web tin cậy Điều này có thể rất khó khăn nếu một công cụtìm kiếm được sử dụng để tìm kiếm một thứ gì đó trên trang web Các trang web được trảvề bởi công cụ tìm kiếm mà chưa từng được xem trước đó thì nó không thể biết các trangweb đó có tin cậy hay không Sau đây, là các phương pháp ngăn chặn và phát hiện mà đãcó những hiệu quả nhất định
2.4.1 Ngăn chặn XSS trong giai đoạn phát triển web.
Hai biện pháp chính để phòng chống XSS ở phía máy chủ là: lọc dữ liệu đầu vào và khử đầu ra Chúng có thể được thực hiện trong giai đoạn phát triển phần mềm :
Lọc đầu vào là quá trình xác nhận tất cả các dữ liệu vào.Cách bảo vệ này thực hiện bởi các bộ lọc dựa vào việc loại bỏ các từ khóa được xác định trước, chẳng hạn như “<”,
“script”, “JavaScript”, hoặc “document”,
Khử đầu ra sử dụng một số ký tự, chẳng hạn như “ <”, ” " “, đã được mã hóa khi người dùng cung cấp dữ liệu để gửi đi
Ví dụ, ký tự đặc biệt “<” này đánh dấu bắt đầu của một thẻ HTML Một kẻ tấn công có thể nhúng mã mà đã được mã hóa của “<” và đoạn mã đó được gửi cho ứng dụng web Trình duyệt nhận được mã ký tự trên sẽ hiểu nó là chuẩn mã hóa ASCII và dịch thành
“<” Như vậy, kẻ tấn công đã thực hiện thành công việc nhúng các thẻ HTML, Java Script vào trang web
Trang 21Sau đây là cách mã hoá(HEX) các kí tự thường dùng trong lỗi XSS của thanh AddressBar của Browser.
Hình 2.6 : Đoạn hex được sử dụng trong lỗi XSS
Một địa chỉ đã được mã hóa HEX h t t p: / / abc c o m /s earc h p hp ? s ="> % 3 C
Phương pháp này được thưc hiện khi phát triển ứng dụng web mang lại hiệu quảcao nhưng đòi hỏi người phát triển phải là người có kiến thức tốt về tất cả các cuộc tấncông đã có và có thể có, và phải biết làm thế nào để tránh chúng Đồng thời, phương phápnày tốn rất nhiều tài nguyên cho việc lọc và mã hóa mỗi đầu vào và đầu ra Xử lý các yêu
Trang 22cầu trên cho một trang web phổ biến có thể làm cho chi phí thực hiện của trang web lênrất cao Tuy nhiên, nếu tất cả các dữ liệu không đáng tin cậy bị " tước vũ khí " theo cáchnày thì XSS có thể hoàn toàn được ngăn chặn.
2.4.2 Ngăn chặn XSS bằng phần mềm
Phần mềm kiểm tra các lỗ hổng XSS có thể được thực hiện theo hai cách tĩnh vàđộng Kiểm tra tĩnh được thực hiện bằng cách phân tích thử nghiệm mã nguồn Trongcuốn sách “Sixth IEEE International Workshop on Web Site Evolution” của các tác giảG.A Di Lucca, A.R Fasolino, M Mastroianni, and P Tramontana một phương phápđược mô tả là tạo ra một biểu đồ kiểm soát luồng thông tin mà được xử lý bởi máy chủ
Đồ thị bao gồm các nút đầu vào và đầu ra Mỗi nút đầu vào có thể là quá trình nhập dữliệu của một form, đọc giá trị của một câu truy vấn trong CSDL, cookie, dữ liệu từ mộttập tin Một nút đầu ra là liên quan đến câu truy vấn mà ghi vào các trường trong CSDL,ghi vào file, một cookie hay đầu ra của một trang web Máy chủ có thể bị lỗ hổng nếumột phần của đồ thị luồng điều khiển tồn tại kết nối một nút đầu ra với một nút đầu vào.Tuy nhiên, trong trường hợp dữ liệu từ một trang gửi đến một trang khác thì ứng dụngweb có thể không bị lỗ hổng đối với kiểu tấn công này nếu chỉ một trang có lỗi bảo mật.Ví dụ một trang có thể đọc đầu vào và lưu trữ vào một trường trong CSDL Kết quả củaphân tích này chỉ ra rằng trang này có lỗ hổng tiềm tàng Nhưng nếu trang khác mà đọc
dữ liệu từ trường này mà mã hóa mọi thứ trong đầu ra của trang và vì thế toàn thể ứngdụng web là không bị tổn thương
Trong kiểm tra động ta cho chạy lại các cuộc tấn công đã biết trên ứng dụng web.Trong cuốn sách “Sixth IEEE International Workshop on Web Site Evolution” trên cáctác giả thực hiện việc kiểm tra động như là giai đoạn thứ hai của đánh giá ứng dụng web.Chính xác hơn là các trang máy chủ mà có lỗ hổng theo một bước phân tích tĩnh trướcđược kiểm tra lại trong kiểm tra động với một số tấn công đặc biệt cho lỗ hổng đó Cáctrình thu thập tiến hành kiểm thử hộp đen với một CSDL được tạo ra Nó phân tích cáctrang được tạo ra của ứng dụng web và sau đó chọn cách tấn công để thực hiện
Phân tích bằng phần mềm là phương pháp mạnh mẽ phát hiện các lỗ hổng có thể Nhưng với phương pháp phân tích tĩnh, ta thấy nó hiệu quả với mã nguồn nhưng nó chỉkiểm tra để biết có lỗ hổng hay không chứ không khắc phục được lỗ hổng Kiểm thử hộpđen có thể thấy hết các vị trí của ô nhập mà được sử dụng để thực hiện trong các cuộc tấn
Trang 23công Nhưng đó cũng chỉ là những cuộc tấn công đã biết, và vì thế chỉ ngăn chặn đượccác lỗ hổng đó.
2.4.3 Ngăn chặn XSS bằng việc phân tích việc truyền dữ liệu
Để ngăn chặn việc truyền dữ liệu một hệ thống proxy được đề xuất Nó có thểđược cài đặt phía người sử dụng để ngăn chặn tấn công XSS Proxy phải giám sát các yêucầu (request) HTTP gửi đi và các kết quả (response) trả về của người dùng đang lướtweb Có hai chế độ được gọi là “Response change mode” và “Request change mode”.Trong “Response change mode”, proxy lưu trữ thông tin về yêu cầu mà chứa những thẻđặc biệt (ví dụ script) Nếu tiếp theo các thẻ đó lại xuất hiện trong response gửi về bởiứng dụng web thì mặc định các thẻ đó được mã hóa và trở thành an toàn Còn trong
“Request change mode” tham số trong yêu cầu gửi đi được gắn kèm thêm một định danh
là một số ngẫu nhiên nếu chúng chứa kí tự đặc biệt Tất cả các thẻ HTML đặc biệt trongtham số của yêu cầu gửi đi được thêm một số ngẫu nhiên (nó hoạt động như một địnhdanh) Ví dụ, với tham số “<s>test</s>” một số ngẫu nhiên 234 được tạo ra và sử dụngnhư một định danh Request gửi đi được chỉnh sửa và trở thành
“<234s>234test<234/s>234” Sau khi request được sửa đổi thì được gửi tới ứng dụngweb Và khi response trả về, nó sẽ được quét để kiểm tra sự xuất hiện của các thẻ đã thayđổi Nếu không có thẻ được sửa đổi với định danh được phát hiện trong response thì ứngdụng là không có lỗ hổng và yêu cầu bình thường được gửi đi và response trả lại đượcchuyển cho người sử dụng Trong chế độ này số lượng yêu cầu và response là tăng gấpđôi Thông tin về lỗ hổng bảo mật tiềm năng này được gửi tới CSDL để chia sẻ giữa cácmáy chủ proxy Hệ thống này không có thông tin về cấu trúc và ngữ nghĩa của trang webvừa truy cập, nó chỉ có thể kiểm tra tham số được xử lý bởi ứng dụng web mà được sửdụng trong yêu cầu http Nếu mã hóa được sử dụng thì proxy không thể theo dõi cácrequest và các response
Security” của các tác giả Christopher Kruegel và Giovanni Vigna có giới thiệu một hệthống phát hiện xâm nhập Hệ thống này giúp phát hiện các cuộc tấn công vào máy chủweb và ứng dụng web Các log file của máy chủ web được phân tích cho các dị thườngtrong các yêu cầu HTTP Giải pháp này bao gồm giai đoạn đọc và giai đoạn phát hiện.Trong giai đoạn đọc, các chuỗi truy vấn gửi đến ứng dụng web được sử dụng để tínhđiểm mà dựa trên một mô hình Mô hình và điểm số được thích ứng với từng ứng dụng
Trang 24web Trong giai đoạn phát hiện các điểm số cho mỗi câu truy vấn được tính toán bằngcách sử dụng mô hình đào tạo mà vượt quá một ngưỡng nhất định thì là dấu hiệu cho mộtcuộc tấn công Để phát hiện ra các dị thường đòi hỏi một mô hình tốt để cung cấp cácđiểm số chính xác và ngưỡng phải là một số không quá cao (nếu không các cuộc tấn côngcó thể không bị phát hiện) Nhưng ưu điểm của nó là có thể phát hiện các cuộc tấn côngmới mà không cần thay đổi ứng dụng.
2.4.4 Ngăn chặn XSS bằng việc theo dõi dữ liệu nhạy cảm
Để ngăn chặn XSS bằng việc theo dõi dữ liệu nhạy cảm thì ta phải tích hợp trongtrình dịch một chương trình để đánh dấu và theo dõi các dữ liệu nhạy cảm Bất cứ khi nào
mà ứng dụng cố gắng đưa dữ liệu ra bên ngoài chương trình thì nó sẽ bị ngăn chặn Việcđánh dấu và theo dõi các dữ liệu nhạy cảm như vậy gọi là “tainting” Các dữ liệu nhạycảm phải được quy định cụ thể Ví dụ như là biến session, database results, biến trongmột form, cookies, thông tin HTTP header Và phải có một luật để theo dõi các dữ liệunhạy cảm đó Ví dụ, khi chúng được truyền trong các hàm, được gán cho các biến khác…Đối với kiểu ngăn chặn này thì không cần phải chỉnh sửa chương trình ứng dụng mà chỉcần chỉnh sửa trình biên dịch Khi đã tích hợp giải pháp này vào trình biên dịch thì tất cảứng dụng mà chạy trên nó sẽ được bảo vệ Tuy nhiên khi có lỗ hổng mới thì lại phải xâydựng lại trình biên dịch
2.4.5 Mã hóa an toàn (Secure Coding)
Cách tốt nhất để ngăn chặn các lỗ hổng bảo mật trong các ứng dụng là viết mã antoàn Quá trình phát triển phần mềm đã dần dần được cải thiện theo thời gian và có nhiềuphương pháp tiếp cận khác nhau Tùy thuộc vào quy mô nhóm, quy mô dự án, thời gian
và ngân sách tiền tệ hoặc chỉ đơn giản là sở thích cá nhân, nhóm nhà phát triển phần mềmcó thể lựa chọn từ tập hợp các mô hình phát triển phần mềm khác nhau hay từ các môhình cũ như mô hình thác nước, mô hình V, hoặc là một trong các phương pháp nhanhnhư Extreme Programming, SCRUM và vv… Tuy nhiên, trong số những phương phápnày không có phương pháp nào tập trung chủ yếu vào cách mã hóa an toàn
Michael Howard và Steve Lipner từ Microsoft đã phát triển và công bố cuốn sáchcó tên "Security Development Lifecycle" (SDL) SDL được hoàn thành và được giớithiệu trong tháng 7 năm 2004 tại Microsoft và các tác giả cho rằng sau đó chất lượng tổngthể về an ninh của các sản phẩm của Microsoft sẽ cải thiện đáng kể Trong bất cứ mộtnhóm phương pháp phát triển phần mềm nào, phần quan trọng nhất nằm trong sự hiểu
Trang 25biết của tất cả các nhà phát triển, đó là quá trình xây dựng và cung cấp các tính năng SDL chỉ là một ví dụ, trong đó kiến thức an ninh, an toàn thông tin và học vấn được kếthợp trong việc viết tài liệu chứng minh, tạo ra các mô hình…
Có nhiều cách mã hóa an toàn Tuy nhiên, điều quan trọng là phải hiểu rằng, mụctiêu của quá trình quét lỗ hổng là tìm ra lỗ hổng bảo mật để các nhà phát triển có thể theo
dõi và đưa ra các cơ chế bảo mật.
2.4.6 Tường lửa ứng dụng Web (Web Application Firewalls - WAF):
Tường lửa ứng dụng Web kiểm tra sự an toàn của các ứng dụng trong trình duyệtcủa các khách hàng WAF điều tra lưu lượng truy cập đến các mẫu xác định trước và các
bộ lọc sẽ lọc gói tin với nội dung độc hại giống như một hệ thống phát hiện xâm nhập
hợp lệ hoặc các thông số có chứa dữ liệu có thể sẽ gây ra lỗ hổng bảo mật Lợi thế chính
là ứng dụng bảo vệ không thay đổi trong bằng bất kỳ trường hợp nào
Danh sách đầu vào phù hợp cho các mẫu độc hại được gọi là danh sách đen
(blacklisting), lọc đầu vào với nội dung được chấp nhận gọi là danh sách trắng (whitelisting)
Để làm cho danh sách đen rõ ràng hơn, xét cấu hình một WAF phát hiện vectơ tấn
công <script>arlert(something)</script>, ví dụ phù hợp với biểu thức là: <script>arlert
\ (* \) </ script> Biểu thức này có thể được giấu bởi các vectơ tấn công <script> prompt (1) </ script>, các vectơ này về cơ bản giống như các vectơ tấn công đầu tiên Bảng 2.7
cho thấy những ví dụ của các biểu thức chính quy và các mẫu tiêm giấu chúng
Hình 2.7: Ví dụ về một bộ lọc
Rõ ràng rằng hầu như không thể viết một bộ lọc danh sách đen mà có thể tìm ra tấtcả đầu vào độc hại Mặt khác, bộ lọc danh sách trắng cần phải được thiết kế một cách cẩnthận để không giới hạn các chức năng của một ứng dụng Web Vì sự phức tạp của nó,nhiệm vụ này gần như là không thể thực hiện
Trang 26Rõ ràng, một WAF không giải quyết được tận gốc các lỗ hổng bảo mật mà chỉ giảiquyết được các trường hợp nó phát hiện ra dấu hiệu Các ứng dụng Web cơ bản vẫnkhông an toàn vì nếu một kẻ tấn công tìm ra một cách để tắt WAF, ứng dụng Web sẽ để
lộ ra tất cả các điểm yếu của nó Một bất lợi là nếu một tường lửa (WAF) không được cấuhình hoặc bị vượt qua, thì hệ thống rất dễ bị đổ vỡ
Một điểm yếu nữa là khả năng tương thích,mở rộng của tường lửa Nếu một ứngdụng Web được sao chép sử dụng trên một vài máy chủ ở các nơi khác nhau, vậy nên càiđặt WAF ở đâu?
Các WAF được sử dụng chủ yếu cho các ứng dụng mà không thể được sửa chữathêm nữa, bởi vì mã nguồn không còn, và nhiệm vụ của WAF là tìm ra các lỗ hổng mớitrên trình duyệt của người sử dụng cho đến khi các nhà cung cấp phát hành một bản vá
Phần này giải thích hoạt động của WAF một cách cơ bản và giới thiệu nhữngphương pháp để thúc đẩy kỹ thuật ngăn chặn của các WAF bằng nhiều cách khác nhau, vídụ bằng cách giới thiệu phiên bản XSS vượt qua được các bộ lọc, thủ tục xử lý đầu vào,bằng cách thêm vào các thuật toán phân tích đầu ra của một ứng dụng Web, hoặc bằngcách theo dõi các mã script được phép và không được phép Những cách tiếp cận này kháthú vị, tuy có chiến lược làm giảm sự tấn công vào các ứng dụng web nhưng không giảiquyết được các vấn đề bảo mật của mã nguồn ứng dụng Web
2.4.7 Phương pháp phòng chống phía máy khách (client-side)
Các lỗ hổng XSS có thể được ngăn ngừa ở phía máy khách với mức độ nhất định.Nentwich et al đề xuất một kỹ thuật hủy bỏ dữ liệu động trong một tài liệu được công bốnăm 2008 Các giải pháp này trình bày ngăn chặn các cuộc tấn công XSS trên các máykhách bằng cách theo dõi các thông tin nhạy cảm bên trong trình duyệt Web Bất cứ khinào dữ liệu nhạy cảm được gửi cho một ứng dụng thứ 3, người sử dụng phải chấp nhận
Trong một báo cáo khác, người ta phát triển một công cụ có tên là Noxes, hoạtđộng như là một tường lửa cá nhân phía máy khách cho các ứng dụng Web Nó là mộtproxy cơ bản, chặn yêu cầu đầu ra và chạy các bộ lọc khác nhau trên các yêu cầu để xácđịnh xem chúng là độc hại hay không Các tác giả giải thích Noxes như sau: “Trong mộttường lửa truyền thống, khi một kết nối (connection) được mở thông qua một port nào đó
từ một ứng dụng không được xác định, thì rõ ràng ứng dụng đó tiềm ẩn nhiều nguy cơ.Tuy nhiên, trên web, các trang được liên kết với nhau vì vậy nó có thể liên kết đến cáctrang web mà người dùng không biết đến Do đó, một tường lửa web cá nhân nên có ích
Trang 27trong thực tế phải hỗ trợ một số liên kết tối ưu để giảm sự cần thiết phải tạo ra các quy tắcbắt buộc như trên Đồng thời, tường lửa có để đảm bảo rằng an ninh không suy yếu "
Nhận xét này cho thấy rõ ràng có nhiều vấn đề trong các phương pháp phòngchống phía client Phương pháp này vô cùng quan tâm đến việc phân biệt giữa mãJavaScript độc hại và không độc hại, thẻ, và các liên kết Sau đó, một giả định quan trọng
cơ bản được thực hiện: “Tất cả các liên kết tĩnh được nhúng trong một trang web có thểđược coi là an toàn đối với các cuộc tấn công XSS Những kẻ tấn công không thể trựctiếp sử dụng các liên kết tĩnh để mã hóa dữ liệu người dùng nhạy cảm.”
Giả định này là đúng đối với các nỗ lực để ăn cắp thông tin đăng nhập hoặc chiếmquyền điều khiển phiên làm việc của người sử dụng Tuy nhiên,nó lại nguy hiểm khi cácứng dụng web bị nhiễm sâu XSS (xem chương 3) ,dựa trên các liên kết tĩnh và không có
ý định ăn cắp thông tin nhạy cảm thông qua JavaScript Tin tặc sử dụng các cuộc tấncông XSS để tải phần mềm độc hại vào máy tính của nạn nhân
2.5 Các cách phát hiện lỗi bảo mật chung
Các lỗ hổng của ứng dụng web có thể được khám phá theo nhiều phương pháp.Hai phương pháp tiếp cận thông dụng là phương pháp kỹ thuật hộp đen (black-box) vàphương pháp kỹ thuật hộp trắng (white-box) Trong phương pháp Black-Box, các ứngdụng Web được kiểm tra, xử lý mặc dù không truy cập mã nguồn, không nghiên cứu mãnguồn và thậm chí không biết loại ứng dụng nào đang chạy trên máy chủ Web Tất cảthông tin về ứng dụng Web phải được thu thập thông qua các các công cụ như WebVulnerability Scanners ( một công cụ quét lỗ hổng web rất hữu ích ), hay bằng thủ côngkiểm tra các phản hồi HTTP hoặc bằn cách thử các giá trị đầu vào khác nhau Qua đó, tạo
ra tập các hành động của ứng dụng web
Phương pháp White-Box thì ngược lại, các Pentester ( những người đánh giá độ antoàn website thông qua cách tấn công chúng) có tất cả các thông tin cần thiết và thậm chícó thể truy cập vào mã nguồn để tìm các lỗ hổng Hoạt động của các ứng dụng Web cóthể được theo dõi bằng cách sử dụng công cụ gỡ lỗi, máy chủ Web và các phiên bản cơ
sở dữ liệu được biết đến
Phương pháp Black-Box thường là phương pháp phổ biến để tìm kiếm các cuộctấn công Dưới đây là tổng quan về kỹ thuật phổ biến cho cả hai phương pháp tiếp cậnBlack-Box và White-Box
Trang 282.5.1 Phương pháp tấn công
Trọng tâm của kẻ tấn công là tìm lỗ hổng web để khai thác Với lỗ hổng ReflectedXSS, kẻ tấn công chỉ có thể gây ảnh hưởng tới 1 người dùng Trái lại, với lỗ hổng StoredXSS, kẻ tấn công có thể tấn công nhiều người dùng cùng 1 lúc Điều này có nghĩa rằng,tất cả các lỗ hổng cần phải được phát hiện Kẻ tấn công cũng tập trung vào nghiên cứucách tìm và khai thác lỗ hổng Web Nếu chúng ta chỉ nhìn vào một ứng dụng Web khôngthông qua cách nhìn của kẻ tấn công, chúng ta có khả năng bỏ lỡ các lỗ hổng bảo mật, bởi
vì chúng ta tập trung nghiên cứu quá nhiều vào tác động hơn là về các cách thức để pháthiện các loại khác nhau của các lỗ hổng XSS
2.5.2 Penetration Testing thủ công
Thuật ngữ “Penetration Testing” ( hay Pentest) có thể hiểu một cách đơn giản chính là đánh giá độ an toàn bằng cách tấn công( đánh trận giả ) Một phần trong công tác đánh giá hệ thống Nói một cách chính xác ta phải thực hiện một số công việc chính sau đây:
- Xác định khả năng bị tấn công
- Khả năng kết hợp các nguy cơ nhỏ thành mối nguy cơ lớn
- Xác định các nguy cơ mà các công cụ tự động không phát hiện được
- Đánh giá khả năng tác động đến hoạt động của tổ chức nếu Pentest thành công
- Khả năng của hệ thống trong việc ngăn chặn các loại hình tấn công
- Lượng hoá các vấn đề cần đầu tư cho bảo mật
Pentest một cách thủ công là cách mang lại kết quả tốt nhất vì một lý do đơngiản: Mỗi ứng dụng Web là khác nhau và có tương tác với người sử dụng Nhiều trườngnhập dữ liệu yêu cầu thông tin hợp lệ như: một ID khách hàng hợp lệ, số thẻ tín dụng hợplệ, tên một người dùng, sau đó mới cho phép người dùng tiến hành bước tiếp theo Ví dụ,tương tác của người sử dụng là CAPTCHA, được thiết kế một cách rõ ràng để xác địnhngười đó và để ngăn chặn các hệ thống tự động truy cập vào các lớp sâu hơn của ứngdụng Web Sự tương tác của con người trở nên quan trọng hơn trong các ứng dụng Webhiện đại vì các thư viện JavaScript, hình ảnh động, và các yêu cầu HTTP không đồng bộthông qua AJAX được kích hoạt bằng việc nhấp chuột hoặc nhấn phím
Một số lỗ hổng trong các ứng dụng Web có thể được kẻ tấn công khai thác bằngcách sử dụng các cách khác thường Một số bài báo cung cấp một số ví dụ khá hay Họtạo ra một ứng dụng thử nghiệm được gọi là "WackoPicko", trong đó người dùng có thể
Trang 29ảnh, WackoPicko sao chép tệp được đăng bởi người dùng tới một thư mục con của thưmục tải lên Tên của thư mục con là thẻ người dùng cung cấp các hình ảnh được tải lên.Tin tặc có thể thao tác trên các tham số thẻ để thực hiện tấn công.
Kết quả là máy quét không thể tìm ra lỗ hổng bảo mật Nguyên nhân do các máyquét không thể tải lên một hình ảnh Nhưng ngay cả khi các máy quét có thể tải lên mộthình ảnh, vẫn có khả năng máy quét sẽ không phát hiện được các lỗ hổng Chỉ có sự kếthợp của việc tải lên một hình ảnh và cung cấp một thẻ đặc biệt thì sẽ tìm ra lỗ hổng đó
Pentesters sử dụng một cách tiếp cận lặp đi lặp lại Đầu tiên, các thông số đầu vàođược sửa đổi một chút bằng cách chèn các vectơ tấn công có chứa các kí tự quan trọngnhư ‘, ", <, và >
Đôi khi , các vectơ tấn công có thể được thay thế bằng vectơ tấn công tương tự, phá vỡcác bộ lọc cụ thể Giả sử, bộ lọc đầu vào lọc chuỗi con <script> Nếu bộ lọc không táikiểm tra các chuỗi, các vector tấn công <scr <script> ipt src = " "> </ script> sẽ vượtqua được bộ lọc và mã độc được thực thi
Một cách tiếp cận lặp đi lặp lại vào thư mục WackoPicko truyền tải lỗ hổng bảomật sẽ bao gồm tải lên một hình ảnh bình thường với thẻ khác nhau như test, <script>alert (5) </ script>, / test, test/test2, / / test, để tìm các bất thường trong các phản hồicho mỗi vectơ tấn công Ngoài ra, hình ảnh có thể được thay thế bằng một hình ảnh bịthay đổi hoặc bởi một tệp hoàn toàn khác chẳng hạn như một Shell-script (tập lệnh vỏ)hoặc một tệp script (tập lệnh) được viết bằng ngôn ngữ lập trình của các ứng dụng Webđể tiêm các mã tiêm độc hại Pentesting thủ công tìm hiểu các cách gây ra sự kiện bất ngờcủa các ứng dụng Web để hiểu cơ chế và logic của nó
Việc sử dụng pentesting thủ công trở nên cồng kềnh, nếu các biểu mẫu với cáctrường đầu vào là vô tận và mỗi trường phải được kiểm tra một lần Hãy tưởng tượng mộtbiểu mẫu với 20 trường đầu vào mà chỉ có một đầu vào là lỗ hổng bảo mật để tấn công.Đồng thời, nếu một trong những trường đầu vào khác bị phủ đầy bởi một vectơ tấn công,ứng dụng sẽ hiển thị một thông báo lỗi không rõ ràng.Cách duy nhất để tìm ra lỗ hỏngbảo mật là kiểm tra đầu vào của tất cả các trường Ta cần một công cụ tự động để thựchiện các công việc lặp đi lặp lại
Mặt khác, kiểm tra thâm nhập thủ công không phá hủy các máy chủ Web vì lượttải quá mức bởi hàng ngàn yêu cầu HTTP, skipfish3 gửi đến 2.000 yêu cầu mỗi giây - mộtcon số ấn tượng Tuy nhiên, kết quả không phải lúc nào cũng như mong đợi