LỜI CẢM ƠN Sau hơn 3 tháng nỗ lực thực hiện
đồ án tốt nghiệp, ngoài sự cố gắng hết mình của bản thân, tôi đã nhận được sự giúp
đỡ chỉ
bảo tận tình của thầy cô, bạn bè. Cá nhân tôi xin được bày tỏ lời chân thành cảm ơn đến thầy giáo hướng dẫn: ThS– bộ môn
An ninh mạng, khoa CNTT-, người đã trực tiếp tận tình giúp
đỡ tôi trong suốt quá trình thực hiện
đồ án. Đồng thời cũng cho phép tôi được cảm ơn sự giúp đỡ, tạo điều kiện của khoa CNTT. Mặc dù tôi đã cố gắng hoàn thành
đồ án trong khả năng cho phép nhưng không tránh khỏi thiếu sót. Tôi rất mong nhận được sự chỉ
bảo đóng góp ý kiến tận tình của các thầy cô giáo và các bạn. Người viết
đồ án 1 MỤC LỤC MỞ ĐẦU Trong thời đại bùng nổ Internet hiện nay, việc khai thác, tìm kiếm và quảng cáo thông tin trên trang
Web đã trở thành
một nhu cầu không thể thiếu và đóng
một vai trò rất quan trọng đối với sự thành công trong công việc của các doanh nghiệp, các tổ chức xã hội cũng như của từng cá nhân. Bởi lý
do quan trọng này nên
số lượng các cá nhân và tổ chức truy cập vào trang
Web tăng lên
một cách đáng kể. Trong
số này, hàng ngày, hàng 2 tuần có cả hàng trăm cuộc thăm viếng các trang
Web với mục đích xấu.
Số lượng các cuộc tấn công nhằm vào lỗ hổng trên các
ứng dụng Web đã gây nhiều tổn thất cả
về mặt kinh tế và xã hội. Vì vậy việc
nghiên cứu các
vấn đề về bảo mật ứng dụng Web là
một vấn đề rất quan trọng trong sự phát triển của Internet hiện nay. Mục đích của
đồ án:
Nghiên cứu các phương pháp tấn công
ứng dụng web, từ
đó đưa ra các giải pháp
bảo mật cho
ứng dụng. Nội
dung đồ án được chia thành 5 chương chính: Chương I : Giới thiệu
ứng dụng Web. Chương II : Giới thiệu
sơ lược các kĩ thuật tấn công
ứng dụng web. Chương III :
Một số kĩ thuật tấn công. Chương IV : Tổng kết các quá trình tấn công và các biện pháp phòng chống. Chương V : Chương trình minh họa. CHƯƠNG I GIỚI THIỆU
ỨNG DỤNG WEB I.
Ứng dụng Web (Web Application)
Web là môi trường có khả năng thực thi chương trình cao, cho phép tạo vô
số tùy biến trên nó, triển khai trực tiếp
một lượng lớn các
ứng dụng tới 3 hàng triệu người
dùng trên thế giới. 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. Website ngày nay khác xa với kiểu
đồ họa và
văn bản tĩnh của thê kỷ 19 hay thời kỳ trước đó. Các trang
Web hiện đại 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ó 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, Goole Maps). Quan trọng nhất là các Website hiện đại cho phép đóng gói, xử lý, lưu trữ và truyền tải dữ liệu khách hàng nhạy cảm (như thông tin cá nhân, mã
số thẻ tín dụng, thông tin
bảo mật xã hội ) có thể
dùng ngay hoặc
dùng định kỳ
về sau. Và điều này được thực hiện qua các
ứng dụng Web.
Đó có thể là các thành phần Webmail (thư điện tử), trang đăng nhập, chương trình hỗ trợ và mẫu yêu cầu sản phẩm hay hoạt động mua bán, hệ thống quản lý nội dung, phát triển Website hiện đại, cung cấp các 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. Tất cả đều là các ví dụ phổ biến, gần gũi và sinh động của
Ứng dụng Web. 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 trên trình duyệt Web. 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. 4 Dưới góc
độ kỹ thuật, 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). Trình duyệt
Web chính là chìa khóa, nó dịch và chạy tất cả các Script, lệnh…khi hiển thị trang
Web và nội
dung được yêu cầu. II. Hoạt động Hình bên dưới minh họa chi tiết mô hình
ứng dụng Web ba tầng. Tầng đầu tiên thông thương là trình duyệt
Web hoặc giao diện người dùng. Tầng thứ hai là công nghệ kỹ thuật tạo nội
dung động như Java servlets (JSP) hay Active Server Pages (ASP). Còn tầng thứ ba là 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 1 Quá trình hoạt động bắt đầu với yêu cầu được tạo ra từ người
dùng trên trình duyệt, gửi qua Internet tới trình chủ
Web ứng dụng (Web application Server).
Web ứng dụng truy cập máy chủ chứa cơ
sở dữ liệu 5
để thực hiện nhiệm vụ được yêu cầu: cập nhật, truy
vấn thông tin đang nằm trong cơ
sở dữ liệu. Sau
đó ứng dụng Web gửi thông tin lại cho người
dùng qua trình duyệt. Hình 2 III. Các
vấn đề về bảo mật Web Mặc dù không thể phủ nhận những cải tiến nâng cao đáng kể hiện nay, như
vấn đề bảo mật trong
ứng dụng Web vẫn không ngừng tăng lên. Nguyên nhân có thể xuất phát từ các đoạn mã không phù hợp. Nhiều điểm yếu nghiêm trọng hay các lỗ hổng cho phép hacker xâm nhập thẳng và truy cập vào cơ
sở dữ liệu tách lấy dữ liệu nhạy cảm. Nhiều cơ
sở dữ liệu chứa thông tin giá trị (như chi tiết cá nhân, thông tin tài chính) khiến chúng trở thành đích nhắm thường xuyên của hầu hết hacker.
Một cuộc
nghiên cứu gần đây chỉ ra rằng 75% các cuộc tấn công mạng được thực hiện ở mức
ứng dụng Web. 6 • Website và các
ứng dụng Web liên quan luôn phải sẵn sàng 24/7
để cung cấp dịch vụ theo yêu cầu khách hàng, yêu cầu từ phí nhân viên, nhà cung cấp và nhiều người liên quan khác. • Tường lửa, SLL không thể
bảo vệ ứng dụng Web trước mọi hoạt động hacking, đơn giản vì truy cập vào Website phải
để ở chế
độ public
để bất kỳ ai cũng có thể ghé thăm Website được. Tất cả hệ thống cơ
sở dữ liệu hiện đại (như Microsoft SQL Server, Oracle, MySQL) đều có thể truy cập qua
một số cổng cụ thể (như cổng 80, 433). Nếu muốn,
một người nào
đó có thể kết nội trực tiếp tới cơ
sở dữ liệu
một cách hiện quả khi vượt qua cơ chế
bảo mật của hệ điều hành. Các cổng này
để mở nhằm cho phép liên lạc với hoạt động giao thông mạng hợp pháp, và
do đó cũng hình thành nên lỗ hổng lớn nguy hiểm. • Các
ứng dụng Web thường truy cập dữ liệu cuối như cơ
sở dữ liệu khách hàng, điểu khiển dữ liệu có giá trị và
do đó rất khó
để có thể tuyệt đối
an toàn. • Hầu hết
ứng dụng Web đều là tự tạo,
do đó ít có được các kiểm tra trình
độ hơn
so với các phần mềm cùng loại.
Do đó các
ứng dụng tùy biến thường
dễ bị tấn công hơn. Có thể nói
ứng dụng Web là
một cổng vào (gateway) của cơ
sở dữ liệu, nhất là các
ứng dụng tùy biến. Chúng không được phát triển với mức
bảo mật tốt nhất vì không phải qua các kiểm tra
bảo mật thông thường. 7 CHƯƠNG II GIỚI THIỆU
SƠ LƯỢC
VỀ CÁC KỸ THUẬT TẤN CÔNG
ỨNG DỤNG WEB I. CÁC KHÁI NIỆM THUẬT NGỮ LIÊN QUAN I.1 Hacker Hacker là
một thuật ngữ
dùng để chuyên chỉ những kẻ phá hoại các hệ thống mạng…Hacker thường là những chuyên gia
về máy tính. Hacker không tạo ra các kẽ hở cho hệ thống, nhưng hacker lại là những người am hiểu
về hệ điều hành, hệ quản trị cơ
sở dữ liệu, các ngôn ngữ lập trình… Họ sử
dụng kiến thức của mình trong việc tìm tòi và khai thác các lỗ hổng của hệ thống mạng.
Một số hacker chỉ
dừng lại ở việc phát hiện và 8 thông
báo lỗi tìm được cho những nhà
bảo mật hay người phát triển chương trình, họ được xem như là WhiteHat (Hacker nón trắng).
Một số hacker dựa vào những lỗ hổng thực hiện việc khai thác trái phép nhằm mục đích phá hoại hay mưu lợi riêng, những người này bị xem như là BlackHat( Hacker nón đen). Vì tính chất phổ biến của thuật ngữ hacker, nên trong phần trình bày, sẽ sử
dụng “hacker” thay cho “kẻ tấn công”. I.2 HTTP Header HTTP Header là phần đầu (header) của thông tin mà trình khách và trình chủ gửi cho nhau. Những thông tin trình khách gửi cho trình chủ được gọi là HTTP requests (yêu cầu) còn trình chủ gửi cho trình khách là HTTP responses (trả lời). Thông thường,
một HTTP header gồm nhiều dòng, mỗi dòng chứa tên tham
số và giá trị.
Một số tham
số có thể được
dùng trong cả header yêu cầu và header trả lời,
một số khác thì chỉ được
dùng riêng trong từng loại. Ví dụ: • Header yêu cầu: Get /tintuc/homnay.asp HTTP/1.1 Accept: */* Accept-Language: en-us Connection: Keep-Alive Host: localhost Referer: http://localhost/lienket.asp User-Agent: Mozilla/4.0 {compatible: MSIE 5.5; Windows NT 5.0} Accept-Encoding: gzip, deflate 9 o Dòng đầu là dòng yêu cầu cho biết phương thức yêu cầu (GET hoặc POST), địa chỉ yêu cầu (/tintuc/homnay.asp) và phiên bản HTTP (HTTP/1.1)… o Tiếp theo là các tham số. Chẳng hạn như: Accept-Language: Cho biết ngôn ngữ
dùng trong trang web. Host: Cho biết địa chỉ máy chủ. Referer: Cho biết địa chỉ của trang
web tham chiếu tới. o Header của HTTP request sẽ kết thúc bằng
một dòng trống. • Header trả lời: HTTP/1.1 200 OK Server: Microsoft-IIS/5.0 Date: Thu, 13 Jul 2000 05:46:53 GMT Content-Length: 2291 Content-Type: text/html Set-cookie: ASPSESSIONIDQQGGGNCC=LKLDFFKCINFLDMFHCBCBMFLJ; Path=/ Cache-control: private <HTML> <BODY> ……… o Dòng đầu là dòng trạng thái
để cho biết phiên bản HTTP được
dùng (HTTP/1.1), mã trạng thái (200) và trạng thái (OK). 10 [...]... quyết
vấn đề này,
ứng dụng Web đưa ra
một khái niệm phiên làm việc (Session) Còn SessionID là
một chuỗi
để chứng thực phiên làm việc
Một số trình chủ sẽ cung cấp
một SessionID cho người
dùng khi họ xem trang
web trên trình chủ
Để duy trì phiên làm việc thì sessionID thường được lưu vào: Biến trên URL Biến
ẩn Form Cookie I.4 Cookie Cookie là những phần dữ liệu nhỏ có cấu trúc được chia sẻ giữa website...
mật khẩu Newpass là
mật khẩu mới cho username Tuy nhiên, bằng cách thay đổi tham
số như sau: http://www.nganhang.com/example?user=admin&newpass=111111 Hacker đã có thể thay đổi
mật khẩu của admin bằng
một mật khẩu mới bất kì, trong ví dụ này là ‘111111’ I.1.2
Một số biện pháp khắc phục
Để chống lại kiểu thay đổi nội
dung chuỗi URL,
ứng dụng có thể áp
dụng biện pháp sau: •
Ứng dụng sử
dụng cơ chế bảng... tham
số truyền của
một ứng dụng nhưng mọi thông tin đều được lưu trữ vào nó trước khi chuyển đi nên trong phần này sẽ
đề cập đến việc thay đổi
một HTTP Header I.4.1 Khái niệm Thông thường chỉ có trình duyệt và trình chủ là trao đổi HTTP Header, còn hầu hết các
ứng dụng web thì không Tuy nhiên, hacker có thể tự viết
một chương trình
để điều khiển HTTP header (như xem nội dung, tạo mới) hay sử
dụng các... những
vấn đề bảo mật quan trọng đối với các nhà phát triển
web và cả những người sử
dụng web Bất kì
một website nào cho phép người sử
dụng đăng thông tin mà không có sự kiểm tra chặt chẽ các đoạn mã nguy hiểm thì đều có thể tiềm
ẩn các lỗi XSS 25 1 XSS là gì ? Cross-Site Scripting hay còn được gọi tắt là XSS (thay vì gọi tắt là CSS
để tránh nhầm lẫn với CSS-Cascading Style Sheet của HTML) là
một kĩ thuật... trọng ở cookie Cookie là mẫu thông tin mà
ứng dụng lưu trên đĩa cứng của người sử
dụng Nhưng chỉ
ứng dụng thiết lập ra cookie thì mới có thể đọc nó
Do đó chỉ khi người
dùng đang trong phiên làm việc của
ứng dụng thì hacker mới có cơ hội đánh cắp cookie Công việc đầu tiên của hacker là tìm trang đích
để dụ người
dùng đăng nhập sau khi đã tìm ra lỗ hổng trên
ứng dụng đó Các bước thực hiện XSS truyền thống:... biến
ẩn thành
một chuỗi đơn Sử
dụng thuật toán mã hóa MD5 hoặc
một kiểu hash
một chiều khác
để tổng hợp chuỗi
đó và lưu nó vào
một hidden field gọi là “Chuỗi mẫu” Khi giá trị trong form được gửi đi, các thao tác như trên được thực hiện lại với cùng
một khóa mà ta định trước Sau
đó đem
so sánh với “Chuỗi mẫu”, nếu chũng không khớp nhau thì chứng tỏ giá trị trong biểu mẫu đã bị thay đổi •
Dùng một sessionID... vào
để đánh lừa
ứng dụng vì với những
ứng dụng sử
dụng chương trình CGI như C++ thì C++ cho rằng \0 là dấu kết thúc chuỗi Ví dụ: Hacker thêm chuỗi sau: Ô nhập: … \0alert(document.cookie) Nếu
ứng dụng sử
dụng chương trình C++
để kiểm tra tính
đúng đắn của chuỗi thì chuỗi trên hợp lệ
do C++ sẽ nhận biết “\0” là kết thúc chuỗi nên không kiểm tra đoạn sau… Thao tác trên tham
số truyền... thuật tấn công
ứng dụ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 II.1 Kiểm soát truy cập
web (Web access control) Thâm nhập hệ thống qua cửa sau (Back door) Trong quá trình thiết kế
ứng dụng, những người phát triển
ứng dụng có thể cài
một “cửa sau” (back door)
để sau này co thể thâm nhập vào hệ thống
một cách
dễ dàng II.2 Chiếm hữu phiên làm viêc
Ấn định phiêm làm việc (Session...
dụng cơ chế bảng băm (hash table) Sau khi người
dùng chứng thực thành công với
một username,
ứng dụng sẽ sinh ra
một khóa tương
ứng Khóa này sẽ lưu trên server cùng với biến 18 username trong đối tượng bảng băm Mỗi khi nguời
dùng kết nối đến
ứng dụng, khóa và username này sẽ được gửi đi và được
so sánh với khóa username trong bảng băm Nếu tương
ứng với bản ghi trong dữ liệu thì hợp lệ Còn nếu không... 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 hoặc
một trang
Web để ghi nhận những thông tin đã đánh cắp vào
một tập tin Bước 5: Sau khi nhận thông tin cần thiết, hacker có thể sử
dụng để thâm nhập vào tài khoản của người
dùng 28 Ví dụ 1: Các thẻ HTML đều có thể là công cụ cho các cuộc tấn công bởi kĩ thuật XSS, Chỉ cần với
một đoạn mã HTML gửi trong . công nhằm vào lỗ hổng trên các ứng dụng Web đã gây nhiều tổn thất cả về mặt kinh tế và xã hội. Vì vậy việc nghiên cứu các vấn đề về bảo mật ứng dụng Web là một vấn đề rất quan trọng trong sự phát. của đồ án: Nghiên cứu các phương pháp tấn công ứng dụng web, từ đó đưa ra các giải pháp bảo mật cho ứng dụng. Nội dung đồ án được chia thành 5 chương chính: Chương I : Giới thiệu ứng dụng Web. Chương. qua trình duyệt. Hình 2 III. Các vấn đề về bảo mật Web Mặc dù không thể phủ nhận những cải tiến nâng cao đáng kể hiện nay, như vấn đề bảo mật trong ứng dụng Web vẫn không ngừng tăng lên. Nguyên