1. Trang chủ
  2. » Công Nghệ Thông Tin

Một số phương pháp tấn công website và cách phòng tránh - có demo

42 1,2K 4

Đ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 42
Dung lượng 6,62 MB

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

Nội dung

Tổng quan về một số phương pháp tấn công web và phòng chống tấn công web như SQL injection, XSS, DDos. Demo tấn công qua trang web thực tế.Với các cách tấn công của Hacker như đã tìm hiểu,nghiên cứu trong báo cáo này,nếu áp dụng tốt các phương pháp phòng ngừa trong đề tài nêu ra sẽ góp phần nâng cao khả năng bảo vệ các ứng dụng Web trước nguy cơ tấn công của kẻ xấu

Trang 2

Mục Lục

Mục Lục 2

Mở Đầu 5

CHƯƠNG 1: TỔNG QUAN VỀ WEB VÀ CÁC NGUY CƠ TẤN CÔNG ỨNG DỤNG WEB 6

1.1 Thực trạng an ninh mạng tại Việt Nam hiện nay 6

1.1.1.Tình hình phát triển internet tại Việt Nam đến 2016 6

1.1.2.Các cuộc tấn công của hacker và những thiệt hại nó gây ra tại Việt Nam 7

1.2 Tổng quan về WEB 8

1.2.1 Khái niệm ứng dụng web 8

1.2.2 Các vấn đề liên quan đến ứng dụng web 8

1.2.3 Mô tả hoạt động của các ứng dụng web 9

1.3 Các khái niệm thuật ngữ liên quan 10

1.3.1 Hacker 10

1.3.2 Giao thức HTTP và HTTPS 10

1.3.3 SESSION 10

1.3.4 COOKIE 11

1.3.5 PROXY 11

1.3.6 FIREWALL 12

1.4 Sơ lược về quá trình tấn công của hacker 12

1.4.1 Các giai đoạn tấn công 12

1.4.2 Khảo sát ứng dụng web 14

1.4.3 Tấn công mục tiêu 14

CHƯƠNG 2: MỘT SỐ KỸ THUẬT TẤN CÔNG VÀO CÁC LỖ HỔNG TRÊN WEB VÀ CÁCH PHÒNG TRÁNH 15

2.1 Tấn công SQL INJECTION 15

2.1.1 Các dạng tấn công SQL Injection 15

2.1.2 Cách phòng tránh 18

Trang 3

2.2 Chèn mã lệnh thực thi trên trình duyệt Crosss-Site Scripting 20

2.2.1 Tấn công Crosss-Site Scripting 20

2.2.2 Phương pháp tấn công XSS truyền thống 21

2.2.3 Cách phòng tránh 21

2.3 Chiếm hữu phiên làm việc (Session Management) 22

2.3.1 Tổng quan về Session ID 22

2.3.2 Ấn định phiên làm việc 22

2.3.3 Đánh cắp phiên làm việc 23

2.3.4 Cách phòng tránh 24

2.4 Từ chối dịch vụ (DOS) 24

2.4.1 Khái niệm tấn công kiểu DoS (Denial of Service) 24

2.4.2 Các kỹ thuật tấn công 25

2.4.3 Cách phòng tránh 26

2.5 Mã hóa URL (URL Encoding) 27

2.5.1 Khái niệm 27

2.5.2 Cách phòng tránh 27

2.6 Tấn công dựa vào ký tự rỗng 28

2.6.1 Khái niệm 28

2.6.2 Cách phòng chống 28

2.7 Tấn công vượt đường dẫn 28

2.7.1 Khái niệm 28

2.7.2 Cách phòng chống 28

CHƯƠNG 3: THỰC HIỆN PHƯƠNG PHÁP TẤN CÔNG VÀ CÁCH PHÒNG TRÁNH 28

I.DEMO TẤN CÔNG SQL INJECTION SELECT UNION 28

Bước 1.1: Tìm trang web có lỗi SQL Injection Select Union 28

Bước 2: Sử dụng câu lệnh order by để kiểm tra số cột dữ liệu của trang web 33

Bước 3: Kiểm tra cột bị lỗi qua câu lệnh “select union” 35

Trang 4

Bước 4: Thử khai thác một số thông tin của Database từ vị trí cột lỗi 35

Bước 5: Lấy thông tin từ database 36

Bước 6: Lấy thông tin đăng nhập và kết thúc tấn công 39

II.Các phòng chống 40

Mục Lục Hình Ảnh

Trang 5

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 dịch

vụ tấn công trên Internet cũng tang theo cấp số nhân Trong khi các phượng tiện thông tin đại chúngngày càng nhắc nhiều đến những khả năng truy cập thông tin của Internet,thì các tài liệu chuyên môn bắt đầu đề cập đến nhiều vấn đề bảm đảm và an toàn dữ liệu cho các máy tính kết nối vào mạng Internet

Vì thế 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 làcần thiết nhằm mục đích bảo vệ dữ liệu ,bảo vệ thông tin doanh nghiệp,người dùng và bảo vệ hệ thống

Tuy đã có nhiều cố gắng từ các nhà lập trình Web nhưng vẫn không thể đảm bảo ngăn chặn toàn bộ vì công nghệ Web đang phát triển nhanh chóng nên dẫn đến nhiều khuyết điểm mới phát sinh Sự tấn công không nằm trong một vài khuôn khổ mà linh động và tăng lên tùy vào những sai sót của nhà quản trị hệ thống cũng như của những người lập trình ứng dụng

Vì vậy,đề tài này được thực hiện với mục đích tìm hiểu,phân tích các lỗ hổng bảo mật trong các ứng dụng Web

*Ý nghĩa thực tiễn của đề tài

-Về mặt lý thuyết,đề tài thể hiện rõ các cách tấn công cơ bản thường được Hacker sử dụng đểtấn công vào các ứng dụng Web từ trước đến nay,và có thể sử dụng tiếp trong thời gian dài trong tương lai

-Về mặt thực tiễn,với các cách tấn công của Hacker như đã tìm hiểu,nghiên cứu trong báo cáo này,nếu áp dụng tốt các phương pháp phòng ngừa trong đề tài nêu ra sẽ góp phần nâng cao khả

năng bảo vệ các ứng dụng Web trước nguy cơ tấn công của kẻ xấu

Trang 6

CHƯƠNG 1: TỔNG QUAN VỀ WEB VÀ CÁC NGUY CƠ TẤN CÔNG

ỨNG DỤNG WEB

1.1 Thực trạng an ninh mạng tại Việt Nam hiện nay

1.1.1.Tình hình phát triển internet tại Việt Nam đến 2016

Việt Nam được kết nối chính thức với mạng internet toàn cầu world wide web (www)vào tháng 11/1997 Từ thời điểm đó đến nay Việt Nam luôn nằm trong top 20 quốc gia có tốc độtăng trưởng về sử dụng internet trên thế giới

H1: Số người dùng internet tại Việt Nam

Ngoài sự đầu tư và xây dựng hệ thống internet của Chính phủ và các công ty tập đoàn trong nướcthì internet tại Việt Nam cũng được đầu tư hỗ trợ mạnh từ nước ngoài như năm 2010 Bill Gate đãđầu tư 30 triệu USD để phát triển internet tại vùng nông thôn của Việt Nam

Tính tới năm 2014 có khoảng 36 triệu người dân Việt Nam sử dụng Internet, đầu năm 2016 cókhoảng 50% dân số được tiếp cận với Internet xấp xỉ trên 45 triệu người (tính cả thuê bao cố định vàthuê bao di động) Bên cạnh sự phát triển mạnh về thuê bao sử dụng thì nội dung website được pháttriển nhanh chóng và phong phú về nội dung tới mọi mặt của đời sống KT-XH, KH-CN-GD Hiệnnay có khoảng 12 nhà cung cấp dịch vụ internet tại Việt Nam, chất lượng về tốc độ cũng được nânglên nhanh chóng (1,8 Mbps thứ 113 thế giới vào năm 2014, và hết quí IV 2015 là 3,8 Mbps thứ 95 –Nguồn báo Vietnamnet)

An ninh mạng hay an toàn thông tin trên mạng internet tại Việt Nam là một vấn đề nghiêm trọng

và gây ra nhiều hậu quả về kinh tế cũng như những hậu quả khác liên quan đến khả năng phát triểncủa KT-XH, quốc phòng an ninh,…

Trang 7

1.1.2.Các cuộc tấn công của hacker và những thiệt hại nó gây ra tại Việt Nam

Nghiên cứu từ CSIS/McAfee cho thấy, tội phạm mạng gây thiệt hại cho nền kinh tế toàn cầukhoảng 445 tỷ USD mỗi năm Riêng Việt Nam, đã xảy ra rất nhiều vụ tấn công mạng nghiêm trọngtrong các năm gần đây và dự báo tình hình sẽ còn tồi tệ hơn vào năm 2016, thông cáo của Việnnghiên cứu và huấn luyện an ninh mạng (Viện CSO) cho biết

Theo số liệu thống kê và các bài viết của Bkav được đăng tải vào 12/2015 cho biết: “8.700 tỷđồng là thiệt hại do virus máy tính gây ra đối với người dùng Việt Nam trong năm 2015 Con số nàyvẫn ở mức cao và tiếp tục tăng so với 8.500 tỷ đồng của năm 2014” Một con số thiệt hại khổng lồ

được kiểm tra, chưa kể những thiệt hại khác mà những nghiên cứu này còn thiếu hoặc không đượctính vào số liệu trên

Các mối nguy hại đến an ninh mạng nói chung trên thế giới và Việt Nam nói riêng hàng năm vẫnđược đưa ra để cảnh báo người dùng internet để đảm bảo quyền lợi và an toàn của chính họ Riêngtại Việt Nam có những đặc trưng riêng như:

- Trình độ và am hiểu về an ninh mạng và hậu quả của người dân chưa tốt

- Sử dụng các phần mềm không có bản quyền, không thường xuyên nhận được các bản vá lỗi làđiều kiện để tin tặc khai thác lỗ hổng tấn công người dùng

- Các ứng dụng giả mạo trên di động có kèm mã độc không được kiểm duyệt khiến người dùng

