Методы защиты сервера | Баги сайтов вообще, вот пару багов в некоторых сайтах: 1) Всеми нами любимый

Автор Bratok2, 2009 Янв. 02, 21:21

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Ключевые слова [SEO] защита серверамутулыуязвимости на сайте

Bratok2

Баги Сайтов

Вообще, вот пару багов в некоторых сайтах:

1). Всеми нами любимый mutoolz как всем известно он сохраняет в Cookie пароли на входы, которые хранятся в tmp/cache эта уязвимость в своё время была на многих сайтах (но как всем известно, пока уязвимость есть, её никто в Интернете выкладывать не будет).
Уязвимость довольно простая, но досихпор актуальна на многих сайтах.
Решение проблемы: создать файл .htacces с такими строками


КОД
<Limit GET>
Order allow,deny
Deny from all.
Allow from 127.0.0.1.
</Limit>
<Limit POST>
Order allow,deny
Deny from all.
Allow from 127.0.0.1.
</Limit>


и поместить его в папку tmp

2). muweb или самописные сайты.
Баг в Раскидке поинтов, если у нас имеется на чаре не раскиданные поинты (допустим 100 поинтов) заполняем поля:


КОД
Streng: 50
Vitality: 20
Energi: 38
Agiliti: 0.5


при этом скрипт будет выполнен наполовину, то есть на силу на Vitality и на Energi добавятся статы, но при прочтении Agiliti т.к. число нецелое произойдет сбой поинтов и статы останутся на месте. Вообще получится, что вы на всё накинули и статы у вас остались на месте. Я раньше эту багу сам юзал на серверах MuAliennation, MuAngels и ещё множество других серверов.. Естественно сейчас на этих серверах уже всё прикрыли.

3). SQL inj
Мне много раз встречались сайты с SQL inj тоже, большинство самописных. рассмотрим скрипт смены пароля


КОД
$sql_pw_check = mssql_query("SELECT memb__pwd FROM MEMB_INFO WHERE memb__pwd='$oldpwd' and memb___id='$login'");
$pw_check = mssql_num_rows($sql_pw_check);


Здесь мы видим memb__pwd='$oldpwd' and memb___id='$login' то есть из этого следует, что если мы введём вместо пароля (зная логин) эту строку: ' OR '1'='1 то скрипт будет выполнен следующим образом:


КОД
$sql_pw_check = mssql_query("SELECT memb__pwd FROM MEMB_INFO WHERE memb__pwd='$oldpwd' OR '1'='1' and memb___id='$login'");
$pw_check = mssql_num_rows($sql_pw_check);


То есть рассмотрим подробно, что будет выполняться: memb__pwd='$oldpwd' OR '1'='1' из этого следует, что при проверке пароля если даже его нету, а 1=1 (а это всегда так) то пароль будет изменён.
массовое изменение пароля я думаю, вы уже догадались, как сделать.
login: ' OR '1'='1
Pass: ' OR '1'='1
new pass: blablabla
И скрипт выполнится для всех пользователей. (Серваки так вешать удобно, особенно где не делают Бекапы  )
Решение:
Сделать проверку на SQL inj при вводе или проверки вводимых символов.
Ну думаю эти самые простые баги в сайтах вам чемто помогут.
За ошибки сразу извиняюсь, ну туго у меня с Русским

Взлом "SQL Server" через сайт.
Как защитить "SQL Server" от взлома.

Очень часто Администрация "MuServer'а" не может понять, как взломали "MuServer", или как нарисовали вещи и т.д.

Всё это делается через базы, а точнее через "SQL Server!"

При создание сайта, вы используете такие вещи как: "AppServ" или "Denver" при этом, в "SQL Server'е" вы указываете account: "sa".

- Многие люди не понимают или не знают, что "sa" - Это account которому даны "Все Права", и при взломе любого сайта (А в каждом сайте есть дырки), взломщик получает "Полный Доступ" к вашему "MuServer'у" и "DataBases"!

- Взломщик может легко удалить вам весь и "MuServer" и "DataBases", и даже заполучить ваш "MuServer!"

Вопрос: Как избежать этого ?
Ответ": Надо создать специальный account в "SQL Server", который будет "Иметь Доступ" только к нужным "DataBases" и с ограниченными "Правами Доступа!"

Лична я думаю лудше всего использавать вот такой скрипт для SQL Query Analyzer...

Скрипт называется Backup DataBase

