1. Trang chủ
  2. » Kỹ Năng Mềm

Bài tập lớn môn an toàn mạng (1)

36 34 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 Công Cụ Khai Thác Lỗ Hổng Sử Dụng Công Cụ BBQSQL
Tác giả Phạm Thị Anh Thơ
Người hướng dẫn TS. Đặng Minh Tuấn
Trường học Học Viện Công Nghệ Bưu Chính Viễn Thông
Chuyên ngành An Toàn Mạng
Thể loại Bài Tiểu Luận
Năm xuất bản 2021
Thành phố Hà Nội
Định dạng
Số trang 36
Dung lượng 1,26 MB

Cấu trúc

  • CHƯƠNG 1: GIỚI THIỆU CHUNG (8)
    • 1.1.1. Tổng quan (8)
    • 1.1.2. Một số kỹ thuật khai thác lỗ hổng bảo mật Web (9)
    • 1.2. Giới thiệu về SQL Injection (10)
      • 1.2.1. Lịch sử hình thành và phát triển SQL (10)
      • 1.2.2. Khái niệm SQL Injection (11)
      • 1.2.3. Phân loại các kiểu tấn công SQL Injection (12)
    • 1.3. Giới thiệu Blind SQL Injection (13)
      • 1.3.1. Khái niệm Blind SQL Injection (13)
      • 1.3.2. Boolean Expoitation (14)
      • 1.3.3. Time – based Blind SQLi (15)
    • 1.4. Giới thiệu công cụ BBQSQL (16)
  • CHƯƠNG 2: CÀI ĐẶT CÔNG CỤ BBQSQL TRÊN KALI LINUX (18)
    • 2.1. Yêu cầu trước khi cài đặt (18)
    • 2.2. Hướng dẫn cài đặt (18)
    • 2.3. Hướng dẫn sử dụng công cụ BBQSQL (22)
      • 2.3.1. Khởi động và các tuỳ chọn (22)
      • 2.3.2. HTTP Parameters (24)
      • 2.3.3. BBQSQL Options (26)
      • 2.3.4. Export Config (28)
      • 2.3.5. Import Config (29)
      • 2.3.6. Custom Hooks (29)
  • CHƯƠNG 3: BÀI LAB DEMO VÀ KỊCH BẢN TẤN CÔNG (31)
    • 3.1. Cách thức tấn công (31)
    • 3.2. So sánh BBQSQL với SQL Map (33)
  • KẾT LUẬN (34)
  • TÀI LIỆU THAM KHẢO (35)

Nội dung

GIỚI THIỆU CHUNG

Tổng quan

Trong thời đại công nghệ phát triển, an ninh thông tin trên không gian mạng trở thành vấn đề quan trọng được nhiều người chú ý Nguy cơ mất an toàn thông tin đang gia tăng, đe dọa đến an ninh quốc gia Tin tặc thường nhắm tới các máy chủ dịch vụ mạng và hệ thống cơ sở hạ tầng mạng.

Các hệ thống website đang trở thành mục tiêu phổ biến cho tin tặc nhờ vào tính phổ cập và dễ tiếp cận Vì vậy, việc bảo mật cho các website ngày càng được chú trọng, yêu cầu các tiêu chuẩn đặc biệt trong quy trình kiểm thử.

Các khái niệm liên quan đến hệ thống website bao gồm:

Webserver là một máy tính kết nối internet, được cài đặt các chương trình đặc biệt để xử lý và phản hồi yêu cầu từ người dùng Nó có khả năng xử lý dữ liệu và cung cấp thông tin đến máy khách qua các máy tính cá nhân trên Internet, sử dụng giao thức HTTP, được thiết kế để gửi tệp tin đến trình duyệt web, cùng với các giao thức khác.

Khi người dùng truy cập một địa chỉ web như google.com, trình duyệt sẽ gửi yêu cầu từ máy khách lên máy chủ thông qua tên miền, chuyển đổi thành địa chỉ IP Máy chủ sẽ phân tích yêu cầu này và chuyển hướng đến vị trí lưu trữ mã nguồn PHP hoặc mã nguồn khác Nhiệm vụ của mã nguồn là tiếp nhận và xử lý yêu cầu, sau đó trả về kết quả cho máy khách dưới dạng các trang web mà máy chủ Google tìm kiếm được.

Phản hồi là dữ liệu mà máy chủ web gửi đến máy khách, có thể bao gồm chuỗi HTML hoặc các định dạng đa phương tiện như hình ảnh và video Trình duyệt web của máy khách sẽ xử lý và hiển thị những nội dung này dưới dạng giao diện trực quan cho người dùng.

Cơ sở dữ liệu là nơi lưu trữ thông tin quan trọng của một website, bao gồm tài khoản, mật khẩu, email và nhiều dữ liệu khác của người dùng.

9 các thông tin cực kỳ quan trọng như thông tin về thẻ thanh toán và hồ sơ y tế Vậy nên đây là một mục tiêu phổ biến của Hacker

Lỗ hổng bảo mật, hay còn gọi là vulnerability, là một khái niệm quan trọng trong lĩnh vực an toàn thông tin Nó được định nghĩa là điểm yếu, có thể là kỹ thuật hoặc phi kỹ thuật, trong phần mềm, phần cứng, giao thức hoặc hệ thống thông tin Các lỗ hổng này có thể tạo ra rủi ro cho an ninh và an toàn của dữ liệu.

Dưới đây là một số định nghĩa về lỗ hổng bảo mật:

1 Theo Viện Tiêu chuẩn và Công nghệ Quốc gia (NIST): Điểm yếu trong hệ thống thông tin, quy trình bảo mật hệ thống, kiểm soát nội bộ hoặc công tác triển khai có thể bị khai thác bởi tác nhân gây hại

2 Theo ISO 27005: Điểm yếu của một tài sản hoặc nhóm tài sản có thể bị khai thác bởi một hoặc nhiều mối đe dọa trên mạng, trong đó tài sản là bất cứ thứ gì có giá trị đối với tổ chức, hoạt động kinh doanh của tổ chức và tính liên tục của những hoạt động đó, bao gồm các tài nguyên thông tin hỗ trợ sứ mệnh của tổ chức

3 Theo IETF RFC 4949: Một lỗ hổng hoặc điểm yếu trong thiết kế, triển khai hoặc vận hành và quản lý của hệ thống có thể bị khai thác để vi phạm chính sách bảo mật của hệ thống

4 Theo ENISA: Sự tồn tại của một điểm yếu, thiết kế hoặc lỗi triển khai có thể dẫn đến một sự cố không mong muốn làm tổn hại đến bảo mật của hệ thống máy tính, mạng, ứng dụng hoặc giao thức liên quan

5 Theo The Open Group: Xác suất khả năng của mối đe dọa vượt quá khả năng chống lại mối đe dọa đó Phân tích nhân tố về rủi ro thông tin: Xác suất một tài sản sẽ không thể chống lại hành động của một tác nhân đe dọa

6 Theo ISACA: Một điểm yếu trong thiết kế, triển khai, vận hành hoặc kiểm soát nội bộ

Hacker khai thác lỗ hổng bảo mật web bằng cách sử dụng công cụ dò quét để phát hiện các website có cấu hình bảo mật kém, đặc biệt là trên các nền tảng như WordPress và Joomla Họ tìm kiếm các lỗ hổng đã được công bố nhưng chưa được khắc phục Khi phát hiện, hacker sẽ lợi dụng những lỗ hổng này để tấn công, cài đặt mã độc và phá hoại các website nhằm trục lợi.

Một số kỹ thuật khai thác lỗ hổng bảo mật Web

Có nhiều loại lỗ hổng bảo mật khác nhau, và chúng có thể được phân loại theo nhiều tiêu chí khác nhau Một cách phân chia phổ biến là dựa trên nền tảng hoặc thành phần mà lỗ hổng xuất hiện.

Năm 2021, theo thống kê của IBM, nhiều ứng dụng web vẫn tồn tại lỗ hổng bảo mật nghiêm trọng, dẫn đến nguy cơ bị khai thác Dưới đây là 10 phương thức tấn công phổ biến mà các ứng dụng này phải đối mặt, cho thấy sự cần thiết phải cải thiện an ninh mạng.

Hình 1.1 Danh sách top 10 lỗ hổng bảo mật theo OWASP năm 2021

Lỗ hổng trên ứng dụng web có thể được chia thành hai phần chính:

Lỗ hổng trên server có thể bao gồm nhiều loại, chẳng hạn như lỗ hổng xác thực người dùng, lỗ hổng quản lý phiên (session), và lỗ hổng liên quan đến cơ sở dữ liệu Những lỗ hổng này có thể tạo ra cơ hội cho kẻ tấn công xâm nhập vào hệ thống, làm lộ thông tin nhạy cảm và gây thiệt hại cho tổ chức Việc nhận diện và khắc phục những lỗ hổng này là cực kỳ quan trọng để đảm bảo an toàn cho dữ liệu và bảo vệ hệ thống khỏi các mối đe dọa.

• Lỗ hổng trên client: có thể kể tới như Cross-site Scripting, On-site Request Forgery

Giới thiệu về SQL Injection

1.2.1 Lịch sử hình thành và phát triển SQL

Vào năm 1974, D Chamberlin từ IBM San Jose Lab đã định nghĩa ngôn ngữ SEQUEL (Structured English Query Language) Năm 1976, một phiên bản sửa đổi mang tên SEQUEL/2 được giới thiệu, nhưng sau đó đã được đổi tên thành SQL vì lý do pháp lý IBM cũng đã phát triển một mẫu hệ quản trị cơ sở dữ liệu mang tên System R, dựa trên SEQUEL/2.

Tuy nhiên gốc rễ của SQL là từ ngôn ngữ SQUARE (Specifying Queries as

Relational Expressions), là ngôn ngữ đã có trước dự án System R Vào cuối 70s,

ORACLE xuất hiện và được xem là HQTCSDL thương mại đầu tiên dựa trên SQL

Năm 1987, ANSI và ISO công bố chuẩn đầu tiên cho SQL Năm 1989, ISO công bố thêm phần phụ lục định nghĩa một ‘Nét cải tiến cho toàn vẹn’

Năm 1992, phiên bản chỉnh sửa đầu tiên của chuẩn này có mặt, mang tên SQL2 hay SQL-92

Năm 1999, SQL:1999 được phát hành với các chuẩn hỗ trợ cho quản lý dữ liệu hướng đối tượng Vào cuối năm 2003, SQL:2003 ra đời

