Что нового

Article [0] Введение в XXE: XML External Entities

Vander 0

Vander

Команда форума
10.11.2019
462
1 061
XML везде

a21547d0f19dd4f6.png

XML-документы используются во многих форматах файлов. Вероятно, вы уже редактировали файл конфигурации, написанный в XML. Если вы создали веб-сайт, вы неизбежно отредактируете или увидите HTML. Вы также можете подумать о документах MS Office (.docx), масштабируемой векторной графике (.svg) и запросах SOAP. Широко реализованный в большинстве языков программирования, он является отличным выбором для взаимодействия. Стандарт XML описывает множество полезных функций форматирования, но мы собираемся сосредоточиться на «сущностях» из-за потенциальной уязвимости, которую они представляют.

Что такое XML-сущности?

Сущности XML - это ссылки на данные XML внутри документов XML. Мы упоминаем данные XML, потому что это может быть буквальная строка, теги XML или любой допустимый синтаксис XML, в который они вставлены.

Сущности в HTML используются для специальных символов:

e55c3dbfaa9446fb.png

Сущность используется для повторяющегося шаблона:

3fd0637556ef955d.png

SYSTEM or External entities:

623e88b9e2ba797a.png

Когда ключевое слово SYSTEM добавлено к объекту, он попытается загрузить содержимое с указанного URL. Значение между кавычками - это URL. Для синтаксического анализа XML, выполняемого в небольшом скрипте, выполняемом локально, это кажется хорошей функцией. Однако, когда синтаксический анализ выполняется на стороне сервера, URL-адреса из сущностей SYSTEM также разрешаются на сервере. Злоумышленник может указать на файл, размещенный на удаленном сервере. Если сервер вернет результат синтаксического анализа, он внезапно покажет содержимое этого файла.

Код:
<!DOCTYPE data [
<!ENTITY xxe SYSTEM "file:///etc/passwd">
]>
<data>&xxe;</data>
Если приложение вернет значение внутри узла данных, будет показано содержимое файла /etc/passwd.

Интересные файлы для чтения

passwd - это файл, который присутствует во всех операционных системах Linux.
  • file:///etc/passwd
  • file:///etc/shadow (Если повезёт)
Информация об именах хостов, преобразователях DNS и сетевых устройствах может дать ценную информацию для обнаружения дополнительных ресурсов.
  • file:///etc/hosts
  • file:///etc/resolv.conf
  • file:///proc/self/net/dev : Include public and internal IP
Виртуальная файловая система /proc включает различные файлы, описывающие текущий процесс.
  • file:///proc/self/cwd/FILE: относительные пути, скорее всего, будут работать. file: /// proc / self / cwd / является альтернативой ./.
  • file:///proc/self/cmdline: этот виртуальный файл возвращает команду и аргументы, используемые для запуска процесса.
  • file:///proc/self/environ: среда, определенная в контексте текущего процесса.
Есть несколько файлов, содержащих версию системы. Это также файлы без специальных символов (полезно для тестирования).
  • file:///proc/version
  • file:///etc/lsb-release
  • file:///etc/issue
В целях тестирования может быть интересно прочитать виртуальный файл с бесконечным содержанием. Задача злоумышленника - либо выполнить обнаружение по времени, либо создать своего рода отказ в обслуживании (DOS).
  • file:///dev/urandom & file:///dev/zero
Спасибо за внимание, материал подготовлен специально для protey.net
 
Верх Низ