vô tình tự cài vào hệ thống của họ

- Mạng xã hội (Facebook) vẫn là một nỗi lo lớn đối với người dùng Việt bởi những tin nhắn rác,nội dung đồi trụy hay liên kết giả mạo có chứa mã độc nguy hiểm bên cạnh những rắc rối như

- Bên cạnh đó, các cuộc tấn công bằng phần mềm gián điệp (spyware) để đánh cắp thông tin vàcác cuộc tấn công từ chối dịch vụ (DDoS) đã ngày càng mang màu sắc chính trị như vụ tấncông vào Vietnamairlines, Liên đoàn bóng đá Việt Nam, và

nhiều các trang web của các tổ chức đơn vị chính phủ, tài chính, hành chính, giáo dục,…

Trang 8

1.2 Tổng quan về WEB

1.2.1 Khái niệm ứng dụng web

Ứ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

Trình khách dành cho người sử dụng thường là một trình duyệt Web như Internet Explorer hay Google Chrome.Cũng có thể là một chương trình đóng vai trò đại lý người dùng hoạt động như một trình duyệt tự động.Người dùng gửi và nhận các thông tin từ trình chủ thông qua việc tác động vào các trang Web.Các chương trình có thể là các trang trao đổi mua bán,các diễn đàn,gửi nhận e-mail,…

Tốc độ phát triển của các kỹ thuật xây dựng ứng dụng Web cũng phát triển rất nhanh Trước đây những ứng dụng Web thường được xây dựng bằng CGI (Common Gateway Interface) được chạy trên các trình chủ Web và có thể kết nối vào các cơ sở dữ liệu đơn giản trên cùng máy

chủ.Ngày nay,ứng dụng Web thường được viết bằng Java và chạy trên máy chủ phân tán,kết nói đếnnhiều nguồn dữ liệu

Dù có nhiều biến thể, một ứng dụng Web thông thường được cấu trúc như một ứng dụng 3 lớp

• Lớp trình bày: Lớp này có nhiệm vụ hiển thị dữ liệu cho người dùng, ngoài ra còn có thể thêm các ứng dụng tạo bố cục cho trang Web

• Lớp ứng dụng: Là nơi xử lý các ứng dụng Web Nó sẽ xử lý thông tin người dùng yêu cầu,đưa ra quyết định,gửi kết quả đến “ Lớp trình bày “ lớp này thường được cài đặt bằng các kỹ thuật lập trìnhnhư CGI,Java,NET hay ColdFusion, được triển khai trên các trình chủ như IBM

- Hệ quản trị cơ sở dữ liệu: SQL,Server,MySQL,…

1.2.2 Các vấn đề liên quan đến ứng dụng web

1.1.2.1 Nguồn gốc phát triển ứng dụng Web

Các ứng dụng Web được phát triển từ nhiều nguồn khác nhau, nên các lỗ hổng, các lỗi bảo mật cũngrất đa dạng Tuy vậy, các ứng dụng Web chủ yếu được phát triển từ các nguồn chính sau đây:

Trang 9

• Người lập trình tự phát triển ứng dụng Web (sử dụng các ngôn ngữ kịch bản để tạo ứng dụng, phát triển rộng rãi mà ít quan tâm đến quá trình phát triển ứng dụng an toàn Thiếu đội ngũ lập trình với

kỹ năng nhận biết phát triển ứng dụng tránh các lỗi bảo mật)

• Sử dụng ứng dụng Web từ mã nguồn mở (Thường không theo dõi và cập nhật các bản và lỗi bảo mật)

• Phát triển ứng dụng Web từ một ứng dụng mở khác (Trường hợp này thường không kiểm tra lỗi bảo mật ứng dụng cũ trước khi phát triển tiếp,nên vẫn tồn tại các lỗi bảo mật)

1.2.1.2 Sự phát triển đa dạng của ứng dụng Web

Ngày nay với sự phát triển không ngừng của Internet, các ứng dụng Web cũng phát triển đa dạng trên nhiều lĩnh vực: Cổng thông tin điện tử, báo tin tức điện tử, giao dịch tài chính ngân hang, thị trường chứng khoán, trang thông tin điện tử doanh nghiệp,…

1.2.3 Mô tả hoạt động của các ứng dụng web

Đầ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ư: C,C++,Java,… 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

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à thuộc tính, trạng thái trao đổi giữa trình duyệt

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 10

1.3 Các khái niệm thuật ngữ liên quan

1.3.1 Hacker

Hacker là một thuật ngữ dùng để chỉ các chuyên gia về máy tính Hacker không tạo ra các kẽ

hở trong 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ị 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à 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à WhiteHacker (Hacker mũ trắng).Một số hacker dựa vào 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à BlackHacker(Hacker mũ đen)

1.3.2 Giao thức HTTP và HTTPS

HTTP là viết tắt của HyperText Transfer Protocol (giao thức truyền tải siêu văn bản) Nó là giao thức cơ bản mà World Wide Web sử dụng HTTP xác định cách các thông điệp (các file văn bản,hình ảnh đồ họa,âm thanh,video,…) được định dạng và truyền tải ra sao, và những hành động nào mà các Web Server và các trình duyệt Web phải làm để đáp ứng các lệnh Khi gõ một địa chỉ Web URL vào trình duyệt Web,một lệnh HTTP sẽ được gửi tới Web Server để ra lệnh và hướng dẫn

