Tìm hiểu về XXE ~ XML external entity injection

 I.     What is XML external entity injection?

-       XXE là một lỗ hổng web cho phép attacker can thiệp vào việc xử lý dữ liệu XML của ứng dụng. Nó thường cho phép attacker xem các files trong sever hệ thống và tương tác với bất kỳ BE hoặc hệ thống bên ngoài mà ứng dụng mà nó có thể truy cập.

-       Trong một vài trường hợp, attacker có thể leo thang 1 cuộc tấn công XXE thành việc thỏa hiệp với BE bằng cách tận dụng XXE để thực hiện SSRF.

II.   How do XXE vulnerablities arise?

-       Một vài ứng dụng sử dụng XML để chuyển dữ liệu giữ browser và server. Các ứng dụng này hầu như (virtually) luôn luôn sử dụng một thư viện chuẩn hoặc nền tẳng API để xử lý dữ liệu XML trên server. Các lỗ hổng XXE xuất hiện do đặc tả XML chứa các tính năng nguy hiểm khác nhau và trình phân tích cú pháp tiêu chuẩn vẫn hỗ trợ các tính năng năng này ngay cả khi chúng không được sử dụng một các bình thường.


2.    What is XML?

-       XML là là ngôn ngữ đánh dấu mở rộng, được thiết kế với mục đích lưu trữ, truyền dữ liệu sao cho cả người và máy đều có thể đọc được.

-       Bản chất là sử dụng các thẻ xác định cấu trúc tài liệu cũng như cách tài liệu được lưu trữ, đọc và vận chuyển

3.    What are XML entities?

a.     DTD

-       Document type definitions: dùng để định nghĩa loại tài liệu thông qua việc xác định cấu trúc cũng như chỉ ra format hợp lệ của các phần tử và thuộc tính trong file xml.

b.    DTD entity

c.     External Entity

i.      Denial of service

ii.    File Disclosure

iii.  SSRF

III. What are types of  XXE attacks

-       Có rất nhiều kiểu tấn công XXE khác nhau như:

·     Exploit XXE to retrieve files: Khai thác vào những nơi mà thực thể bên ngoài được định nghĩa, chứa nội dung của các file và trả về trong response.

·     Exploiting XXE to perform SSRF attacks: Khai thác vào nơi mà thực thể ngoại được định nghĩa dựa trên URL tới một hệ thống BE

·     Exploiting blind XXE exfiltrate data out-of-band: khai thác vào nơi có các dữ liệu nhạy cảm được vận chuyển từ server tới 1 hệ thống mà attacker điều khiển

·     Exploiting blind XXE to retrieve data via error messages: Attacker có thể kích hoạt một thông báo lỗi chứa thông tin nhạy cảm.

IV.         Exploiting XXE to retrieve files

-       Để thực hiện tấn công XXE truy vấn một file bất kỳ từ filesystem của server, cần phải thay đổi XML theo 2 cách:

·         Introduce (or edit) a DOCTYPE element that defines an external entity containing the path to the file.

·      Edit a data value in the XML that is returned in the application's response, to make use of the defined external entity.

*   Lab 1: Exploiting XXE using external entities to retrieve files

Ø Mô tả bài lab: Trong bài lab này có một chức năng “Check Stock”  chứa chức XML input và trả về giá trị trong response. Nhiệm vụ vủa bài này là truy cập được đến /etc/passwd.

Ø Các bước thực hiện:

Ø Thực hiện chức năng checkstock ta được POST request chưa XML. Thực hiện chèn payload <!DOCTYPE foo [ <!ENTITY xxe SYSTEM "file:///etc/passwd"> ]>  vào sau thẻ xml và đổi external entity thành xxe

Ø Và đây là response trả vể => Done!!!

P Anh ơi em chưa hiểu cái payload <!DOCTYPE foo [ <!ENTITY xxe SYSTEM "file:///etc/passwd"> ]>  Anh giải thích cụ thể cho em với ạ !!!

V.   Exploiting XXE to perform SSRF attacks

-       Để khai thác XXE cho SSRF, cần phải định nghĩa một external XML entity sử dụng URL mà bạn muốn đi tới và sử dụng một entitry đã được định nghĩa với giá trị dữ liệu. Sau đó xem response từ URL trong ứng dụng đó và tương tác hai chiều với hệ thống BE. Nếu không bạn có thể thực hiện  blind SSRF attacks.

*   Lab2: Khai thác XXE đẻ thực hiện SSRF attacks

Ø Mô tả bài lab: Server đang chạy một endpoint ảo (EC2 metadata) tại url mặc định http://169.254.169.254/ . Endpoint này có thể sử dụng để truy vấn dữ liệu instance, một trong số chúng có thể là thông tin nhạy cảm. Để làm bài lab này, hãy khai thác lỗ hổng XXE để thực hiện một cuộc tấn công SSRF để thu được secret access key của server từ EC2 metadata endpoint

P Em có tìm hiểu nhưng chưa rõ lắm về cái EC2 metadata endpoint, anh có thể giải thích cho em được không ạ !

Ø Thực hiện bài lab:

VI.         Blind XXE vulnerabilities

-       Rất nhiều thể hiện của XXE không thể nhìn thấy: Tức là các ứng dụng không trả về giá trị của bất kì khai báo external entities trong response, vì vậy việc truy vấn trực tiếp server-side là không khả thi.

-       Blind XXE vẫn có thể nhận dạng và khai thác, nhưng với các kĩ thuật cao hơn. Bạn có thể sử dụng out – of – band để tìm lỗ hổng và khai thác chúng để lấy exfiltrate data (dữ liệu trái phép).

·      Cũng có thể kích hoạt các lỗi cú pháp XMl để có thể đọc các thông tin nhạy cảm có thể có trong thông báo lỗi.

VII.       Finding hidden attack surface for XXE injection

1.    XInclude attacks

2.    XXE attacks via file upload

3.    XXE attacks via modified content type

VIII.     How to find and test for XXE vulnerabilities

How to pr

Post a Comment

Previous Post Next Post