Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

книги хакеры / Защита_от_взлома_сокеты,_эксплойты,_shell_код_Фостер_Дж_

.pdf
Скачиваний:
14
Добавлен:
19.04.2024
Размер:
3.68 Mб
Скачать

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

 

X

 

 

 

 

 

 

 

 

-

 

 

 

 

d

 

 

 

F

 

 

 

 

 

 

t

 

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

 

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

 

to

 

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

 

.

 

 

 

 

 

.c

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

 

 

 

 

e

 

*

 

 

 

df-xch42an

 

 

 

 

 

 

 

 

43

 

 

 

*/

 

 

 

 

 

44

 

 

 

bool Init(string filename);

 

 

 

 

 

45

 

 

 

 

 

 

 

 

 

46

 

 

 

/*

 

 

 

 

 

47

 

 

 

* Size()

 

 

 

 

 

48

 

 

 

*

 

 

 

 

 

49

 

 

 

*

 

 

 

 

 

50

 

 

 

*/

 

 

 

 

 

51

 

 

 

int Size();

 

 

 

 

 

52

 

 

 

 

53/*

54* GetEntry()

55*

56*

57*/

58VulnDBEntry *GetEntry(int idx);

60 private:

61

62 vector<VulnDBEntry *> m_vec;

63

64 };

65

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

Углубленный анализ 731

 

to

 

 

 

 

 

 

 

 

 

 

 

 

w Click

 

 

 

 

 

 

m

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

66#endif /* __VULNDB_H__ */

Âфайле VulnDBEntry.h объявлен класс VulnDBEntry, методы которого также были описаны выше. В этом классе есть один закрытый член данных, массив строк m_str[VDBE_FIELD_CNT]. В нем хранятся значения пяти полей, содержащих различные компоненты сигнатуры: тип, путь, ожидаемый результат, метод и описание. Класс реализует разбор сигнатуры и предоставляет информацию о ней «пакетной пушке».

1 /*

2 * VulnDBEntry.h

3 *

4 *

5 *

6 */

7

8 #if !defined(__VULNDBENTRY_H__)

9 #define __VULNDBENTRY_H__

10

11 #include <string>

12 using std::string;

13

14 #define VDBE_FIELD_CNT 0x0005

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

732 Глава 14. Создание инструмента для проверки уязвимости Web приложения

w Click

 

 

 

 

 

 

 

 

 

 

 

 

 

m

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

 

 

 

e

 

 

 

 

df-xchan

15

16/*

17*

18* VULNDBENTRY CLASS

19*

20*/

21class VulnDBEntry

22{

23public:

24

25/*

26* VulnDBEntry()

27*

28*

29*/

30VulnDBEntry()

32/*

33* ~VulnDBEntry()

34*

35*

36*/

37~VulnDBEntry()

39/*

40* Init()

41*

42*

43*/

44bool Init(char *entry);

46/*

47* GetMethod()

48*

49*

50*/

51string GetMethod();

53/*

54* GetPath()

55*

56*

57*/

58string GetPath();

60/*

61* GetResult()

62*

63*

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

 

C

 

 

E

 

 

 

 

 

 

X

 

 

 

 

 

 

 

 

 

 

-

 

 

 

 

 

 

 

d

 

 

 

F

 

 

 

 

 

 

 

 

 

t

 

 

 

D

 

 

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

 

 

 

r

 

P

 

 

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

 

 

to

 

 

 

 

 

 

 

w Click

 

 

 

 

 

 

m

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

o

 

 

 

.

 

 

 

 

 

 

 

 

.c

 

 

 

 

p

 

 

 

 

 

 

 

e

 

*/

 

 

 

d

 

 

xch64

 

 

 

 

 

 

 

f-

 

an

 

 

 

 

 

 

 

 

 

 

 

 

65

 

 

 

string GetResult();

 

 

 

 

 

 

 

66

 

 

 

 

67/*

68* GetDesc()

69*

70*

71*/

72string GetDesc();

74/*

75* GetType()

76*

77*

78*/

79string GetType();

81 private:

82

83 string m_str[VDBE_FIELD_CNT]

84

85 };

86

87 #endif /* __VULNDBENTRY_H__ */

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

Углубленный анализ 733

 

to

 

 

 

 

 

 

 

 

 

 

 

 

w Click

 

 

 

 

 

 

m

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

Компиляция

Эта программа предназначалась для компиляции в среде Microsoft Visual Studio. Мы пользовались стандартным компилятором Visual Studio С++ 6.0. Нужно лишь создать проект, содержащий все приведенные выше файлы в новом рабочем пространстве, а затем собрать его. Все необходимые библиотеки включены в исходный текст с помощью директивы #pragma, так что явно указывать их в параметрах проекта не обязательно.

Выполнение

Ниже показана справка о программе, которая выводится, если в командной строке неправильно заданы аргументы. Как видите, программой совсем нетрудно пользоваться, да и при разработке мы старались все сделать максимально просто.

Справка о программе

Webserver Scanner by the Author's of Advanced Security Programming: Price, Foster, and Tommy

We use CIRT's awesome and freely available VulnDB! Usage: sprebel.exe hostname <port> <0|1> <bufsize>

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

734 Глава 14. Создание инструмента для проверки уязвимости Web приложения

w Click

 

 

 

 

 

 

 

 

 

 

 

 

 

m

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

 

 

 

e

 

 

 

 

df-xchan

<0> = Default, Minimal Output

<1> = Verbose Output – show me the request and response buffer

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

В распечатке ниже показаны результаты работы программы SP-Rebel, когда параметры заданы по умолчанию. Как видите, в случае успешной атаки против намеченной цели печатается несколько полей. Мы выводим IP-адрес цели, номер порта и HTTP-запрос (GET или POST), на который получен ответ 200 OK или иной, заданный в сигнатуре. Мы не стали приводить всю распе- чатку целиком, поскольку нет смысла показывать все успешные атаки против старого, незалатанного Web-сервера Apache для Windows.

Результаты работы

C:\sp-rebel.exe 10.3.200.3 8080

хост/адрес: 10.3.200.3; порт: 8080; выводить: 0; длина буфера: 1024 ЦЕЛЬ: 10.3.200.3 @ 8080, УСПЕШНЫЙ АТАКУЮЩИЙ ЗАПРОС : GET / HTTP/1.0 ЦЕЛЬ: 10.3.200.3 @ 8080, УСПЕШНЫЙ АТАКУЮЩИЙ ЗАПРОС : GET /icons HTTP/1.0

ЦЕЛЬ: 10.3.200.3 @ 8080, УСПЕШНЫЙ АТАКУЮЩИЙ ЗАПРОС : GET /index.html.ca HTTP/1.0 ЦЕЛЬ: 10.3.200.3 @ 8080, УСПЕШНЫЙ АТАКУЮЩИЙ ЗАПРОС : GET /index.html.cz.iso8859-

2 HTTP/1.0

ЦЕЛЬ: 10.3.200.3 @ 8080, УСПЕШНЫЙ АТАКУЮЩИЙ ЗАПРОС : GET /index.html.de HTTP/1.0 ЦЕЛЬ: 10.3.200.3 @ 8080, УСПЕШНЫЙ АТАКУЮЩИЙ ЗАПРОС : GET /index.html.dk HTTP/1.0 ЦЕЛЬ: 10.3.200.3 @ 8080, УСПЕШНЫЙ АТАКУЮЩИЙ ЗАПРОС : GET /index.html.ee HTTP/1.0 ЦЕЛЬ: 10.3.200.3 @ 8080, УСПЕШНЫЙ АТАКУЮЩИЙ ЗАПРОС : GET /index.html.el HTTP/1.0 ЦЕЛЬ: 10.3.200.3 @ 8080, УСПЕШНЫЙ АТАКУЮЩИЙ ЗАПРОС : GET /index.html.en HTTP/1.0 ЦЕЛЬ: 10.3.200.3 @ 8080, УСПЕШНЫЙ АТАКУЮЩИЙ ЗАПРОС : GET /index.html.es HTTP/1.0 ЦЕЛЬ: 10.3.200.3 @ 8080, УСПЕШНЫЙ АТАКУЮЩИЙ ЗАПРОС : GET /index.html.et HTTP/1.0 ЦЕЛЬ: 10.3.200.3 @ 8080, УСПЕШНЫЙ АТАКУЮЩИЙ ЗАПРОС : GET /index.html.fr HTTP/1.0

распечатка не полна из-за недостатка места...

 

 

 

 