nó tìm đúng trang Web được yêu cầu và kéo về mở trên trình duyệt Web

Tóm lại,HTTP là giao thức truyền tải các file từ một Web Server vào một trình duyệt Web để người dùng có thể xem một trang Web đang hiện diện trên Internet HTTP là một giao thức ứng dụng của bộ giao thức TCP/IP (các giao thức nền tảng cho Internet)

HTTPS (Security HTTP),là một sự kết hợp giữa giao thức HTTP và giao thức bảo mật SSL hay TLS cho phép trao đổi thông tin một cách bảo mật trên Internet Các kết nói HTTPS thường được sử dụng cho các giao dịch thanh toán trên World Wide Web và cho các giao dịch nhạy cảm trong các hệ thống thông tin công ty,trong đó dữ liệu cần phải được an toàn HTTPS không nên nhầm lẫn với Secure HTTP (S-HTTP) quy định trong RFC 2660

Theo hai khái niệm ở trên,ta có thể thấy nếu trang Web có địa chỉ bắt đầu bằng “ http:// ” thì

có nghĩa là trang Web không an toàn Nói cách khác,một người nào đó có thể nghe lén những gì traođổi với trang Web và có thể lấy những dữ kiện gửi đi từ máy của bạn đến trang Web như tên tuổi,địachỉ,số điện thoại,… Nhưng nếu địa chỉ của trang Web bắt đầu bằng “ https:// “ thì điều này có nghĩa

là liên lạc an toàn với Server của trang Web và người ta không thể nghe lén và không thể trộm những thông tin gửi đi

1.3.3 SESSION

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

Trang 11

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ẽ cũng 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

Phiên làm việc chỉ tồn tại trong một khoảng thời gian cho phép, thời gian này được cấu hình quy định tại trình chủ hay với ứng dụng thực thi Trình chủ sẽ tự động giải phóng phiên làm việc để khôi phục lại tài nguyên của hệ thống

Ở những lần truy cập sau đến trang Web đó, ứng dụng có thể dùng lại những thông tin trong cookie (như thông tin liên quan đến việc đăng nhập vào Yahoo Messenger…) mà người dùng khôngphải làm lại những thao tác đăng nhập hay phải cung cấp lại các thông tin khác

1.3.5 PROXY

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

Proxy server cần xác định những yêu cầu từ client và quyết định đáp ứng hay không đáp ứng,nếu yêu cầu được đáp ứng,proxy server sẽ kết nối với server thậ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 server đến client Vì vậy proxy server giống cầu nối trung gian giữa server và client

Trang 12

1.3.6 FIREWALL

Một giải pháp dùng để bảo vệ hệ thống mạng thường được sử dụng là bức tường lửa –

Firewall (hoạt động dựa trên gói IP do đó kiểm soát việc truy nhập của máy người sử dụng) Nó có vai trò như là lớp rào chắn bên ngoài một hệ thống mạng, vì chức năng chính của firewall là kiểm soát luồng thông tin giữa các máy tính Có thể xem firewall như một bộ lọc thông tin,nó xác định vàcho phép một máy tính này có được truy xuất đến một máy tính khác hay không, hay một mạng này

có được truy xuất đến mạng kia hay không

Người ta thường dùng firewall vào mục đích:

• Cho phép hoặc cấm những dịch vụ truy xuất ra ngoài

• Cho phép hoặc cấm những dịch từ bên ngoài truy nhập vào trong

• Kiểm soát địa chỉ truy nhập, cấm địa chỉ truy nhập

1.4 Sơ lược về quá trình tấn công của hacker

1.4.1 Các giai đoạn tấn công

Quá trình tấn công của một hacker có thể được khái quát qua 3 giai đoạn:

- Thu thập thông tin

- Phân tích và hành động

- Dừng và xóa dấu vêt

• Giai đoạn 1: Thu thập thông tin

–FootPrinting (In dấu chân): Là bước mà kẻ tấn công thu thập thông tin về đối tượng, người

dùng,doanh nghiệp,máy chủ,… bao gồm các chi tiết Domain Name,địa chỉ IP,thông tin về người quản trị,… Đây là một bước quan trọng cho hacker, đôi khi với những thông tin này hacker đã có thể làm chủ hệ thống

Công cụ hỗ trợ: Nslookup, Smart whois, UseNet, Google Earth, Search Engines (công cụ tìm kếm),–Scanning (Quét thăm dò mạng): Phần lớn thông tin quan trọng từ server có được từ bước này.Xác định hệ điều hành,xác định hệ thống có đang chạy không,tìm hiểu các dịch vụ đang chạy hay đang lắng nghe,tìm hiểu các lỗ hổng,kiểm tra các cổng,…

Công cụ hỗ trợ như LANGuard, xScan, NetScanToolsiNetToolsNmap ,…

–Enumeration (Điểm danh mạng – Liệt kê tìm lỗ hổng): Đến đây, các attacker bắt đầu kiểm soát server sợ bộ Bước này là tìm kiếm những tài nguyên được bảo vệ kém, hoặc tài khoản người dùng

Trang 13

mà có thể sử dụng để xâm nhập, bao gồm các mật khẩu mặc định,các script và dịch vụ mặc định Rất nhiều người quản trị mạng không biết đến hoặc không sửa đổi lại các giá trị này của thiết bị Công cụ hỗ trợ: DumpSec, SbtScan, SuperScan, NetviewX ,…

• Giai đoạn 2: Phân tích và hành động

–Gaining Access (Đột nhập hệ thống): Hacker sẽ tìm cách truy cập vào mạng bằng những thông tin

có được ở 3 bước trên.Phương pháp được sử dụng ở đây có thể là tấn công vào lỗi tràn bộ đệm,lấy

và giải mã file password,đột nhập qua các cổng mở,…

Công cụ hỗ trợ: Password eavesdropping, Tcpdump, NAT, Pwdump2, Remote Buffer Overflows,…–Privilege Escalation (Nâng quyền hệ thống): Trong trường hợp hacker xâm nhập được vào mạng của một tài khoản nào đó,thì họ sẽ tìm cách kiểm soát toàn bộ hệ thống.Hacker sẽ tìm cách crack password của admin,hoặc sử dụng lỗ hổng để leo thang đặc quyền.Kẻ xâm nhập có thể truy cập vào các file hay folder dữ liệu mà tài khoản người sử dụng ban đầu không được phép chia cập.Khi hacker đạt được mức độ quyền truy cập đủ cao,họ có thể cài đặt phần mềm như là Backdoors và Trojan horses,cũng như cho phép truy cập sâu hơn và thăm dò Mục đích chung của hacker là chiếmđược quyền truy cập ở mức độ quản trị.Khi đã đạt được mục đích đó, họ có toàn quyền điều khiển

hệ thống mạng

Công cụ hỗ trợ: L0phtcrack, Password cracking, BUG, Exploits ,…

–Pilfering (Khai thác hệ thống): Thông tin lấy được từ bước trên đủ để hacker định vị server và điềukhiển server Nếu bước này không thành công, hãy đến bước DoS (Denial of Service)

Công cụ hỗ trợ: Rhost, Configuration files, Registry, Ftp …

• Giai đoạn 3: Dừng và xóa dấu vết

–Creating Backdoors (Tạo cổng hậu): Để chuẩn bị cho lần xâm nhập tiếp theo được dễ dàng

hơn.Hacker để lại Backdoors,tức là một cơ chế cho phép hacker truy nhập trở lại bằng con đường bímật không phải tốn nhiều công sức khai phá,bằng việc cài đặt Trojan hay tạo user mới

Công cụ hỗ trợ: Các loại Trojan, keylog, creat rogue user accounts, schedule batch jobs, …

–Covering Tracks (Xóa dấu vết): Sa khi đã có những thông tin cần thiết, hacker tìm cách xóa dấu vết, xóa các file LOG của hệ điều hành (vì hệ thống luôn ghi nhận những hành động của người dùng) làm cho người quản lý không nhậ ra hệ thống đã bị xâm nhập hoặc có biết cũng không tìm ra

kẻ xâm nhập là ai

Công cụ hỗ trợ: Clear logs, Zap, Event log GUI,rootkits,…

Trang 14

1.4.2 Khảo sát ứng dụng web

Khi phạm vi ứng dụng của các Web application ngày càng phổ biến thì khả năng xuất hiện lỗi và bị tấn công càng cao.Trong các lĩnh vực hacking thì hack Web applicantion luôn là một công việc được hacker nhắm đến nhằm mục đích phục vụ một yêu cầu nào đó của họ hay để phá hoại

Trước hết hacker tiến hành thu thập thông tin ở mức trên về hạ tầng của mục tiêu Thu thập một số thông tin quan trọng như có bao nhiêu server,mô hình của các Web server,các client nào sẽ tương tác với ứng dụng Web,kiểu giao tiếp thông tin (transport) và thông qua các cổng (port)

nào,những site liên quan đến việc thực hiện chức năng của site mục tiêu,…

Tiếp theo hacker khảo sát ứng dụng Web.Một trong những phương pháp khảo sát khá phổ biến từ trước đến giờ,đó là xem mã nguồn và lợi dụng các lỗi cho phép xem mã nguồn các ngôn ngữWeb thông dụng hiện nay như Active Server Page (ASP),Common Gateway Interface

(CGI),ColdFusion Server (CFS),Hypertext Preprocessor (PHP)

Sử dụng một số phép thử như thêm dấu ‘ vào các URL theo khuôn dạng truyền vào giá trị rất phổ biến,đưa vào những mẫu thử cơ bản của form xác thực đăng nhập để khảo sát các lỗi SQL Injection

–Đưa vào các thông tin “lạ” ở các form ứng dụng Web hay trên URL để xem các thông điệp chuyển xuống cho người dùng khi ứng dụng có lỗi.Các thông báo lỗi thông thường tiết lộ các chi tiết kỹ thuật có thể cho phép kẻ tấn công biết được điểm yếu của hệ thống

