Jump to content

Чат для администраторов

Featured Replies

  • Replies 64
  • Просмотров 5,4k
  • Created
  • Последний ответ

Лучшие авторы в теме

Most Popular Posts

  • Ух ты! Классный чат, спасибо

  • Использую чат с самого его создания. Участвовал в тестировании. Скажу одно: классно! Большое Спасибо Владимиру.

  • Баг-репорт. А я без установки чата могу читать и писать сообщения

comment_59470

Kylaksizov, ты там регистрацию отключил? Мне хотелось посмотреть на эту вещь в целом и безопасность оценить.

  • Author
comment_59471

zhenyasim, ничего я не отключал  :D Регистрация появляеться, когда чат установишь себе))) Видимо не понятно написал. Чатом могут пользоваться только те у кого он установлен на хостинге. Когда устанавливаешь чат, он перекидывает на мой чат где ты проходишь регистраци. Только после этого тебя пускает в чат автоматом. Не можете взломать? Жаль. :hi:

Многие кричали, что система безопасности плохая и ужасная. так взломайте же наконец. Специалисты! Закрыли тему взлома раз не можете! Только языком можете взламывать.

comment_59472

Kylaksizov, лол. Я даже пока и не пытался взломать. Ну ок. Завтра отпишусь о всей безопасности.

  • Author
comment_59473

zhenyasim, Ну я вообще-то никого не оскорблял тут. А во вторых, что для взлома нужно столько времени? Если вы конечно супер специалист, то я не спорю, взломаете так молодец, главное что б слова не на ветер. Ждёмс.

  • Author
comment_59475

zhenyasim, а как вы находите время общаться а потратить время на взлом не можете, разве нужно для этого много времени?

comment_59476

Kylaksizov, у меня хостинг и форум свой. Терпение надо тоже иметь. Вашим чатом в последнюю очередь займусь.

comment_59480

Kylaksizov, мне просто понравились эти шарики.

Теперь по теме:

Пока что нашел одну XSS атаку.

echo file_get_contents($_POST['wm']);

В файле get_mes.php

Рекомендую запретить включение напрямую таких параметров. Или сделать фильтрацию запросов.

  • Author
comment_59482

zhenyasim, Вы мне начинаете нравиться, вы первый что хоть что-то предложил. Только я не совсем понял что значит фильтрацию запросов. Обычную проверку?


Если б каждый так посоветовал, а не критиковал. Это бы помогло другим, кто будет читать тему.

comment_59483

Kylaksizov, нет. Именно фильтрацию.

Пример кода. Переделаете под себя:

class XssFilter extends CFilter

{



        public  $clean = 'all';       



        protected function preFilter($filterChain)

        {              

                $this->clean  = trim(strtoupper($this->clean));

                $data = array(

                         'GET'    => &$_GET,

                         'POST'   => &$_POST,

                         'COOKIE' => &$_COOKIE,

                         'FILES'  => &$_FILES

                );

                

                if($this->clean === 'ALL' || $this->clean === '*')

                {                        

                        $this->clean = 'GET,POST,COOKIE,FILES';

                }



                $dataForClean = split(',',$this->clean);

                if(count($dataForClean))

                {                 

                        foreach ($dataForClean as $key => $value)

                        {                 

                                if(isset ($data[$value]) && count($data[$value]))

                                {

                                        $this->doXssClean($data[$value]);

                                }

                        }

                }



              return true;

        }

        



        protected function postFilter($filterChain)

        {

                // logic being applied after the action is executed

        }





        private function doXssClean(&$data)

        {

                if(is_array($data) && count($data))

                {                       

                       foreach($data as $k => $v)

                       {

                               $data[$k] = $this->doXssClean($v);

                       }

                       return $data;

                }



                if(trim($data) === '')

                {

                        return $data;

                }



                // xss            

                $data = str_replace(array('&','<','>'), array('&','<','>'), $data);

                $data = preg_replace('/(&#*w+)[x00-x20]+;/u', '$1;', $data);

                $data = preg_replace('/(&#x*[0-9A-F]+);*/iu', '$1;', $data);

                $data = html_entity_decode($data, ENT_COMPAT, 'UTF-8');

                // Remove any attribute starting with "on" or xmlns

                $data = preg_replace('#(<[^>]+?[x00-x20"'])(?:on|xmlns)[^>]*+>#iu', '$1>', $data);

