11. XML External Entity
XML (Extensible Markup Language): là một
tiêu chuẩn để trao đổi dữ liệu có cấu trúc
theo định dạng text.
Ví dụ:
<?xml version="1.0" encoding="UTF-8"?>
<user>
<userid>0</userid>
<username>Hung</username>
<lastname>Nguyen</lastname>
<job>troller</job>
</user>
12. XML External Entity
Entity: 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,
named (internal), external, parameter.
Ví dụ:
- &s; -> &
- < -> <
- > -> >
- A -> A
- <!ENTITY n "Hung">
13. XML External Entity
External entity: entity tham chiếu đến nội
dung một file bên ngoài tài liệu xml
Ví dụ:
<!DOCTYPE order SYSTEM "order.dtd">
<!DOCTYPE ran SYSTEM "/dev/random">
<!DOCTYPE request [
<!ENTITY include SYSTEM "c:boot.ini">
]>
15. Các bước trong quá trình xác định
External Entity
Phân giải
- XML
- DOCTYPE
- Các khai báo Entities
Resolve các external entities
- Thư viện xml
- Entity loader từ framework
16. XXE Attack
Khi DTD (Document Type Definition) được
xử lý, ứng dụng có thể đọc hoặc nhúng file
vào trong tài liệu XML. Nếu có khả năng điều
khiển được nội dung của DTD, khi đó
attacker có thể chỉ định truy xuất các tài
nguyên nhạy cảm hoặc thực hiện các kiểu
khai thác khác.
Ví dụ:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE request [
<!ENTITY here SYSTEM "file:///etc/passwd">
]>
17. Nguy cơ của XXE Attack
Information Exposed
Port scanning
DOS
SSRF
...
20. Error based XXE Injection
Ý tưởng: ' ; " ; < ; <!--
Từ khóa:
- "parser error"
- "failed to load external entity"
- "XMLParserError"
- "Unknown language DATA"
- "Login DATA are not valid"
- "Password for user DATA does not match"
24. Blind XXE Injection
Kỹ thuật 1:
Ý tưởng:
- Sử dụng cơ chế thẩm tra DTD & XSD
- Thu thập trạng thái của kết quả thẩm tra (dựa
vào kết quả hay lỗi)
Hạn chế:
- Không phải ứng dụng nào cũng hiện thực việc
thẩm tra trước khi xử lý
- Không áp dụng được trên PHP trong một số
trường hợp
- ...
25. Blind XXE Injection (tt)
Kỹ thuật 2: Timed - based
Ý tưởng:
- Còn nhớ ví dụ DOS ở trên ?