Bảng 1: Tiêu chuẩn SQL đã trải qua một số phiên bản

Năm Tên Tên khác Chú giải

1986 SQL-86 SQL-87 Được công bố đầu tiên bởi ANSI Được phê chuẩn bởi ISO năm 1987

Việc truy cập thông tin bên trong một cơ sở dữ liệu gọi là Structured Query

SQL là ngôn ngữ được sử dụng để đọc, cập nhật, thêm và xóa thông tin trong cơ sở dữ liệu Là một ngôn ngữ biên dịch, SQL thường được tích hợp vào các ứng dụng web thông qua các câu lệnh kết hợp với dữ liệu người dùng Tuy nhiên, nếu không được thực hiện một cách an toàn, các ứng dụng có thể dễ bị tấn công bằng SQL injection, một trong những lỗi phổ biến nhất trong ứng dụng web, gây ảnh hưởng nghiêm trọng đến bảo mật.

SQL Injection là một phương thức tấn công mà kẻ xấu khai thác lỗ hổng trong việc kiểm tra dữ liệu đầu vào của ứng dụng web Bằng cách sử dụng các thông báo lỗi từ hệ quản trị cơ sở dữ liệu, chúng có thể tiêm và thực thi các câu lệnh SQL trái phép.

Như chính tên của nó, mục đích của cuộc tấn công SQL Injection là tiêm mã SQL bất hợp pháp, độc hại vào ứng dụng

Trong các ứng dụng có dữ liệu này được chỉ định đi đến cơ sở dữ liệu như:

- Biểu mẫu (form) đăng nhập – người dùng nhập dữ liệu đăng nhập

- Biểu mẫu tìm kiếm – người dùng nhập dữ liệu tìm kiếm

Kẻ tấn công có thể gây thiệt hại nghiêm trọng cho cơ sở dữ liệu và toàn bộ hệ thống bằng cách thay thế dữ liệu chính xác bằng một câu lệnh truy vấn độc hại.

SQL Injection enables attackers to execute operations such as delete, insert, and update on an application's database, potentially compromising the server hosting the application.

SQL Injection là một hình thức tấn công phổ biến nhằm vào các ứng dụng web, đặc biệt là những ứng dụng sử dụng hệ quản trị cơ sở dữ liệu như SQL Tấn công này xảy ra khi kẻ xấu lợi dụng lỗ hổng trong mã nguồn để chèn mã SQL độc hại, từ đó truy cập hoặc thao tác dữ liệu một cách trái phép.

Server, MySQL, Sysbase,… Do đó, trong cuộc tấn công SQL Injection này, câu lệnh SQL được sử dụng như một mã độc hại

Các công cụ quét lỗ hổng của SQL Injection bao gồm:

• SQLMap – Công cụ tiếp quản cơ sở dữ liệu và tiêm (inject) SQL tự động

• jQuery Injection – Công cụ Java để tiêm cơ sở dữ liệu SQL tự động

• BBQSQL – Công cụ khai thác SQL-Injection

• NoQueryMap – Tự động cơ sở dư liệu NoQueryPwnage

• Blisqy – Khaithác tính năng Blind SQL dựa trên thời gian trong các tiêu đề HTTP (MySQL/MariaDB)

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

Hình 1.2 Phân loại các kiểu tấn công SQL Injection

SQL Injection là một trong những hình thức tấn công phổ biến nhất và dễ khai thác nhất Tấn công này xảy ra khi hacker có khả năng tổ chức tấn công và thu thập kết quả ngay trên cùng một kênh liên lạc.

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

Khác với In-band SQL Injection, Inferential SQL Injection yêu cầu thời gian tấn công lâu hơn vì không có dữ liệu nào được trả về trực tiếp từ ứng dụng web Do đó, hacker không thể theo dõi kết quả ngay lập tức 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 vào phản hồi từ ứng dụng web và hành vi của máy chủ cơ sở dữ liệu.

Có 2 dạng tấn công chính:

Out-of-band SQLi là một loại tấn công không phổ biến, chủ yếu do nó 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.

Hình thức này chủ yếu được sử dụng để thay thể in-band và bland SQLi

Out-of-band SQLi là phương pháp tấn công khi hacker không thể sử dụng cùng một kênh để khởi tạo tấn công và thu thập thông tin, hoặc khi server quá chậm và không ổn định Kỹ thuật này dựa vào khả năng của server trong việc tạo ra các yêu cầu DNS hoặc HTTP để truyền dữ liệu cho kẻ tấn công.

Giới thiệu Blind SQL Injection

1.3.1 Khái niệm Blind SQL Injection

Blind SQL Injection là một phương thức tấn công SQL Injection mà kẻ tấn công sử dụng các câu lệnh để suy đoán thông tin từ cơ sở dữ liệu Hình thức tấn công này thường được áp dụng khi ứng dụng không cung cấp thông tin lỗi chi tiết, khiến kẻ tấn công phải dựa vào phản hồi từ ứng dụng để xác định dữ liệu.

Blind SQL Injection, hay còn gọi là SQL Inferential SQL, xảy ra khi các ứng dụng web và ứng dụng di động chỉ hiển thị những thông báo lỗi chung chung, mà không tiết lộ thông tin chi tiết về lỗi SQL.

