Jump to content

Отравление сеанса

Отравление сеанса (также называемое «загрязнением данных сеанса» и «модификацией сеанса») — это метод использования недостаточной проверки входных данных в серверном приложении. Обычно серверное приложение, уязвимое для этого типа эксплойта, копирует вводимые пользователем данные в сеанса переменные .

Основная уязвимость — это проблема управления состоянием: общее состояние, состояние гонки , неоднозначность использования или простые незащищенные модификации значений состояния.

Отравление сеанса было продемонстрировано в серверных средах, где разные, не вредоносные приложения (скрипты) используют одни и те же состояния сеанса, но где использование различается, что приводит к неоднозначности и состояниям гонки.

Отравление сеанса было продемонстрировано в сценариях, когда злоумышленник может внедрить вредоносные сценарии в среду сервера, что возможно, если злоумышленник и жертва используют общий веб-хост.

Происхождение

[ редактировать ]

Отравление сеанса впервые обсуждалось как (потенциально новый) класс уязвимостей в списке рассылки «Полное раскрытие» . [1] Алла Безручко поинтересовалась, не стала ли «уязвимость загрязнения сессионных данных в веб-приложениях» новой проблемой в январе 2006 года. Однако это была старая уязвимость, ранее отмеченная другими: «это классическая проблема управления состоянием» - Иван Бойли; [2] «Это не ново» - /кто-то. [3]

Более ранние примеры этих уязвимостей можно найти в основных ресурсах/архивах безопасности, таких как Bugtraq , например

  • Июль 2001 г.: Серьезная дыра в безопасности в сервере сайта Mambo версии 3.0.X, автор Исмаэль Пейнадо Паломо изverseonline.com. [4]
  • Сентябрь 2005 г., модификация PHP-сессии неизвестными (из uw-team) и adam_i. [5]

Загрязнение сеансов также рассматривается в некоторых статьях, таких как PHP Session Security, Przemek Sobstel, 2007. [6]

Примеры атак

[ редактировать ]

Тривиальный сценарий атаки

[ редактировать ]

Пример кода, уязвимого для этой проблемы:

Session("Login") = Request("login")
Session("Username") = Request("username")

Который подвержен тривиальным атакам, таким как

vulnerable.asp?login=YES&username=Mary

Эта проблема может существовать в программном обеспечении, где

  • Пользователь отправляет имя пользователя/пароль logon.asp
  • Если пароль для Mary выезжает, logon.asp пересылает в vulnerable.asp?login=YES&username=Mary

Проблема в том, что vulnerable.asp разработан с учетом того, что доступ к странице осуществляется только без вредоносного воздействия. Любой, кто понимает, как устроен сценарий, может создать HTTP-запрос, который произвольно устанавливает пользователя для входа в систему.

Использование неоднозначного или двойного использования одной и той же переменной сеанса.

[ редактировать ]

Алла Безручко обсуждает сценарий, в котором $_SESSION['login'] используется для двух разных целей. [7]

  • В сценариях входа в систему переменная сеанса хранит «Этот пользователь вошел в систему».
  • В сценариях сброса пароля переменная сеанса хранит «этот пользователь хочет сбросить пароль».

Было продемонстрировано состояние гонки, при котором сценарии сброса можно было использовать для произвольного изменения вошедшего в систему пользователя.

Использование скриптов, позволяющих запись в произвольные переменные сеанса.

[ редактировать ]

Алла Безручко обсуждает примеры, наблюдаемые на форумах разработчиков, которые позволяют записывать произвольные переменные сеанса. [8]

Первый пример

$var = $_GET["something"]; 
$_SESSION["$var"] = $var2;

(в котором $_GET["что-то"] вероятно из поля выбора или чего-то подобного).

Атака становится

vulnerable.php?something=SESSION_VAR_TO_POISON

Атаки отравления сеанса, активируемые php.ini: Register_globals = on

[ редактировать ]

php.ini: register_globals = on известно, что он допускает уязвимости безопасности в нескольких приложениях. Администраторам PHP- сервера рекомендуется отключить эту функцию.

Примечание. Реальные примеры отравления сеансов, включенные с помощью Register_globals = on, были публично продемонстрированы еще в июле 2001 года в статье «Серьезная дыра в безопасности в Mambo Site Server версии 3.0.X». [9]

Второй пример /someone: [10]

if ($condition1) { 
    $var = 'SOMETHING'; 
}; 
if ($condition2) { 
    $var = 'OTHER'; 
}; 
$_SESSION["$var"] = $var2;

который уязвим, если:

  • Злоумышленник может сделать оба условия ложными.
  • php.ini настроен неправильно (register_globals = on), что позволяет управлять значением по умолчанию $var с помощью ввода GPC (GET, POST или COOKIE).

Атака становится

vulnerable.php?var=SESSION_VAR_TO_POISON

Эксплойт с использованием общего PHP-сервера (например, общего веб-хостинга)

[ редактировать ]

«Неизвестный» на сайте uw-team.org обсуждает сценарий, в котором злоумышленник и жертва используют один и тот же PHP-сервер. [11]

Атака довольно проста:

  • Злоумышленник сначала посещает страницу жертвы и, например, входит в систему.
  • Затем злоумышленник загружает PHP-скрипт в свою учетную запись и отображает контекст $_SESSION (установленный скриптом жертвы).
  • Злоумышленник определяет, какую переменную необходимо изменить, загружает скрипт, который устанавливает эту переменную, и выполняет его.
  • Злоумышленник посещает страницы жертвы, чтобы проверить, сработал ли ожидаемый эксплойт.

Для этой атаки требуется только, чтобы жертва и злоумышленник использовали один и тот же PHP-сервер. Атака не зависит от того, имеют ли жертва и злоумышленник одно и то же имя виртуального хоста, поскольку злоумышленнику нетрудно переместить файл cookie идентификатора сеанса из одного домена файлов cookie в другой.

См. также

[ редактировать ]
  1. ^ «Архив Неохапсиса 0414» .
  2. ^ «Архив Неохапсиса 0459» .
  3. ^ «Архив Неохапсиса 0423» .
  4. ^ «Архив секлистов 0569» .
  5. ^ «Архив секлистов 0193» .
  6. ^ «Лаборатории Segfault» (PDF) . Проверено 22 сентября 2007 г.
  7. ^ «Архив Неохапсиса 0414» .
  8. ^ «Архив Неохапсиса 0423» .
  9. ^ «Архив секлистов 0569» .
  10. ^ «Архив Неохапсиса 0423» .
  11. ^ «Архив секлистов 0193» .
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 62775742c80ffdd5bda0055477fd1e06__1699614300
URL1:https://arc.ask3.ru/arc/aa/62/06/62775742c80ffdd5bda0055477fd1e06.html
Заголовок, (Title) документа по адресу, URL1:
Session poisoning - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)