API Penetration Testing with OWASP 2017 Test Cases

Thảo luận trong 'Audit/Pentest Security' bắt đầu bởi krone, 10/03/19, 09:03 PM.

  1. krone

    krone Moderator Thành viên BQT

    Tham gia: 26/07/16, 03:07 PM
    Bài viết: 252
    Đã được thích: 130
    Điểm thành tích:
    43
    Giới thiệu tóm tắt về API Pentration Testing

    API Pentration Testing là một trong những loại hình attack surfaces, là nơi mà những kẻ tấn công có thể sử dụng để đạt được thêm quyền truy cập vào ứng dụng hoặc máy chủ. Thông qua quá trình tìm hiểu, bài viết này đề cập đến những vấn đề cơ bản trong quá trình kiểm thử API (API Pentration Testing).

    Về cơ bản bài viết này sẽ nói lên một số điều dưới đây:
    1. API Pentest là gì ?
    2. Cấu trúc của các request và response từ API.
    3. Phương pháp, các loại công cụ và các test case dành cho API Pen testing.
    4. Tổng quan ngắn gọn về API Pentration Testing
    Đi sâu hơn về API Pentration Testing
    API Pentration Testing tương đối sẽ giống với Web appication pentesting. Bởi vì các phương thức kiểm tra hình thức này vẫn tương tự như các ứng dụng web khác với một số thay đổi nhỏ trong cuộc tấn công, do đó chúng tôi cần tìm kiếm một số lỗ hổng tiêu chuẩn mà chúng tôi tìm kiếm cho ứng dụng web, chẳng hạn như Top 10 OWASP 2017: Injection, Access Control, information disclosure, IDOR XSS, và một số hình thức khác.

    API Security Authentication Basics:

    API Authentication and Session Management.

    Khi bắt đầu kiểm tra các API, chúng ta thường sẽ thấy API authentication session management được xử lý. Các lập trình viên thường sử dụng HTTP Basic, Digest Authentication, và JSON Web Token Introduction. Ngày nay, OAuth là phương thức dễ thực hiện hơn để phát triển Authorisation, authentication hay session management. OAuth cung cấp cho bạn một số token có thời hạn (Expirable), nó khiến cho attacker khó khăn hơn trong việc tìm ra các điểm yếu trong Authentication Module. Vậy làm cách nào để xác định các token authentication trong API?:

    upload_2019-3-10_20-39-57.png

    upload_2019-3-10_20-40-14.png

    Design or Structure of API
    Các application hiện đại được phát triển sử dụng APi để gọi các micro-services hoặc thực hiện API để giám sát các hành vi của người dùng. Thiết kế hay kiến trúc của một API thường được mở sẵn cho các người dùng ứng dụng hoặc khách hàng. Vì tính chất này mà các attackers có thể hiểu rõ hơn về kiến trúc của API và sử dụng chúng đề thực hiện các cuộc tấn công.

    REST API sử dụng các yêu cầu xử lý khác nhau, chẳng hạn như các hành động GET, POST, PUT, DELETE, HEAD và PATCH. Các attacker có thể sửa đổi các request header để lấy thêm các thông tin về API và sử dụng chúng để tạo ra các exploition gây ảnh hướng đến ứng dụng hoặc hệ thống máy chủ. Dưới đây là một ví dụ về yêu cầu xử lý và cũng để mắt đến máy chủ lặp lại các yêu cầu đã thực hiện:

    upload_2019-3-10_20-49-9.png
    POST Processing Request with Body Message

    Các công cụ được đề xuất để Pentest API
    Các công cụ dưới đây được sử dụng trong quá trình kiểm tra thâm nhập các ứng dụng API. Các công cụ này được khuyến nghị để kiểm tra thâm nhập thủ công và cũng có các công cụ có sẵn miễn phí qua internet:
    1. Swagger-Editor
    2. Postman
    3. BurpSuite
    Theo Google: Swagger hỗ trợ phát triển trong toàn bộ vòng đời API, từ thiết kế và tài liệu, đến thử nghiệm và triển khai.
    Mục đích của Swager ở đây để chuyển đổi tài liệu OpenAPI sang các định dạng JSON hoặc YAML và Swager cũng giúp bạn tạo các yêu cầu của từng điểm cuối API. Tiếp tục nhập tệp Swager cho Postman. Khi chúng ta có thông tin đầy đủ về Target, yêu cầu, sau đó chúng tôi có thể sửa đổi Host trong Postman và Swagger. Thiết lập này sẽ giúp kiểm tra thâm nhập API.

    Làm cách nào để tìm lỗ hổng trong API?
    Tìm hiểu attack surface sử dụng tài liệu được cung cấp bởi các khách hàng. Hướng dẫn cho các lập trình viên cung cấp thêm chi tiết về API. Nếu tài liệu không được cung cấp hoặc API được triển khai trong một máy chủ đang chạy, chúng ta cần nắm bắt tất cả các yêu cầu API bằng proxy. Xác định kỹ lưỡng POST / GET hoặc các phương thức khác trong từng request API. Sau khi hoàn thành giai đoạn tìm hiểu, hãy viết ra các trường hợp kiểm tra bảo mật có thể. Dưới đây là các trường hợp kiểm tra cơ bản cho các lỗ hổng có độ ưu tiên tiên thấp.

    OWASP 2017 Test cases:
    1. Quan sát từng tham số trong mỗi mô-đun API, hiểu cách dữ liệu được truyền từ source đến destination. Cố gắng làm việc với các tham số bằng cách giả mạo chúng.
    2. Xác định xem API có bất kỳ token ủy quyền nào không nếu nó đang xóa token ủy quyền đó và xem phản hồi của ứng dụng. Trong một số trường hợp, nếu ủy quyền không được triển khai chính xác thì API có thể cung cấp cho bạn quyền truy cập vào các assets bị cấm của ứng dụng.
    3. Phân tích và kiểm tra từng mô-đun với một cấp độ truy cập khác nhau của người dùng: administrator, moderator, normal user.
    4. Kiểm tra xem các mô-đun quản trị có thể được truy cập thông qua người dùng bị hạn chế.
    5. Xác định các tham số có thể dễ bị khai thác đối với các lỗ hổng loại "IDOR", chẳng hạn như id=1234 và cũng xem các cookie để thao tác Id.
    6. Kiểm tra lỗ hổng "Injection" bằng cách chèn các ký tự đặc biệt vào tất cả các tham số trong yêu cầu và kiểm tra phản hồi từ máy chủ. Nếu bạn tìm thấy bất kỳ dấu vết ngăn xếp nào thì hãy sử dụng thông tin để khai thác thêm.
     
    Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
    Sugi_b3o thích bài này.