XML инъекция
XML-инъекция представляет собой метод нападения на веб-приложения, построенные на языке XML. Атака заключается в нарушении логики работы приложения с целью выполнения произвольных конструкций кода. Кроме того, XML-инъекция может быть применена для встраивания вредоносного содержимого.
В качестве примера рассмотрим следующий код:
<?xml version="1.0" encoding="ISO-8859-1"?> <users> <user> <uname>joepublic</uname> <pwd>r3g</pwd> <uid>0<uid/> <mail>joepublic@example1.com</mail> </user> <user> <uname>janedoe</uname> <pwd>an0n</pwd> <uid>500<uid/> <mail>janedoe@example2.com</mail> </user> </users>
Если злоумышленник вставит следующие значения для нового пользователя:
Username: alice Password: iluvbob >E-mail: alice@example3.com</mail></user><user><uname>Hacker</uname><pwd>l33tist</pwd><uid>0</uid><mail>hacker@exmaple_evil.net</mail>
то исходный XML-документ будет выглядеть так:
<?xml version="1.0" encoding="ISO-8859-1"?> <users> <user> <uname>joepublic</uname> <pwd>r3g</pwd> <uid>0</uid> <mail>joepublic@example.com</mail> </user> <user> <uname>janedoe</uname> <pwd>an0n</pwd> <uid>500</uid> <mail>janedoe@example2.hmm</mail> </user> <user> <uname>alice</uname> <pwd>iluvbob</pwd> <uid>500</uid> <mail>alice@exmaple3.com</mail></user><user><uname>Hacker</uname><pwd>l33tist</pwd><uid>0</uid> <mail>hacker@exmaple_evil.net</mail> </user> </users>
Отсюда видно, что пользователь Хакер вставляется в таблицу с идентификатором 0, а так как пользователь с таким ID уже зарегистрирован в большинстве XML-систем последняя запись заменяет предыдущую. Обычно пользователь с ID=0 – это администратор. Таким образом подобными манипуляциями можно изменить реквизиты административного аккаунта.
Другой пример реализации XML-инъекции на практике показывает возможность вставки вредоностного контента, посредством введения запрещенных символов:
<HTML> <![CDATA[<IMG SRC=http://www.exmaple.com/logo.gif onmouseover=javascript:alert('Attack');>]]> </HTML>
Почитать отзывы и обзоры популярных языков программирования можно здесь. Удобная структура и разграничение отзывов по разделам позволяет быстро ориентироваться на сайте.