Tấn công XXE Injection [Part 1]

XXE Injection là một điểm yếu đứng top 04/10 Top 10 Web Application Security Risks của OWASP. XXE Injection cho phép kẻ tấn công đạt được các mục đích sau:

  • Khai thác XXE Injection để lấy dữ liệu tập tin (FILE DISCLOSURE)
  • Khai thác XXE Injection để thực hiện tấn công SSRF(Server-side request forgery)
  • Tấn công DENIAL OF SERVICE (một số trường hợp)
  • Thực hiện Access Control Bypass hoặc có thể kết hợp với lỗi khác để RCE…

XXE viết tắt của XML external entity. Do đó chúng ta tạm thời chia hai mục để phân tích, let’s start:

XML là gì?

XML được dịch nôm ra 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 và cả người và “máy” đều có thể đọc được.

Ví dụ về XML:

<?xml version="1.0" encoding="UTF-8"?>
  <application>
      <title>eMB</title>
      <company>MB</company>
      <year>2021</year>
      <price>40000000</price>
  </application>

Dòng đầu tiên là Khai báo XML (XML declaration), nó nên có chứ không bắt buộc phải có. Ở phần thân, cứ một cặp thẻ mở-đóng trong XML tạo thành một phần tử, và các phần tử này lồng nhau tạo nên cấu trúc dạng cây. Đương nhiên sẽ có những quy định về cú pháp, cách khai báo, cách lồng các phần tử, thêm thuộc tính cho các thẻ…, nhưng đó không phải là chủ đề chính của bài viết này.

External entity là gì?

Entity: là một khái niệm có thể được sử dụng như một kiểu tham chiếu đến dữ liệu, cho phép thay thế một ký tự đặc biệt, một khối văn bản hay thậm chí toàn bộ nội dung một file vào trong tài liệu xml. Một số kiểu entity: character, parameter, named (internal), external…

External entity: entity tham chiếu đến nội dung một file bên ngoài tài liệu xml

Ví dụ external entity:

<!DOCTYPE order SYSTEM "order.dtd">
<!DOCTYPE ran SYSTEM "/dev/random">
<!DOCTYPE request [
     <!ENTITY include SYSTEM "c:\secret.txt">
]>

=> Chốt: XXE Injection là lỗi hacker tận dụng các Entity, External Entity để buộc các XML parser (trình đọc cú pháp XML, mà ở đây là ứng dụng bị tấn công ấy) phải xử lý các tác vụ nguy hiểm như đọc file, gán biến… để trả về kết quả cho kẻ tấn công

Phần 02 tôi sẽ trình bày các demo và các kiểu, phương thức tấn công XXE Injection sau nhé!

Tham khảo thêm tại:

Tìm hiểu và khai thác lỗi XXE (viblo.asia)

Đưa vào thực thể bên ngoài XML (XXE) – Trang Chủ (itzone.com.vn)

XXE injection – Nguyễn Tăng Hưng (slideshare.net)

Published by Nhat Truong

Hi

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: