24 марта, 201410 yr Author zhenyasim, могу дать ссылку, но у каждого свой чат. Вот пожалуйста. __wm-chat.web-mastera.com/wm-chat/
24 марта, 201410 yr Kylaksizov, ты там регистрацию отключил? Мне хотелось посмотреть на эту вещь в целом и безопасность оценить.
24 марта, 201410 yr Author zhenyasim, ничего я не отключал Регистрация появляеться, когда чат установишь себе))) Видимо не понятно написал. Чатом могут пользоваться только те у кого он установлен на хостинге. Когда устанавливаешь чат, он перекидывает на мой чат где ты проходишь регистраци. Только после этого тебя пускает в чат автоматом. Не можете взломать? Жаль. Многие кричали, что система безопасности плохая и ужасная. так взломайте же наконец. Специалисты! Закрыли тему взлома раз не можете! Только языком можете взламывать.
24 марта, 201410 yr Kylaksizov, лол. Я даже пока и не пытался взломать. Ну ок. Завтра отпишусь о всей безопасности.
24 марта, 201410 yr Author zhenyasim, Ну я вообще-то никого не оскорблял тут. А во вторых, что для взлома нужно столько времени? Если вы конечно супер специалист, то я не спорю, взломаете так молодец, главное что б слова не на ветер. Ждёмс.
24 марта, 201410 yr Author zhenyasim, а как вы находите время общаться а потратить время на взлом не можете, разве нужно для этого много времени?
24 марта, 201410 yr Kylaksizov, у меня хостинг и форум свой. Терпение надо тоже иметь. Вашим чатом в последнюю очередь займусь.
24 марта, 201410 yr Kylaksizov, мне просто понравились эти шарики. Теперь по теме: Пока что нашел одну XSS атаку. echo file_get_contents($_POST['wm']); В файле get_mes.php Рекомендую запретить включение напрямую таких параметров. Или сделать фильтрацию запросов.
24 марта, 201410 yr Author zhenyasim, Вы мне начинаете нравиться, вы первый что хоть что-то предложил. Только я не совсем понял что значит фильтрацию запросов. Обычную проверку? Если б каждый так посоветовал, а не критиковал. Это бы помогло другим, кто будет читать тему.
24 марта, 201410 yr 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('&amp;','&lt;','&gt;'), $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: expression(alert('Ping!'));"></span> $data = preg_replace('#(<[^>]+?)style[x00-x20]*=[x00-x20]*[`'"]*.*?expression[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; } } ?> Дальше я уже завтра поищу уязвимости.
24 марта, 201410 yr Author zhenyasim, к сожалению я в ооп ещё слаб. И потом, у меня нет в коде куков. Но спасибо за совет, может разберусь.
24 марта, 201410 yr Kylaksizov, погуглите. Много полезной инфы по фильтрации найдете. Я понимаю, что нет. У вас данные тупо http-запросами передаются, на сколько я понял. Я просто пример привел. Объяснил и подтолкнул. Дальше дело за вами.
24 марта, 201410 yr Author RealUser, да я уверен, что он просто имет доступ к твоему фтп. Я сомневаюсь, что он взломал. Или может конфиг как-то нашёл у тебя. Как видишь он уже не пишет в чат, значит он в обломе. Проверок там при достаточно. Но все равно я улучшу систему безопасности. Просто не так всё быстро, тем более меня тоже проект ждёт а я тут играюсь всё.
24 марта, 201410 yr Author zhenyasim, спасибо за помощь. Думал, что сейчас уже не существует людей, которые могут помочь без критики.
24 марта, 201410 yr Author zhenyasim, Нам троим интересно, как один взломал нашего пользователя в чате, т.е. RealUser, и больше никого не смог взломать. Сейчас можно каким-то образом получить данные с чата? Читать сообщения например.
24 марта, 201410 yr Author 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.