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

Tìm hiểu và triển khai giải pháp phát hiện và phòng chống lỗ hổng SQL injection

42 37 0

Đ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

Tiêu đề Tìm Hiểu Và Triển Khai Giải Pháp Phát Hiện Và Phòng Chống Lỗ Hổng SQL Injection
Tác giả Đỗ Thị Như Ý, Đặng Ngọc Gia Linh
Người hướng dẫn Nguyễn Thị Hồng Thảo
Trường học Trường Đại Học Công Nghiệp Thực Phẩm Tp.Hcm
Chuyên ngành An Toàn Thông Tin
Thể loại báo cáo đồ án môn học
Năm xuất bản 2021
Thành phố Tp.Hồ Chí Minh
Định dạng
Số trang 42
Dung lượng 3,36 MB

Cấu trúc

  • Chương 1: Cơ sở lí thuyết (0)
    • 1. Giới thiệu cơ sở dữ liệu (8)
      • 1.1. Cơ sở dữ liệu (Database) (8)
      • 1.2. Hệ quản trị CSDL (8)
      • 1.3. Ngôn ngữ giao tiếp giữa người sử dụng và CSDL (8)
      • 1.4. Các loại mô hình dữ liệu (8)
    • 2. Giới thiệu về an ninh cơ sở dữ liệu (9)
      • 2.1. An ninh cơ sở dữ liệu là gì? (9)
      • 2.2. Thành phần an ninh cơ sở dữ liệu (9)
      • 2.3. Ưu điểm (9)
    • 3. Tìm hiểu về SQL Injection (10)
      • 3.1. SQL là gì? (11)
      • 3.2. SQL Injection là gì? (11)
  • Chương 2: Kỹ thuật tấn công (0)
    • 1. Lý thuyết (15)
    • 2. Thực hành (16)
  • Chương 3: Phòng chống tấn công SQL Injection sử dụng Firewall Mod Security .29 1. Lý thuyết (0)
  • Kết luận (41)
  • Tài liệu tham khảo (42)

Nội dung

Cơ sở lí thuyết

Giới thiệu cơ sở dữ liệu

1.1 Cơ sở dữ liệu (Database):

Thông tin về tổ chức hoặc cá nhân, như trường học, công ty hay nhà máy, thường được lưu trữ trên máy tính và các thiết bị như USB, thẻ nhớ, hay đĩa từ Những dữ liệu này có mối quan hệ với nhau và phục vụ cho nhiều mục đích khai thác thông tin khác nhau.

Là một phần mềm hệ thống nhằm tương tác với người dùng cho phép người dùng thực hiện những điều sau:

• Trình bày chi tiết về cấu trúc của dữ liệu

• Lưu trữ dữ liệu trên các thiết bị

• Tìm kiếm, lưu, xóa và chỉnh sửa thông tin trên database

1.3 Ngôn ngữ giao tiếp giữa người sử dụng và CSDL

- Ngôn ngữ truy vấn dữ liệu (Structured Query Language - SQL): dùng để truy vấn các thông tin cần thiết trong CSDL

Ngôn ngữ mô tả dữ liệu (Data Definition Language - DDL) là công cụ quan trọng giúp tạo ra cấu trúc các bảng trong cơ sở dữ liệu, đồng thời thiết lập các mối quan hệ giữa dữ liệu, bao gồm các ràng buộc toàn vẹn và khóa.

• Ngôn ngữ thao tác dữ liệu (Data Manipulation Language - DML): cho phép người dùng chọn, thêm, xóa và sửa dữ liệu trong CSDL

Ngôn ngữ quản lý dữ liệu (Data Control Language - DCL) cho phép các quản trị viên điều chỉnh cấu trúc bảng, kiểm soát bảo mật thông tin và cấp quyền truy cập cho người dùng trong cơ sở dữ liệu Bên cạnh đó, việc hiểu rõ các loại mô hình dữ liệu cũng rất quan trọng để tối ưu hóa việc quản lý và khai thác thông tin trong CSDL.

Mô hình dữ liệu phân cấp (Hierarchical Model) tổ chức dữ liệu thành các nút nhỏ, tạo thành cấu trúc cây để biểu diễn thực thể cụ thể Trong mô hình này, các nút con và nút cha được kết nối qua mối quan hệ xác định, rất phù hợp cho việc phân cấp nhân viên trong các công ty, cơ quan hay tổ chức.

