Upload
security-bootcamp
View
386
Download
2
Embed Size (px)
Citation preview
XXE InjectionTấn công & Phòng thủ
Bootcamp - 10/2014Nguyễn Tăng Hưng
Information Security AnalystFPT Telecom
Nội dung trình bày
Giới thiệu XML External Entity (XXE) - 101 XXE Attack Kỹ thuật phát hiện lỗi Kỹ thuật phòng tránh Tham khảo
Giới thiệu
Lịch sử phát hiện Nguồn: Trên Bugtraq 10/2002: XXE:
http://www.securityfocus.com/archive/1/297714/2002-10-27/2002-11-02/0
Không mới, nhưng......
Đến năm 2014,.....
Đến năm 2014,...
Đến năm 2014,...
Thống kê từ CVE
Nguồn: PHP Conference Japan 2013 - Speaker: Kousuke Ebihara
Thống kê từ OSVDB
Từ khóa XXE
XML External Entity 101
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>
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"> <!ENTITY f "&n; Nguyen"> <!ENTITY format SYSTEM "doc.dtd">
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">
]>
XXE Attack
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
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">
]>
<request>
<desc>&here;</desc>
....
</request>
Nguy cơ của XXE Attack
Information Exposed Port scanning DOS SSRF ...
Demo 1 - Một số nguy cơ XXE
Kỹ thuật phát hiện lỗi
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"
Demo 2 - Error based XXE Injection
ini_set('display_errors', 'Off'); error_reporting(0);
Kết thúc ????
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 ...
Nguồn: Blind XXE injections - Vladimir Vorontsov - Hội nghị: HackPra, Germany, 05/2012
Blind XXE Injection (tt)
Kỹ thuật 2: Timed - based Ý tưởng:
Còn nhớ ví dụ DOS ở trên ?
Demo 3 - Time based XXE
Demo 4 - Phối hợp với Burp Suite
Kỹ thuật phòng tránh
Update, update & update libxml2 -> version 2.9.0
/* https://git.gnome.org/browse/libxml2/commit/?id=8915c */ PHP -> version 5.3.23
/* https://github.com/php/php-src/commit/8e76d0404b7f664ee6719fd98f0483f0ac4669d6*/
Net Framework -> version 4 Java
/* https://www.owasp.org/index.php/XML_External_Entity_(XXE)_Processing */
Thiết lập cấu hình ngăn chặn việc load các entity từ bên ngoài White-list các protocol & domain được chấp nhận trong XXE
Tham khảo
http://www.securityfocus.com/archive/1/297714 https://www.owasp.org/index.php/
XML_External_Entity_(XXE)_Processing Introduction of XXE attack and XML Bomb with
PHP - Kousuke Ebihara - PHPCon Japan, 2013 Blind XXE injections - HackPra, Germany,
Bochum, 05/2012 Google :-)