Начну и надеюсь что Kost продолжит, всё-тки это он нашел багу и писал эксплоитер (к томуже у меня нет исходников).
Сервис Therapy распологался по адресу
http://10.7.1.3:8080/Therapy/ и позволял регистрироваться 2 типам пользователей: пациенты и консультанты. При регистрации и те и другие указывали (first name, last name, e-mail, login, pass).
После регистрации пациенты могли опубликовать историю своей жизни/болезни и дополнительные личные данные. Каждому пациенту случайным образом назначался консультант. После регистрации консультант получал ссылки на истории всех назначенных ему пациентов.
Сервис был написан на Java и скомпилирован, исходников не было. Он крутился на Apache Tomcat c поддержкой Java и использовал для хранения данных СУБД MySQL. Флаги хранились в дополнительных личных данных пациентов. Kost нашел там багу типа открытой SQL инъекции.
Суть была в том, что история и дополнительная информация попадала в базу данных без фильтрации.
Методом проб мы придумали 2 варианта использования этой уязвимости. Первый – это заменить у всех пациентов – назначенного им консультанта на нашего специально созданного. Этот вариант давал нам истории всех пациентов но не флаги. Второй – поменять логин и пароль каждого пользователя на id. Таким образом мы могли подсоединится от имени любого пользователи и посмотреть его личные данные (флаг). Передавалось значение: blabla', username=id, password=id WHERE 1=1 /*
В ручную так воровать флаги – это адская работа, поэтому Kost с Ильёй написали скрипт, автоматизирующий эти действия, но использовать его так и не успели.
К сожалению, не имея исходников, закрыть уязвимость с нашей стороны не смогли. В настройках Apache Tomcat не оказалось настроек связанных с обработкой данных.
Код рабочего эксплоита: