Привет^3☕️
Я достаточно долгое время изучал фишинговые вложения.😌 В них часто использовались особенности файлов, которые позволяют запускать код. Одним из таких форматов является
XML. Более того, многие другие файлы используют
XML в качестве основы. В вебе это тоже интересно, так как данные между клиентом и сервером могут передаваться не только в
JSON-формате, но и в
XML. А неправильная его обработка может привести к
XXE.
Who is XXE?🤨Веб-уязвимость, которая позволяет внедрить код в
XML-документ для его выполнения. Часто с её помощью можно получить доступ к файловой системе сервера и взаимодействовать с бэкендом или внешними сервисами.
Если говорить проще, мы можем добавить код в
XML-документ, и, возможно, он будет выполнен на стороне сервера. А это уже можно использовать с разными целями.
XML-сущности🤓Для выполнения кода используются
XML-сущности. Это способ представления элемента данных внутри документа без использования самих данных напрямую. Например, сущности
< и
> представляют символы
< и
>. Эти символы используются как метасимволы для обозначения
XML-тегов.
Например, можно использовать следующий синтаксис для её создания:
<!DOCTYPE payload [ <!ENTITY myentity "my entity value"> ]>
Это определение означает, что любое использование ссылки на сущность
&myentity; внутри
XML-документа будет заменено на заданное значение
my entity value.
Внешнюю сущность можно получить по ссылке. Значит, мы можем вынудить приложение отправить запрос на внешний или внутренний сервис. Подобная атака может выглядеть следующим образом:
<!DOCTYPE payload [ <!ENTITY xxe SYSTEM "http://bad.site/"> ]>
Как всегда, начнём разбирать всё с простых лаб, постепенно усложняя🥺:
•
Exploiting XXE using external entities to retrieve files•
Exploiting XXE to perform SSRF attacks•
Exploiting XXE via image file upload↖️ 📕
тг • 🤬
чатик • ✏️
посты#web #writeup