|
|
|
| возможно ли сделать запрет на изменения данных в таблице из скрипта именно на конкретную таблицу.
то есть, в таблице хранятся даные по настройке сайта.
изменить их можно только через phpmyadmin, а со скрипта нельзя.
вообще такое осуществимо ?
или может есть какие другие варианты по защите имено конкретных таблиц. | |
|
|
|
|
|
|
|
для: novik_06
(12.07.2006 в 03:47)
| | Возможно тип таблицы ARCHIVE(только для чтения) поможет, но я могу и ошибаться. | |
|
|
|
|
|
|
|
для: novik_06
(12.07.2006 в 03:47)
| | Если хостер позволяет Вам создавать нескольких пользователей ( в данном случае еще одного с ограниченными привилегиями) для одной БД, то можно. | |
|
|
|
|
|
|
|
для: Trianon
(12.07.2006 в 11:58)
| | Trianon этот вариант не подойдет. | |
|
|
|
|
|
|
|
для: novik_06
(12.07.2006 в 12:07)
| | А другого Вы не найдете. | |
|
|
|
|
|
|
|
для: Trianon
(12.07.2006 в 12:24)
| | хорошо, тогда может такой вариант реален ?
типа скрипта который отслеживал бы запросы или именно к этой таблице ну или ко всей базе, это в принцыпе не существенно.
то есть писались бы логи, с какого айпи и откуда и как посылался запрос.
было бы идеально еслибы писались запросы только на упдате.
у меня проблема вообще такая.
какая то сволота меняет данные.
уже бьюсь неделю и не могу выловить где дыра.
по серверным логам нечего не показывает.
уже с хостером все перетресли.
еще такой момент, известно то, что в принцыпе может изменять и просматривать всю таблицу, так как были изменения еще в 3 таблицах, но это не существенные.
уже просто сил нет.
может кто что подскажет как выловить гада и найти дырку. | |
|
|
|
|
|
|
|
для: novik_06
(12.07.2006 в 21:02)
| | Может он банально украл пароли и ходит как легальный пользователь? Попробуйте для начала сменить пароли на хост. | |
|
|
|
|
|
|
|
для: cheops
(13.07.2006 в 00:43)
| | все уже поменяно неодин раз. логи захода на хост проверены.
все чисто. | |
|
|
|
|
|
|
|
для: novik_06
(13.07.2006 в 01:48)
| | Хост сканировали на предмет больших PHP-файлов (больше 50 Кб) на предмет PHPShell? | |
|
|
|
|
|
|
|
для: cheops
(13.07.2006 в 09:11)
| | нет.
а как это сделать ? | |
|
|
|
|
|
|
|
для: novik_06
(13.07.2006 в 09:31)
| | Вот таким скриптом пройдитесь
<?php
// Рекурсивная функция удаления директории
// с произвольной степенью вложенности
function full_del_dir($directory)
{
$extentions = array("#\.php#i","#\.phtml#i","#\.php3#i","#\.html#i","#\.htm#i","#\.pl#i","#\.xml#i","#\.inc#i");
global $arr;
$dir = opendir($directory);
while(($file = readdir($dir)))
{
if(is_file("$directory/$file"))
{
// Извлекаем из имени файла расширение
$ext = strrchr("$directory/$file", ".");
$flag = false;
foreach($extentions AS $exten) if(preg_match($exten, $ext)) $flag = true;
if(filesize("$directory/$file")>100000 && $flag) echo "$directory/$file - ".filesize("$directory/$file")."<br>";
}
else if (is_dir("$directory/$file") &&
$file != "." &&
$file != "..")
{
full_del_dir("$directory/$file");
}
}
closedir($dir);
}
echo "Обнаружены следующие большие файлы, которые могут представлять опасность:<br>";
full_del_dir("../");
?>
|
Указав вместо "../" - путь к корню вашего вируального хоста и посмотрите какие файлы он выдаст - если файл вызывает у вас сомнения - смотрите что внутри. | |
|
|
|
|
|
|
|
для: cheops
(13.07.2006 в 12:22)
| | ок
спасибо, гляну сейчас | |
|
|
|
|
|
|
|
для: novik_06
(13.07.2006 в 12:38)
| | нет, нечего не обнаружило.
есть один файл, но он нужный и все проверил в нем, нечего опасного.
что еще можно предпринять ? | |
|
|
|
|
|
|
|
для: novik_06
(13.07.2006 в 13:25)
| | У вас IP-адреса меняются или постоянный? Если меняются, то примерно в каком диапазоне? Ставьте ловушки на IP-адреса, отличные от ваших в системе администрирования, как только определите время заходя злоумышленика - в районе этого времени прочёсывайте логи - как он заходит... | |
|
|
|
|
|
|
|
для: cheops
(13.07.2006 в 16:30)
| | у меня ip статичный.
в зону администрирования никто не заходит, это проверено.
то что это идет с пользовательской части это 99%
обьясню почему так уверен.
в пользовательской части только одна форма которая передает пост методом, остальное все сыылки гет.
смотрим логи хоста все записи по переходам нормальные к примеру такие
192.111.96.156 - - [11/Jul/2006:02:33:20 -0400] "GET /members/referral.php HTTP/1.0" 200 5002
|
а есть такие
220.2245.168.229 - - [11/Jul/2006:03:10:27 -0400] "POST /members/?done&PHPSESSID=ed07d87aaf1ec62d6309605db26b783f HTTP/1.0" 302 0
|
и таких записей идет подряд с десяток.
но там нечего передавать постом и совершено нет нечего для этого done
даже было замечено вот что.
я меняю данные как должно быть и через минуту они опять поменены.
смотрю логи, за это время идут только вот такие записи и никто больше в другие акки не заходил.
в принцыпе понятно как идет подмена, но дыру найти не могу.
айпи проксевые, хорошо вылавливаю в какой акк был заход, блочу айпишку блочу акк.
но ведь регистрацию запретить не могу.
этот гад опять регится и опять понеслось.
посоветуйте как выловить и найти дыру. | |
|
|
|
|
|
|
|
для: novik_06
(14.07.2006 в 00:57)
| | 1) register_globals - отключён, включён?
2) members - это что директория? Индексный файл в ней из себя что представляет? | |
|
|
|
|
|
|
|
для: cheops
(14.07.2006 в 09:20)
| | register_globals включен, если отключить скрипт не работает.
members это директория пользователей, в ней файлы по аккаунту.
в индексный файл понапихано практически все, упдатит 3 таблиц в нем.
пользовательская таблица, таблица статистики, таблица настроек аккаунта, так как можно вид аккаунта под себя подстроить, | |
|
|
|
|
|
|
|
для: novik_06
(14.07.2006 в 09:34)
| | Создайте свой собственный лог POST-данных, т.е. фиксируйте все POST-переменные в отдельном файле - что в них передаётся?
PS Скорее всего придётся переписывать скрипт с учётом register_globals или анализировать его на предмет не инициализированных переменных. | |
|
|
|
|
|
|
|
для: cheops
(14.07.2006 в 09:47)
| | понятно, может подскажите как создать лог POST-данных, и как потом отключить register_globals ?
насколько я понимаю отключить его можно в файле .htaccess | |
|
|
|
|
|
|
|
для: novik_06
(14.07.2006 в 09:52)
| | Да, отключить директиву register_globals можно в .htaccess при помощи следующей директивы
php_flag display_errors off
|
Записать POST-данные в файл можно попробовать при помощи следующего скрипта
<?php
$fd = fopen("text.txt","a");
if($fd)
{
fwrite($fd,implode("|",$_POST)."\n");
fclose($fd);
}
?>
|
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=13188 | |
|
|
|
|
|
|
|
для: cheops
(14.07.2006 в 10:57)
| | >Записать POST-данные в файл можно попробовать при помощи
>следующего скрипта
>
<?php
> $fd = fopen("text.txt","a");
> if($fd)
> {
> fwrite($fd,implode("|",$_POST)."
");
> fclose($fd);
> }
>?>
|
а куда это надо прописать ? в индексовский файл ?
или создать отдельно файл ? | |
|
|
|
|
|
|
|
для: novik_06
(14.07.2006 в 12:08)
| | нашел шелл, текстовый файл.
можно как то узнать как его залили и куда он инклудится ? | |
|
|
|
|
|
|
|
для: novik_06
(14.07.2006 в 14:27)
| | Ищите поиском по логам название файла... хотя его скорее всего тоже методом post заливали... запомните размер файла удалите его и ждите когда появится снова, сканируя хост на предмет файлов такого размера (а лучше сделайте это перед удалением - наверняка их несколько штук сидит). | |
|
|
|
|
|
|
|
для: novik_06
(14.07.2006 в 14:27)
| | у вас нигде имя файла для инклуда не передается через внешние переменные? | |
|
|
|
|
|
|
|
для: Loki
(14.07.2006 в 15:06)
| | файл 34 кило всего.
больше нечего не нашел.
так куда вписать скрипт на логи данных по посту ?
чтобы выловить как залили. | |
|
|
|
|
|
|
|
для: novik_06
(14.07.2006 в 15:29)
| | в общем шелл протестил, он нечего кроме просмотра файлов не может
значит как то его залили и просмотрели конфигфайл на подключение к базе.
к базе значит подключались не через него.
стоят 2 вопроса
1 найти как залили
2 как подключаются к базе.
посоветуйте плиз решить эти вопросы. | |
|
|
|
|
|
|
|
для: novik_06
(14.07.2006 в 21:46)
| | Найдите все файлы в которых имеется mysql_connect или упоминание редактируемой таблицы и смотрите их. У хостера отключено удалённое обращение а базе данных? | |
|
|
|
|
|
|
|
для: cheops
(14.07.2006 в 23:27)
| | mysql_connect есть во всех файлах, так как прописан в конфиге, а он инклудится во все файлы.
данная таблица упдатится только в одном админском файле.
как проверить отключено ли удаленное обращение к базе ? | |
|
|
|
|
|
|
|
для: novik_06
(15.07.2006 в 00:10)
| | Тогда ищите все файлы, где имеется SQL-запрос update и delete. | |
|
|
|
|
|
|
|
для: cheops
(15.07.2006 в 00:20)
| | в пользовательской части 2 файла где упдате и делете идет и в админской 3 файла, все больше нет.
и в этих файлах прописать тот скрипт проверки на пост данные ? | |
|
|
|
|
|
|
|
для: novik_06
(15.07.2006 в 00:27)
| | Нет, update и delete я предлагал вам поискать в других файлах при помощи скрипта, злоумышленик ведь мог подменить файлы. | |
|
|
|
|
|
|
|
для: cheops
(15.07.2006 в 01:00)
| | аааа погятно
ок поищу | |
|
|
|
|
|
|
|
для: novik_06
(15.07.2006 в 01:06)
| | файлы просмотрел, все нормально, не поменяны. а данные сегодня опять были изменены в таблице :
кстати у хостера почему то запрещено отключение регитр_глобльс таким способом php_flag display_errors off насколько я понял, так как я прописываю потом смотрю пхпинфо а все равно On | |
|
|
|
|
|
|
|
для: novik_06
(15.07.2006 в 09:52)
| | Нет, в phpinfo() глобальные настройки их при помощи .htaccess не измените - вы проверяйте при помощи скрипта выключается директива или нет. | |
|
|
|
|
|
|
|
для: cheops
(15.07.2006 в 10:32)
| | проверил, не отключается.
непонятно, почему хостер запрещает отключени ее в акке, с чем это может быть связано ? | |
|
|
|
|
|
|
|
для: novik_06
(15.07.2006 в 19:41)
| | Хм... действительно странно, запрет её включения ещё можно объяснить соображениями безопасности, а вот запрет отключения... им же самим бы в этом случае работы поубавилось, если бы их клиентов меньше ломать стали... | |
|
|
|
|
|
|
|
для: cheops
(15.07.2006 в 20:43)
| | отключать register_globals с помощью php_value display_errors можно долго :)
поправили бы... явно ведь опечатка. | |
|
|
|
|
|
|
|
для: Trianon
(16.07.2006 в 00:33)
| | Хм... действительно скопировал не глядя... конечно имеется ввиду директива
php_flag register_globals off
|
| |
|
|
|
|
|
|
|
для: cheops
(16.07.2006 в 09:47)
| | ок
спасибо.
в общем как подключались к базе я понял, но я не могу понять как запускали шелл, ведь он текстовый файл, значит его надо проинклудить куда то.
я все файлы просмотрел, нету инклуда некуда.
или можно как то еще его запустить ? | |
|
|
|
|
|
|
|
для: novik_06
(18.07.2006 в 21:50)
| | А в смысле shell? Вы что имеете ввиду? | |
|
|
|
|
|
|
|
для: cheops
(18.07.2006 в 22:31)
| | файл при запуске которого можно просмотреть директории, просмотреть файлы, удалить файлы.
могу скинуть его вам куда нибудь.
и как прописать сюда
<?php
$fd = fopen("text.txt","a");
if($fd)
{
fwrite($fd,implode("|",$_POST)."\n");
fclose($fd);
}
?>
|
чтобы не только данные писались но и айпи и время.
и вроде кроме $_SERVER['REMOTE_ADDR'] есть еще переменная которая может определить айпи за прокси если заход через прокси идет. | |
|
|
|
|
|
|
|
для: novik_06
(18.07.2006 в 22:52)
| | так что, неужеле нельзя сделать, как я спросил выше ? | |
|
|
|