Jump to content

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

Featured Replies

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

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

Most Popular Posts

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

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

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

  • Author

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

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

  • Author

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

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

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

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

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

В файле get_mes.php

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

  • Author

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


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

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;

        }



}

?>

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

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

  • Author

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

  • Author

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

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.