hang

e

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

d

 

 

F

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

w Click

 

 

 

 

m

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

o

 

 

.

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

 

e

 

 

 

 

 

 

n

 

 

 

 

 

 

 

Резюме

 

 

 

 

-xcha

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

Обзор изложенного материала 735

 

to

 

 

 

 

 

 

 

 

 

 

 

 

w Click

 

 

 

 

 

 

m

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

В прошлом десятилетии Web-приложения стали частью повседневной жизни общества, и теперь даже самые современные и передовые технологии вряд ли заставят хотя бы бровью повести пользователя, который ежедневно блуждает по просторам Интернета. Уязвимости, которые ищет рассмотренная в этой главе утилита, способны в равной мере нанести ущерб бизнесу и правительству.

Эта глава демонстрирует применение многих приемов программирования, которые мы детально рассматривали в этой книге. Она посвящена разработке с нуля инструмента для решения конкретной задачи: в нашем случае мы взяли за основу лучшую в своем классе бесплатную программу Nikto и постарались усовершенствовать ее для достижения большей эффективности и быстродействия. Мы продемонстрировали методы разбора текстовых данных, вычислений с динамическими данными, построения логических деревьев, работы с сокетами и анализа уязвимостей в Web. Имея перед глазами текст программы и его подробное описание, а также пользуясь обретенными в ходе чтения книги навыками, вы сможете до конца разобраться в коде и без труда модифицировать его. Можно, например, добавить такие возможности, как дополнительные режимы вывода, управление загрузкой канала, разрешить нестандартные сигнатуры за счет более гибкого анализатора, ввести дополнительные характеристики ответа, чтобы уменьшить число ложных срабатываний, и, наконец, более тщательно проверять ошибки.

Обзор изложенного материала

Проектирование

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

Сигнатуры

Файлы сигнатур уязвимостей стали фактическим промышленным стандартом для большинства продуктов, относящихся к сфере информационной безопасности. Такие программы, как NMAP, Nikto и Snort входят в число наиболее популярных, и во всех имеется текстовая база данных.

Файлы сигнатур легко интегрируются с командными приложениями.

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

736 Глава 14. Создание инструмента для проверки уязвимости Web приложения

w Click

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

m

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

o

 

 

.

 

-xcha

 

 

.c

 

 

 

p

 

 

 

Углубленный анализ

 

 

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

Повторно используемые библиотеки для работы с сокетами и организации атак способны существенно уменьшить объем кода, необходимого для создания нового приложения.

Централизация общего кода в библиотеках позволяет также тратить меньше времени на поиск ошибок.

Результаты работы

Командные утилиты часто выводят результаты своей работы на стандартный вывод (stdout) в текстовом виде.

Ссылки на сайты

www.applicationdefense.com. На сайте Application Defense имеется большая подборка бесплатных инструментов по обеспечению безопасности в дополнение к программам, представленным в этой книге.

www.cirt.net. Домашняя страница группы CIRT. Отсюда можно загрузить программу сканирования Nikto, а также текстовую базу данных об уязвимостях, которой она пользуется.

Часто задаваемые вопросы

Следующие часто задаваемые вопросы, на которые отвечают авторы книги, призваны помочь вам оценить, насколько хорошо вы поняли идеи, изложенные в данной главе, и возможные их применения на практике. Если вы хотите задать авторам вопрос, зайдите на страницу www.syngress.com/solutions и заполните форму Ask the Author. Заодно вы получите доступ к тысячам других FAQов на сайте ITFAQnet.com.

Â: ×åì Web-уязвимости отличаются от переполнения стека? Может ли переполнение стека быть Web-уязвимостью?

Î: Ответ зависит от того, как определить Web-уязвимость. Наиболее широко распространены три определения. Согласно первому, имеются в виду уязвимости Web-сервера, например, IIS или Apache. В таком случае переполнение стека может быть уязвимостью конкретного Web-сервера. Согласно второму определению, Web-уязвимость – это любая брешь в системе безопасности, которую можно атаковать по протоколу HTTP. В этой книге применяется третье определение, согласно которому Web-уязвимостями счита-

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

 

t

 

 

F

 

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

 

i

 

 

D

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

 

Часто задаваемые вопросы 737

 

to

 

 

 

 

 

 

w Click

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