Mô hình mạng là một biểu diễn dưới dạng đồ thị có hướng, trong đó các thực thể được đặt tại các đỉnh, và mối quan hệ giữa các thực thể được thể hiện qua các đường đi nối liền các đỉnh.

Mô hình dữ liệu quan hệ tổ chức dữ liệu thành các bảng, với mỗi bảng đại diện cho một thực thể trong hệ thống Các khái niệm chính trong mô hình này bao gồm thuộc tính, quan hệ, lược đồ quan hệ, bộ và khóa.

Mô hình dữ liệu hướng đối tượng (Object Oriented Model) là một phương pháp tiên tiến trong việc tổ chức dữ liệu, dựa trên các khái niệm như lớp và kế thừa Mô hình này nổi bật với các đặc trưng cơ bản như tính đóng gói, đa hình, khả năng tái sử dụng và kế thừa, mang lại hiệu quả cao trong việc phát triển phần mềm.

Mô hình dữ liệu thực thể kết hợp (Entity-Relationship Model) là một phương pháp quan trọng trong thiết kế cơ sở dữ liệu, bao gồm các khái niệm như thực thể, thuộc tính của các loại thực thể, khóa của loại thực thể và các mối quan hệ giữa chúng Mô hình này giúp tổ chức và trình bày dữ liệu một cách rõ ràng, hỗ trợ việc quản lý và truy xuất thông tin hiệu quả.

Giới thiệu về an ninh cơ sở dữ liệu

2.1 An ninh cơ sở dữ liệu là gì?

Sử dụng các thủ thuật kiểm soát bảo mật thông tin là cần thiết để bảo vệ cơ sở dữ liệu, ngăn chặn sự xâm phạm và đảm bảo tính bảo mật, toàn vẹn, cũng như khả dụng của dữ liệu.

2.2 Thành phần an ninh cơ sở dữ liệu

Giám sát hoạt động cơ sở dữ liệu là việc theo dõi các máy chủ cơ sở dữ liệu để phát hiện và ngăn chặn kịp thời các hành vi xấu, đảm bảo an toàn cho dữ liệu trong thời gian thực Công nghệ này hoạt động hiệu quả cả trên nền tảng ảo hóa và trong môi trường đám mây.

Virtual Patching là giải pháp giúp phát hiện các bản vá còn thiếu mà không làm gián đoạn hoạt động của hệ thống Bằng cách quét lỗ hổng, phương pháp này cho phép sửa chữa các lỗ hổng bảo mật, từ đó nâng cao khả năng bảo mật cơ sở dữ liệu của hệ thống.

Vulnerability Manager cho cơ sở dữ liệu tự động quét các cơ sở dữ liệu trong hệ thống mạng, xác định các bản vá chưa được áp dụng và kiểm tra các lỗ hổng như mật khẩu yếu Công cụ này giúp phát hiện các lỗ hổng phổ biến có thể gây hại cho hệ thống, từ đó nâng cao bảo mật và giảm thiểu rủi ro cho tổ chức.

• Hầu hết các lỗ hổng mới được cập nhật trong vòng 72 giờ

Hệ thống tự động ngăn chặn các cuộc tấn công bằng cách phân tích hành vi của người dùng trên cơ sở dữ liệu, đồng thời cập nhật chính sách bảo mật một cách tự động.

• Theo dõi các mối đe doạ bên trong cơ sở dữ liệu

• Ngăn chặn trước các cuộc tấn công

• Tiết kiệm thời gian và tiền bạc

• Xây dựng đơn giản, nhanh chóng

• Không cần ngắt hoạt động hệ thống trong khi cài đặt hay cập nhật

Tích hợp giám sát hành vi người dùng với cơ sở dữ liệu là phương pháp hiệu quả để phát hiện và ngăn chặn kịp thời các hành vi gây hại, bảo vệ an toàn cho dữ liệu quan trọng.

• Không cần thay đổi cấu hình cũng thể thể bảo về được cơ sở dữ liệu khỏi những lỗ hổng và những điểm yếu về bảo mật

• Việc bảo vệ lỗ hổng được thực thi với 48-72 giờ sau khi lỗ hổng hoặc bản vá được công bố bởi nhà cung cấp.