Sự khác biệt giữa Blind SQL injection và các loại SQL injection khác là ở chỗ, trong khi SQL injection thông thường cho phép truy cập trực tiếp vào thông tin từ cơ sở dữ liệu, thì Blind SQL injection yêu cầu người tấn công phải suy luận và đoán thông tin một cách từ từ dựa trên các phản hồi từ hệ thống.

Việc thông tin như tên cơ sở dữ liệu, tên bảng và tên người dùng quá dài có thể gây khó khăn trong việc đoán và tốn nhiều thời gian.

Hacker gửi truy vấn đến cơ sở dữ liệu, khiến ứng dụng trả về kết quả có thể khác nhau tùy thuộc vào tính chính xác của câu truy vấn Kết quả này có thể dẫn đến việc thông tin trên HTTP Response bị sửa đổi hoặc không Do đó, việc phân tích sự khác biệt giữa các câu trả lời của lệnh TRUE và FALSE là rất quan trọng.

Dưới đây là một ví dụ về trang web bán hàng trực tuyến, nơi cung cấp thông tin chi tiết về sản phẩm với đường dẫn URL: http://www.shop-online.com/product_detail.php?id=1.

Liên kết trên cung cấp thông tin chi tiết về sản phẩm có ID=1 từ cơ sở dữ liệu Câu lệnh SQL tương ứng cho liên kết này được thực hiện khi có yêu cầu.

SELECT * FROM products WHERE id = 1

SELECT column_name, column_name_2 FROM table_name WHERE id = 1

Kẻ tấn công sẽ sửa lại truy vấn bằng các sửa url thành: http://www sho p-online.com/product_detail.php?id=1 and 1 = 2

Câu lệnh SQL sẽ đổi thành:

SELECT * FROM products WHERE ID = 1 and 1=2

Khi thực hiện truy vấn SQL như "SELECT column_name, column_name_2 FROM table_name WHERE ID = 1 and 1=2", kết quả sẽ không hiển thị bất kỳ mục nào trong thông tin sản phẩm Kẻ tấn công có thể thay đổi yêu cầu thành "http://www.shop-online.com/product_detail.php?id=1 and 1 = 1" để khai thác lỗ hổng này.

Và câu lệnh SQL lúc này lại đổi thành:

SELECT * FROM products WHERE ID = 1 and 1=1

The SQL query "SELECT column_name, column_name_2 FROM table_name WHERE ID = 1 AND 1=1" returns TRUE, revealing the details of the product with ID=1 This clearly indicates that the application is vulnerable to SQL injection, and we have exploited this weakness using Blind SQL injection techniques.

Hacker gửi một truy vấn đến cơ sở dữ liệu, khiến nó phải chờ đợi trong vài giây trước khi phản hồi Thời gian phản hồi này cho phép hacker xác định liệu truy vấn là đúng hay sai, từ đó tạo ra một HTTP Response Hành động phổ biến được sử dụng để thao túng thời gian phản hồi là sleep.

Kẻ tấn công sẽ bắt đầu bằng cách đánh giá thời gian phản hồi của máy chủ web thông qua một truy vấn thông thường Ví dụ, yêu cầu mà kẻ tấn công sử dụng là: http://www.shop-online.com/product_detail.php?id=1 và nếu (1=1, sleep(10), false) Thao tác này giúp kẻ tấn công xác định khả năng tồn tại của lỗ hổng trong hệ thống.

Nếu ứng dụng gặp lỗi SQL injection thì phản hồi sẽ bị trễ 10 giây

In summary, Blind SQL Injection attacks, when executed using brute force techniques, necessitate numerous requests and can be automated through the use of specialized attack tools.

Sử dụng các công cụ tự động như SQLmap hoặc các công cụ tấn công bán tự động như BBQSQL có thể dẫn đến việc lấy cắp toàn bộ dữ liệu trong cơ sở dữ liệu nhạy cảm, gây ra hậu quả nghiêm trọng cho các hệ thống.

Giới thiệu công cụ BBQSQL

Nghiên cứu về Blind SQL Injection (Blind SQLi) cho thấy rằng việc tấn công này có thể gây ra hậu quả nghiêm trọng cho hệ thống Tuy nhiên, việc khai thác Blind SQLi cũng gặp nhiều khó khăn.

Khi các công cụ tấn công tự động hoạt động hiệu quả, chúng mang lại lợi ích lớn Tuy nhiên, khi không có sẵn, việc viết mã tùy chỉnh trở nên tốn thời gian và nhàm chán BBQSQL ra đời nhằm giải quyết những khó khăn này, cung cấp giải pháp tối ưu cho việc tấn công tự động.

BBQSQL là một SQL Injection framework do Ben Toews (Security Consultant /

Researcher at Neohapsis ) và Scott Behrens (Senior Security Consultant /

Researcher at Neohapsis) phát triển và được viết bằng Python Nó cực kỳ hữu ích khi tấn công các lỗ hổng SQL Injection

BBQSQL là một công cụ bán tự động linh hoạt, cho phép tùy chỉnh hiệu quả các phát hiện chèn SQL khó kích hoạt Được thiết kế để không phụ thuộc vào cơ sở dữ liệu cụ thể, BBQSQL cung cấp giao diện người dùng trực quan, giúp người dùng dễ dàng thiết lập và thực hiện các cuộc tấn công.