m

w Click

 

 

 

 

 

 

 

m

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

o

 

 

w

 

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

g

.c

 

 

.

 

 

 

 

g

.c

 

 

 

p

 

 

 

 

 

 

 

 

 

p

 

-x cha

 

 

 

 

 

 

 

-xchþòñÿa

«дыры» в любых приложениях, работающих на базе Web-сервера. На-

 

 

e

 

 

 

 

df

 

 

n

e

 

 

 

 

df

 

 

n

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

пример, мы относим к этой категории ошибку, связанную с несанкционированным раскрытием информации в сценарии Gabriel.cgi.

Â: Не будет ли утилита, описанная в этой главе, давать огромное число ложных срабатываний?

Î: Да, рассмотренная утилита хороша ровно настолько, насколько хороши данные в используемой ей базе. Почти во всех случаях, анализируется лишь, получен ли ответ 200 OK по протоколу HTTP.

Â: Как можно свести к минимуму число ложных срабатываний сканера? Î: Есть два пути. Во-первых, увеличить число полей в сигнатуре, чтобы можно было более точно анализировать ответ. Во-вторых, повысить достоверность результатов работы программы можно, добавив модуль «предварительной проверки», который соберет информацию обо всех ответах целевой системы (HTTP-коды), в том числе об ошибочных запросах, перенесенных страницах и ограничении доступа. Затем нужно соотнести полученные результаты с ответами, содержащими код успеха. Такой прием позволит, например, исключить из рассмотрения серверы, которые на любой запрос возвращают ответ с кодом 200 OK. Мы планируем реализовать эту возможность во второй версии утилиты, ко-

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

Â: Похоже, в большинстве сигнатур атак используется протокол HTTP 1.0. А почему не HTTP 1.1?

Î: В протокол HTTP 1.1 включено множество усовершенствований по сравнению с HTTP 1.0. Самое существенное состоит в том, что можно не закрывать HTTP-сессию, то есть посылать запросы и получать ответы, не устанавливая каждый раз новое соединение. В некоторых случаях это позволяет добиться повышения производительности. Однако в ситуации, когда полезная нагрузка может помешать работе целевой системы, протокол версии 1.0 подходит лучше.

Â: Чем SP-Rebel лучше Nikto?

Î: На данный момент только быстродействием. SP-Rebel написана на языке C++ и откомпилирована в Microsoft Visual Studio. В следующих версиях мы за счет этого планируем работать с пакетами на низком уровне и тем самым повысить общую скорость сканирования и выполнения.

Â: В этой главе практически ничего не сказано о технике хакерских атак через Web. Где можно получить информацию по этому поводу, чтобы усовершенствовать сканер или саму базу данных?

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

 

i

 

 

 

F

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

t

 

 

 

 

 

 

 

 

 

 

t

 

P

D

 

 

 

 

 

 

 

 

o

 

P

D

 

 

 

 

 

 

 

 

o

 

 

 

 

NOW!

r

 

 

 

 

 

NOW!

r

 

 

 

 

 

BUY

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

738 Глава 14. Создание инструмента для проверки уязвимости Web приложения

 

 

 

 

to

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

m

 

w

 

 

 

 

 

 

 

 

 

m

w Click

 

 

 

 

 

 

o

 

w Click

 

 

 

 

 

 

o

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

.

 

 

 

 

 

 

.c

 

 

 

.

 

 

 

 

 

 

.c

 

 

 

p

df

 

 

 

 

e

 

 

 

 

p

df

 

 

 

 

e

 

 

 

 

 

 

g

 

 

 

 

 

 

 

 

 

g

 

 

 

 

 

 

 

 

n

 

 

 

 

 

 

 

 

 

 

n

 

 

 

 

 

 

 

 

-xcha

 

 

 

 

 

Î: Цель этой книги – не научить вас всему, что можно знать о безопасно--x cha

 

 

 

 

 

сти и хакерстве, а дать достаточно информации для того, чтобы вы поняли, как и почему пишутся те или иные инструменты, и как они работают. О хакерстве в Web написано множество книг, в частности «Web Hacking, Web Applications (Hacking Exposed)», этой теме посвящено немало ресурсов, например сайт проектаOpen Web Application Security Project (OWASP).

