XDNET
Вернуться   DarkNets.Ru - Ethical Hacking - Cyber Security - Penetration Testing > UNDERGROUND > Этичный Хакинг и Пентестинг > Уязвимости Веб-приложений

Уязвимости Веб-приложений Эксплуатация уязвимости веб-приложений (sql-inj/xss/csrf/authentication) в сервисах, сайтах, форумах, чатах, cms.

Ответ
Опции просмотра Поиск в этой теме Опции темы  
Старый 21.11.2020, 14:41   #1
 
Аватар для 1em0n
Группа: Member
 
Регистрация: 16.11.2020
Сообщений: 23
Репутация: 14
По умолчанию Руководство по инъекции XXE

XML - это язык разметки, который обычно используется в веб-разработке. Он используется для хранения и передачи данных. Итак, сегодня в этой статье мы узнаем, как злоумышленник может использовать эту уязвимость, чтобы получить информацию и попытаться опорочить веб-приложение.

Методика тестирования XXE:
  • Введение в XML
  • Введение в XXE Injection
  • Воздействия
  • XXE для SSRF
    Локальный файл
    Удаленный файл
  • XXE миллиардная атака смеха
  • XXE Использование загрузки файла
  • XXE для удаленного выполнения кода
  • Контрмеры

Введение в XML

Что такое XML и Entity?

XML расшифровывается как «E x Tenible M arkup L anguage». Это наиболее распространенный язык для хранения и передачи данных. Это информативный язык. Он не содержит никаких предопределенных тегов, таких как <p>, <img> и т. Д. Все теги определяются пользователем, например, в зависимости от данных, которые они представляют. <email> </email>, <message> </message> и т. д.



  • Версия: используется для указания, какая версия стандарта XML используется.
Значения: 1 . 0
  • Кодировка: объявляется для указания используемой кодировки. Кодировка по умолчанию, которая используется в XML, - UTF-8.
Значения: UTF-8, UTF-16, ISO-10646-UCS-2, ISO-10646-UCS-4, Shift_JIS, ISO-2022-JP, ISO-8859-1 до ISO-8859-9, EUC-JP.
  • Автономный: он сообщает синтаксическому анализатору, есть ли в документе какая-либо ссылка на внешний источник или есть какая-либо ссылка на внешний документ. Значение по умолчанию - нет.
Значения: да, нет

Что такое сущность?

Как и переменные в языках программирования, у нас есть XML Entity. Они представляют собой способ представления данных, присутствующих в XML-документе. В языке XML есть различные встроенные объекты, такие как & lt; и & gt; которые используются для меньшего и большего, чем в языке XML. Все это метасимволы, которые обычно представлены с помощью сущностей, которые появляются в данных. Внешние сущности XML - это сущности, расположенные вне DTD.

Объявление внешней сущности использует ключевое слово SYSTEM и должно указывать URL-адрес, из которого должно быть загружено значение сущности.
Например
Код:
<!ENTITY ignite SYSTEM "URL">
В этом синтаксисе Ignite - это имя объекта,

СИСТЕМА - используемое ключевое слово,

URL-адрес - это URL-адрес, который мы хотим получить, выполнив атаку XXE.

Что такое определение типа документа (DTD)?

Он используется для объявления структуры XML-документа, типов значений данных, которые он может содержать, и т.д. DTD может присутствовать внутри XML-файла или может быть определен отдельно. Он объявляется в начале XML с помощью <! DOCTYPE>.

Существует несколько типов DTD, и нас интересует внешний DTD.

СИСТЕМА: Системный идентификатор позволяет нам указать расположение внешнего файла, который содержит объявление DTD.
Код:
<!DOCTYPE ignite SYSTEM "URL" [...] >
PUBLIC: общедоступные идентификаторы предоставляют механизм для поиска ресурсов DTD и записываются следующим образом:

Как видите, он начинается с ключевого слова PUBLIC, за которым следует специализированный идентификатор. Открытые идентификаторы используются для идентификации записи в каталоге.
Код:
<!DOCTYPE raj PUBLIC "URL"
ведение в XXE