Hình 1.3 Thông tin tác giả và bên cấp giấy phép công cụ BBQSQL

Hình 1.4 Các phiên bản của BBQSQL Giai đoạn bắt đầu phiên bản 1.0 từ 13/8/2012 Và phiên bản mới nhất được cập nhật theo pypi.org là phiên bản 1.2 ngày 21/3/2013

CÀI ĐẶT CÔNG CỤ BBQSQL TRÊN KALI LINUX

Yêu cầu trước khi cài đặt

Các nền tảng được hỗ trợ: Linux, Windows, VMWare

Các phần mềm/môi trường cần thiết:

• Công cụ Pip cài đặt thư viện trên Python

Hướng dẫn cài đặt

Bước 1: Cài đặt Kali Linux

Trên bản cài đặt chuẩn của Kali Linux, với quyền truy cập mạng nhập mục

Nano /etc/apt/sources.list

Hình 2.1 : Import thêm Sources.list Import thêm 2 gói: deb http://http.kali.org/kali kali-rolling main contrib non-free

Sử dụng kho lưu trữ nguồn bằng cách thêm dòng deb-src cho phép tải xuống mã nguồn của các gói nhị phân Điều này hữu ích khi bạn cần yêu cầu nguồn cho một gói cụ thể.

Deb-src http://http.kali.org/kali kali-rolling main contrib non-free

Sau khi Import thêm Sources.list thì thực hiện lưu

Thực hiện apt-get update và apt-get uprade để cập nhật lại

Hình 2.2 : Thực hiện update/ upgrade sau khi import gói vào Source s.list Bước 2: Tiến hành quá trình cài đặt BBQSQL

BBQSQL là một công cụ được phát triển bằng Python, do đó, để sử dụng hiệu quả, người dùng cần cài đặt Python cùng với các gói thư viện tương thích Việc này đảm bảo rằng công cụ hoạt động trơn tru và đầy đủ chức năng.

1 Cài đặt Python Ở đây em sử dụng tool BBQSQL version mới nhất là bản 1.3, nên sử dụng Python phiên bản 3

$sudo apt-get install python3

Hình 2.3 : Cài đặt Python 3 trong Kali Linux

Kiểm tra phiên bản Python đang hoạt động

Hình 2.4 : Xem phiên bản hiện tại của Python trong Kali Linux

Do trên Kali mặc định Python phiên bản 2 Nên khi cài đặt Python phiên bản 3 ta tiến hành đổi bản Python 3 thành mặc định

Câu lệnh: update-alternatives –install /usr/bin/python python /usr/bin/python3 1

Hình 2.5 : Đặt Python3 làm phiên bản mặc định trong Kali Linux

2 Cài đặt Pip (Preferred Installer Program) Để công cụ có thể import được đầy đủ các thư viện của tác giả, cần cài đặt Pip – trình quản lý gói (Module/Package) tiêu chuẩn cho Python Nó cho phép cài đặt và quản lý các gói thư viện chung không phải là một phần của thư viện chuẩn Python

Hình 2.6: Cài đặt Python3-pip

3 Cài đặt thêm Python-gevent và Python – requests

$sudo apt-get install python3-gevent

$sudo apt-get install python3-requests

Hình 2.7: Cài đặt Python-gevent và Python-requests

Sau khi cài đặt xong các công cụ hỗ trợ, tiến hành install tool BBQSQL

Hướng dẫn sử dụng công cụ BBQSQL

2.3.1 Khởi động và các tuỳ chọn

Khi cài đặt xong công cụ BBQSQL, ta vào công cụ bằng lệnh gọi : $bbqsql

Hình 2.9 : Phiên bản BBQSQL Phần đầu tiên xuất hiện là giới thiệu về thông tin của công cụ

Hình 2.10: Giới thiệu về công cụ BBQSQL Ở dưới có danh dách menu tùy chọn

Hình 2.11: Danh sách các tùy chọn (menu)

Bảng 2: Danh sách các tùy chọn trong BBQSQL

1) Setup HTTP Parameters Tham số HTTP

2) Setup BBQSQL Options Các loại BBQSQL

3) Export Config Cấu hình xuất

4) Import Config Cấu hình nhập

5) Run Exploit Chạy các lỗ hổng

6) Help, Credits, and About Các tài liệu về BBQSQL

99) Exit the bbqsql injection toolkit Thoát khỏi tool BBQSQL

Tương tự như các công cụ SQL Injection khác, BBQSQL yêu cầu cung cấp thông tin nhất định để thực hiện các cuộc tấn công thông qua các tham số HTTP Những thông tin này rất quan trọng cho quá trình tấn công.

- Phương thức HTTP ( HTTP method)

- Phương pháp mã hóa (Encoding methods)

- Hành vi chuyển hướng (Redirect_behavior)

Cung cấp các tệp được gửi cùng với yêu cầu Đặt giá trị cho đường dẫn và

BBQSQL sẽ xử lý việc mở / bao gồm tệp

Tiêu đề HTTP sẽ được gửi cùng với các yêu cầu Đây có thể là một chuỗi hoặc một từ điển Ví dụ:

{"User-Agent":"bbqsql"} hoặc là "User-Agent: bbqsql"

Sau khi cung cấp các thông tin yêu cầu rồi thì cần phải chỉ định nơi inject và inject theo cú pháp nào