–Sử dụng các công cụ để đưa các trang Web mục tiêu vào dò tìm các lỗi của người phát triển ứng dụng để từ đó xây dựng nên kịch bản tấn công và chọn cách tấn công cụ thể

–Tìm hiểu sâu và các chức năng của ứng dụng Web.Tìm hiểu cách thực hiện của các phần trong ứngdụng, đặc biệt như các order input, confirmation, order tracking

–Tìm hiểu luồng di chuyển của thông tin.Các thông tin tương tác giữa client và server, các thông tin tương tác với database.Hiện nay việc viết mã để thực hiện việc giao tiếp thông tin thường phải đảm bảo được tính hiệu quả và bảo mật.Thường thì tính hiệu quả được ưu tiên hơn do đó có thể sẽ phát sinh lỗi trong quá trình đó và giúp hacker có thể lợi dụng các lỗi để đoạt quyền điều khiển hệ thống

1.4.3 Tấn công mục tiêu

Việc thu thập thông tin là vấn đề quan trọng cho việc tấn công vào một hệ thống máy mục tiêu.Cho dù hacker tấn công theo phương diện phần cứng hay qua ứng dụng thì việc thu thập vẫn là cần thiết

Sau khi đã khảo sát và thu thập thông tin mục tiêu,hacker bắt đầu thực hiện tấn công nhằm xâm nhập vào hệ thống lấy thông tin,đưa thông tin xấu vào,dành quyền kiểm soát,… Có thể trong những bước đã nêu hacker không cần phải đi qua theo thứ tự hay qua hết, nhưng việc nắm rõ thông tin của máy mục tiêu luôn là điều kiện tiên quyết để dẫn đến thành công trong việc tấn công.Tùy

Trang 15

vào thông tin thu thập được mà hacker sẽ quyết định tấn công theo kỹ thuật nào,xây dựng một kịch bản tấn công phù hợp.

• Một số kịch bản tấn công:

Tấn công đồng loạt vào các trang tin điện tử thuộc Chính Phủ, thành phố,các sở ban ngành,

…làm thay đổi nội dung,đưa thông tin sai lệch,…

Tấn công vào các trang Web mua bán, giao dịch trực tuyến để đánh cắp thông tin cá nhân, thẻtín dụng ,…

Tấn công ứng dụng Web, đặt mã đọc tại trang Web,sự dụng máy chủ bị lỗi để thực hiện hành

• Hậu quả của việc tấn công:

Dù tấn công dưới bất kỳ với mục đích gì thì hậu quả ảnh hưởng đều rất đáng kể,thiệt hại to lớn về uy tín,kinh tế,gây thiệt hại cho người dùng mạng,bị đánh cắp thông tin,…

Nếu không thành công trong việc xâm nhập bằng các kỹ thuật phổ biến, thì Dos là cách thức

mà hacker thường lựa chọn để làm cho hệ thống không thể hoạt động được

Do đó, việc bảo mật cho một hệ thống cần đòi hỏi sự kết hợp không chỉ của riêng nhà quản trị hệ thống mà còn của nhà thiết kế ứng dụng và sự hợp tác của cả những khách hàng sử dụng ứng dụng

CHƯƠNG 2: MỘT SỐ KỸ THUẬT TẤN CÔNG VÀO CÁC LỖ HỔNG

Trang 16

ngay cả bản thân ứng dụng chạy trên đó cũng tiềm ẩn một lỗ hổng bảo mật rất lớn.Một trong số các

lỗ hổng này đó là SQL injection.Tại Việt Nam,đã qua thời kỳ các quản trị Website lơ là việc quét virus,cập nhật các bản vá lỗi từ các phần mềm hệ thống, nhưng việc chăn sóc các lỗi của các ứng dụng lại rất ít được quan tâm.Đó là lý do tại sao không ít Website tại Việt Nam bị tấn công và đa số đều là lỗi SQL injection.Vậy SQL injection là gì?

SQL injection là kỹ thuật cho phép những kẻ tấn công lợi dụng lỗ hổng trong 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ỗi của hệ quản trị cơ sở dữ liệu để “tiêm vào” (inject) và thi hành các câu lệ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 vì nó cho phép những kẻ tấn công có thể thực hiện các thao tác xóa bỏ,hiệu chỉnh,…trên cơ sở dữ liệu của ứng dụng.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

Có 4 dạng thông thường bao gồm: vượt qua kiểm tra lúc đăng nhập, sử dụng câu lệnh SELECT, sử dụng câu lệnh INSERT và sử dụng các stored-procedures [2],[3],…

a 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 đă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ụng Web

Xét ví dụ điển hình, thông thường để cho phép người dùng truy 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ật khẩu.Sau khi người dù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

Trong trường hợp này người ta có thể dùng hai trang,một trang HTML để hiện thị form nhập liệu và một trang ASP dùng để xử lý thông tin nhập từ phía người dùng.Ví dụ:

Login.htm

<form action=”ExecLogin.asp” method=”post”>

Username: <input type=”text” name=”fUSRNAME”><br>

Password: <input type=”password” name=”fPASSWORD”><br>

Trang 17

vUserName = Request.Form(“fUSRNAME”)