BEGIN TRANSACTION        DECLARE @JobID BINARY(16)  DECLARE @ReturnCode INT    SELECT @ReturnCode = 0  IF (SELECT COUNT(*) FROM msdb.dbo.syscategories WHERE name = N'[Uncategorized (Local)]') < 1  EXECUTE msdb.dbo.sp_add_category @name = N'[Uncategorized (Local)]'  -- Delete the job with the same name (if it exists)  SELECT @JobID = job_id    FROM  msdb.dbo.sysjobs    WHERE (name = N'Database BackUP')      IF (@JobID IS NOT NULL)    BEGIN  -- Check if the job is a multi-server job  IF (EXISTS (SELECT *        FROM  msdb.dbo.sysjobservers        WHERE  (job_id = @JobID) AND (server_id <> 0)))  BEGIN    -- There is, so abort the script    RAISERROR (N'Unable to import job ''Database BackUP'' since there is already a multi-server job with this name.', 16, 1)    GOTO QuitWithRollback  END  ELSE    -- Delete the [local] job    EXECUTE msdb.dbo.sp_delete_job @job_name = N'Database BackUP'    SELECT @JobID = NULL  END BEGIN  -- Add the job  EXECUTE @ReturnCode = msdb.dbo.sp_add_job @job_id = @JobID OUTPUT , @job_name = N'Database BackUP', @description = N'// makes automatically a backup from    // database MUonline and Ranking        // newer version with more fuctions coming // soon                              // SiLvER', @category_name = N'[Uncategorized (Local)]', @enabled = 1, @notify_level_email = 0, @notify_level_page = 0, @notify_level_netsend = 0, @notify_level_eventlog = 0, @delete_level= 0  IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback  -- Add the job steps  EXECUTE @ReturnCode = msdb.dbo.sp_add_jobstep @job_id = @JobID, @step_id = 1, @step_name = N'backup and save in D:/', @command = N'BACKUP DATABASE [muonline] TO DISK = N''D:MuServerdb_muonline.bak'' WITH INIT , NOUNLOAD , NAME = N''muonline backup'', NOSKIP , STATS = 10, NOFORMATBACKUP DATABASE [ranking] TO DISK = N''D:MuServerdb_ranking.bak'' WITH INIT , NOUNLOAD , NAME = N''muonline backup'', NOSKIP , STATS = 10, NOFORMAT', @database_name = N'master', @server = N'', @database_user_name = N'', @subsystem = N'TSQL', @cmdexec_success_code = 0, @flags = 0, @retry_attempts = 0, @retry_interval = 1, @output_file_name = N'', @on_success_step_id = 0, @on_success_action = 3, @on_fail_step_id = 0, @on_fail_action = 3  IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback  EXECUTE @ReturnCode = msdb.dbo.sp_add_jobstep @job_id = @JobID, @step_id = 2, @step_name = N'baclup and save in WINDOWS', @command = N'BACKUP DATABASE [muonline] TO DISK = N''C:WINDOWSMuonlinedb_muonline.bak'' WITH INIT , NOUNLOAD , NAME = N''muonline backup'', NOSKIP , STATS = 10, NOFORMATBACKUP DATABASE [ranking] TO DISK = N''C:WINDOWSMuonlinedb_muonline.bak'' WITH INIT , NOUNLOAD , NAME = N''muonline backup'', NOSKIP , STATS = 10, NOFORMAT', @database_name = N'master', @server = N'', @database_user_name = N'', @subsystem = N'TSQL', @cmdexec_success_code = 0, @flags = 0, @retry_attempts = 0, @retry_interval = 1, @output_file_name = N'', @on_success_step_id = 0, @on_success_action = 3, @on_fail_step_id = 0, @on_fail_action = 3  IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback  EXECUTE @ReturnCode = msdb.dbo.sp_add_jobstep @job_id = @JobID, @step_id = 3, @step_name = N'backup and save in C:/', @command = N'BACKUP DATABASE [muonline] TO DISK = N''C:db_muonline.bak'' WITH INIT , NOUNLOAD , NAME = N''muonline backup'', NOSKIP , STATS = 10, NOFORMATBACKUP DATABASE [ranking] TO DISK = N''C:db_ranking.bak'' WITH INIT , NOUNLOAD , NAME = N''muonline backup'', NOSKIP , STATS = 10, NOFORMAT', @database_name = N'master', @server = N'', @database_user_name = N'', @subsystem = N'TSQL', @cmdexec_success_code = 0, @flags = 0, @retry_attempts = 0, @retry_interval = 1, @output_file_name = N'', @on_success_step_id = 0, @on_success_action = 1, @on_fail_step_id = 0, @on_fail_action = 2  IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback  EXECUTE @ReturnCode = msdb.dbo.sp_update_job @job_id = @JobID, @start_step_id = 1  IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback  -- Add the job schedules  EXECUTE @ReturnCode = msdb.dbo.sp_add_jobschedule @job_id = @JobID, @name = N'backup database every12 hours', @enabled = 1, @freq_type = 4, @active_start_date = 20050928, @active_start_time = 0, @freq_interval = 1, @freq_subday_type = 8, @freq_subday_interval = 12, @freq_relative_interval = 0, @freq_recurrence_factor = 0, @active_end_date = 99991231, @active_end_time = 235959  IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback  -- Add the Target Servers  EXECUTE @ReturnCode = msdb.dbo.sp_add_jobserver @job_id = @JobID, @server_name = N'(local)'  IF (@@ERROR <> 0 OR @ReturnCode <> 0) GOTO QuitWithRollback ENDCOMMIT TRANSACTION    GOTO  EndSave      QuitWithRollback:  IF (@@TRANCOUNT > 0) ROLLBACK TRANSACTION EndSave:

exclick0r


Ницца человек, это хорошо, это поможет много народу

Похожие темы (5)