ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > Безопасность и Уязвимости > Проверка на уязвимости
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Cosmiqum
  #1  
Старый 19.07.2009, 13:44
bogus92
Новичок
Регистрация: 03.08.2007
Сообщений: 13
Провел на форуме:
46093

Репутация: 3
Отправить сообщение для bogus92 с помощью ICQ
По умолчанию Cosmiqum

Помнится, пару лет назад, когда я только начинал изучать PHP я упомянал, что делаю свою CMS, которую успешно взломал тов. halkfild (Спасибо, иначе я не узнал бы о том, что такое SQL-Inj. ). Ну что ж, прошло кое-какое время, я многому научился. И теперь я разработал новую CMS, которая даже больше похожа на фреймворк. Имя её Cosmiqum. Прошу посмотреть на неё и сказать, не пропустил ли я чего.

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

http://code.google.com/p/cosmiqum/

P.S. Также, буду рад комментариям по поводу оформления кода.

UPD. Добавил плагины для работы с шаблонами и для работы с БД. просьба проверить и их. Также немного изменил ядро.

Последний раз редактировалось bogus92; 21.07.2009 в 00:06..
 
Ответить с цитированием

  #2  
Старый 19.07.2009, 22:26
BlackSun
Members of Antichat - Level 5
Регистрация: 01.04.2007
Сообщений: 1,268
Провел на форуме:
10046345

Репутация: 4589


По умолчанию

Из недочетов:
В функции LoadLang (как в файле engine/includes/functions.php, так и в engine/includes/plugins.class.php) не помешало бы добавить не большую фильтрацию - вырезать / и .., после чего обрезать по длинне - ограничить до 255 символов.

Больше ничего, покрайней мере я, не нашел.
 
Ответить с цитированием

  #3  
Старый 19.07.2009, 22:57
bogus92
Новичок
Регистрация: 03.08.2007
Сообщений: 13
Провел на форуме:
46093

Репутация: 3
Отправить сообщение для bogus92 с помощью ICQ
По умолчанию

Спасибо, поправлю. Когда выложу плагины, там наверняка будет побольше уязвимостей, особенно плагин для работы с БД.
UPD: Добавил 2 плагина. Первый пост обновлен.

Последний раз редактировалось BlackSun; 22.07.2009 в 11:53..
 
Ответить с цитированием

  #4  
Старый 22.07.2009, 10:39
m0nsieur
Участник форума
Регистрация: 08.04.2008
Сообщений: 242
Провел на форуме:
2230263

Репутация: 229
По умолчанию

Файл core.php, хоть к выводу путей это не приводит т.к. ошибки пишутся в твой класс, но все же можно избавиться от этих ошибок.

к примеру:
http://cms.lo/index.php?a[]=1

// твоя фильтрация xss и аналогичные обработки $_POST, $_COOKIE
Код:
foreach ($_GET as $key => $value) {
 	$_GET[$key] = htmlspecialchars($value); 
}
тогда $value будет содержать
Код:
Array (  [0] => 1 )
и как следствие ошибка
Код:
htmlspecialchars() expects parameter 1 to be string, array given
которая запишется в $oErrors, ничего критичного в этом нет, но все же можно избавится от ненужной ошибки, проверкой на массив перед тем как отдавать в htmlspecialchars()
 
Ответить с цитированием

  #5  
Старый 22.07.2009, 13:01
bogus92
Новичок
Регистрация: 03.08.2007
Сообщений: 13
Провел на форуме:
46093

Репутация: 3
Отправить сообщение для bogus92 с помощью ICQ
По умолчанию

Ага, спасибо, поправил + добавил еще 2 плагина
 
Ответить с цитированием

  #6  
Старый 23.07.2009, 19:23
m0nsieur
Участник форума
Регистрация: 08.04.2008
Сообщений: 242
Провел на форуме:
2230263

Репутация: 229
По умолчанию

Файл registration.php. Функ HandlePage.

Код:
$oPluginDb->Query("UPDATE ".$oPluginDb->sPrefix."users SET "."`code`='', `active`=1 WHERE `id`=$id");
ты обычно использовал
Код:
$oPluginDb->Quote($_param)
а тут
Код:
WHERE `id`=$id
насколько я понял это $_REQUEST['id']. В ситуации, когда
Код:
magic_quotes_gpc=Off;
возможна sql-inj

P.S. поправьте если ошибаюсь.
 
Ответить с цитированием

  #7  
Старый 23.07.2009, 23:56
bogus92
Новичок
Регистрация: 03.08.2007
Сообщений: 13
Провел на форуме:
46093

Репутация: 3
Отправить сообщение для bogus92 с помощью ICQ
По умолчанию

Цитата:
Сообщение от m0nsieur  
P.S. поправьте если ошибаюсь.
Да, спасибо, все верно... пропустил просто этот момент ) Более того, у меня там вместо $iId просто $id...

Кстати. magic_quotes никакой роли не играет, т.к. если он включен, то экранированые кавычки превращаются в обычные и если не фильтровать переменную при запросе в БД то запрос уязвим.

Последний раз редактировалось BlackSun; 24.07.2009 в 00:13.. Причина: не забываем про кнопку "edit", даблпостинг не одобряется
 
Ответить с цитированием

  #8  
Старый 27.07.2009, 12:51
m0nsieur
Участник форума
Регистрация: 08.04.2008
Сообщений: 242
Провел на форуме:
2230263

Репутация: 229
По умолчанию

Та же история в файле restorepw.php
Функ HandlePage. Для параметра $iId забыл $oPluginDb->Quote()
Код:
			
$iId = $_REQUEST['id']; 			
$sCode = $_REQUEST['code'];  			

$aRow = $oPluginDb->Record("SELECT * FROM ".$oPluginDb->sPrefix."users "."WHERE `id`=$iId AND `code`=".$oPluginDb->Quote($sCode)." AND `active`=1");
Посмотри еще раз этот файл на предмет фильтрации, там еще в нескольких местах встречается.

И еще очепятка =) выделена жирным
Код:
		
if ($sPage == 'restorepw_setpw' && isset($_REQUEST['id']) && 
$_REQEST['id']>0 && isset($_REQUEST['code']) &&	strlen($_REQUEST['code'])==32) 		{
 
Ответить с цитированием

  #9  
Старый 27.07.2009, 17:52
bogus92
Новичок
Регистрация: 03.08.2007
Сообщений: 13
Провел на форуме:
46093

Репутация: 3
Отправить сообщение для bogus92 с помощью ICQ
По умолчанию

Цитата:
Сообщение от m0nsieur  
Та же история в файле restorepw.php
Функ HandlePage. Для параметра $iId забыл $oPluginDb->Quote()
Там все нормально. См. выше:
...isset($_REQUEST['id']) && $_REQEST['id']>0 &&...
т.е. id должен быть числом больше нуля, а значит туда нельзя подставить ничего лишнего нельзя.

Цитата:
Сообщение от m0nsieur  
И еще очепятка =) выделена жирным
Код:
		
if ($sPage == 'restorepw_setpw' && isset($_REQUEST['id']) && 
$_REQEST['id']>0 && isset($_REQUEST['code']) &&	strlen($_REQUEST['code'])==32) 		{
а за это спасибо! )
 
Ответить с цитированием

  #10  
Старый 27.07.2009, 18:26
m0nsieur
Участник форума
Регистрация: 08.04.2008
Сообщений: 242
Провел на форуме:
2230263

Репутация: 229
По умолчанию

Все несколько иначе.
Код:
$_REQUEST['id']>0
если ты полагаешься на эту проверку, то смотри выполни этот код с параметром test.php?id=1'
Код:
<?php
  if (isset($_REQUEST['id']) && $_REQUEST['id'] > 0) {
      echo $_REQUEST['id'];
  }
?>
проверка будет пройдена и результат распечатан и след. в предыдущем посте я был прав, следовательно проверка не правильно составлена. Советую переделать на такой вариант:
Код:
// после этого ты точно будешь знать, что у тебя там число
$iId = intval($_REQUEST['id']);
и потом делать проверку на
Код:
if (!empty($iId))

Последний раз редактировалось m0nsieur; 27.07.2009 в 18:30..
 
Ответить с цитированием
Ответ





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


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




ANTICHAT.XYZ