03.04.2014 Views

Май - Xakep Online

Май - Xakep Online

Май - 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 />

Ценная инфа, выводимая Apache<br />

Техническая информация о сервере<br />

Зато меня порадовали директории. Сначала<br />

я заглянул в папку /icons, даже и не надеясь<br />

найти там что-то интересное :). Далее выяснилось,<br />

что на сервере стоит phpMyAdmin в одноименной<br />

папке. А это уже интересно. Затем<br />

админка, которая находилась в /config. При ее<br />

осмотре на наличие SQL-инъекции, с помощью<br />

которой можно было бы войти в админку<br />

по запросу типа «' or '1' = '1'», я снова ничего<br />

не нашел. Я подождал еще немного, и сканер<br />

скинул мне линки на /webmail (с нее тоже было<br />

нечего взять) и на Error_Log, в котором мне<br />

посчастливилось обнаружить лог ошибок в<br />

PHP-скриптах:<br />

[20‐Dec-2005 23:56:19] PHP<br />

Warning: file(news.xml): failed<br />

to open stream: No such file or<br />

directory in /home/medicalc/<br />

public_html/money/xml.php on<br />

line 14<br />

[20‐Dec-2005 23:56:19] PHP<br />

Warning: join(): Bad arguments.<br />

in /home/medicalc/public_html/<br />

money/xml.php on line 14<br />

[20‐Dec-2005 23:56:19] PHP Fatal<br />

error: Call to a member function<br />

on a non-object in /home/<br />

medicalc/public_html/money/xml.<br />

php on line 26<br />

[20‐Dec-2005 23:59:03] PHP Fatal<br />

error: Call to a member function<br />

on a non-object in /home/<br />

medicalc/public_html/money/xml.<br />

php on line 26<br />

[21‐Dec-2005 00:03:49] PHP<br />

Warning: fopen(rss.xml): failed<br />

to open stream: Permission denied<br />

in /home/medicalc/public_html/<br />

money/rss.php on line 57<br />

[09‐Jan-2006 17:42:28] PHP<br />

Warning: mysql_connect(): Can't<br />

connect to local MySQL server<br />

through socket '/var/tmp/mysql.<br />

sock' (2) in /home/medicalc/<br />

public_html/money/index.php on<br />

line 5<br />

Естественно, из ошибок вытянуть чего-нибудь<br />

занятное не получилось, но это только на<br />

первый взгляд. Теперь совершенно очевидно,<br />

что скрипты работают с MySQL и полный путь к<br />

сайту у нас таков: /home/medicalc/public_html/<br />

emoney.<br />

Ты думаешь, на этом мое исследование<br />

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

пойти болтать в IRC? Нет. Самое главное, что<br />

нашел сканер, — это /server-status. Теперь уже<br />

интересно…<br />

Существенная зацепка<br />

Что же это за загадочная дира — /server-status?<br />

Это даже не просто директория и не скрипт, а<br />

исключительно Apache'вская примочка. Она<br />

отображает всю информацию о веб-сервере:<br />

версию Apache, модули и т.д., текущее время,<br />

аптайм сервера, нагрузку CPU. Кроме того, из<br />

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

о том, какие сайты хостятся на всем сервере. В<br />

общем, выглядит это так, как на картинке.<br />

Я собрал список сайтов и принялся их изучать.<br />

К слову сказать, их оказалось всего 5-6. Но и<br />

тут было, где разгуляться. Для тех, кто в танке,<br />

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

этих двух сайтов баг и получаю шелл на сервере<br />

обменника. Далее если администратор сервера<br />

— идиот и неправильно выставил chmod'ы, то<br />

я постараюсь забраться на обменник, в ином<br />

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

локально :).<br />

Итак, я выбрал сайт medicalc.ua. Почему? Да<br />

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

сайт оказался в Error_Log'e моего обменника с<br />

ошибками PHP-скрипта:<br />

[09‐Jan-2006 17:42:28] PHP<br />

Warning: mysql_connect(): Can't<br />

connect to local MySQL server<br />

through socket '/var/tmp/mysql.<br />

sock' (2) in /home/medicalc/<br />

public_html/money/index.php on<br />

line 5<br />

Это можно увидеть из директории, в которой<br />

находится сайт. Согласись, логично думать, что<br />

этот сайт и мой обменник очень тесно связаны<br />

друг с другом, ведь не просто так в логах<br />

хранятся его ошибки. Да, кстати, тоже самое (я<br />

о том, как узнать, какие сайты хостятся на сервере)<br />

тебе может предложить и метод Reverse<br />

IP LookUp, о котором NSD писал в мартовском<br />

номере за 2005 год в статье «Удар по WEB’у». Но,<br />

к сожалению, сервис domainsdb.org накрылся,<br />

поэтому я предлагаю тебе альтернативный<br />

сервис www.domaintools.com.<br />

Итак, перейдя на интересующий меня ресурс<br />

meidcalc.ua, я обнаружил сайт, посвященный<br />

медицине. Особо ей не интересуясь и потому не<br />

отвлекаясь, я начал осматривать скрипты. Сначала<br />

я заглянул во что-то вроде гостевой книги<br />

/guestbook, но, несмотря на все свои усилия,<br />

ничего найти так и не смог, хотя был уверен, что<br />

активная XSS тут будет точно :). Но затем удача<br />

повернулась ко мне лицом, и уже через пару<br />

минут я нашел линк вида «index.php?id=37». По<br />

привычке я поставил в переменную id свою элитную<br />

кавычку и увидел очень интересную ошибку:<br />

PHP Warning: mysql_fetch_<br />

array(): supplied argument is<br />

not a valid MySQL result resource<br />

in /home/medicalc/public_html/<br />

medical/index.php on line 416<br />

Отлично! SQL-инъекция во всей ее красе!<br />

Штурмуем инъекцию!<br />

К сожалению, разработчики MySQL не предусмотрели<br />

в ней функций вроде UNION SELECT<br />

ALL_DATABASE_DUMP или UNION SELECT<br />

OTDAY_MNE_VSE_PAROLI :), поэтом оставалось<br />

только подобрать количество столбцов и<br />

узнать имена таблиц, что я и принялся делать.<br />

Как выяснилось, столбцов было всего 6 и<br />

запрос, который бы выполнялся без ошибок,<br />

выглядел так:<br />

http://medicalc.ua/index.php?id=<br />

1+UNION+select+1,2,3,4,5,6/*<br />

Сначала я собрал информацию о версии<br />

MySQL-базы и о том, с чем я вообще имею дело:<br />

xàêåð 05 /101/ 07<br />

/<br />

059

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

Saved successfully!

Ooh no, something went wrong!