27.11.2014 Views

НЕСЛУЧАЙНО CUDA ИДЕМ? phpMyAdmin - Xakep Online

НЕСЛУЧАЙНО CUDA ИДЕМ? phpMyAdmin - Xakep Online

НЕСЛУЧАЙНО CUDA ИДЕМ? phpMyAdmin - Xakep Online

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

взлом<br />

curl "http://site.com/index.php?page=<br />

../../../../../../../../var/mail/wwwdata&cmd=phpinfo();"<br />

Также, стоит отметить, что mail-файл будет доступен только<br />

тому юзеру, кому и предназначено письмо (то есть, апач<br />

должен быть обязательно запущен под тем же пользователем).<br />

NULL-БАЙТ ОТДЫХАЕТ<br />

Снова включи воображение и представь, что все<br />

вышеописанные способы отлично работают, но<br />

уязвимое приложение содержит на этот раз следующий<br />

код:<br />

<br />

Как быть? Можно проинклудить логи, но в конце дописывается<br />

не обрезаемое обычным %00 расширение «.php».<br />

На этот раз тебе поможет фича (или все-таки уязвимость?)<br />

самого php, обнаруженная юзером популярного забугорного<br />

хакерского форума sla.ckers.org со странным ником<br />

barbarianbob.<br />

Фича заключается в том, что интерпретатор php во<br />

время обработки пути до какого-либо файла или<br />

папки обрезает лишние символы «/» и «/.», а также, в<br />

зависимости от платформы, использует определенное<br />

ограничение на длину этого самого пути (ограничение<br />

хранится в константе MAXPATHLEN). В результате, все<br />

символы, находящиеся за пределами этого значения,<br />

отбрасываются.<br />

Теперь давай подробней рассмотрим этот вектор LFI, обратившись<br />

к уязвимому скрипту следующим образом:<br />

curl "http://site.com/index.php?page=../../..<br />

/../../../../../proc/self/environ///////////<br />

[4096 ñëåøåé]////////&cmd=phpinfo();" -H<br />

"User-Agent: "<br />

Наш любимый phpinfo(); выполнится успешно из-за нескольких<br />

причин.<br />

1. Инклуд в самом скрипте примет следующий вид –<br />

<br />

XÀÊÅÐ 07 /127/ 09<br />

2. Так как наш путь получится гораздо длиннее, чем<br />

MAXPATHLEN (кстати, необязательно он будет равен<br />

именно 4096; в винде, например, он может быть равен<br />

всего лишь 200 символам с хвостиком, — советую на каждой<br />

системе тестить это значение отдельно), то символы,<br />

находящиеся в конце пути (в данном случае — некоторое<br />

количество слешей и «.php»), интерпретатор php, не спрашивая<br />

ни у кого разрешения, успешно отсечет.<br />

3. После пункта «2» наш код примет примерно такой вид:<br />

<br />

Как тебе уже известно, лишние слеши в конце пути<br />

услужливый php также обрежет, и наш злонамеренный<br />

код, в конце концов, превратится во вполне<br />

рабочий LFI!<br />

<br />

Для теста количества слешей для использования в данной<br />

уязвимости на своем сервере советую попробовать следующий<br />

php-скрипт.<br />

<br />

if($its_work=='1')<br />

{<br />

print 'Èñïîëüçîâàíî ñëåøåé: '.$i;<br />

}<br />

break;<br />

Рядом со скриптом просто положи файл work.txt с записанной<br />

в нем единичкой.<br />

Если инклуд произошел успешно, скрипт выведет тебе<br />

количество слешей, использованных для этого самого<br />

инклуда.<br />

Для полноты понимания технических сторон данного бага<br />

советую очень внимательно изучить соответствующие<br />

ссылки в сносках.<br />

И НАПОСЛЕДОК...<br />

Как видишь, прогресс в ресерчинге уязвимостей не<br />

стоит на месте. Новые баги находятся уже не в phpскриптах,<br />

а в самом интерпретаторе php! То, что раньше,<br />

казалось, взломать невозможно, сейчас представляется<br />

не более чем детской шалостью и развлечением<br />

для матерого хакера. Null-байт уже практически канул в<br />

лету, инклуд логов апача обрастает новыми изощренными<br />

методами, RFI становится доступным через протоколы,<br />

отличные от ftp и http... Что дальше? Поживем — увидим.<br />

Естественно, в наших рубриках :). z<br />

INFO<br />

info<br />

• Спасибо Античату за<br />

раскопки описанных<br />

уязвимостей.<br />

• LFI/RFI или просто<br />

«Local/Remote File<br />

Include» — наиболее<br />

часто встречающаяся<br />

уязвимость в phpскриптах.<br />

WARNING<br />

warning<br />

Внимание! Информация<br />

представлена<br />

исключительно<br />

с целью ознакомления!<br />

Ни автор, ни<br />

редакция за твои<br />

действия ответственности<br />

не несут!<br />

DVD<br />

dvd<br />

• Все скрипты<br />

и примеры инклудов,<br />

упоминающихся<br />

в статье, ищи на<br />

диске.<br />

• На диске ты найдешь<br />

увлекательный видеоурок,<br />

позволяющий на<br />

практике увидеть перечисленные<br />

в статье<br />

способы инклуда.<br />

063

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!