xxe injection - nguyễn tăng hưng
DESCRIPTION
XXE InjectionTRANSCRIPT
![Page 1: XXE injection - Nguyễn Tăng Hưng](https://reader035.vdocuments.net/reader035/viewer/2022062308/558fd7f91a28ab4c368b45b4/html5/thumbnails/1.jpg)
XXE InjectionTấn công & Phòng thủ
Bootcamp - 10/2014Nguyễn Tăng Hưng
Information Security AnalystFPT Telecom
![Page 2: XXE injection - Nguyễn Tăng Hưng](https://reader035.vdocuments.net/reader035/viewer/2022062308/558fd7f91a28ab4c368b45b4/html5/thumbnails/2.jpg)
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
![Page 3: XXE injection - Nguyễn Tăng Hưng](https://reader035.vdocuments.net/reader035/viewer/2022062308/558fd7f91a28ab4c368b45b4/html5/thumbnails/3.jpg)
Giới thiệu
![Page 4: XXE injection - Nguyễn Tăng Hưng](https://reader035.vdocuments.net/reader035/viewer/2022062308/558fd7f91a28ab4c368b45b4/html5/thumbnails/4.jpg)
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......
![Page 5: XXE injection - Nguyễn Tăng Hưng](https://reader035.vdocuments.net/reader035/viewer/2022062308/558fd7f91a28ab4c368b45b4/html5/thumbnails/5.jpg)
Đến năm 2014,.....
![Page 6: XXE injection - Nguyễn Tăng Hưng](https://reader035.vdocuments.net/reader035/viewer/2022062308/558fd7f91a28ab4c368b45b4/html5/thumbnails/6.jpg)
Đến năm 2014,...
![Page 7: XXE injection - Nguyễn Tăng Hưng](https://reader035.vdocuments.net/reader035/viewer/2022062308/558fd7f91a28ab4c368b45b4/html5/thumbnails/7.jpg)
Đến năm 2014,...
![Page 8: XXE injection - Nguyễn Tăng Hưng](https://reader035.vdocuments.net/reader035/viewer/2022062308/558fd7f91a28ab4c368b45b4/html5/thumbnails/8.jpg)
Thống kê từ CVE
Nguồn: PHP Conference Japan 2013 - Speaker: Kousuke Ebihara
![Page 9: XXE injection - Nguyễn Tăng Hưng](https://reader035.vdocuments.net/reader035/viewer/2022062308/558fd7f91a28ab4c368b45b4/html5/thumbnails/9.jpg)
Thống kê từ OSVDB
Từ khóa XXE
![Page 10: XXE injection - Nguyễn Tăng Hưng](https://reader035.vdocuments.net/reader035/viewer/2022062308/558fd7f91a28ab4c368b45b4/html5/thumbnails/10.jpg)
XML External Entity 101
![Page 11: XXE injection - Nguyễn Tăng Hưng](https://reader035.vdocuments.net/reader035/viewer/2022062308/558fd7f91a28ab4c368b45b4/html5/thumbnails/11.jpg)
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>
![Page 12: XXE injection - Nguyễn Tăng Hưng](https://reader035.vdocuments.net/reader035/viewer/2022062308/558fd7f91a28ab4c368b45b4/html5/thumbnails/12.jpg)
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">
![Page 13: XXE injection - Nguyễn Tăng Hưng](https://reader035.vdocuments.net/reader035/viewer/2022062308/558fd7f91a28ab4c368b45b4/html5/thumbnails/13.jpg)
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">
]>
![Page 14: XXE injection - Nguyễn Tăng Hưng](https://reader035.vdocuments.net/reader035/viewer/2022062308/558fd7f91a28ab4c368b45b4/html5/thumbnails/14.jpg)
XXE Attack
![Page 15: XXE injection - Nguyễn Tăng Hưng](https://reader035.vdocuments.net/reader035/viewer/2022062308/558fd7f91a28ab4c368b45b4/html5/thumbnails/15.jpg)
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
![Page 16: XXE injection - Nguyễn Tăng Hưng](https://reader035.vdocuments.net/reader035/viewer/2022062308/558fd7f91a28ab4c368b45b4/html5/thumbnails/16.jpg)
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>
![Page 17: XXE injection - Nguyễn Tăng Hưng](https://reader035.vdocuments.net/reader035/viewer/2022062308/558fd7f91a28ab4c368b45b4/html5/thumbnails/17.jpg)
Nguy cơ của XXE Attack
Information Exposed Port scanning DOS SSRF ...
![Page 18: XXE injection - Nguyễn Tăng Hưng](https://reader035.vdocuments.net/reader035/viewer/2022062308/558fd7f91a28ab4c368b45b4/html5/thumbnails/18.jpg)
Demo 1 - Một số nguy cơ XXE
![Page 19: XXE injection - Nguyễn Tăng Hưng](https://reader035.vdocuments.net/reader035/viewer/2022062308/558fd7f91a28ab4c368b45b4/html5/thumbnails/19.jpg)
Kỹ thuật phát hiện lỗi
![Page 20: XXE injection - Nguyễn Tăng Hưng](https://reader035.vdocuments.net/reader035/viewer/2022062308/558fd7f91a28ab4c368b45b4/html5/thumbnails/20.jpg)
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"
![Page 21: XXE injection - Nguyễn Tăng Hưng](https://reader035.vdocuments.net/reader035/viewer/2022062308/558fd7f91a28ab4c368b45b4/html5/thumbnails/21.jpg)
Demo 2 - Error based XXE Injection
![Page 22: XXE injection - Nguyễn Tăng Hưng](https://reader035.vdocuments.net/reader035/viewer/2022062308/558fd7f91a28ab4c368b45b4/html5/thumbnails/22.jpg)
ini_set('display_errors', 'Off'); error_reporting(0);
![Page 23: XXE injection - Nguyễn Tăng Hưng](https://reader035.vdocuments.net/reader035/viewer/2022062308/558fd7f91a28ab4c368b45b4/html5/thumbnails/23.jpg)
Kết thúc ????
![Page 24: XXE injection - Nguyễn Tăng Hưng](https://reader035.vdocuments.net/reader035/viewer/2022062308/558fd7f91a28ab4c368b45b4/html5/thumbnails/24.jpg)
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
![Page 25: XXE injection - Nguyễn Tăng Hưng](https://reader035.vdocuments.net/reader035/viewer/2022062308/558fd7f91a28ab4c368b45b4/html5/thumbnails/25.jpg)
Blind XXE Injection (tt)
Kỹ thuật 2: Timed - based Ý tưởng:
Còn nhớ ví dụ DOS ở trên ?
![Page 26: XXE injection - Nguyễn Tăng Hưng](https://reader035.vdocuments.net/reader035/viewer/2022062308/558fd7f91a28ab4c368b45b4/html5/thumbnails/26.jpg)
Demo 3 - Time based XXE
![Page 27: XXE injection - Nguyễn Tăng Hưng](https://reader035.vdocuments.net/reader035/viewer/2022062308/558fd7f91a28ab4c368b45b4/html5/thumbnails/27.jpg)
Demo 4 - Phối hợp với Burp Suite
![Page 28: XXE injection - Nguyễn Tăng Hưng](https://reader035.vdocuments.net/reader035/viewer/2022062308/558fd7f91a28ab4c368b45b4/html5/thumbnails/28.jpg)
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
![Page 29: XXE injection - Nguyễn Tăng Hưng](https://reader035.vdocuments.net/reader035/viewer/2022062308/558fd7f91a28ab4c368b45b4/html5/thumbnails/29.jpg)
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 :-)