Từ điển hoặc chuỗi cookie sẽ được gửi cùng với yêu cầu Ví dụ:

Cookies => {"PHPSESSIONID":"123123", ‘FOO’ : ‘BAR${query}’}

Chỉ định một url mà các yêu cầu sẽ được gửi đến

Injection có thể đi bất cứ đâu, ví dụ đường dẫn: url => “http://google.com?vuln=$(query)”

$(query)”: trong dấu ngoặc này là nơi mà chèn cú pháp truy vấn đến lỗ hổng

2.3.2.e) Allow_redirect Đây là một boolean xác định các chuyển hướng http ướt hơn sẽ được thực hiện khi đưa ra yêu cầu

Chỉ định một proxy http sẽ được sử dụng cho yêu cầu làm từ điển Ví dụ:

Chỉ định dữ liệu bài đăng sẽ được gửi cùng với yêu cầu Đây có thể là một chuỗi hoặc một từ điển Ví dụ:

{"input_field":"value"} hoặc là input_field=value Data => “user=foo&pass=${query}”

Chỉ định phương thức cho yêu cầu http Các phương thức hợp lệ là:

'get','options','head','post','put','patch','delete'

Chỉ định nhiều tên người dùng và mật khẩu được sử dụng để xác thực cơ bản http

Hình 2.12 : Các options trong Menu của BBQSQL

Nếu bạn gặp lỗ hổng SQL injection với các điểm bất thường, như một số ký tự không thể nhập hoặc các chức năng như ASCII/CHAR không hoạt động, bạn có thể cần viết tập lệnh với cú pháp tùy chỉnh BBQSQL giúp loại bỏ phần kịch bản, cho phép bạn dán cú pháp truy vấn tùy chỉnh và khai thác dễ dàng Đầu vào truy vấn là nơi bạn xây dựng truy vấn để lấy thông tin từ cơ sở dữ liệu, với giả định rằng bạn đã xác định được SQL injection trên tham số dễ bị tấn công và đã kiểm tra một truy vấn thành công.

In this example, the attacker is attempting to select the database version by exploiting a vulnerable parameter The attack involves using an SQL injection technique that retrieves the version information with a specific character index and compares it against a predefined ASCII value, incorporating a delay function to manipulate the response time.

Cú pháp truy vấn dựa trên các tham số cho BBQSQL biết cách thực hiện cuộc tấn công

Để cuộc tấn công hoạt động, bạn cần cung cấp các thông tin tham số cần thiết Khi bạn đưa những thông tin này vào truy vấn, bbqSQL sẽ xử lý và thực hiện phần còn lại.

Để sử dụng bbqSQL hiệu quả, chúng ta cần lặp lại các hàng trong kết quả Việc áp dụng LIMIT cho phép chúng ta xem một số lượng hàng nhất định, tùy thuộc vào giá trị đã chỉ định.

• ${char_index}: Điều này cho bbqSQL biết ký tự nào từ lựa chọn con để truy vấn

• ${char_val}: Điều này cho bbqSQL biết nơi so sánh kết quả từ lựa chọn con để xác thực kết quả

Comparator trong BBQSQL cho phép bạn yêu cầu so sánh các phản hồi để xác định tính chính xác của kết quả Mặc định, biểu tượng ">" được sử dụng để thực hiện phép so sánh này.

• ${sleep}: Đây là tùy chọn nhưng cho bbqSQL biết nơi chèn số giây để sleep khi thực hiện chèn SQL dựa trên thời gian

Không phải tất cả những người nắm giữ các placeholders đều cần thiết Chẳng hạn, nếu bạn đã phát hiện ra lỗ hổng semi-blind boolean based SQL injection, bạn có thể bỏ qua tham số ${sleep}.

Tên của tệp để xuất kết quả Để trống phần này nếu bạn không muốn xuất thành tệp

BBQSQL sử dụng hai kỹ thuật khi thực hiện một cuộc tấn công Blind SQLi

Kỹ thuật đầu tiên và mặc định được sử dụng là binary_search

Kỹ thuật thứ hai là tìm kiếm tần suất, sử dụng phân tích ngôn ngữ tiếng Anh để xác định tần suất xuất hiện của các chữ cái.

Phương pháp tìm kiếm này hoạt động hiệu quả và nhanh chóng với dữ liệu không phải entropi, tuy nhiên, nó có thể gặp khó khăn và trở nên chậm chạp khi áp dụng cho dữ liệu không phải tiếng Anh hoặc dữ liệu bị xáo trộn.

Ta có thể chỉ định một trong hai binary_searchhoặc frequency_searchlàm giá trị cho tham số này

2.3.3.d) comparison_attr Điều này chỉ định loại SQL injection mà bạn đã phát hiện ra Tại đây, bạn có thể đặt thuộc tính nào của phản hồi http bbqsql sẽ xem xét để xác định true / false

Bạn có thể chỉ định: status_code, url, time, size, text, content, encoding, cookies, headers, hoặc history

Nếu bạn đã xác định rằng việc tiêm SQL dẫn đến một mã trạng thái máy chủ khác, hãy chú ý đến 'status_code' Nếu có cookie khác, hãy đặt 'cookie' Nếu kích thước phản hồi khác nhau, hãy đặt 'kích thước' Bạn đã nắm được ý chính.

