XPath injection - инъекция в XML Path Language запросы
Критическая уязвимость кода сайта. Высокий уровень угрозы.
XPath injection - это атака на приложения, создающие XML Path Language запросы
XPath injection - является максимальной угрозой класса А1 по классификации OWASP
XPath инъекция - атака направленная на приложения, создающие XPath (XML Path Language) запросы от пользовательских данных.
Язык XPath разработан для возможности обращения к разным частям документа на языке XML.
Синтаксис XPath схож с языком запросов SQL для баз данных.
Различия - это использование XML - дерева в XPath вместо табличных данных SQL и универсальность языка XPath против различных реализаций SQL.
Еще одним различием является отсутствие разграничений в XPath и разграничения прав доступа к БД в SQL.
Аналогично SQL injection, XPath уязвим для инъекций, при недостаточной фильтрации и валидации данных входящих запросов.
Пример эксплуатации XPath инъекции:
Часть кода XML базы данных: base.xml
<orders>
<customer id="1">
<name>Петр Иванов</name>
<email>petr.ivanov@email.ru</email>
<creditcard>12341234123451234</creditcard>
<order>
<item>
<quantity>1</quantity>
<price>20.00</price>
<name>something</name>
</item>
<item>
<quantity>2</quantity>
<price>10.00</price>
<name>anything</name>
</item>
</order>
</customer>
...
</orders>
XPath запрос для поиска товара по цене:
string query = "/orders/customer[@id='" + customerId + "']/order/item[price >= '" + priceFilter + "']";XPath инъекция:
'] | /* | /foo[bar='Измененный в результате эксплуатации XPath инъекции запрос:
string query = "/orders/customer[@id=''] | /* | /foo[bar='']/order/item[price >= '" + priceFilter + "']";Результат:
Получение файла базы данных base.xml
XPath injection работоспособна из-за отсутствия фильтрации данных параметров priceFilter и customerId.
Возможность эксплуатации XPath injection - это очень серьезная угроза для безопасности сайта.
Защита от XPath injection
Фильтрация и валидация данных входящих запросов.
Экранирование спецсимволов.
Сканер уязвимостей сайтов онлайн Проверьте, наколько устойчив к взлому Ваш сайт