Tìm hiểu về SQL Injection

Hình 1.3 1: Cơ chế tấn công SQL Injection

SQL (Ngôn ngữ truy vấn có cấu trúc) là một công cụ mạnh mẽ cho phép người dùng khai thác và truy vấn thông tin từ cơ sở dữ liệu một cách hiệu quả.

• Dùng SQL có thể truy cập dữ liệu trong hệ thống cơ sở dữ liệu

• Cho phép mô tả dữ liệu

• Thao tác với dữ liệu trong cơ sở dữ liệu và xác định dữ liệu đó

• Cho phép nhúng trong các ngôn ngữ khác sử dụng mô-đun SQL, thư viện và trình biên dịch trước

• Cho phép tạo các cơ sở dữ liệu và các bảng

• Cho phép tạo chế độ view, thủ tục lưu trữ, chức năng trong cở dữ liệu

• Cho phép thiết lập quyền trên các bảng thủ tục và view

• Giao diện của SQL tương đối phức tạp khiến một số người dùng khó truy cập

• Không được toàn quyền kiểm soát

• Phần mở rộng của các chương trình cơ sở dữa liệu SQL đều là độc quyền của các nhà cung cấp

• Khó tiếp cận đến SQL đối với những người lập trình vì chi phí vận hành cho các phiên bản của SQL tương đối cao

Kỹ thuật SQL Injection là phương thức tấn công bằng cách sử dụng các đoạn SQL để làm sai lệch câu truy vấn gốc của cơ sở dữ liệu Qua đó, kẻ tấn công có khả năng khai thác dữ liệu và thực hiện các thao tác như một quản trị viên, tận dụng những lỗ hổng trong câu truy vấn của ứng dụng.

- Các thành phần dễ bị tấn công

- Một số thao tác phổ biến để tấn công:

• Kiểm tra đăng nhập ứng dụng

• Thao tác lưu comment của user xuống database

• Tìm kiếm thông tin như user, sản phẩm cũng có thể tìm được mật khẩu của user

- Phân loại các kiểu tấn công SQL Injection

Hình 1.3 2: Các dạng SQL Injection

SQL Injection có thể chia thanh các kiểu sau:

• Đây là dạng tấn công phổ biến nhất và cũng dễ để khai thác lỗ hổng SQL Injection nhất

• Xảy ra khi hacker có thể tấn công và thu thập kết quả trực tiếp trên cùng một kênh liên lạc

• In-Band SQLi chia làm 2 loại chính: o Error-based SQLi

Union-based SQL Injection is a technique that exploits error messages returned by the Database Server, revealing information about the database structure.

Là một kỹ thuật tấn công SQL Injection dựa vào của toán tử UNION trong ngôn ngữ SQL cho phép tổng hợp kết quả của

2 hay nhiều câu truy vấn SELECTION trong cùng 1 kết quả và được trả về như một phần của HTTP response

Khác với In-band SQLi, Inferential SQL Injection yêu cầu nhiều thời gian hơn cho cuộc tấn công vì không có dữ liệu nào được trả về từ ứng dụng web, khiến hacker không thể theo dõi kết quả một cách trực tiếp như trong trường hợp tấn công In-band.

Kẻ tấn công sẽ cố gắng tái tạo cấu trúc cơ sở dữ liệu bằng cách gửi các payloads, dựa trên phản hồi từ ứng dụng web và hành vi của máy chủ cơ sở dữ liệu.

• Inferential SQLi chia làm 2 loại o Blind-boolean-based SQLi

Kỹ thuật tấn công SQL Injection liên quan đến việc gửi các truy vấn đến cơ sở dữ liệu Kẻ tấn công có thể xác định sự thành công của việc tiêm thông qua việc phân tích các phản hồi từ hệ thống.

Vì phản hồi trả về True hoặc False và nó sẽ không chứa bất kì dữ liệu nào từ cơ sở dữ liệu

Kiểu tấn công Time-based-blind SQLi thường diễn ra chậm, đặc biệt khi đối tượng tấn công là các cơ sở dữ liệu lớn, vì kẻ tấn công phải liệt kê từng dữ liệu hoặc dò từng ký tự.