                // Remove javascript: and vbscript: protocols

                $data = preg_replace('#([a-z]*)[x00-x20]*=[x00-x20]*([`'"]*)[x00-x20]*j[x00-x20]*a[x00-x20]*v[x00-x20]*a[x00-x20]*s[x00-x20]*c[x00-x20]*r[x00-x20]*i[x00-x20]*p[x00-x20]*t[x00-x20]*:#iu', '$1=$2nojavascript...', $data);

                $data = preg_replace('#([a-z]*)[x00-x20]*=(['"]*)[x00-x20]*v[x00-x20]*b[x00-x20]*s[x00-x20]*c[x00-x20]*r[x00-x20]*i[x00-x20]*p[x00-x20]*t[x00-x20]*:#iu', '$1=$2novbscript...', $data);

                $data = preg_replace('#([a-z]*)[x00-x20]*=(['"]*)[x00-x20]*-moz-​binding[x00-x20]*:#u', '$1=$2nomozbinding...', $data);

                // Only works in IE: <span style="width: exp​ression(alert('Ping!'));"></span>

                $data = preg_replace('#(<[^>]+?)style[x00-x20]*=[x00-x20]*[`'"]*.*?exp​ression[x00-x20]*([^>]*+>#i', '$1>', $data);

                $data = preg_replace('#(<[^>]+?)style[x00-x20]*=[x00-x20]*[`'"]*.*?behaviour[x00-x20]*([^>]*+>#i', '$1>', $data);

                $data = preg_replace('#(<[^>]+?)style[x00-x20]*=[x00-x20]*[`'"]*.*?s[x00-x20]*c[x00-x20]*r[x00-x20]*i[x00-x20]*p[x00-x20]*t[x00-x20]*:*[^>]*+>#iu', '$1>', $data);

                // Remove namespaced elements (we do not need them)

                $data = preg_replace('#</*w+:w[^>]*+>#i', '', $data);

                do

                {

                        // Remove really unwanted tags

                        $old_data = $data;

                        $data = preg_replace('#</*(?:applet|b(?:ase|gsound|link)|embed|frame(?:set)?|i(?:frame|layer)|l(?:ayer|ink)|meta|object|s(?:cript|tyle)|title|xml)[^>]*+>#i', '', $data);

                }

                while ($old_data !== $data);                

                return $data;

        }



}

?>

Дальше я уже завтра поищу уязвимости.

  • Author
comment_59484

zhenyasim, к сожалению я в ооп ещё слаб. И потом, у меня нет в коде куков. Но спасибо за совет, может разберусь.

comment_59485

Kylaksizov, погуглите. Много полезной инфы по фильтрации найдете. Я понимаю, что нет. У вас данные тупо http-запросами передаются, на сколько я понял. Я просто пример привел. Объяснил и подтолкнул. Дальше дело за вами.

  • Author
comment_59487

RealUser, да я уверен, что он просто имет доступ к твоему фтп. Я сомневаюсь, что он взломал. Или может конфиг как-то нашёл у тебя. Как видишь он уже не пишет в чат, значит он в обломе. Проверок там при достаточно. Но все равно я улучшу систему безопасности. Просто не так всё быстро, тем более меня тоже проект ждёт а я тут играюсь всё.

comment_59490

Kylaksizov, очень хорошо.)


Ладно. Завтра еще XSS поищу. Развивайтесь дальше. :)

  • Author
comment_59491

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

  • Author
comment_59493

zhenyasim, Нам троим интересно, как один взломал нашего пользователя в чате, т.е. RealUser, и больше никого не смог взломать. Сейчас можно каким-то образом получить данные с чата? Читать сообщения например.

  • Author
comment_59497

zhenyasim, тогда это очень интересно). Жаль что он не скажет. Так бы можно было понять что делать.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.


Guest
Ответить в этой теме...

Последние посетители 0

  • No registered users viewing this page.