Привет %username%.
Некоторое время назад была найдена прикольная бага на сайте Ростелекома, а именно произвольное выполнение команд операционной системы. На одном из сайтов провайдера была такая штука как ping и traceroute удаленного узла, но не фильтровались юзерские данные. Ну не сложилось у ростелекома с пингом, не на роутерах, не на сайтах.
Как эта хрень работает? А просто php скрипт выполняет команду ping $сайт
и выводит ответ на страницу. Но дело в том, что вместо команды можно записать список команд.
Список команд — это последовательность команд, разделенных точками с запятой ;
, амперсандами &
, символами «и-если» &&
или «или-если» ||
.
Как раз точка с запятой вызывает последовательное выполнение предыдущей команды. Поэтому если указать в качестве сайта ya.ru;echo 123 — выполнятся две команды, пропингуется яндекс и выведется число 123.
Вот, можешь даже глянуть небольшой видос.
Таким образом пара команд, а именно ls -l
, чтобы показать листинг директорий и файлов (и права на них), и echo "злой-злой-код" >> /tmp/shell.php
, чтобы записать шелл в доступный для записи каталог. А каталогов там было несколько, tmp, font и i.
А это ещё один минус, неправильные права от пользователя daemon. Вот зачем скрипту, который делает пинг, возможность записи файлов?)
Ну поржали, а багу что-то не фиксят и не фиксят. Я писал в службу поддержки, создавал обращение, писал на support по почте, а реакции (тем более ответа) нет… В итоге я залил шелл, нашел админов в базе данных (баз было много), написал им на почту. Тишина. Ну что делать, нужно исправлять.
Теперь нужно было найти уязвимый код, почему-то я думал что там будет system() или exec(), а оказалось, что зло таилось в функции popen().
$ip = $_POST['ip'];
if (isset($_POST['tracert'])) {
$cmd = '/bin/traceroute';
}
if (!empty($cmd)) {
$f = popen("$cmd $ip", 'r');
while (!feof($f)) {
$buf .= fgets($f);
}
pclose($f);
}
Но вот незадача, редактировать-то нельзя! В руках у нас web-shell, linux с ядром 2.6.9 и уязвимый скрипт. Что будем делать?
А будем повышать привилегии. Благо версия kernel’а стара как смерть и под нее много различных эксплойтов.
В итоге я поместил сплойт, который имел расширение *.c в папку /tmp/ и скомпилировал его командой
gcc sploit.c -o exploit
где sploit.c имя входного файла, а exploit — выходного. Теперь, чтобы запустить его достаточно выполнить ./sploit, что я и сделал. И у меня нахрен всё повисло.
Возможно, это из-за криворукости, но сплойт повис, пришлось убить его и попробовать другой. Другой не захотел компилироваться (возможно там были намеренные ошибки, даже не смотрел), другой не захотел работать, в итоге был найден тот самый, который дал мне права root и я удалил все к херам исправил уязвимость отфильтровав эти спецсимволы. Потом я в базе нашёл чувака среди админов, чья почта была на mail.ru, узнал его имя и дату рождения, нашёл в vk.com, постучался в личку, мы чутка пообщались и шелл был удалён. А опыт остался 😉
Такой вот пятничный пост, %username%. Не болей!
закачал бы базу,А потом исправил бы 🙁 добрый хакер блин
Крут, че
подобная бага была в прошивке асуского роутера, а так крут.
http://savepic.net/6000945.jpg
Рисковый парень, однако. Могли ведь и статью повесить, не?
в очередной раз поражаюсь тебе.
исправил уязвимость отфильтровав эти спецсимволы. Потом я в базе нашёл чувака среди админов, чья почта была на mail.ru, узнал его имя и дату рождения, нашёл в vk.com, постучался в личку, мы чутка пообщались и шелл был удалён
вот ты вася, добрый слишком. надо выгоду поиметь, а не рассказывать этим лошкам.
нахуй тогда этот блог читать, расходимся.
Давай, вали)
Какой адрес использовался для связи? Когда то писал им на [email protected] (адрес со страницы http://www.rostelecom.ru/contacts/) — ни одного ответа.
Также есть валидные адреса, которые не заявлены на странице сайта, но работают: [email protected] и [email protected].
Сообщения об xss и SQL-инъекциях проигнорировали.
А на сообщение о возможности получения содержимого файлов на одном из их узлов (ссылка на узел есть на главном сайте — некая государственная свалка документов) ответили сразу.
Там была возможность получить файлы без авторизации, и для скачивания публичных и для скачивания секрутных фалов один механизм. Файлы отдаются по числовому ИД, и чтобы скачать любой файл, просто указываешь другое число. А в файлах логины и пароли для чиновников (видимо они не придумывают такое для себя, придумывают за них, и присылают им через такие порталы). Посмотрел два документа, первым была внетреняя инструкция, вторым — карточка с логином и паролем для доступа к этому же сайту. Писал на адрес [email protected]. В очень уважительной форме. И начал письмо со слов: «Знаю, что Вы проигнорируете данное сообщение. …». Ответили на следующий день.
Привет, хотел спросить, как расширить права до рута.
Чем конкретно ты пользуешься?
Сплойтов введь тьма тьмущая. Как узнать какая есть уязвимость?