Ngày nay, khi Internet được phổ biến rộng rãi, các tổ chức, cá nhân đều có nhu cầu giới thiệu thông tin của mình trên xa lộ thông tin cũng như thực hiện các phiên giao dịch trực tuyến. Vấn đề nảy sinh là khi phạm vi ứng dụng của các ứng dụng Web ngày càng mở rộng thì khả năng xuất hiện lỗi và bị tấn công càng cao, trở thành đối tượng cho nhiều người tấn công với các mục đích khác nhau. Đôi khi, cũng chỉ đơn giản là để thử tài hoặc đùa bỡn với người khác. Cùng với sự phát triển không ngừng của Internet và các dịch vụ trên Internet, số lượng các vụ tấn công trên Internet cũng tăng theo cấp số nhân. Trong khi các phương tiện thông tin đại chúng ngày càng nhắc nhiều đến những khả năng truy nhập thông tin của Internet, thì các tài liệu chuyên môn bắt đầu đề cập nhiều đến vấn đề bảo đảm và an toàn dữ liệu cho các máy tính được kết nối vào mạng Internet. Theo số liệu của CERT (Computer Emegency Response Team Đội cấp cứu máy tính), số lượng các vụ tấn công trên Internet được thông báo cho tổ chức này là ít hơn 200 vào năm 1989, khoảng 400 vào năm 1991, 1400 vào năm 1993, và 2241 vào năm 1994, và năm 2001 là 5315 vụ. Ngay ở Việt Nam ta, theo bản tổng kết tình hình an ninh mạng tại Việt Nam trong năm 2007 của Trung tâm An ninh mạng BKIS cho thấy : Việt Nam có 342 Website bị tấn công, trong đó có 118 Website do Hacker trong nước và 224 website là do Hacker nước ngoài thực hiện. Và gần đây nhất là vụ tấn công website và đoạt tên miền của Công ty chuyên cung cấp hosting Pavietnam, đã khiến cho không chỉ riêng Website của công ty này mà còn ảnh hưởng tới hàng nghìn website của các công ty khác đã thuê hosting ở PAvietnam. Ở hội thảo Cyber Security Executive tại New York năm 2008, Mitre đã đưa ra bản báo cáo nghiên cứu về tình hình an ninh mạng như sau: Trong số 20.000 bản báo cáo lại các lỗ hổng thì có 21,5% thuộc về lỗi của XSS, 14% thuộc về lỗi SQL Injection và 9,5% là lỗi PHP, tràn bộ đệm là 7,9%, còn lại là các lỗ hổng – nguy cơ khác. Trong đề tài này, chúng em sẽ trình bày một số kỹ thuật tấn công dịch vụ web phổ biến hiện nay để chúng ta có thể dễ dàng hiểu, nhận ra được các kỹ thuật, các thủ thuật tấn công web. Qua đó, chúng em đưa ra các biện pháp phòng chống, bảo vệ cho dịch vụ web. Đó là lý do chúng em nghiên cứu đề tài Tìm hiểu các phương pháp tấn công web.
Trang 1NHẬN XÉT CỦA GIÁO VIÊN
Trang 2
MỤC LỤC
NHẬN XÉT CỦA GIÁO VIÊN 1
MỤC LỤC 2
DANH MỤC CÁC HÌNH VẼ 4
LỜI NÓI ĐẦU 5
Chương I: Tổng quan về web và ứng dụng 7
I.1 Khái niệm 7
I.2 Kiến trúc ứng dụng web 9
I.3 Mô tả hoạt động 10
Chương II Các nguy cơ mất an toàn của dịch vụ web 12
II.1 Chiếm hữu phiên làm việc (Session Mangement) 12
II.1.1 Ấn định phiên làm việc (Session Fixation) 12
II.1.2 Đánh cắp phiên làm việc (Session Hijacking) 12
II.2 Lợi dụng việc thiếu sót trong việc kiểm tra dữ liệu nhập hợp lệ (Input validation) 12
II.2.1 Kiểm tra tính đúng đắn của dữ liệu bằng ngôn ngữ phía trình duyệt (Client-Side validation) 12
II.2.2 Tràn bộ đệm (Buffer OverFlow) 12
II.2.3 Vượt qua đường dẫn (Path Traversal) 13
II.2.4 Chèn mã lệnh thực thi trên trình duyệt nạn nhân (Cross- Site Scripting) 13
II.2.5 Chèn câu truy vấn SQL (SQL Injection) 13
II.3 Từ chối dịch vụ (Denial of service (DoS) 13
Chương III: Phân loại các tấn công web và ứng dụng 14
III.1 Tấn công máy chủ Web 14
III.2 Tấn công các lỗ hổng liên quan đến vấn đề quản trị Web 14
III.3 Tấn công dựa trên lỗ hổng tầng ứng dụng Web 14
Chương IV Một số loại tấn công web và ứng dụng 16
IV.1 Tấn công SQL Injection 16
IV.1.1 Khái niệm SQL Injection 16
Trang 3IV.2.1 Các dạng tấn công thường gặp 16
IV.2.1.1 Dạng tấn công vượt qua kiểm tra đăng nhập 16
IV.2.1.2 Dạng tấn công sử dụng câu lệnh SELECT 18
2.1.3 Dạng tấn công sử dụng câu lệnh INSERT 20
IV.2.1.4 Dạng tấn công sử dụng stored-procedures 21
IV.2.1.5 Tấn công dựa vào câu lệnh HAVING, GROUP BY, UNION.21 IV.2.2 Biện pháp phòng chống 25
IV.2.2.1 Kiểm tra dữ liệu 26
IV.2.2.2 Khoá chặt SQL Server (SQL Server Lockdown) 27
IV.2.2.3 Sử dụng phương pháp mã hóa dữ liệu 27
IV.2 Chèn mã lệnh thực thi trên trình duyệt nạn nhân (cross site scripting - XSS) 28
IV.2.1 Giới thiệu về XSS: 28
IV.2.2 Phương pháp tấn công XSS truyền thống 29
IV.2.3 Tấn công XSS bằng Flash 30
IV.2.4 Biện pháp phòng chống 30
IV.3 Tấn công từ chối dịch vụ (Deny of service - DoS) 31
IV.3.1 Khái niệm 31
IV.3.2 Những nguy cơ bị tấn công bằng DOS 31
IV.3.3 Một số dang tấn công thường gặp 32
IV.3.3.1 Lợi dụng TCP thực hiện phương pháp SYN flood truyền thống .32
IV.3.3.2 Tấn công vào băng thông 33
IV.3.2.2.1 Kiểu tấn công thứ 1 33
IV.3.2.2.1 Kiểu tấn công thứ 2 33
IV.3.4 Biện pháp phòng chống 35
IV.3.5 Tổng kết chung quá trình tấn công của Hacker 36
KẾT LUẬN 39
Trang 4DANH MỤC CÁC HÌNH VẼ
Hình 1: Báo cáo nghiên cứu về tình hình an ninh mạng trong
hội thảo Cyber Security Executive tại New York năm 2008
6
Trang 5LỜI NÓI ĐẦU
Ngày nay, khi Internet được phổ biến rộng rãi, các tổ chức, cá nhân đều
có nhu cầu giới thiệu thông tin của mình trên xa lộ thông tin cũng như thựchiện các phiên giao dịch trực tuyến Vấn đề nảy sinh là khi phạm vi ứng dụngcủa các ứng dụng Web ngày càng mở rộng thì khả năng xuất hiện lỗi và bị tấncông càng cao, trở thành đối tượng cho nhiều người tấn công với các mục đíchkhác nhau Đôi khi, cũng chỉ đơn giản là để thử tài hoặc đùa bỡn với ngườikhác
Cùng với sự phát triển không ngừng của Internet và các dịch vụ trênInternet, số lượng các vụ tấn công trên Internet cũng tăng theo cấp số nhân.Trong khi các phương tiện thông tin đại chúng ngày càng nhắc nhiều đếnnhững khả năng truy nhập thông tin của Internet, thì các tài liệu chuyên mônbắt đầu đề cập nhiều đến vấn đề bảo đảm và an toàn dữ liệu cho các máy tínhđược kết nối vào mạng Internet
Theo số liệu của CERT (Computer Emegency Response Team - "Độicấp cứu máy tính"), số lượng các vụ tấn công trên Internet được thông báo cho
tổ chức này là ít hơn 200 vào năm 1989, khoảng 400 vào năm 1991, 1400 vàonăm 1993, và 2241 vào năm 1994, và năm 2001 là 5315 vụ
Ngay ở Việt Nam ta, theo bản tổng kết tình hình an ninh mạng tại ViệtNam trong năm 2007 của Trung tâm An ninh mạng BKIS cho thấy : Việt Nam
có 342 Website bị tấn công, trong đó có 118 Website do Hacker trong nước và
224 website là do Hacker nước ngoài thực hiện Và gần đây nhất là vụ tấn côngwebsite và đoạt tên miền của Công ty chuyên cung cấp hosting Pavietnam, đãkhiến cho không chỉ riêng Website của công ty này mà còn ảnh hưởng tới hàngnghìn website của các công ty khác đã thuê hosting ở PAvietnam
Ở hội thảo Cyber Security Executive tại New York năm 2008, Mitre đãđưa ra bản báo cáo nghiên cứu về tình hình an ninh mạng như sau: Trong số20.000 bản báo cáo lại các lỗ hổng thì có 21,5% thuộc về lỗi của XSS, 14%thuộc về lỗi SQL Injection và 9,5% là lỗi PHP, tràn bộ đệm là 7,9%, còn lại làcác lỗ hổng – nguy cơ khác
Trang 6Hình 1: Báo cáo nghiên cứu về tình hình an ninh mạng trong hội thảo Cyber
Security Executive tại New York năm 2008.
Trong đề tài này, chúng em sẽ trình bày một số kỹ thuật tấn công dịch vụweb phổ biến hiện nay để chúng ta có thể dễ dàng hiểu, nhận ra được các kỹthuật, các thủ thuật tấn công web Qua đó, chúng em đưa ra các biện phápphòng chống, bảo vệ cho dịch vụ web Đó là lý do chúng em nghiên cứu đề tài
Tìm hiểu các phương pháp tấn công web.
Trong quá trình thực hiện đề tài nhóm em không khỏi mắc phải thiếu sót.Mong thầy đóng góp ý kiến để chúng em có thể hoàn thiện tốt hơn trongnhững đề tài sau này
Em xin chân thành cảm ơn!
Sinh viên thực hiện :
Hà văn Trường Nguyễn việt Long
Đỗ văn Tiền Nguyễn như Tỉnh
Trang 7Chương I: Tổng quan về web và ứng dụng
I.1 Khái niệm
Dưới góc độ kỹ thuật, Web được định nghĩa là môi trường có khả năng thực thi chương trình cao, cho phép tạo các tùy biến trên triển khai trực tiếp của một lượng lớn các ứng dụng tới đa người dùng Hai thành phần quan trọng nhất của website hiện là trình duyệt Web linh hoạt và các ứng dụng Web
Web browser (trình duyệt web) là các ứng dụng phần mềm cho phép người dùng truy vấn dữ liệu và tương tác với nội dung nằm trên trang Web bên trong website
Ứng dụng Web là một ứng dụng chủ/khách sử dụng giao thức HTTP để tương tác với người dùng hay hệ thống khác Ứng dụng web được chia thành hai loại chính: ứng dụng web Public và ứng dụng web Private.
Ứng dụng web Public: là website dùng để quảng bá thông tin, cung cấp
và trao đổi thông tin với với bên ngoài như các website thương mại điện tử, các website của các công ty chứng khoán, các ngân hàng,…
Ứng dụng web Private: là các website cung cấp và trao đổi thông tin trong một tổ chức, doanh nghiệp và các đối tác chiến lược… Các website này thường dùng để cung cấp thông tin cho các văn phòng, chi nhánh, các nhân viên đi công tác hoặc làm việc tại nhà và đôi khi là cho các đối tác chiến lược kết nối qua môi trường internet.
Web Server (máy chủ web) là máy chủ có dung lượng lớn, tốc độ cao, được dùng để chứa những website đã được thiết kế cùng với những thông tin liên quan khác (các mã Script, các chương trình, và các file Multimedia), Web Server có khả năng gửi đến máy khách những trang Web thông qua môi trường Internet (hoặc Intranet) qua giao thức HTTP - giao thức được thiết kế để gửi các file đến trình duyệt Web và các giao thức khác.
Các trang Web hiện nay cho phép người dùng lấy xuống nội dung động cá nhân hóa theo thiết lập và tham chiếu riêng Hơn nữa chúng cũng có thể chạy các script trên máy khách, có thể “thay đổi” trình duyệt Internet thành giao diện cho các ứng dụng như thư điện tử, phần mềm ánh xạ tương tác (Yahoo Mail, Google Maps)
Trang 8động mua bán, hệ thống quản lý nội dung, phát triển website hiện đại, cung cấp cho các doanh nghiệp phương tiện cần thiết để liên lạc với khách hàng tương lai và khách hàng hiện tại
Dưới góc độ chức năng, ứng dụng Web là các chương trình máy tính cho phép người dùng website đăng nhập, truy vấn vào/ra dữ liệu qua mạng Internet trên trình duyệt Web yêu thích của họ Dữ liệu sẽ được gửi tới người dùng trong trình duyệt theo kiểu thông tin động (trong một định dạng cụ thể, như với HTML thì dùng CSS)
từ ứng dụng Web qua một Web Server
Các ứng dụng Web truy vấn máy chủ chứa nội dung (chủ yếu trên cơ sở dữ liệu lưu trữ nội dung) và tạo tài liệu Web động để phục vụ yêu cầu của máy khách (chính là người dùng website) Tài liệu được tạo trong kiểu định dạng tiêu chuẩn hỗ trợ trên tất cả mọi trình duyệt (như HTML, XHTML) JavaScript là một dạng script client-side cho phép yếu tố động có ở trên từng trang (như thay đổi ảnh mỗi lần người dùng di chuột tới) Nó dịch và chạy tất cả script, lệnh… khi hiển thị trang web
và nội dung được yêu cầu Wikipedia, bộ bách khoa toàn thư trực tuyến lớn nhất thế giới hiện nay định nghĩa Web browser là “máy khách chung cho mọi ứng dụng web”.
Một cải tiến đáng kể khác trong quá trình xây dựng và duy trì các ứng dụng Web là chúng có thể hoạt dộng mà không cần quan tâm đến hệ điều hành hay trình duyệt chạy trên các máy client Ứng dụng Web được triển khai ở bất cứ nơi nào có Internet, và hầu hết không đòi hỏi yêu cầu cài đặt cho người dùng cuối
Một số ví dụ về Web application:
CMS (Content Management System) Hệ quản trị nội dung, cũng được gọi là hệ thống quản lý nội dung là phần mềm để tổ chức và tạo môi trường cộng tác thuận lợi nhằm mục đích xây dựng một hệ thống tài liệu và các loại nội dung khác một cách thống nhất
Web mail (Web-based Emails) là một giao diện web, được thiết kế cho phép truy cập email trên máy chủ từ bất cứ đâu trên thế giới thông qua web (sử dụng trình duyệt) Giao thức IMAP đã giúp WebMail thực hiện việc này Web mail cho phép chúng ta thực hiện nhiều chức năng như: soạn thư, gửi thư, lịch làm việc…
Shopping Carts là một loại ứng dụng web dùng cho việc mua sắm trực tuyến, Các shopping cart không yêu cầu phần mềm giao dịch an toàn Chúng thực tế là một phần của site ảo để bán hàng trực tuyến, Các shopping cart sử dụng các cookie để xác định danh sách các sản phẩm
mà khách hàng đã chọn mua Có hai cách mà một công ty có thể thiết lập cookie Cách thứ nhất là sao lưu từng giao dịch shopping cart vào một cookie ở máy tính của khách hàng Cách thứ hai là gắn một ID khách hàng và lưu ID này ở trong một cookie
Portal hay cổng thông tin điện tử được hiểu như là một trang web xuất phát mà từ đó người sử dụng có thể dễ dàng truy xuất các trang web và các dịch vụ thông tin khác trên mạng máy tính Lợi ích lớn nhất mà portal đem lại là tính tiện lợi, dễ sử dụng, Thay vì phải nhớ vô số các
Trang 9địa chỉ khác nhau cho các mục đích sử dụng khác nhau, thì với một web portal như Yahoo, người dùng chỉ cần nhớ yahoo.com Hiện nay ở Việt nam, các cơ quan nhà nước, các công ty vẫn sử dụng loại ứng dụng web này Một vài Portal tiêu biểu như:
Portal của Mobifone: http://www.mobifone.com.vn/web/vn/
Hay Portal của chính phủ:
http://www.chinhphu.vn/portal/page?
_pageid=33,1&_dad=portal&_schema=PORTAL
Và còn nhiều ứng dụng web khác nữa.
I.2 Kiến trúc ứng dụng web
Hình bên dưới minh họa chi tiết mô hình ứng dụng Web ba lớp Lớp đầu tiên Presentation layer là trình duyệt Web hoặc giao diện người dùng Lớp thứ hai Business logic layer là công nghệ kỹ thuật tạo nội dung động như Java servlets (JSP) hay Active Server Pages (ASP) Còn lớp thứ ba là Data access layer-cơ sở dữ liệu chứa nội dung (như tin tức) và dữ liệu người dùng (như username, password, mã số bảo mật xã hội, chi tiết thẻ tín dụng)
Hình 2 Kiến trúc 3 lớp của web application
Lớp trình bày (Prensentation layer): Gồm các thành phần giao diện đồ họa người dùng (GUI) chuẩn giúp hiển thị dữ liệu cho người dùng, ngoài ra còn có
Trang 10trình bày” Lớp này thường được cài đặt bằng các kỹ thuật lập trình như CGI, Java, NET, PHP, được triển khai trên các trình chủ như Apache, IIS
Lớp dữ liệu (Data access layer): Thường là các hệ quản trị dữ liệu (DBMS) chịu trách nhiệm quản lý các file dữ liệu và quyền sử dụng Lớp này là optional (ứng dụng đơn giản không có tier này), chỉ hoạt động với dữ liệu và truy cập đến dữ liệu Ví dụ về lớp này:
Microsoft SQL Server
Oracle Database Server
MySQL Server
OpenLDAP
I.3 Mô tả hoạt động
Đầu tiên trình duyệt sẽ gửi một yêu cầu (request) đến trình chủ Web thông qua các lệnh cơ bản GET, POST… của giao thức HTTP, trình chủ lúc này có thể cho thực thi một chương trình được xây dựng từ nhiều ngôn ngữ như Perl, C/C++… hoặc trình chủ yêu cầu bộ diễn dịch thực thi các trang ASP, JSP… theo yêu cầu của trình khách.
Hình 3 Kiến trúc n lớp của web application
Tùy theo các tác vụ của chương trình được cài đặt mà nó xử lý, tính toán, kết nối đến cơ sở dữ liệu, lưu các thông tin do trình khách gửi đến…và từ đó trả về cho trình khách 1 luồng dữ liệu có định dạng theo giao thức HTTP, nó gồm 2 phần:
Header mô tả các thông tin về gói dữ liệu và các thuộc tính, trạng thái trao đổi giữa trình duyệt và WebServer
Body là phần nội dung dữ liệu mà Server gửi về Client, nó có thể là một file HTML, một hình ảnh, một đoạn phim hay một văn bản bất kì
Với firewall, luồng thông tin giữa trình chủ và trình khách là luồng thông tin hợp lệ Vì thế, nếu hacker tìm thấy vài lỗ hổng trong ứng dụng Web thì firewall không còn hữu dụng trong việc ngăn chặn hacker này Do đó, các kĩ thuật tấn công vào một hệ thống mạng ngày nay đang dần tập trung vào những sơ suất (hay lỗ hổng)
Trang 11trong quá trình tạo ứng dụng của những nhà phát triển Web hơn là tấn công trực tiếp vào hệ thống mạng, hệ điều hành Tuy nhiên, hacker cũng có thể lợi dụng các lỗ hổng Web để mở rộng sự tấn công của mình vào các hệ thống không liên quan khác
Trang 12Chương II Các nguy cơ mất an toàn của dịch
vụ web
Dưới đây là giới thiệu sơ lược các nguy cơ mất an toàn, các kĩ thuật tấncông Web đã được phân loại dựa trên mức độ gây tác hại đối với ứng dụng, vớingười dùng
II.1 Chiếm hữu phiên làm việc (Session Mangement)
Kỹ thuật này được chia làm hai loại:
II.1.1 Ấn định phiên làm việc (Session Fixation)
Là kĩ thuật tấn công cho phép hacker mạo danh người dùng hợp lệ bằngcách gửi một session ID hợp lệ đến người dùng, sau khi người dùng đăng nhậpvào hệ thống thành công, hacker sẽ dùng lại session ID đó và nghiễm nhiên trởthành người dùng hợp lệ
II.1.2 Đánh cắp phiên làm việc (Session Hijacking)
Là kĩ thuật tấn công cho phép hacker mạo danh người dùng hợp lệ saukhi nạn nhân đã đăng nhập vào hệ thống bằng cách giải mã session ID của họđược lưu trữ trong cookie hay tham số URL, biến ẩn của form
II.2 Lợi dụng việc thiếu sót trong việc kiểm tra dữ liệu nhập hợp lệ (Input validation)
Hacker lợi dụng những ô nhập dữ liệu để gửi đi một đoạn mã bất kìkhiến cho hệ thống phải thực thi đoạn lệnh đó hay bị phá vỡ hoàn toàn
II.2.1 Kiểm tra tính đúng đắn của dữ liệu bằng ngôn ngữ phía trình duyệt (Client-Side validation)
Do ngôn ngữ phía trình duyệt ( JavaScript, VBScript ) đuợc thực thi trêntrình duyệt nên hacker có thể sửa đổi mã nguồn để có thể vô hiệu hóa sự kiểmtra
Trang 13II.2.2 Tràn bộ đệm (Buffer OverFlow)
Một khối lượng dữ liệu được gửi cho ứng dụng vượt quá lượng dữ liệuđược cấp phát khiến cho ứng dụng không thực thi được câu lệnh dự định kếtiếp mà thay vào đó phải thực thi một đoạn mã bất kì do hacker đưa vào hệthống Nghiêm trọng hơn nếu ứng dụng được cấu hình để thực thi với quyềnroot trên hệ thống
II.2.3 Vượt qua đường dẫn (Path Traversal)
Là phương pháp lợi dụng đường dẫn truy xuất một tập tin trên URL đểtrả kết quả về cho trình duyệt mà hacker có thể lấy được nội dung tập tin bất kìtrên hệ thống
II.2.4 Chèn mã lệnh thực thi trên trình duyệt nạn nhân (Cross- Site Scripting)
Đây là kĩ thuật tấn công chủ yếu nhằm vào thông tin trên máy tính củangười dùng hơn là vào hệ thống máy chủ Bằng cách thêm một đoạn mã bất kì( thường được lập trình bằng ngôn ngữ kịch bản như JavaScript, VBScript…),hacker có thể thực hiện việc đánh cắp thông tin quan trọng như cookie để từ đótrở thành người dùng hợp lệ của ứng dụng…dựa trên những thông tin đánh cắpnày Cross-Site scripting cũng là một kiểu tấn công “session hijacking”
II.2.5 Chèn câu truy vấn SQL (SQL Injection)
Trong lập trình với cơ sở dữ liệu, người lập trình đã sai sót trong vấn đềkiểm tra giá trị nhập vào để từ đó hacker lợi dụng thêm vào những câu truy vấnhay những giá trị không hợp lệ để dễ dàng đăng nhập vào hệ thống
II.3 Từ chối dịch vụ (Denial of service (DoS)
Một khối lượng lớn yêu cầu được gửi cho ứng dụng trong một khoảngthời gian nhất định khiến hệ thống không đáp ứng kịp yêu cầu dẫn đến hệthống bị phá vỡ
Trang 14Chương III: Phân loại các tấn công web và ứng
dụng.
Ứng dụng thường được triển khai bên trong hệ thống bảo vệ chu vi mạngvới các thiết bị bảo vệ truyền thống như tường lửa,hệ thống phát hiện và phòngchống truy nhập trái phép (IDS/IPS) Các tấn công wed ở tầng ứng dụng khaithác các điểm yếu do sự bất cẩn và sai sót của người lập trình ứng dụng
Dựa trên kiến trúc các ứng dụng wed, các tấn công ứng dụng wed có thểmđược phân loại dựa theo lỗ hổng trên từng lớp của ứng dụng như sau:
III.1 Tấn công máy chủ Web
Các tấn công này dựa trên lỗ hổng của hệ điều hành máy chủ chứa ứngdụng web, gồm:
Tấn công unicode,printer ISAPI trên máy chủ Microsoft IIS
Tấn công tràn bộ nhớ đệm trên máy chủ Apache
III.2 Tấn công các lỗ hổng liên quan đến vấn đề quản trị Web
Các tấn công này khai thác các điểm yếu do lỗi người quản trị web, cấuhình trang wed thiếu an toàn gồm:
Kiểm tra tập tin thông thường( Common File Checks)
Kiểm tra đuôi tập tin (Extension checking)
Kiểm tra dữ liệu( Data Extension Checking)
Kiểm tra dữ liệu back up (Back up Checking)
Liệt kê nội dung thư mục (Directory Enumeration)
Kiểm soát đường dẫn (Path Truncation)
Đường dẫn wed ẩn (Hidden wed paths)
Cấu hình sai SSL
Cấu hình sai HTTP
Cấu hình sai cơ chế xác thực
III.3 Tấn công dựa trên lỗ hổng tầng ứng dụng Web
Các tấn công này dựa trên các điểm yếu trong mã nguồn và logic của ứng dụng bao gồm:
Lỗi về quá trình xác thực
Lỗi về quy trình kiểm soát và phân quyền
Trang 16Chương IV Một số loại tấn công web và ứng
dụng
IV.1 Tấn công SQL Injection
IV.1.1 Khái niệm SQL Injection
SQL injection là một kĩ thuật cho phép những kẻ tấn công ( Hacker) lợidụng lỗ hổng trong việc kiểm tra dữ liệu nhập trong các ứng dụng web và cácthông báo lỗi của hệ quản trị cơ sở dữ liệu để "tiêm vào" và thi hành các câulệnh SQL bất hợp pháp (không được người phát triển ứng dụng lường trước).Hậu quả của nó rất tai hại cho phép những kẻ tấn công chiếm quyền kiểm soátweb Lỗi này thường xảy ra 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
Về bản chất, đây là lỗi tồn tại trong Các hệ quản trị cơ sở dữ liệu ( SQLserver, MySQL, Oraccle ….) Tuy nhiên, chúng ta có thể khắc phục lỗi nàybằng cách kiểm tra dữ liệu được nhập vào trên ứng dụng Web
IV.2.1 Các dạng tấn công thường gặp
IV.2.1.1 Dạng tấn công vượt qua kiểm tra đă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 đăngnhậ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.Xét một ví dụ điển hình, thông thường để cho phép người dùngtruy 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ậtkhẩu Sau khi người dùng nhập thông tin vào, hệ thống sẽ kiểm tra tên đăngnhập và mật khẩu có hợp lệ hay không để quyết định cho phép hay từ chối thựchiện tiếp Trong trường hợp này, người ta có thể dùng hai trang, một trangHTML để hiển thị form nhập liệu và một trang ASP dùng để xử lí thông tinnhập từ phía người dùng
Ví dụ:
login.htm
<form action="ExecLogin.asp" method="post">
Trang 17Username: <input type="text" name="fUSRNAME"><br>
Password: <input type="password" name="fPASSWORD"><br>
có tên đăng nhập và mật khẩu hợp lệ Tuy nhiên, đoạn mã này thực sự không
an toàn và là tiền đề cho một lỗi SQL injection
Đặc biệt, chỗ sơ hở nằm ở chỗ dữ liệu nhập vào từ người dùng đượcdùng để xây dựng trực tiếp câu lệnh SQL Chính điều này cho phép những kẻtấn công có thể điều khiển câu truy vấn sẽ được thực hiện
Ví dụ: nếu người dùng nhập chuỗi sau vào trong cả 2 ô nhập liệu
username/password của trang login.htm là: ' OR ' ' = ' '
Lúc này, câu truy vấn sẽ được gọi thực hiện là:
Trang 18đầu tiên trong bảng sẽ được chọn.Như vây, câu truy vấn này là hợp lệ và sẽ trả
về tất cả các bản ghi của T_USERS và đoạn mã tiếp theo xử lí người dùngđăng nhập bất hợp pháp này như là người dùng đăng nhập hợp lệ
Ngoài ra, trong chuỗi SQL-injection được tiêm vào thường chứa chứa các kí tự đặc biệt của SQL :
• kí tự “ ; ” : đánh dấu kết thúc 1 câu truy vấn
• kí tự “ ” : ẩn chuỗi kí tự phía sau nó trên cùng 1 dòng
Một ví dụ khác sử dụng kí tự đặc biệt SQL để thâm nhập vào hệ thốngnhư sau:
Username:
admin’ Password:
Câu lệnh SQL như sau:
SELECT tkUsername FROM User WHERE tkUsername=
‘admin’ AND
Password= ‘” & tkPassword & “’”
Ta thấy, câu lệnh trên cho phép đăng nhập vào hệ thống với quyềnadmin mà không đòi hỏi password ( Vì phần sau của dấu “ “ sẽ bị ẩn khôngđược thực thi)
Tóm lại, tấn công vượt qua kiểm tra đăng nhập là dạng tấn công cơ bảnnhất giúp Hacker vượt qua các trang đăng nhập nhờ vào lỗi khi dùng các câulệnh SQL thao tác trên cơ sở dữ liệu của ứng dụng web
IV.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áolỗi từ hệ thống để dò tìm các điểm yếu khởi đầu cho việc tấn công.Xét một ví
dụ rất thường gặp trong các website về tin tức Thông thường, sẽ có một trangnhận ID của tin cần hiển thị rồi sau đó truy vấn nội dung của tin có ID này
Ví dụ: http://www.victim.com/shownews.asp?ID=123 Mã nguồn chochức năng này thường được viết khá đơn giản theo dạng sau :
<%
Dim vNewsID, objRS, strSQL
vNewsID = Request("ID")
Trang 19strSQL = "SELECT * FROM T_NEWS WHERE NEWS_ID =" & vNewsID Set objRS = Server.CreateObject("ADODB.Recordset")
SELECT * FROM T_NEWS WHERE NEWS_ID=0 or 1=1
Một trường hợp khác, ví dụ như trang tìm kiếm Trang này cho phépngười dùng nhập vào các thông tin tìm kiếm như Họ, Tên, … Đoạn mã thườnggặp là:
<%
Dim vAuthorName, objRS, strSQL
vAuthorName = Request("fAUTHOR_NAME")
strSQL = "SELECT * FROM T_AUTHORS WHERE AUTHOR_NAME
=' " & _vAuthorName & " ' "
Set objRS = Server.CreateObject("ADODB.Recordset")
objRS.Open strSQL, "DSN= "
Set objRS = Nothing
%>
Trang 20Lúc này, ngoài câu truy vấn đầu không thành công, chương trình sẽ thựchiện thêm lệnh tiếp theo sau từ khóa UNION nữa Tất nhiên các ví dụ nói trên,dường như không có gì nguy hiểm, nhưng hãy thử tưởng tượng kẻ tấn công cóthể xóa toàn bộ cơ sở dữ liệu bằng cách chèn vào các đoạn lệnh nguy hiểm nhưlệnh DROP TABLE.
Ví dụ như: ' DROP TABLE T_AUTHORS –
Như vậy để biết được ứng dụng web có bị lỗi dạng này hay không ? Rấtđơn giản, hãy nhập vào chuỗi (*) như trên, nếu hệ thống báo lỗi về cú phápdạng:
Invalid object name “OtherTable”;
ta có thể biết chắc là hệ thống đã thực hiện câu SELECT sau từ khóa
UNION, vì như vậy mới có thể trả về lỗi mà ta đã cố tình tạo ra trong câu lệnh
SELECT
Và ta cũng có thể biết được tên của các bảng dữ liệu mà thực hiện cácthao tác phá hoại khi ứng dụng web bị lỗi SQL injection Cũng rất đơn giản,bởi vì trong SQL Server, có hai đối tượng là sysobjects và syscolumns chophép liệt kê tất cả các tên bảng và cột có trong hệ thống
Ta chỉ cần chỉnh lại câu lệnh SELECT, ví dụ như:
' UNION SELECT name FROM sysobjects WHERE xtype = 'U'
là có thể liệt kê được tên tất cả các bảng dữ liệu
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àikhoả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