Â: Можно ли использовать приведенный код в моем собственном сканере? Î: Разумеется, но с упоминанием исходных авторских прав и самих авторов: Джеймса Фостера (James C. Foster) и Майка Прайса (Mike Price). Используйте этот код, учитесь на нем, модифицируйте, при условии, что любые модификации будут открыты, общедоступны и отправлены нам, чтобы мы

могли включить их в следующие версии и упомянуть ваше имя.

Â: Почему сканер написан на C++, а не на C# или C?

Î: Вообще-то нет основательных причин, по которым его нельзя было бы написать на C#. Но мы только-только начали осваивать этот новый язык, так что на звание экспертов пока не претендуем... Что же касается C, то, как вы могли заметить, на этом языке написана значительная часть программы. Мы пользовались C++, потому что он позволяет, с одной стороны, писать на C, а, с другой, обладает достоинствами объектно-ориентированного языка (которые мы очень высоко ценим). Мы полагаем, что за счет реализации правильно выбранных классов наш код получился гораздо чище, и его легче использовать повторно.

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

Глоссарий

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

Приложение А

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

 

i

 

 

 

F

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

t

 

 

 

 

 

 

 

 

 

 

t

 

P

D

 

 

 

 

 

 

 

 

o

 

P

D

 

 

 

 

 

 

 

 

o

 

 

 

 

NOW!

r

 

 

 

 

 

NOW!

r

 

 

 

 

 

BUY

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

740 Защита от взлома: сокеты, эксплойты и shell#код

 

 

 

 

to

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

m

 

w

 

 

 

 

 

 

 

 

 

m

w Click

 

 

 

 

 

 

o

 

w Click

 

 

 

 

 

 

o

 

w

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

.

 

 

 

 

 

 

.c

 

 

 

.

 

 

 

 

 

 

.c

 

 

 

p

df

 

 

 

 

e

 

 

 

 

p

df

 

 

 

 

e

 

 

 

 

 

 

g

 

 

 

 

 

 

 

 

 

g

 

 

 

 

 

 

 

 

n

 

 

 

 

 

 

 

 

 

 

n

 

 

 

 

 

 

 

 

-xcha

 

 

 

 

 

API (Aplication Program Interface – интерфейс прикладного программиро--x cha

 

 

 

 

 

вания). Набор программных компонентов, которые разработчики могут использовать в своем коде.

Big endian. Один из двух способов упорядочивания байтов в слове, когда первым хранится старший байт. Примером системы с такой архитектурой является процессор SPARC.

DLL (Dynamic Link Library). Динамически связываемая и загружаемая библиотека, находящаяся обычно в файле с расширением .dll. В системах на платформе Win32 DLL – это программный компонент, содержащий функциональность, полезную другим программам. Применение DLL позволяет разбить код на более мелкие части, которые проще сопровождать, модифицировать и повторно использовать.

GDB. Отладчик GNU – это стандарт де факто в системах UNIX. Скачать его можно с сайта http://sources.redhat.com/gdb.

Java. Современный язык программирования, разработанный компанией Sun Microsystems в начале 1990-х годов. Сочетает синтаксис, аналогичный C и C++, с независимостью от платформы и автоматической сборкой мусора. Java-аплет – это небольшая программа на языке Java, которая работает в контексте Web-браузера и выполняет действия, которые невозможно реализовать с помощью статической HTML-разметки.

Little endian. Один из двух способов упорядочивания байтов в слове, когда первым хранится младший байт. Примерами систем с такой архитектурой являются все процессоры семейства x86.

malloc. Функция malloc выделяет указанное число байтов из кучи. Со способом ее реализации связано немало уязвимостей.

memset/memcpy. Функция memset заполняет переданный ей буфер указанного размера некоторым символом. Функция memcpy копирует заданное число байтов из одного буфера в другой. С неправильным применением этих функций связаны те же опасности, что и при употреблении strcpy.

NULL. Этим термином описывается переменная, которой еще не присвоено значение. В разных языках NULL определен по-разному, вовсе необязательно, что у него будет такое же значение, как у пустой строки или числа 0.

printf. Наиболее широко употребляемая функция из стандартной библиотеки LIBC. Предназначена для вывода данных в командных утилитах. Неправильное использование этой функции может представлять угрозу для безопасности – если не передать ей форматную строку, то не исключено возникновение уязвимости.