• XSS.stack #1 – первый литературный журнал от юзеров форума

Статья Обход ограничений HttpOnly с помощью файлов phpinfo

0x0021h

RAID-массив
Пользователь
Регистрация
14.11.2021
Сообщения
53
Решения
1
Реакции
78
Прежде чем я начну объяснять, как мы можем обойти флаг HttpOnly, давайте обсудим, что такое HttpOnly.

HttpOnly - это дополнительный флаг, включенный в заголовок ответа HTTP Set-Cookie. Флаг HttpOnly в Set-Cookie генерирует cookie, что может помочь снизить риск доступа клиентских сценариев к защищенным cookie, если флаг HttpOnly (необязательный) включен в заголовок ответа HTTP, а cookie не могут быть доступны через сценарии на стороне клиента, если браузер поддерживает этот флаг. Поэтому, даже если существует уязвимость межсайтового скриптинга (XSS) и пользователь случайно переходит по ссылке, использующей эту уязвимость, браузер не будет раскрывать куки третьей стороне.

1642476751426.png


Существует несколько известных способов обойти флаг HttpOnly.

Кража метода TRACE, если цель принимает его, в этом случае метод TRACE включен, но современные веб-браузеры больше не поддерживают его по умолчанию, поэтому нет смысла эксплуатировать его с помощью метода TRACE.
Получение cookie HttpOnly из ответа, что не сработало для нас - https://www.shorebreaksecurity.com/blog/xss-exploitation-with-xhr-response-chaining/
После нескольких часов борьбы у нас появилась новая идея .......

Итак, почему именно phpinfo?

Почти каждый сайт, который я тестирую (конечно, основанный на PHP), имеет файлы phpinfo.

После некоторого перебора каталогов и файлов мы наткнулись на файл info.php.

1642476821363.png


Наиболее интересной частью phpinfo является то, что он считывает все cookie, даже те, которые относятся к HttpOnly.

1642476852713.png


Кража ci_session с помощью файла info.php

Мы нашли XSS в поле name, и теперь мы можем использовать его для загрузки нашего JavaScript, который использует XMLHttpRequest() для чтения info.php и отправки его

Мы создали этот JS-код, который читает файл info.php, получает значение "HTTP_COOKIE" и отправляет его обратно на наш сервер.

Файл info.js.

1642476883602.png


1642476907262.png


Вот наш запрос, содержащий содержимое файла info.php (в base64)

1642476935907.png


Декодирование данных base64

1642476965500.png



После получения ci_session мы можем получить доступ к учетной записи администратора и повысить свои привилегии от пользователя.


В Tomcat есть примеры, которые можно использовать таким же образом

Код:
/examples/servlets/servlet/SessionExample

1642477015018.png
 
Почти каждый сайт, который я тестирую (конечно, основанный на PHP), имеет файлы phpinfo.
Что-то мне подсказывает, что XSS это не единственная уязвимость таких сайтов. Как правило, никто не выставляет phpinfo наружу.
 


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх