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

An toàn bảo mật thông tin Tấn công XSS và SQL Injection

22 989 5

Đ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 22
Dung lượng 0,96 MB

Nội dung

An toàn bảo mật thông tin Tấn công XSS và SQL Injection XSS (Crosssite script) là một kỹ thuật tấn công bằng cách chèn vào các trang web động (PHP, ASP, JSP…) những thẻ HTML hoặc những đoạn script (những đoạn mã lệnh thực thi trực tiếp trên trình duyệt) nhằm mục đích thiết lập hoặc đánh cắp những thông tin quan trọng trên máy người dùng.

1 TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI Viện Công Nghệ Thông Tin & Truyền Thông o0o BÁO CÁO TIỂU LUẬN Môn học: An toàn bảo mật thông tin Lớp: 12BCNTT2 - Nhóm 4 Đề tài: Tấn công XSS và SQL Injection Giảng viên: TS. Trần Đức Khánh Nhóm học viên thực hiện: Ngô Hoàng Thành Phạm Tất Thành Nguyễn Xuân Thịnh Trần Văn Nậm Luyện Thanh Tuấn Trần Hữu Thảo Hà Nội 06-2013 MỤC LỤC   1.1. Khái niệm 4 1.2. Phân loại 5    !" #$  % &'!( $ $ ) *+,- Thao tác 1 : Dò m lỗ hổng XSS của trang web 8 .$  / 01 5.1. Đối với người phát triển web 9 5.2. Đối với người dùng 10 23 4+,5678 2 $*9 :;<=  $ 2.1 Thông qua “user input” 11 2.2 Thông qua Cookies 11 2.3 Thông qua các biến server 12 2.4 Second-order Injec?on 13 #$=> 4=  $# 3.1 Union Query Based 13 3.2 Batched Query 14 3.3 Order by clause 14 $?;<=  $ ,8. 4.1. Phát hiện 15 4.2 Thu thập thông ?n về hệ quản trị cơ sở dữ liệu 16 4.3. Xác định số lượng cột trong mệnh đề Select 16 4.4. Xác định thông ?n 17 .'0@=  $1 "$  / 01 (A9@ B 7.1. Kịch bản xâm nhập 20 7.2 Mô tả tool 21 -2C@4  2 1D@* 9= E 3 I. XSS – Cross Site Script 1. Tổng quan về XSS 1.1. Khái niệm XSS (Cross-site script) là một kỹ thuật tấn công bằng cách chèn vào các trang web động (PHP, ASP, JSP…) những thẻ HTML hoặc những đoạn script (những đoạn mã lệnh thực thi trực tiếp trên trình duyệt) nhằm mục đích thiết lập hoặc đánh cắp những thông tin quan trọng trên máy người dùng. Kỹ thuật này được viết tắt là XSS để tránh nhầm lẫn với CSS - Cascading Style Sheet – (những file định dạng hiển thị cho HTML). XSS là kỹ thuật tấn công nhằm vào phía người dùng (client side), lợi dụng sự “ngây thơ” của những người sử dụng web chủ yếu là để đánh cắp các thông tin quan trọng từ họ và sử dụng những thông tin đó vào mục đich xấu. Các đoạn script được chạy trong khi người dùng không hề ý thức được việc mình đang thực hiện các thao tác này. 4 1.2. Phân loại Stored XSS Phương pháp này giống như tên gọi tức là XSS được lưu trữ lại trên server. Với phương pháp này, attacker sẽ gửi một đoạn script độc hại vào trang web của server (qua nhiều hình thức như comment, viết bài, …) và những đoạn script này sẽ được lưu trữ vào server. Khi người dùng xem trang web này, trình duyệt sẽ nhận về cả trang web lẫn script độc hại và chạy đoạn script này, thực hiện các thao tác mà người dùng không hề biết (chuyển thông tin cho attacker, thực hiện các thao tác giao dịch …) Reflected XSS Về cơ bản reflectd XSS được sử dụng thông qua các URL chứa đoạn script độc hại mà người dùng không để ý vẫn click vào. Attacker gửi cho người dùng URL chứa script độc hại (thông qua email, chat, …) và thông thường URL này được ẩn dưới dạng mà người dùng tin tưởng (URL của các trang mà người dùng có tài khoản, những trang 5 hay truy cập). Khi người dùng click vào những đường link này thì một request mang theo script độc hại sẽ được gửi lên server, server sẽ trả lại trang HTML có chứa script và trình duyệt sẽ thực hiện script đó với tư cách là user đang đăng nhập, dễ dàng thực hiện các thao tác và thao tác đơn giản nhất là gửi thông tin người dùng (chứa trong cookie) cho attacker. 2. Mục đích chính của XSS Mục đích chính của XSS là đánh cắp thông tin quan trọng của người dùng để thực hiện các thao tác bất hợp pháp. XSS là phương pháp tấn công phía client do đối tượng tấn công của nó là những người dùng “ngây thơ”, bản thân kỹ thuật này không nhằm đến việc tấn công hủy hoại server hay chiếm quyền điều khiển trên server. Ta có thể liệt kê ra đây một số mục đích chính của XSS: • Truy cập thông tin nhạy cảm hoặc bị hạn chế. • Ăn cắp tiền của người dùng (thông qua giao dịch ngân hàng, giao dịch mua bán …). • Theo dõi thói quen lướt web của người dùng. • Hủy hoại ứng dụng web. • Tấn công DDoS (Sử dụng trình duyệt của người dùng như một công cụ tấn công). 6 • … 3. Cách thức hoạt động của XSS Về cơ bản XSS cũng giống như SQL injection, nó cũng là kỹ thuật chèn vào các request từ client lên server những đoạn mã độc hại. Việc chèn các đoạn mã này có thể được thực hiện thông qua các form HTML cho phép input dữ liệu hoặc trực tiếp thông qua các URL. Một URL bị tiêm mã độc có thể có dạng như sau : http::/Trang_web/file_name?query=<script>Mã độc</script> Phần in đậm chính là đoạn mã độc được tiêm vào URL trong thẻ <script>. Với đoạn URL này thì web server có lỗ hổng XSS sẽ trả về trình duyệt một trang HTML có thẻ <script> chứa mã độc này và trình duyệt sẽ thực hiện nó với tư cách là người dùng đã truy cập vào web server. Đây là cách thông dụng nhất để đánh lừa người dùng. Người dùng tưởng rằng mình truy cập trang web đó một cách bình thường như mọi lần, thực hiện các thao tác bình thường mà không hề biết rằng trình duyệt của mình đang thực thi một số thao tác nằm ngoài tầm kiểm soát. Nội dung trong thẻ <script> không bị hạn chế. Nó có thể là một đoạn code sẵn có hoặc thậm chí là một đường link đến một file script được viết sẵn từ trước, và chính vì vậy mà ta không thể lường trước hết được những gì mà XSS có thể làm được. Tuy nhiên do những script này được chạy trên trình duyệt của người dùng nên mục tiêu của nó chính là những người dùng. Nó không có tác dụng thay đổi dữ liệu nguồn của web server. Tất nhiên có những trường hợp attacker sử dụng người dùng để tấn công server nhưng điều đó chỉ là tấn công bề ngoài của server mà thôi (do người dùng cũng chỉ có quyền hạn nhất định trên web server). Trên thực tế XSS không dễ nhận ra theo cách thức nhìn thấy thẻ script trên URL mà URL có thể được encode lại dưới dạng mã Hexa. Ở dạng này trình duyệt vẫn hiểu được URL đó là gì nhưng người dùng lại khó nhận ra được URL này chứa XSS. Ví dụ : 7 http::/Trang_web/file_name?query=%3C%73%63%72%69%70%74%3E %61%6C%65%72%74%28%27%58%53%53%20%61%74%74%61%63%6B %65%64%21%27%29%3B%3C%2F%73%63%72%69%70%74%3E thực chất là URL : http::/Trang_web/file_name?query= <script>alert('XSS attacked!');</script> đã được mã hóa dưới dạng Hexa. Người dùng sẽ không nhận ra URL này thực chất là gì mà sẽ chỉ nghĩ rằng đây là các tham số của trang web mình thường sử dụng và sẽ click vào đó. Các đoạn script trong XSS rất đa dạng. Nó có thể đơn giản chỉ là những script lấy thông tin cookie (thông tin về session của người dùng) gửi về cho attacker cho đến những thao tác phức tạp như thực thi các giao dịch mua bán, giao dịch chuyển tiền… Trong thực tế có nhiều cách tấn công XSS “tinh vi” hơn thông qua các file được upload lên server. Điển hình là cách tấn công XSS thông qua các file flash. Macromedia Flash cho phép thêm vào file flash những script có cú pháp đơn giản và tương tự như Java script. Những đoạn script này có thể thực thi việc gọi đến một trang web hay đơn giản là gọi đến một đoạn Java script khác. Attacker sẽ gửi lên trang web những file flash có chứa mã độc trong script (những đoạn mã này người dùng hoàn toàn không thấy được), khi người dùng xem những file flash đó thì các đoạn script sẽ được thực thi và thực hiện những thao tác mà attacker mong muốn. 4. Các thao tác thực hiện tấn công XSS Thao tác 1 : Dò tìm lỗ hổng XSS của trang web Ta có 2 cách để thực hiện thao tác này. Cách 1 : Sử dụng các tool có sẵn (ví dụ : chương trình Web Vulnerability Scanner) để dò quét lỗi XSS của trang web. Cách 2 : Thực hiện thủ công • Bước 1 : Thao tác 2 : Thao tác tấn công 8 Tùy thuộc vào lỗ hổng ta tìm ra được ở thao tác 1 mà ta sẽ đưa ra được chiến lược tấn công khác nhau. Chiến lược phổ biến như sau (reflected xss): • Bước 1 : Tạo một email giả đến người dùng, trong mail có URL ẩn giấu trong text (tức là URL và nội dung hiển thị không giống nhau, nội dung sẽ là những gì mà người dùng tin tưởng). URL này có thể là URL trực tiếp đến thành phần có lổ hổng XSS và thêm script vào request hoặc là một URL đến trang web khác. Trang web này làm nhiệm vụ thêm mã độc vào request và chuyển đến server, server sẽ trả về cho người dùng trang HTML có chứa mã độc. • Bước 2 : Người dùng đọc email sẽ tin tưởng và click vào URL mà ta đã chuẩn bị sẵn. Server sẽ gửi lại trang HTML có mã độc, trình duyệt sẽ chạy đoạn có mã độc này và attacker có thể lấy được thông tin của người dùng. • Bước 3 : Attacker lấy được thông tin của người dùng và sử dụng nó vào mục đích của mình, kết thúc thao tác tấn công XSS 5. Cách phòng chống XSS Tấn công XSS chỉ thực hiện được khi người dùng nhận được trang web chứa mã độc của attacker, mà việc gửi những trang web này là lổ hổng của các webserver. Tuy vậy mục tiêu của XSS là tấn công vào người dùng “ngây thơ”, lợi dụng sự lơ là của họ để tiêm mã độc gửi lên server, vì vậy cách phòng chống XSS sẽ là công việc từ cả hai phía, người dùng và webserver. 5.1. Đối với người phát triển web Lọc dữ liệu Khi nhận dữ liệu từ người dùng ta phải thực hiện việc lọc dữ liệu này hay nói cách khác là ta phải xác minh tính hợp lệ của dữ liệu. Dữ liệu không được chứa các ký tự đặc biệt, không được chứa các đoạn script… Tuy nhiên việc xác minh tính hợp lệ của dữ liệu một cách liên tục sẽ ảnh hưởng đến hiệu năng của hệ thống. Thêm vào đó các attacker có thể vượt qua bước này bằng cách mã hóa lại các script nhập vào (lưu ý rằng phần dữ liệu này sẽ được đưa vào trang HTML bên máy người dùng nên việc mã hóa chỉ cần sao cho trình duyệt của người dùng vẫn có thể hiểu được). 9 Mã hóa dữ liệu Đây cũng có thể coi là một cách loại bỏ những ký tự đặc biệt, không hợp lệ. Thông thường việc mã hóa dữ liệu sẽ là mã hóa dưới dạng các mã HTML cho các ký tự đặc biệt. Các mã này giúp trình duyệt khi dịch trang HTML sẽ hiểu và hiển thị chúng chứ không coi chúng như một tag của mình và thực thi chúng. Tuy nhiên việc mã hóa dữ liệu liên tục và có khối lượng lớn cũng ảnh hưởng đến hiệu năng của hệ thống. Do đó ta cần phải lưu ý vấn đề này để đưa ra được phương án mã hóa hợp lý. 5.2. Đối với người dùng Cảnh giác đối với các đường link lạ Như đã trình bày ở trên, cách tấn công thường gặp là attacker gửi cho người dùng URL có chứa mã độc (reflected xss) và người dùng không để ý mà click vào. Do đó người dùng cần cảnh giác với những URL lạ, nhất là những URL quá dài và có những dấu hiệu của các thẻ HTML. Người dùng cần để ý những URL quan trọng liên quan đến thông tin nhạy cảm của mình để tránh nhầm lẫn giữa URL bình thường và URL đã bị tiêm mã độc. Ngăn chặn việc chạy mã độc Trong thực tế nhiều trường hợp mã độc không ẩn giấu dưới dạng URL mà được tiêm trực tiếp vào nội dung mà người dùng nhận được (tiêm và các thẻ HTML của email chẳng hạn), do đó người dùng cần cài đặt các chế độ ngăn chặn việc chạy các mã độc trên hệ thống của mình (trình duyệt web hoặc phần mềm check email) để đảm bảo không có đoạn mã được thực thi nằm ngoài kiểm soát của bản thân. Kết luận : XSS là một kỹ thuật tấn công nguy hiểm và ta không lường trước được những gì mà XSS có thể làm được. Đây là kỹ thuật tấn công nhắm vào người dùng và gây nguy hại trực tiếp đến người dùng. Tuy nhiên khi chúng ta hiểu kỹ về nó thì chúng ta hoàn toàn có thể tránh được việc gặp phải những lỗi tấn công XSS và người dùng hoàn toàn có thể tự mình phòng tránh những lỗi này. 10 [...]...II Kĩ Thuật Tấn Công SQL Injection 1.Khái niệm Sql Injection (SQLi) là một kỹ thuật cho phép những kẻ tấn công lợi dụng lỗ hổng của việc kiểm tra dữ liệu đầu vào trong các ứng dụng web và các thông báo lỗi của hệ quản trị cơ sở dữ liệu trả về để inject (tiêm vào) và thi hành các câu lệnh SQL bất hợp pháp, Sql Injection có thể cho phép những kẻ tấn công thực hiện các thao tác, thêm,... lý tốt tham số đầu vào trước khi thao tác cơ sở dữ liệu Ngược lại, nếu thấy xuất hiện một thông báo lỗi (exception) từ mysql, mssql… thì ứng dụng web đã dính lỗi Sql Injection 4.2 Thu thập thông tin về hệ quản trị cơ sở dữ liệu Khi phát hiện ứng dụng bị dính lỗi Sql Injection, công việc cần làm tiếp theo là thu thập thông tin về hệ quản trị cơ sở dữ liệu mà ứng dụng đang dùng, thông tin này bao gồm loại... được select thì chúng ta sẽ thấy thông báo lỗi 4.4 Xác định thông tin Để khai thác được Sql Injection, chúng ta cần biết một số thông tin về cơ sở dữ liệu như tên bảng, tên cột, các kiểu dữ liệu của từng cột… Giai đoạn này đòi hỏi khá nhiều thời gian 17  Tên bảng và cột Chúng ta có nhiều cách để làm được công việc này, một trong những cách đó là “đoán” vì nó nhanh chóng và trong những trường hợp cụ thể,... lỗ hổng bảo mật (bao gồm SQL Injection) Những công cụ này chủ yếu cho công việc phát hiện và đánh giá mức độ nguy hiểm của các loại lỗ hổng chứ chưa có khả năng khai thác được xem có thể làm được gì từ lỗ hổng đó Một số công cụ khai thác tự động hay được sử dụng đó là :  The Mole  Sqlmap  Havij 6 Cách phòng chống Ngay từ khái niệm, chúng ta đã có thể biết được cách phòng chống hiệu quả Sql Injection. .. sản phẩm Do được lưu trữ ở client nên người dùng có thể chỉnh sửa tùy ý, vì vậy nếu ứng dụng web sử dụng những thông tin lưu trong cookies để xây dựng các truy vấn tới cơ sở dữ liệu thì hacker hoàn toàn có thể chèn vào cookies những script sql để thực hiện một cuộc tấn công Sql Injection 2.3 Thông qua các biến server Biến server có thể là một khái niệm tương đối lạ lẫm nhưng nó không hề mới Một số ví... Injection , đơn giản ứng dựng web sẽ truy cập cơ sở dữ liệu và tìm ra các bản ghi mà nội dung của nó chứa từ khóa Sql Injection để trả lại kết quả cho người dùng 2.2 Thông qua Cookies Cookies là những tệp tin lưu trữ thông tin trạng thái của người dùng khi truy cập các ứng dụng web Những thông tin này do người lập trình quyết định, được tạo ra ở server và lưu trữ tại client Khi người dùng truy cập lại ứng... Phân quyền SQL 19 7 Demo Tool 7.1 Kịch bản xâm nhập Chúng ta sẽ xây dựng một web server đơn giản để hỗ trợ thực hiện kịch bản kiểm thử Tool do nhóm xây dựng sẽ có chức năng xâm nhập trái phép vào web server qua trang Login Sau đây là bảng chức thông tin user account trong Database và màn hình login: Bảng thông tin Account trong CSDL Màn hình Login Page 20 7.2 Mô tả tool Tool sẽ xâm nhập trang Login... một trong những lỗ hổng bảo mật web nguy hiểm nhất trong nhiều năm qua Do đó, đối với những người lập trình web cần hiểu rõ nguyên nhân và cách khắc phục sao cho hiệu quả Những người quản trị cần có 21 những cấu hình cần thiết để trách nguy cơ và giảm thiểu tác hại trong trường hợp ứng dụng web có lỗi có thể khai thác SQL Injection Các kỹ thuật tấn công, bypass trên đây, tùy vào những trường hợp cụ... select thông qua từ khóa union như mọi khi được Một cách khai thác đó là sử dụng BATCHED QUERY hoặc có thể tham khảo cách sau Trong phương pháp trên, chúng ta đã inject được một sub select nhưng rõ ràng cách thực hiện này giờ đây phải kết hợp cả với kỹ thuật BOOLEAN BASED BLIND SQLI 4 Các bước khai thác thông tin 4.1 Phát hiện Một cách thông thường, để phát hiện một ứng dụng web có dính lỗi Sql Injection. .. liệu như SQL Server, MySQL, Oracle, DB2, Sysbase… 2.Hướng khai thác 2.1 Thông qua “user input” User input điển hình thường đến từ các form nhập liệu, form search hay link… Những dữ liệu này được web browser gửi đến server thông qua phương thức HTTP GET hay POST và trở thành các tham số cho ứng dụng web truy cập tới cơ sở dữ liệu Ví dụ như trong một form search, khi người dùng điền vào Sql Injection , . BÁCH KHOA HÀ NỘI Viện Công Nghệ Thông Tin & Truyền Thông o0o BÁO CÁO TIỂU LUẬN Môn học: An toàn bảo mật thông tin Lớp: 12BCNTT2 - Nhóm 4 Đề tài: Tấn công XSS và SQL Injection Giảng viên:. lấy được thông tin của người dùng và sử dụng nó vào mục đích của mình, kết thúc thao tác tấn công XSS 5. Cách phòng chống XSS Tấn công XSS chỉ thực hiện được khi người dùng nhận được trang web. lỗi Sql Injection, công việc cần làm tiếp theo là thu thập thông tin về hệ quản trị cơ sở dữ liệu mà ứng dụng đang dùng, thông tin này bao gồm loại cơ sở dữ liệu (mysql, mssql, oracle…) và phiên

Ngày đăng: 08/09/2014, 23:37

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w