Kỹ thuật tấn công Time-based Blind SQLi liên quan đến việc gửi các câu truy vấn đến cơ sở dữ liệu, yêu cầu hệ thống phải chờ một khoảng thời gian nhất định (thường tính bằng giây) trước khi trả về phản hồi.

Thời gian phản hồi, cho dù là ngay lập tức hay có độ trễ theo khoảng thời gian đã được thiết lập, cho phép kẻ tấn công suy đoán xem kết quả của truy vấn là TRUE hay FALSE.

 Kiểu tấn công này cũng tốn nhiều thời gian tương tự như Boolean-based SQLi

Out-of-band SQLi là một loại tấn công không phổ biến, chủ yếu do sự phụ thuộc vào các tính năng được kích hoạt trên máy chủ cơ sở dữ liệu mà ứng dụng web sử dụng.

Kiểu tấn công này xảy ra khi hacker không thể thực hiện tấn công trực tiếp và thu thập kết quả trên cùng một kênh (In-band SQLi), đặc biệt khi phản hồi từ server không ổn định.

• Kiểu tấn công này phụ thuộc vào khả năng server thực hiện các request DNS hoặc HTTP để chuyển dữ liệu cho kẻ tấn công

- Hậu quả khi bị tấn công:

Khi dữ liệu trong cơ sở dữ liệu bị lộ, hậu quả có thể nghiêm trọng tùy thuộc vào tầm quan trọng của thông tin bị đánh cắp Chẳng hạn, nếu một công ty để lộ thông tin khách hàng, điều này không chỉ làm mất lòng tin của khách hàng mà còn có thể dẫn đến việc họ chuyển sang sử dụng dịch vụ của đối thủ Hệ quả là công ty có thể gặp khó khăn, thậm chí đứng trước nguy cơ phá sản.

Lỗ hổng bảo mật có thể đến từ chính người dùng, khi họ thường sử dụng một mật khẩu cho nhiều tài khoản hoặc chọn mật khẩu dễ đoán Điều này tạo cơ hội cho kẻ tấn công, vì khi một tài khoản bị xâm nhập, các tài khoản khác cũng có nguy cơ bị lộ theo.

Kẻ tấn công có thể chiếm quyền truy cập vào tài khoản quản trị cơ sở dữ liệu, cho phép hắn không chỉ đọc mà còn xóa toàn bộ dữ liệu trong hệ thống, dẫn đến việc hệ thống bị ngưng hoạt động.

Kỹ thuật tấn công

Lý thuyết

Cuộc tấn công SQL Injection diễn ra khi kẻ tấn công gửi lệnh SQL độc hại đến máy chủ cơ sở dữ liệu thông qua các yêu cầu từ người dùng trên website Tất cả các kênh đầu vào, bao gồm chuỗi truy vấn và tệp tin, đều có thể bị lợi dụng để truyền tải các lệnh độc hại này.

- Các dạng tấn công SQL Injection:

Kẻ tấn công có thể vượt qua các trang đăng nhập bằng cách lợi dụng lỗ hổng trong câu lệnh SQL, cho phép truy cập trái phép vào hệ thống Các trang đăng nhập thường yêu cầu người dùng cung cấp tên đăng nhập và mật khẩu để xác thực Sau khi thông tin được nhập, hệ thống sẽ kiểm tra tính hợp lệ của chúng để quyết định cho phép hoặc từ chối truy cập vào các trang web bảo mật.

Tấn công SQL injection sử dụng câu lệnh SELECT yêu cầu kẻ tấn công phải hiểu và khai thác các lỗ hổng trong thông báo lỗi của hệ thống Khi gặp các website như index.php?id! hoặc index.asp?id=6, kẻ tấn công có thể thêm các ký tự như dấu nháy đơn ('), dấu nháy kép ("), phần trăm 27 (%27) hoặc 00 phần trăm (00%) vào sau tham số id để kiểm tra sự xuất hiện của lỗi Nếu có sự khác biệt so với kết quả ban đầu, khả năng khai thác lỗ hổng này lên tới 90%.

Tấn công SQL injection thường xảy ra trong các ứng dụng web cho phép người dùng đăng ký tài khoản Sau khi đăng ký thành công, người dùng có thể xem và chỉnh sửa thông tin cá nhân Nếu hệ thống không kiểm tra tính hợp lệ của dữ liệu nhập vào, kẻ tấn công có thể lợi dụng lỗ hổng này để thực hiện các cuộc tấn công.

Stored Procedure là một công cụ hữu ích trong lập trình web, giúp giảm độ phức tạp của ứng dụng và ngăn chặn các cuộc tấn công SQL Injection Tuy nhiên, các kẻ tấn công vẫn có khả năng khai thác những lỗ hổng trong stored procedure để thực hiện các cuộc tấn công vào hệ thống.

Thực hành

Dạng tấn công sử dụng câu lệnh SELECT kết hợp UNION

❖ Công cụ được sử dụng

• Công cụ tìm kiếm lỗi Vega

• Add-on cho firefox: HackBar Quantum

• Bước 1: Tìm website bị lỗi bằng cách nhập câu lệnh inurl product_detail id=site vn trên URL

Hình 2.2 1: Câu lệnh tìm kiếm website bị lỗi

In Step 2, after executing the command from Step 1, we will obtain a list of websites with errors Our group has chosen the website thinhnguyenplastic.com to demonstrate SQL Injection.

- Bằng công cụ Vega trên website thinhnguyenplatic.com

Hình 2.2 3: Sử dụng công cụ Vega

+ Chọn Injections Modules và chọn phần liên quan đến SQL Injection để quét

Hình 2.2 4: Các phần liên quan đến SQL

Hình 2.2 5: Các phần liên quan đến SQL

+ Kết quả đã quét ra được 3 cảnh báo liên quan đến SQL Injection

Hình 2.2 6: Kết quả khi dùng Vega

- Ngoài công cụ Vega ta có thể kiểm tra trên HackBar Quantum bằng cách thêm dấu ‘ vào sau đường link

+ Kết quả trước khi chạy

Hình 2.2 7: thinhnguyenplastic.com trước khi dùng SQL Injection

+ Kết quả sau khi chạy

Hình 2.2 8: Kết quả sau khi thêm ‘

• Bước 4: Tìm số cột của table mà câu lệnh SQL truy vấn dùng câu lệnh order by

Hình 2.2 9: Hình ảnh khi chưa hết cột

Ta sẽ tiếp tục tăng con số của order by cho đến khi thấy website bị lỗi như hình dưới đây

Hình 2.2 10: Kết quả khi tìm hết các cột

When reaching number 63, the website encountered an error, indicating that the database contains rows from 0 to 62 To display these columns, select SQL and use the Union Select statement, then enter 62 into the designated field and confirm.

Hình 2.2 11: Thực hiện lệnh Union Select

- Kết quả khi thực hiện

Hình 2.2 12: Kết quả sau khi thực hiện lệnh

• Bước 5: Hiện số cột bị lỗi bằng cách dùng union select

- Kết quả cho ta thấy số cột 37 bị lỗi

Hình 2.2 13: Hình ảnh cột 37 làm trang bị lỗi

Khi sử dụng câu lệnh UNION SELECT để tìm cột bị lỗi, cần thêm dấu "-" trước số 635; nếu không thực hiện điều này, lỗi sẽ không được hiển thị như hình minh họa bên dưới.

• Bước 6: Kiểm tra một vài thông tin database tại vị trí cột bị lỗi

Hình 2.2 15: Thông tin về version

Hình 2.2 16: Thông tin về database

Hình 2.2 17: Thông tin về user

Step 7: List the tables in the database using the command unhex(hex(group_concat(table_name))) in the column with the error, and from information_schema.tables WHERE table_schema = database() after column number 62.

Hình 2.2 18: Liệt kê các bảng 1

Hình 2.2 19: Liệt kê các bảng 2

Step 8: List the columns in the login table (tbl-member) using the command unhex(hex(group-concat(column_name))) for the column that has errors, and select from information_schema.columns where the table name is tbl_member after column number 62.

Hình 2.2 20: Câu lệnh liệt kê các cột trong bảng

Hình 2.2 21: Câu lệnh liệt kê các cột trong bảng

- Tiếp tục dùng câu lệnh trên đổi tbl_member thành CHAR (116, 98, 108,

Hình 2.2 22: Kết quả sau khi đổi tbl_member

Để xem thông tin các cột trong bảng tbl_member (bao gồm id, uid, pwd), bạn có thể sử dụng câu lệnh unhex kết hợp với group-concat Câu lệnh cụ thể là: unhex(hex(group-concat(id, 0x3a, uid, 0x3a, pwd))) và thực hiện truy vấn từ tbl_member sau số cột 62.

Hình 2.2 23: Thông tin trong các cột

• Bước 10: Đăng nhập thông tin vừa tìm được ở bước 9

Hình 2.2 24: Hình ảnh đăng nhập

Hình 2.2 25: Kết quả đăng nhập thành công

Chương 3: Phòng chống tấn công SQL Injection sử dụng Firewall Mod Security

➢ Cách phòng chống tấn công SQL Injection

• Không bao giờ được tin tưởng người dùng nhập đăng vào dữ liệu Dữ liệu luôn được xác thực trước khi sử dụng trong các câu lệnh SQL

• Lọc dữ liệu từ người dùng: Cách phòng chống này tương tự như XSS

Chúng tôi sử dụng bộ lọc để loại bỏ các ký tự đặc biệt như (; ” ‘) và các từ khóa như (SELECT, UNION) mà người dùng có thể nhập vào Nên ưu tiên sử dụng thư viện hoặc hàm có sẵn từ framework để đảm bảo tính an toàn và hiệu quả Việc viết lại từ đầu không chỉ tốn thời gian mà còn dễ dẫn đến sai sót.

Để đảm bảo an toàn và hiệu quả khi làm việc với SQL, hãy sử dụng tham số thay vì cộng chuỗi để tạo câu lệnh SQL Việc này giúp SQL Engine tự động phát hiện lỗi nếu dữ liệu đầu vào không hợp lệ, loại bỏ nhu cầu kiểm tra bằng mã.

Để bảo vệ cơ sở dữ liệu khỏi các cuộc tấn công từ hacker, cần hạn chế hiển thị thông báo lỗi chi tiết Thay vì cung cấp thông tin đầy đủ về lỗi, chỉ nên thông báo một cách tổng quát để tránh việc hacker lợi dụng thông tin đó nhằm xác định cấu trúc của database.

Để bảo mật cơ sở dữ liệu, hãy tạo một tài khoản mới và gán quyền truy cập hạn chế, tránh sử dụng tài khoản root Điều này đảm bảo rằng ngay cả khi kẻ tấn công xâm nhập vào cơ sở dữ liệu, chúng cũng không thể truy cập vào các bảng chính, sửa đổi hoặc xóa dữ liệu.

• Sao lưu dữ liệu thường xuyên để khi có kẻ tấn công xóa đi mất dữ liệu thì ta vẫn khôi phục được

➢ Giới thiệu sơ lược về Mod Security

ModSecurity là một tường lửa ứng dụng web (Web Application Firewall) hoạt động như một module trên máy chủ web Apache Mục tiêu chính của ModSecurity là nâng cao bảo mật cho các ứng dụng web, bảo vệ chúng khỏi các cuộc tấn công đã biết và chưa biết.

WAF thiết lập một lớp bảo vệ bên ngoài nhằm phát hiện và ngăn chặn các cuộc tấn công trước khi chúng ảnh hưởng đến ứng dụng web Các tính năng của WAF bao gồm khả năng bảo vệ hiệu quả, đảm bảo an toàn cho dữ liệu và duy trì tính khả dụng của ứng dụng.

- Có khả năng phân tích tỉ mỉ và log toàn bộ các hoạt động của giao thức Http như: Rrequest, Response

Hệ thống có khả năng theo dõi lưu lượng gói tin HTTP theo thời gian thực, giúp phát hiện sớm các cuộc tấn công tương tự như hệ thống phát hiện xâm nhập web Nó chủ động giám sát các yêu cầu để nhận diện những điểm bất thường, từ đó có thể ghi lại hoặc loại bỏ các gói tin đáng ngờ.

- Có khả chạy trên nhiều hệ điều hành Linux, Windows, Solaris, FreeBSD, OpenBSD, NetBSD, AIX, Mac OS X, và HP-UX

- Chống lại các cuộc tấn công an ninh của web phổ biến như: SQL Injection, XSS, Execute code, phát hiện bots, crawlers, Trojan Protection, Error Hiding

Tích hợp Mod Sercurity với DVWA (Damn Vulnerable Web Application)

- Tải Xampp https://www.apachefriends.org/download.html

- Cho chạy file vừa tải về chọn next để tiếp tục thực hiện cài đặt

- Chọn next và lựa chọn các thành phần cần cài đặt đẻ có trong xampp

Hình 3.2 3: Lựa chọn các thành phần càn cài đặt trên Xampp

Hình 3.2 4: Chọn nơi cài đặt Xampp

- Chọn next để bắt đầu cài đặt xampp

Hình 3.2 6: Bắt đầu cài đặt

- Mở xampp và khởi động Apache và MySql

Hình 3.2 7: Khởi động Apache và MySql

- Trang Web sau khi cài

Hình 3.2 8: Trang sau khi cài Xampp

- Tải DVWA tại https://dvwa.co.uk/

- Xóa toàn bộ file trong /xampp/htdocs và tạo một thư mục có tên dvwa

- Giả nén file vừa tải copy toàn bộ vào /xampp/htdocs/dvwa

- Truy cập vào http://localhost/

Hình 3.2 10: Hình ảnh truy cập localhost

- Đổi tên file trong \xampp\htdocs\dvwa\config từ config.inc.php.dist thành config.inc.php

- Sửa các dòng sau trong file php.in đẻ sữa những lỗi sau

Hình 3.2 11: Sau khi vào dvwa

+ Sữa dòng allow_url_include=Off thành allow_url_include=On + Sửa dòng ;extension=gd thành extension=gd

- Sửa các dòng sau trong config.inc.php

Hình 3.2 12: Chỉnh sửa trong file config.inc.php

Lưu ý: Hai key của recaptcha sẽ được lấy trên trang https://www.google.com/recaptcha/about/

- Lưu lại các file đã sửa khởi động lại apache truy cập vào http://localhost/dvwa/setup.php -> Create database -> nhập uer admin và pass: pasword

Hình 3.2 13: Đăng nhập vào DVWA

• Bước 3: Cài đặt Mod Security

- Truy cập vào trang https://www.apachelounge.com/download/ để tải Mod Security

Hình 3.2 14: Gói tải Mod Security

- Giải nén file vừa tải

- Copy file mod_security2.so vào \apache\modules

Hình 3.2 15: Copy mod_security2.so vào \modules

- Copy file yajl.dll vào \apache\bin

Hình 3.2 16: Copy yajl.dll vào \bin

- Cấu hình file http.conf trong \apache\conf

+ Cho phép module unique_id bằng cách bỏ dấu #

LoadModule unique_id_module modules/mod_unique_id.so

+ Thêm các dòng sau vào

LoadModule security2_module modules/mod_security2.so

 Kích hoạt chế độ hoạt động cho các rule trên nội dung

 Chỉ thị file rule để chăn SQL Injection

Hình 3.2 17: Chỉnh sửa trong file http.conf

- Tạo file sqlinjection.conf và copy rule attack sql injection trên github https://github.com/SEC642/modsec/tree/master/rules/base_rules chọn modsecurity_crs_41_sql_injection_attacks.conf

- copy nội dung vào file sqlinjection.conf vừa tạo

Hình 3.2 19: Nội dung file sqlinjection.conf

• Bước 4: Kiểm tra hoạt động Firewall Mode Security

- Khởi động lại Apache sao đó truy cập vào DVWA thực hiện tấn công SQL Injection

Hình 3.2 20: Thực hiện tấn công SQL Injection

- Thông báo chặn xuất hiện

Hình 3.2 21: Thông báo chặn tấn công

- Kiểm tra error.log trên apache

Hình 3.2 22: Kết quả thông báo trong error.log

Trong bối cảnh phát triển hiện nay, các công ty và doanh nghiệp phải lưu trữ hàng ngàn thông tin của nhân viên và khách hàng cả trong và ngoài nước Việc sử dụng phần mềm và ứng dụng để lưu trữ và truy cập thông tin trở nên cần thiết Để giảm thiểu nguy cơ bị tấn công SQL Injection, lập trình viên cần có sự cẩn trọng và thông minh trong quá trình lập trình Web nhằm tránh những rủi ro tiềm ẩn.

- Lọc dữ liệu đầu vào để loại bỏ các kí tự đặc biệt liên quan đến tấn công

- Giới hạn quyền cho từng user

Ngoài ra các doanh nghiệp có thể xây dựng thêm firewall trong mô hình để ngăn chặn các cuộc tấn công

Cơ sở dữ liệu lưu trữ thông tin cá nhân của khách hàng, và việc lộ thông tin này có thể gây ảnh hưởng nghiêm trọng đến các công ty và doanh nghiệp Do đó, việc bảo vệ cơ sở dữ liệu trở thành nhiệm vụ quan trọng, cần thiết phải thực hiện các biện pháp bảo mật phù hợp để đảm bảo an toàn cho dữ liệu.

Ngày đăng: 24/12/2021, 21:54

HÌNH ẢNH LIÊN QUAN

Hình 1.3. 2: Các dạng SQL Injection - Tìm hiểu và triển khai giải pháp phát hiện và phòng chống lỗ hổng SQL injection
Hình 1.3. 2: Các dạng SQL Injection (Trang 12)
Hình 2.2. 1: Câu lệnh tìm kiếm website bị lỗi - Tìm hiểu và triển khai giải pháp phát hiện và phòng chống lỗ hổng SQL injection
Hình 2.2. 1: Câu lệnh tìm kiếm website bị lỗi (Trang 16)
Hình 2.2. 2: Trang thinhnguyenplactic.com - Tìm hiểu và triển khai giải pháp phát hiện và phòng chống lỗ hổng SQL injection
Hình 2.2. 2: Trang thinhnguyenplactic.com (Trang 17)
Hình 2.2. 4: Các phần liên quan đến SQL - Tìm hiểu và triển khai giải pháp phát hiện và phòng chống lỗ hổng SQL injection
Hình 2.2. 4: Các phần liên quan đến SQL (Trang 18)
Hình 2.2. 5: Các phần liên quan đến SQL - Tìm hiểu và triển khai giải pháp phát hiện và phòng chống lỗ hổng SQL injection
Hình 2.2. 5: Các phần liên quan đến SQL (Trang 18)
Hình 2.2. 6: Kết quả khi dùng Vega - Tìm hiểu và triển khai giải pháp phát hiện và phòng chống lỗ hổng SQL injection
Hình 2.2. 6: Kết quả khi dùng Vega (Trang 19)
Hình 2.2. 8: Kết quả sau khi thêm ‘ - Tìm hiểu và triển khai giải pháp phát hiện và phòng chống lỗ hổng SQL injection
Hình 2.2. 8: Kết quả sau khi thêm ‘ (Trang 20)
Hình 2.2. 10: Kết quả khi tìm hết các cột - Tìm hiểu và triển khai giải pháp phát hiện và phòng chống lỗ hổng SQL injection
Hình 2.2. 10: Kết quả khi tìm hết các cột (Trang 21)
Hình 2.2. 12: Kết quả sau khi thực hiện lệnh - Tìm hiểu và triển khai giải pháp phát hiện và phòng chống lỗ hổng SQL injection
Hình 2.2. 12: Kết quả sau khi thực hiện lệnh (Trang 22)
Hình 2.2. 15: Thông tin về version - Tìm hiểu và triển khai giải pháp phát hiện và phòng chống lỗ hổng SQL injection
Hình 2.2. 15: Thông tin về version (Trang 23)
Hình 2.2. 14: Lưu ý - Tìm hiểu và triển khai giải pháp phát hiện và phòng chống lỗ hổng SQL injection
Hình 2.2. 14: Lưu ý (Trang 23)
Hình 2.2. 16: Thông tin về database - Tìm hiểu và triển khai giải pháp phát hiện và phòng chống lỗ hổng SQL injection
Hình 2.2. 16: Thông tin về database (Trang 24)
Hình 2.2. 17: Thông tin về user - Tìm hiểu và triển khai giải pháp phát hiện và phòng chống lỗ hổng SQL injection
Hình 2.2. 17: Thông tin về user (Trang 24)
Hình 2.2. 18: Liệt kê các bảng 1 - Tìm hiểu và triển khai giải pháp phát hiện và phòng chống lỗ hổng SQL injection
Hình 2.2. 18: Liệt kê các bảng 1 (Trang 25)

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w