Точикистонский косяк 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 и предназначен для людей, у которых нет возможности пользоваться фтп, или им по каким-то причинам отказано в доступе». Ну конечно, фтп! Вопреки всей логике автора программы я попытался залогиниться на фтпшник с добытыми логином и пассом, и, что самое удивительное, меня пропустили - вот он, доступ. На скорую руку я настрочил следующий код: |