Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #84, ДЕКАБРЬ 2005 г.

Точикистонский косяк

MorpheuS (uin: 371200)

Хакер, номер #084, стр. 084-050-3


if (isset($_REQUEST['u'])) { $u = $_REQUEST['u']; }

else { $u = ""; }

Эта строчка и позволяла мне беспрепятственно изменить значение переменной, объявив скрипту, что я честно прошел процедуру авторизации и мне можно доверять. Критическая ошибка программиста-утырка сыграла мне на руку!

Уверенный в своей удаче, я решил наконец-таки разобраться с сайтом банка до конца.

Перейдя к файл-менеджеру по адресу www.nbt.tj/en/files/fm.php, я очутился перед знакомым окошком. Как и полагается, логин пользователя был уже прописан в своем поле, а это все, что мне было нужно. Я быстро переправил урл на www.nbt.tj/en/files/fm.php?u=nbtjftp и скрипт с удовольствием авторизировал меня.

[сплошной read only]

Каково же было мое разочарование, когда я обнаружил, что права на создание и редактирование файлов скрипт не предоставляет, также отсутствуют права на аплоад файлов на сервер. В общем, сплошной read only :(. Рабочая директория была ограничена: скрипт отказывался подниматься уровнем выше, и были доступны только корневая папка, где и был проинсталлирован скрипт, причем хитрый автор запрограммировал его скрывать самого себя от глаз пользователя. Одним словом, я увидел совсем не то, что ожидал. И с этим надо было как-то бороться.

Наученный опытом подделки переменной $u, я тщательно следил за структурой урла и переменных, которые передаются скрипту. Мое подозрение пало на процесс просмотра файла, когда через переменную edit скрипту передавалось имя файла, указанного пользователем. Хм, а что если передать переменной что-то типа ../../../../../../../../etc/passwd? Таким образом, исправив урл на

www.nbt.tj/en/file/fm.php?u=nbtjftp&edit=../../../../../../../../etc/passwd&copt=1, я смог просматривать любые файлы на сервере, которые были доступны моему пользователю. Я решил посмотреть исходник скрипта, для чего задал значение переменной $edit, равное fm.php. Как я и ожидал, внутри сорца были жестко прописаны админские реквизиты: nbtjftp:ftpnb02.

После этого произошло самое ужасное: я задался извечным русским вопросом «что делать?». Мне хотелось намного большего, чем просто просмотр файлов, а свежих идей в голове практически не оставалось.

[сервер изнутри]

Решив немного отвлечься, я принялся читать авторское описание скрипта. Разработчик писал: «данный скрипт создан как альтернатива FTP и предназначен для людей, у которых нет возможности пользоваться фтп, или им по каким-то причинам отказано в доступе». Ну конечно, фтп! Вопреки всей логике автора программы я попытался залогиниться на фтпшник с добытыми логином и пассом, и, что самое удивительное, меня пропустили - вот он, доступ. На скорую руку я настрочил следующий код:

Назад на стр. 084-050-2  Содержание  Вперед на стр. 084-050-4