vPassword = Request.Form(“fPASSWORD”)

strSQL = “SELECT * FROM T_USERS “ & _

“WHERE USR_NAME=’ “ & vUsrName & _

“ ‘ and USR_PASSWORD=’ “ & vPassword & “ ‘ “

Set objRS = Server.CreateObject(“ADODB.Recordset”)

Thoạt nhìn, đoạn mã trong trang execlogin.asp dường như không chứa bất cứ một lỗ hổng về

an toàn nào.Người dùng không thể đăng nhập mà không 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 số 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 được dù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 2 ô nhập liệu username/password của trang login.html là: ‘OR’ ‘= ‘ Lúc này cây truy vấn sẽ được gọi thực hiện là: SELECT*FROM T_USERSWHERE USR_NAME=”OR”=”and USR_PASSWORD=”OR”=”

Câu truy vấn này hợp lệ và sẽ trả về tất cả các bản ghi T_USERS và đoạn mã tiếp theo xử lý người dùng đặp nhập bất hợp pháp này như là người dùng đăng nhập hợp lệ

b Dạng tấn công sử dụng câu lệnh SELCT

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áo lỗi từ hệ thống để dò tìm các điểm yếu khởi đầu cho cuộc tấn công

pe=’U’ là có thể liệt kê được tất cả các bảng dữ liệu

c 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ài khoả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

Trang 18

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.

Ví dụ, một câu lệnh INSERT có thể có cú pháp dạng: INSERT INTO TableName

VALUES(‘Value One’,’Value Two’,’Value There’).Nếu đoạn mã xây dựng SQL có dạng:

<%

strSQL = “INSERT INTO TableName VALUES(‘ “ & strValueOne & “ ‘,’ “ _ & strValueTwo & “ ‘,’

“ & StrValueThree & “ ‘) “

Set objRS = Server.CreateObject(“AODB.Recordset”)

d Dạng tấn công sử dụng stored-procedures

Việc tấn công bằng stored-procedures sẽ gây ra tác hại lớn nếu ứng dụng được thực thi với quyềnquản trị hệ thống ‘sa’ Ví dụ, nếu ta thay đoạn mã tiêm vào dạng: ‘; EXEC xp_cmdshell’cmd.exe dirC:’ Lúc này hệ thống sẽ thực hiện lệnh liệt kê như mục trên ở ổ đĩa C:\cài đặt server Việc phá hoạikiểu nào tùy thuộc vào câu lệnh đằng sau cmd.exe

2.1.2 Cách phòng tránh

Trong hầu hết trình duyệt, những kí tự nên được mã hóa trên địa chỉ URL trước khi sử dụng

Việc tấn công theo SQL Injection dựa vào những câu thông báo lỗi, do đó việc phòng chống haynhất là không cho hiển thị những thông điệp lỗi cho người dùng bằng cách thay thế những lỗi thôngbáo bằng một trang do người phát triển thiết kế mỗi khi lỗi xảy ra trên ứng dụng

Kiểm tra kĩ dữ liệu nhập vào thay thế kí tự như:

 Đối với các giá trị numeric, hãy chuyển nó sang Interger trước khi thực hiện câu truy vấnSQL, hoặc dùng hàm ISNUMBERIC để chắc chắn nó là một Interger

 Dùng thuật toán để mã hóa dữ liệu

 Như vậy, có thể thấy lỗi SQL Injection tùy thuộc vào môi trường và cách cấu hình hệ thống.Nếu ứng dụng sử dụng quyền dbo (quyền của người sử hữu cơ sở dữ liệu – owner) khi thaotác dữ liệu, nó có thể xóa toàn bộ các bảng dữ liệu, tạo các bảng dữ liệu mới,… Nếu ứngdụng sử dụng quan sa (quyền quản trị hệ thống), nó có thể điều khiển toàn bộ hệ quản trị cơ

Trang 19

sở dữ liệu và với quyền hạn rộng lớn như vậy nó có thể tạo ra các tài khoản người dùng bấthợp pháp để điều khiển hệ thống của bạn Để phòng tránh, ta có thể thực hiện ở hai mức.

a) Kiểm soát chặc chẽ dữ liệu nhập vào

Kiểm tra tính đúng đắn của dữ liệu là một vấn đề phức tạp và thường chưa được quan tâmđúng mức trong các ứng dụng Khuynh hướng của việc kiểm tra tính đúng đắn của dữliệukhông phải là chỉ cần thêm một số chức năng vào ứng dụng, mà phải kiểm tra một cáchtổng nhanh chống đề đạt được mục đích

Có ba giải pháp tiếp cận vấn đề này:

• Cố gắng kiểm tra và chỉnh sửa để làm cho dữ liệu hợp lệ

• Loại bỏ những dữ liệu bán hợp lệ

• Chỉ chấp nhận những dữ liệu hợp lệ

Để phòng tránh nguy cơ có thể xảy ra, hãy bảo vệ các câu lệnh SQL là bằng cách kiểm soátchặt chẽ tất cả các dữ liệu nhập nhận được từ đối tượng Request (Request, Request.QueryString, Request.From, Request.Cookies, and Request.ServerVariables) Ví dụ: có thểgiới hạn chiều dài của chuỗi nhập liệu, hoặc xây dựng hàm Escape Quotes để thay thế các dấunháy đơn bằng hai dấu nháy đơn như:

Ngoài ra có thể xây dựng hàm loại bỏ một số kí tự và từ khóa nguy hiểum như: ;, , select,insert, xp_,… ra khỏi chuỗi dữ liệu nhập từ phía người dùng để hạn chế các tấn công dạngnày:

Trang 20

b) Thiết lập cấu hình an toàn cho hệ quản trị cơ sở dữ liệu

Cần có cơ chế kiểm soát chặt chẽ và giới hạn quyền xử lí dữ liệu đến tài khoản người dùng

mà ứng dụng web đang sử dụng Các ứng dụng thông thường nên tránh dùng đến các quyềnnhư dbo hay sa Quyền càng bị hạn chế, thiệt hại càng ít

Ngoài ra để tránh các nguy cơ từ SQL Injection attack, nên chú ý loại bỏ bất kì thông tin kỹthuật nào chứa trong thông điệp chuyển xuống cho người dùng khi ứng dụng có lỗi Cácthông báo lỗi thông thường tiết lệ các chi tiết kĩ thuật có thể cho phép kẻ tấn công biết đượcđiểm yếu của hệ thống

Xác định các phương pháp kết nối server:

 Dùng tiện ích Network Utility để kiểm tra rằng chỉ có các thư viện mạng đang là hoạtđộng

 Kiểm tra tất cả các tài khoản trong SQL server

 Chỉ tạo tài khoản có quyền thấp cho các ứng dụng

 Loại bỏ những tài khoản không cần thiết

 Đảm bảo rằng tất cả các tài khoản có một mật khẩu hợp lệ

 Kiểm tra các đối tượng tồn tại

 Nhiều extended stored procedure có thể được xóa bỏ một cách an toàn Nếu điều nàyđược thực hiện, thì cũng xem xét việc loại bỏ luôn những tập tin Dll chứa mã củaextenđe stored procedure

 Xóa bỏ tất cả dữ liệu mẫu như “northwind” và “pubs”

 Xóa các stored procedure không dùng như: master…xp_cmdsell,xp_startmail,xp_makewebtask

 Kiểm tra những tài khoản nào có thể truy xuất đến những đối tượng nào

 Đối với những tài khoản của một ứng dụng nào đó dùng để truy xuất cơ sở dữ liệu thì chỉđược cấp những quyền hạn cần thiết tối thiểu để truy xuất đến những đối tượng nó cầndùng

2.2 Chèn mã lệnh thực thi trên trình duyệt Crosss-Site Scripting

2.2.1 Tấn công Crosss-Site Scripting

Cross-Site Scripting (XSS) là một trong hững kỹ thuật tấn công phổ biến, nó cũng là một trongnhữ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

Trang 21

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.

Hacker sẽ lợi dụng sự kiểm tra lỏng lẻo từ ứng dụng và hiểu biết hạn chế của người dùng cũngnhư biết đánh vào sự tò mò của họ dẫn đến người dùng bị mất thông tin một cách dễ dàng Hackerthực hiện tấn công XSS 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ã scrip nguy hiểm có thể gây hại cho những người sử dụng khác

Thông thường hacker lợi dụng địa chỉ URL để đưa ra những liên kết là tác nhân kích hoạt nhữngđoạn chương trình nguy nghiểm được chèn vào, hầu hết được viết bằng các Client-Site Script nhưJavaScrip, Jscrip và cũng có thể là cả các thẻ HTML,… được thực thi trên chính trình duyệt củanạn nhân

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

Như đã biết, cookie là phần thông tin mà ứng dụng có thể lưu trữ trên đĩa cứng của người sửdụng Nhưng chỉ các ứng dụng thiết lập ra cookie thì mới có thể đọc nó Do đó chỉ khi ngườidù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ôngviệc đầu tiên của hacker là tìm trang đích để dụ người đăng nhập sau khi đã tìm ra lỗ hổng trênứng dụng đó

- Bước 1 : Hacker biết được người dùng đang chạy một ứng dụng Web có lỗ hổng XSS.

- Bước 2 : Người dùng nhận được một liên kết thông qua email hay trên chính trang Web (như

banner, link,…) 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ài khoản của bạn”, ”Quà tặng hấp dẫn”,…

- Bước 3 : Chuyển nội dung thông tin cookie, tên, mật khẩu,…) về máy chủ đã chuẩn bị trước của

hacker

- Bước 4 : Hacker đã tạo một đoạn mã hay chương trình 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 được 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

Lọc, xác nhận tính hợp lý

Luôn luôn lọc các dữ liệu nhập từ phía người dùng bằng cách lọc các ký tự đặc biệt, dấu nháy đơn kép, ký tự Null,… được định nghĩa trong các đặc tả của HTML Mỗi trường nhập liệu bao gồm cả tham số liên kết sẽ được kiểm tra để phát hiện các thẻ script Hiện tại có khá nhiều bộ lọc để ta lựa

Ngày đăng: 20/04/2018, 21:57

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w