Використання XML External Entities (XXE) для атак на інші сайти

22:49 28.07.2012

В статті Використання сайтів для атак на інші сайти два роки тому я розповів про можливість атак на інші сайти через Abuse of Functionality і Remote File Include уразливості, та навів приклади Abuse of Functionality дірок на різних сайтах (в тому числі сайтах Google, Yahoo і W3C). Окрім даних класів дірок, XXE уразливості також можуть використовуватися для атак на інші сайти.

В класифікації уразливостей WASC TC v2.0 є такий клас як XML External Entities (XXE) (WASC-43). Який ще називають XXE Injection.

Дані уразливості можуть використовуватися для читання вмісту локальних файлів - Local File Disclosure (тобто Directory Traversal). Але також дану уразливість можна використати для з’єднання з зовнішніми серверами. Тобто можна робити запити до інших веб сайтів і через дані уразливості можна проводити CSRF і DoS атаки на інші сайти.

Атака відбувається через тег ENTITY. Якщо вказати локальний файл - “file:///etc/passwd”, то відбудеться включення і витік змісту локального файлу. А якщо вказати зовнішній ресурс - “http://site/page”, то відбудеться запит до сторінки зовнішнього сайта. Що можна використати для атак на зовнішні сайти, аналогічно атакам описаним у вищезгаданій статті.

<?xml version="1.0"?>
<!DOCTYPE foo [
  <!ELEMENT methodName ANY>
  <!ENTITY xxe SYSTEM "http://site/page" >]>
<methodCall>
  <methodName>&xxe;</methodName>
</methodCall>

XXE Injection уразливості були виявлені в багатьох продуктах. Таких як Squiz CMS, Zend Framework, CakePHP та численні продукти Adobe (BlazeDS, Adobe LiveCycle Data Services ES2, Adobe ColdFusion, Adobe LiveCycle ES2). І враховуючи популярність Zend Framework, вони будуть знайдені ще в багатьох продуктах (як це було виявлено в CakePHP).

Для автоматизації атак на інші сайти можна використати такий інструмент як DAVOSET - DDoS attacks via other sites execution tool. Abuse of Functionality дірки передбачали відправлення як GET, так і POST запитів. DAVOSET був розроблений для GET запитів.

XXE Injection атака передбачає відправлення спеціального XML-запиту методом POST. Тому інструмент для проведення атак на інші сайти через XXE уразливості повинен підтримувати POST метод. Наприклад, його підтримка може бути додана в DAVOSET.


Одна відповідь на “Використання XML External Entities (XXE) для атак на інші сайти”

  1. MustLive каже:

    You can read this article on English in The Web Security Mailing List: Using XML External Entities (XXE) for attacks on other sites.

Leave a Reply

You must be logged in to post a comment.