Сайт White Фенигза aka Tristram'a К сожалению, не смог нормально вломать этот сайт в силу всяких там open_base_dir эффектов. Но индекс изменил этой мрази. Пусть теперь разгребает. http://xengine.whitephoenix.ru/ a:1:{s:4:"data";a:3:{s:4:"wsid";i:7940;s:6:"random";a:2: {s:6:"quotes";a:2:{i:0;i:471753590;i:1;i:1;}s:5:"jokes";a:2: {i:0;i:753481009;i:1;i:1;}}s:13:"treemenu_temp";a:1:{i:1;N;}}} Fatal error: Class 'serialized_file' not found in /home/phoenix/domains/xengine.whitephoenix.ru/public_html/core/core-session.php on line 23
Да не всем пох*й!! Я просто это сделал не с целью крутого дифейса, а для того, чтобы щелкнуть по носу уродцу Tristram'у, за то, что он сделал. Вообще, я даже индекс не сменил. Если я был не прав - и Вы так считаете, то 1) Наказывайте меня, если все настолько серьезно как хотите; 2) А что - если бы я написал Дружественный взлом было это что-то изменило? 3) Я еще раз скажу, что мне не все равно на эти правила - поверь, если бы мне было все рано - то зеркало было бы не одно, а уже штук 5 не менее серьезных зеркал висело. И если бы мной двигала жажда славы - я бы вывешивал эти зеркала пачками, а на моем сайте висели бы описания всех крупных взломов. И вообще я не понимаю, такая ситуация - что если бы я избил кого-то, обидел моего родстаенника - мне что, правильно было бы говорить - а зачем ты ему лицо разбил? Не мог без синяков что-ли? Попрошу админа, чтоб убрали зеркало.
Методы? Ок. Мною было найдено три ошибки на этом сайте. Глобальных я имею ввиду. Первая - недостаточная фильтрация, а точнее, не правильная обработка загружаемых изображений (в частности, EXIF-теги закрывались, а вот если тупо окрыть Блокнотом gif-файл и вписать в центре (обязательно в центре и только в пустых блоках!) php код, скрипт выдавал ошибку, согласно которой картинка, якобы отказывалась перезаписываться). При этом выдавался путь к скрипту. Кстати, скоро я все-таки допишу начатую статью про все известные мне способы взлома через аплоад файла. Вторая бага была найдена мной в куках. Точнее в отстутствии фильтрации одной из переменных в сессии. Такого я точно еще не встречал. Чтобы в переменной, в которой хранится сессия, можно было читать файл. Но тут меня постиг облом: в настройках был установлен open_base_dir эффект. Точнее, это я узнал только после того при помощи того, что знал полный путь к скрипту, так как ../../../../ там не прокатывало (читать фалы не удавалось). Точнее, ../../../../ позволило мне выяснить имена различных директорий на сервере. То есть если ../../../../../../../../../../etc/passwd То писало, что-то типа Warning: file_exists() [function.file-exists]: open_basedir restriction in effect. File(/../../../../../../../../etc/passwd) is not within the allowed path(s): а если ../../../../../../../../../../../../no_such_dir/passwd Кол-во ошибок увеличивалось вдвое и сами ошибки изменялись. Соответственно, ../../../../../../../../../../usr/../etc/passwd Выдавало первый тип ошибки, то есть директория usr существовала. Таким методом (кстати, описанным мной в моей статье, но как выяснилось, действующим далеко не на каждом сервере, и зависящем от конфигурации самого сервака и настроек php) я выяснил имена нескольких интересующих меня директорий. А вот при подстановке: /real/path/to/loxowskij/site/scipt.php я мог увидеть кусками скрипт, точнее эти куски выкидывались очень подробными сообщениями об ошибках как элемент ошибки. Кроме того, много полезного я узнал при чтении js-скритптов, из которых можно было узнать пути к некоторым инересным файлам. Подробности роковой ошибки я разглашать не буду, т. к. с нее можно понять еще много чего. Суть ее в том, что данные переданные в одной хорошо спрятанной переменной заносятся в сериализованный средствами php массив (serialize()), и там хранятся. Но сам скрипт требует перед собой наличия еще двух переменных с определенными значениями (при изменении значений трюк проваливается). Сами переменные и значения спрятаны в этом самом сериализованном массиве. Чтобы привести нужно использовать unserialize() функцию. Которая, собственно, и позволила мне выяснить, все что нужно. До сих пор незакрытой остается XSS в форуме. Кроме того, там установлен Direct Admin и phpMyAdmin, в исходниках которого я сейчас ищу баги. Но т. к. там слишком запутанная система инициализации переменных, на особую удачу я не рассчитываю.