Concurrency trong Python sử dụng thư viện gevent hoạt động tương tự như phân luồng, cho phép kiểm soát lượng đồng thời trong các cuộc tấn công Việc điều chỉnh này giúp tối ưu hóa số lượng yêu cầu và rút ngắn thời gian tấn công Đối với các máy chủ web hiệu suất cao như nginx, chúng ta có thể nâng mức đồng thời lên 75, trong khi giá trị mặc định là 30.

Sau khi thiết lập cuộc tấn công trong giao diện người dùng, bạn có thể xuất tệp cấu hình dễ dàng thông qua tùy chọn có sẵn khi chạy công cụ Tệp cấu hình được xuất ra sử dụng ConfigParser, giúp người dùng dễ dàng đọc và hiểu Dưới đây là ví dụ về tệp cấu hình.

`[Request Config] url = http://example.com/sqlivuln/index.php?username=user1&password=secret${injecti on} method = GET

Câu truy vấn HTTP Config này cho phép thực hiện so sánh nhị phân với các thuộc tính kích thước, đồng thời hỗ trợ 30 kết nối đồng thời Điều này rất hữu ích cho việc tiếp tục một cuộc tấn công hoặc điều chỉnh truy vấn mà không cần cấu hình lại mọi tùy chọn phức tạp.

Bạn có thể nhập cấu hình bằng cách sử dụng dòng lệnh hoặc giao diện người dùng Để nhập cấu hình từ dòng lệnh, hãy chạy lệnh bbqsql với tùy chọn: bbqsql -c config_file.

BÀI LAB DEMO VÀ KỊCH BẢN TẤN CÔNG

Cách thức tấn công

a) Sử dụng câu query để inject vào HTTP Param trong BBQSQL Options

Vào trang https://bible-history.com

Copy đường dẫn và thay đổi vào trong value: https://bible-history.com/subcat.php?id

Hình 3.1 Thay đổi đường dẫn trong BBQSQL Options

Sau đó chọn mục Help, Credits, and About

Hình 3.2 Vào trang Help b) Sử dụng kĩ thuật binary_search

So sánh BBQSQL với SQL Map

Giống nhau Đều là công cụ tấn công cho Blind SQLi nói chung và

Uu điểm - Đây là một công cụ rất mạnh , có thế quét các loại tấn công, đặc biệt là 3 dạng tấn công điển hình SQL injection

- Được phát triển và cập nhật

- Được các chuyên gia bảo mật khuyên dùng

- Dễ kết hợp với các tools khác nhau

- Rất nhanh trong việc khai thác lỗ hổng SQL Injection

- Có thể tự tạo truy vấn tùy chỉnh và cú pháp inject

- Có thể tùy chỉnh thư viện( do được viết bằng Python)

- Cơ sở dữ liệu bất khả tri

Nhược điểm của công cụ này là việc chỉ hỗ trợ thao tác dòng lệnh, điều này có thể gây khó khăn cho những người không quen thuộc với môi trường dòng lệnh trong việc tìm hiểu và sử dụng công cụ.

- Khi không có sẵn ở công cụ tự động, phải tạo thêm tùy chỉnh => mất thời gian

- Việc khai thác bằng BBQSQL rất khó để khai thác

Ngày đăng: 08/01/2022, 10:52

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1] Bisson, Marilyn. "https://blog.eldernode.com/introducing-and-install-bbqsql-on-kali/." n.d. blog.eldernode.com/ Sách, tạp chí
Tiêu đề: https://blog.eldernode.com/introducing-and-install-bbqsql-on-kali/
[2] Brown, Korbin. "https://linuxconfig.org/how-to-install-pip-on-kali-linux." 2021. inuxconfig.org Sách, tạp chí
Tiêu đề: https://linuxconfig.org/how-to-install-pip-on-kali-linux
[3] Fortuna, Andrea. "https://www.andreafortuna.org/2016/09/28/bbqsql-a-framework-for-blind-sql-injections/." 2016. andreafortuna.org Sách, tạp chí
Tiêu đề: https://www.andreafortuna.org/2016/09/28/bbqsql-a-framework-for-blind-sql-injections/
[4] iam_surve. "https://iamsurvehacking.blogspot.com/2020/01/bbqsqlvulnerability-analysis-tool.html." 2020. iamsurvehacking.blogspot.com Sách, tạp chí
Tiêu đề: https://iamsurvehacking.blogspot.com/2020/01/bbqsqlvulnerability-analysis-tool.html
[5] ITSTAR. "https://itstar.edu.vn/An-ninh-mang/tin-tuc-33/GIOI-THIEU-SQL-INJECTION.html." 2019. itstar.edu.vn Sách, tạp chí
Tiêu đề: https://itstar.edu.vn/An-ninh-mang/tin-tuc-33/GIOI-THIEU-SQL-INJECTION.html
[6] Javatpoint. "https://www.javatpoint.com/kali-linux-vulnerability-analysis-tools." n.d. javatpoint.com.[7] Kar, Debabrata."https://www.researchgate.net/publication/307965380_SQLiDDS_SQL_injection_detection_using_document_similarity_measure." 2016. esearchgate.net Sách, tạp chí
Tiêu đề: https://www.javatpoint.com/kali-linux-vulnerability-analysis-tools." n.d. javatpoint.com. [7] Kar, Debabrata. "https://www.researchgate.net/publication/307965380_SQLiDDS_SQL_injection_detection_using_document_similarity_measure
[8] Kar, Debabrata ."SQLiDDS: SQL injection detection using document similarity measure." Journal of Computer Security (2016) Sách, tạp chí
Tiêu đề: SQLiDDS: SQL injection detection using document similarity measure
[9] Kingthorin. "https://owasp.org/www-community/attacks/SQL_Injection." n.d. owasp.org.[10] ktflash."https://ktflash.gitbooks.io/ceh_v9/content/132_types_of_sql_injection.html." n.d.ktflash.gitbooks.io/ceh_v9 Sách, tạp chí
Tiêu đề: https://owasp.org/www-community/attacks/SQL_Injection." n.d. owasp.org. [10] ktflash. "https://ktflash.gitbooks.io/ceh_v9/content/132_types_of_sql_injection.html
[11] Matthewjthomas. "https://github.com/CiscoCXSecurity/bbqsql." 2019. github.com Sách, tạp chí
Tiêu đề: https://github.com/CiscoCXSecurity/bbqsql
[12] Owasp. "https://owasp.org/www-community/attacks/SQL_Injection." n.d. owasp.org Sách, tạp chí
Tiêu đề: https://owasp.org/www-community/attacks/SQL_Injection
[13] Owasp. "https://owasp.org/www-community/attacks/SQL_Injection_Bypassing_WAF." n.d. owasp.org Sách, tạp chí
Tiêu đề: https://owasp.org/www-community/attacks/SQL_Injection_Bypassing_WAF

HÌNH ẢNH LIÊN QUAN

Hình 1.1. Danh sách top 10 lỗ hổng bảo mật theo OWASP năm 2021 - Bài tập lớn môn an toàn mạng (1)
Hình 1.1. Danh sách top 10 lỗ hổng bảo mật theo OWASP năm 2021 (Trang 10)
Bảng 1: Tiêu chuẩn SQL đã trải qua một số phiên bản - Bài tập lớn môn an toàn mạng (1)
Bảng 1 Tiêu chuẩn SQL đã trải qua một số phiên bản (Trang 11)
Hình 1.2. Phân loại các kiểu tấn công SQL Injection - Bài tập lớn môn an toàn mạng (1)
Hình 1.2. Phân loại các kiểu tấn công SQL Injection (Trang 12)
Hình 1.3. Thông tin tác giả và bên cấp giấy phép công cụ BBQSQL - Bài tập lớn môn an toàn mạng (1)
Hình 1.3. Thông tin tác giả và bên cấp giấy phép công cụ BBQSQL (Trang 16)
Hình 1.4. Các phiên bản của BBQSQL  Giai đoạn bắt đầu phiên bản 1.0 từ 13/8/2012. Và phiên bản mới nhất được cập nhật theo - Bài tập lớn môn an toàn mạng (1)
Hình 1.4. Các phiên bản của BBQSQL Giai đoạn bắt đầu phiên bản 1.0 từ 13/8/2012. Và phiên bản mới nhất được cập nhật theo (Trang 17)
Hình 2.1 : Import thêm Sources.list   Import thêm 2 gói: - Bài tập lớn môn an toàn mạng (1)
Hình 2.1 Import thêm Sources.list Import thêm 2 gói: (Trang 19)
Hình 2.2 : Thực hiện update/ upgrade sau khi import gói vào Source s.list  Bước 2: Tiến hành quá trình cài đặt BBQSQL - Bài tập lớn môn an toàn mạng (1)
Hình 2.2 Thực hiện update/ upgrade sau khi import gói vào Source s.list Bước 2: Tiến hành quá trình cài đặt BBQSQL (Trang 20)
Hình 2.3 : Cài đặt Python 3 trong Kali Linux - Bài tập lớn môn an toàn mạng (1)
Hình 2.3 Cài đặt Python 3 trong Kali Linux (Trang 20)
Hình 2.7: Cài đặt Python-gevent và Python-requests - Bài tập lớn môn an toàn mạng (1)
Hình 2.7 Cài đặt Python-gevent và Python-requests (Trang 22)
Hình 2.9 : Phiên bản BBQSQL  Phần đầu tiên xuất hiện là giới thiệu về thông tin của công cụ - Bài tập lớn môn an toàn mạng (1)
Hình 2.9 Phiên bản BBQSQL Phần đầu tiên xuất hiện là giới thiệu về thông tin của công cụ (Trang 23)
Hình 2.10: Giới thiệu về công cụ BBQSQL - Bài tập lớn môn an toàn mạng (1)
Hình 2.10 Giới thiệu về công cụ BBQSQL (Trang 23)
Hình 2.11: Danh sách các tùy chọn (menu) - Bài tập lớn môn an toàn mạng (1)
Hình 2.11 Danh sách các tùy chọn (menu) (Trang 24)
Hình 2.12 : Các options trong Menu của BBQSQL - Bài tập lớn môn an toàn mạng (1)
Hình 2.12 Các options trong Menu của BBQSQL (Trang 26)
Hình 3.1.  Thay đổi đường dẫn trong BBQSQL Options - Bài tập lớn môn an toàn mạng (1)
Hình 3.1. Thay đổi đường dẫn trong BBQSQL Options (Trang 32)

TỪ KHÓA LIÊN QUAN

w