XXE - это тип атаки, которая выполняется против приложения для анализа его входных XML-данных. В этой атаке ввод XML, содержащий ссылку на внешний объект, обрабатывается слабо настроенным анализатором XML. Как и в случае межсайтового скриптинга (XSS), мы пытаемся внедрить скрипты аналогичным образом, здесь мы пытаемся вставить XML-объекты, чтобы получить важную информацию.

Он используется для объявления структуры XML-документа, типов значений данных, которые он может содержать, и т.д. DTD может присутствовать внутри XML-файла или может быть определен отдельно. Он объявляется в начале XML с помощью <! DOCTYPE>.

Существует несколько типов DTD, и нас интересует внешний DTD. Есть два типа внешних DTD:

СИСТЕМА: Системный идентификатор позволяет нам указать расположение внешнего файла, который содержит объявление DTD.



При этом полезная нагрузка внешнего объекта XML отправляется на сервер, и сервер отправляет эти данные синтаксическому анализатору XML, который анализирует запрос XML и предоставляет серверу требуемый вывод. Затем сервер возвращает этот вывод злоумышленнику.

Воздействия

Внешний объект XML (XXE) может представлять серьезную угрозу для компании или веб-разработчика. XXE всегда входил в десятку лучших по версии OWASP. Это обычное дело, поскольку многие веб-сайты используют XML в строке и передаче данных, и если не будут приняты контрмеры, эта информация будет скомпрометирована. Возможны различные атаки:
  • Подделка запросов на стороне сервера
  • DOS атаки
  • Удаленное выполнение кода
  • Межсайтовый скриптинг

Оценка XXE по CVSS составляет 7,5, а степень серьезности - Средняя с -
  • CWE-611: Неправильное ограничение внешней сущности XML.
  • CVE-2019-12153: локальный файл SSRF
  • CVE-2019-12154: удаленный файл SSRF
  • CVE-2018-1000838: атака "Миллиард смех"
  • CVE-2019-0340: загрузку XXE через файла

Выполнение атаки XXE для выполнения SSRF:

Подделка запросов на стороне сервера (SSRF) - это веб-уязвимость, при которой хакер вводит серверные HTML-коды, чтобы получить контроль над сайтом или перенаправить вывод на сервер злоумышленника. Типы файлов для атак SSRF:

Локальный файл:

Это файлы, которые присутствуют в домене веб-сайта, такие как robots.txt, server-info и т. Д. Итак, давайте использовать «bWAPP» для выполнения атаки XXE на низком уровне .



Теперь мы запустим наш BurpSuite и перехватим его после нажатия Any Bugs? кнопку, и мы получим следующий результат по отрыжке:


Мы видим, что фильтр не применен, поэтому возможен XXE, поэтому мы отправим его на ретранслятор, и там мы проведем нашу атаку. Мы попытаемся узнать, какое поле является уязвимым или вводимым, потому что мы видим, что есть два поля 0, то есть логин и секрет.

Итак, протестируем это следующим образом:


На вкладке репитера мы отправим запрос по умолчанию и наблюдаем за выводом на вкладке ответа.



В нем говорится, что «секрет пчелы был сброшен», поэтому кажется, что вход в систему можно вводить, но давайте проверим это, изменив его с пчелы и затем отправив запрос.



Теперь мы снова будем наблюдать его вывод на вкладке ответа:



Мы получили вывод «секрет зажигания был сброшен», что дает понять, что вход в систему можно вводить. Теперь приступим к атаке.

Теперь, когда мы знаем, какое поле является вводимым, давайте попробуем получить файл robots.txt. И для этого мы будем использовать следующую полезную нагрузку -
Код:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE reset [
<!ENTITY ignite SYSTEM "http://192.168.1.15/bWAPP/robots.txt">
]>
<reset><login>&ignite;</login><secret>Any bugs?</secret></reset>

Понимание полезной нагрузки

Мы объявили doctype с именем « reset», а затем внутри него объявили объект с именем « ignite» . Мы используем идентификатор SYSTEM, а затем вводим URL-адрес файла robots.txt. Затем при входе в систему мы вводим « & ignite;» получить желаемую информацию .



После вставки приведенного выше кода мы нажмем кнопку «Отправить» и получим вывод, как показано ниже, на вкладке ответа:



Как видно из вышеприведенного вывода, мы получили все подробности, представленные в файле robots.txt. Это говорит нам, что SSRF локального файла возможен с использованием XXE.



Итак, теперь давайте попробуем понять, как все это работало. Во-первых, мы введем полезную нагрузку, и она будет передана на сервер, и поскольку нет фильтров, чтобы избежать XXE, сервер отправляет запрос синтаксическому анализатору XML, а затем отправляет вывод проанализированного файла XML. В этом случае robots.txt был раскрыт злоумышленнику с помощью XML-запроса.

Удаленный файл:

Это файлы, которые злоумышленник внедряет в удаленно размещенные вредоносные сценарии, чтобы получить доступ администратора или важную информацию. Мы попробуем получить / etc / passwd, для этого введем следующую команду.
Код:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE reset [
<!ENTITY ignite SYSTEM "file:///etc/passwd">
]><reset><login>&ignite;</login><secret>Any bugs?</secret></reset>


После ввода вышеуказанной команды, как только мы нажмем кнопку отправки, мы отобразим файл passwd !!


Последний раз редактировалось 1em0n; 21.11.2020 в 15:07..
1em0n вне форума   Ответить с цитированием
Старый 21.11.2020, 15:07   #2
 
Аватар для 1em0n
Группа: Member
 
Регистрация: 16.11.2020
Сообщений: 23
Репутация: 14
По умолчанию Re: Руководство по инъекции XXE

XXE Billion Laugh Attack - DOS-версия

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

Прежде чем выполнять атаку, давайте узнаем, почему она известна как «Атака смеха миллиарда»?

«Впервые, когда была проведена эта атака, злоумышленник использовал в качестве данных объекта и вызвал его несколько раз в нескольких следующих объектах. Это заняло экспоненциальное количество времени, и результатом стала успешная DoS-атака, приведшая к остановке веб-сайта. Из-за использования и его многократного вызова, что привело к появлению миллиардов запросов, мы получили название Billion Laugh Attack »



Прежде чем использовать полезную нагрузку, давайте разберемся с ней:

Здесь мы видим, что в 1 мы объявили сущность с именем « ignite», а затем вызываем ignite в нескольких других сущностях, таким образом формируя цепочку обратных вызовов, которая перегрузит сервер. На 2 мы вызвали entity этапе & ignite9; Мы вызвали ignite9 вместо ignite, поскольку ignite9 вызывает ignite8 несколько раз, и каждый раз, когда ignite8 вызывается, запускается ignite7 и так далее. Таким образом, на выполнение запроса уйдет экспоненциальное количество времени, и в результате веб-сайт будет недоступен.

Вышеупомянутая команда приводит к DoS-атаке, и мы получили следующий результат:



Теперь после ввода команды XML мы не увидим никаких выходных данных в поле ответа, а также пчелиный ящик недоступен, и он будет отключен.



XXE Использование загрузки файла

XXE можно выполнить с помощью метода загрузки файла. Мы продемонстрируем это с помощью лаборатории Port Swigger загрузку «Использование XXE через изображений». Полезная нагрузка, которую мы будем использовать:
Код:
<?XML version="1.0" standalone="yes"?>
<!DOCTYPE reset [
<!ENTITY xxe SYSTEM "file:///etc/hostname"> ] >
<svg width="500px" height="500px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1">
<text font-size="40" x="0" y="100">&xxe;</text>
</svg>
Понимание полезной нагрузки: мы будем создавать файл SVG, так как область загрузки принимает только файлы изображений. Базовый синтаксис файла SVG приведен выше, и в нем мы добавили текстовое поле, которое будет

Мы приведенный выше код как сохраним «payload.svg». Теперь о portswigger мы отправим сообщение и комментарий, а затем добавим созданную полезную нагрузку в поле аватара.



Теперь мы разместим комментарий, нажав кнопку «Опубликовать комментарий». После этого мы посетим сообщение, к которому мы разместили наш комментарий, и увидим наш комментарий в разделе комментариев.



Давайте проверим источник его страницы, чтобы найти опубликованный нами комментарий. Вы найдете что-то похожее на то, что я получил ниже



Мы щелкнем по указанной выше ссылке и увидим флаг в новом окне следующим образом:



Это можно проверить, отправив флаг, и мы получим сообщение об успешном завершении.





Понимание всей концепции: Итак, когда мы загрузили полезную нагрузку в поле аватара и заполнили все остальные поля, наш комментарий был показан в сообщении. Изучив исходный файл, мы получили путь, по которому был загружен наш файл. Нас интересует это поле, поскольку наша полезная нагрузка XXE находилась внутри этого SVG-файла и будет содержать информацию, которую мы хотели, в данном случае мы хотели « / etc / domain». После нажатия на эту ссылку мы смогли увидеть информацию.

XXE для удаленного выполнения кода

Удаленное выполнение кода - это очень уязвимость серверного веб-приложения. В этом случае злоумышленник может внедрить свой вредоносный код на сервер, чтобы получить важную информацию. Чтобы продемонстрировать эту атаку, я использовал XXE LAB . Мы выполним следующие шаги, чтобы загрузить эту лабораторную работу и запустить ее на нашей машине с Linux:
g
Код:
it clone https://github.com/jbarone/xxelab.git
cd xxelab
vagrant up

В нашем терминале мы получим примерно такой же результат:



Теперь, когда он будет готов к использованию, мы откроем браузер и : наберем [Ссылки могут видеть только зарегистрированные пользователи. ], и мы увидим, что сайт выглядит так:



Мы будем вводить наши данные и перехватывать запрос с помощью Burp Suite. В Burp Suite мы увидим запрос, как показано ниже:



Мы отправим этот запрос ретранслятору и посмотрим, какое поле уязвимо. Итак, сначала отправим запрос как есть и посмотрим на вкладку ответа:



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



Из приведенного выше снимка экрана видно, что поле электронной почты уязвимо. Теперь введем нашу полезную нагрузку:
Код:
<!DOCTYPE root [
<!ENTITY ignite SYSTEM "expect://id"> ]>
Давайте разберемся с полезной нагрузкой перед ее реализацией:

Мы создали тип документа с именем « root » и под ним создали объект с именем « ignite », который запрашивает «expect: // id». Если на странице php принимается ожидание, возможно удаленное выполнение кода. Мы получаем идентификатор, поэтому в данном случае мы использовали «id».

И мы видим, что мы успешно получили uid, gid и номер группы. Это доказывает, что наше удаленное выполнение кода в данном случае было успешным.



Шаги по смягчению
  • Самый безопасный способ предотвратить появление XXE - это всегда полностью отключать DTD (внешние сущности). В зависимости от парсера метод должен быть похож на следующий:
Код:
factory.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true);
  • Также DoS-атаки можно предотвратить, отключив DTD. Если невозможно полностью отключить DTD, тогда внешние сущности и объявления типов внешних документов должны быть отключены способом, специфичным для каждого анализатора.
  • Другой метод - использовать CDATA для игнорирования внешних сущностей. CDATA - это символьные данные, которые предоставляют блок, который не анализируется парсером.

Код:
<data><!CDATA [ "'& > characters are ok in here] ]></data>

hackingarticles.in
1em0n вне форума   Ответить с цитированием
Ответ

Метки
инъекции xxe


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы можете отвечать в темах
Вы не можете прикреплять вложения
Вы можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Друзья

Текущее время: 05:36. Часовой пояс GMT +4.


Использование файлов cookie & Политика конфиденциальности
Внимание! Все материалы, находящиеся на сайте, выложены исключительно в образовательных целях. Владельцы сайта не несут ответственность за использование информации в незаконных целях.
Мы не несём никакой ответственности за предоставленные материалы. При копировании информации обратная ссылка обязательна.
При использовании программ с форума, рекомендуем проверять на hybrid-analysis.com & virustotal.com!
Powered by: vBulletin Version 4.x.x
Copyright ©2000 - 2017, vBulletin Solutions, Inc ~ Перевод: zCarot
Remix fluid style from X1mer@ for darknets.ru Взлом и Безопасность
Время генерации страницы 0.10132 секунды с 13 запросами