воскресенье, 19 августа 2018 г.

Bash для тестов на проникновение


BASH скриптинг для пенетрейшен-тестировщиков

BASH скриптинг для пенетрейшен-тестировщиков

Оболочка bash (или любая другая) это очень мощный инструмент. Во многих случаях нам надо автоматизировать действия или выполнять повторяющиеся трудоемкие задачи. Здесь будет рассказано где BASH может пригодиться.
В случае если вы не знакомы с BASH-скриптингом будет лучше, если у вас уже есть некоторые знания bash-скриптинга, а этот туториал поможет сфокусировать на том как можно использовать bash скрипты для автоматизации некоторых работ связанных с пенетрейшен-тестингом.
От переводчика: если же вы совсем не умеете программировать, то bash станет хорошим стартом. Кроме того, в linux-администрировании без знания bash'a вообще делать нечего.

Bash scripting tutorial

Я начну с простого упражнения. Предположим, что у вас задача множества имен сервера Example.com с минимальным генерированием траффика. Представьте, что вам надо платить $200 за каждый килобайт сгенерированный вашим компьютером для этой задачи. При просмотре сайта вы заметите, что на главной странице содержатся линки на множество ихних сервисов, которые расположены на других серверах. Упражнение требует манипулирования текстом при помощи Linux Bash для извлечения всех серверных имен из главной страницы.
Решение: Bash-скриптинг для Вашего спасения и мы сделали этот туториал для вас
Шаг 1: Начни с использования wget для скачки главной страницы на твою машину.
# root@bt wget https://example.com -O example.txt -o /dev/null
# ls -l example.txt
-rw-r--r-- 1 root root 54032 Oct 17 14:12 example.txt
Шаг 2: Извлечь строки содержащие строку href= показывающую, что эта строка содержит html-линк.
root@bt:~# grep 'href=' example.txt Это все еще не то, однако уже приближаемся к результату. Типичный линк выглядит так: Шаг 3: если вы разделите эту строку используя / разделитель, третье поле должно содержать имя сервера
root@bt:~# grep 'href=' example.txt | cut -d"/" -f3 Это должно дать вам список серверов example.com. Если вы внимательно посмотрите на вывод, вы заметите, что некоторые красные линии попали в список. Ты захочешь отфильтровать строки примерно так:
'+link2+'" target="_blank"><img src="http:
Шаг 4: Используя вывод grep, все неревалентные строки, сортировать список, и удалить повторяющиеся записи.
root@bt:~# grep 'href=' example.txt | cut -d"/" -f3 |grep example.com |sort -u
blogs.example.com
c.example.com
chat.example.com
company.example.com
download.example.com
gallery.example.com
games.example.com
greetings.example.com
groups.example.com
people.example.com
search.example.com
www.example.com
root@bt:~#
Помните, что этот метод извлечения ссылок из html страниц довольно сыроват. Более элегантный путь завершения этого упражнения это использование языка высокого уровня, Python или Perl для того чтобы пропарсить HTML используя регулярное выражение. Это упражнение просто демонстрирует силу и мощь оболочки Bash.
Шаг 5: теперь все, что у нас есть это полное доменное имя для этих серверов. Теперь перед вами стоит задача найти IP-адреса этих серверов. Используя простой BASH-скрипт и цикл, эта задача становится простой как кусок пирога. Выдать команду для каждого полного доменного имени (FQDN), начните с вывода списка серверов в текстовый файл.
root@bt:~# grep ‘href=’ example.txt | cut -d”/” -f3 | grep example.com |sort -u &gt example-srv.txt Шаг 6: вы можете сейчас написать короткий скрипт который читает example-srv.txt и выполнить команду host для каждой строчки. Используя свой любимый текстовый редактор для записи этого скрипта findexample.sh:
#!/bin/bash for hostname in $(cat example-srv.txt);do host $hostname done Шаг 7: не забудь сделать скрипт исполняемым до его запуска.
root@bt:~# chmod 755 findexample.sh
root@bt:~# ./findexample.sh
blogs.example.com is an alias for www.gwww.example.com.
www.gwww.example.com has address xxx.xxx.xxx.xxx
c.example.com is an alias for c.example.com.edgesuite.net.
c.example.com.edgesuite.net is an alias for a949.g.net.
a949.g.example.net has address xxx.xxx.xxx.xxx
a949.g.example.net has address xxx.xxx.xxx.xxx
chat.example.com is an alias for www.gwww.example.com.
www.gwww.example.com has address xxx.xxx.xxx.xxx
company.example.com is an alias for redirect.example.com.
redirect.example.com is an alias for redirect.gredirect.example.com.
people.example.com is an alias for www.gwww.example.com.
www.gwww.example.com has address xxx.xxx.xxx.xxx
search.example.com is an alias for search.gsearch.example.com.
search.gsearch.example.com has address xxx.xxx.xxx.xxx
www.example.com is an alias for www.gwww.example.com.
www.gwww.example.com has address xxx.xxx.xxx.xxx
root@bt:~#
Да, в аутпуте бардак. Тебе надо улучшить скрипт. Если ты смотрел аутпут, то заметил, что большинство имен являются псевдонимами других имен.
greetings.example.com is an alias for www.gwww.example.com. You are interested in lines similar to this: www.example.com has address xxx.xxx.xxx.xxx Шаг 8: отфильтруй все строки содержащие адрес.
#!/bin/bash for hostname in $(cat example-srv.txt);do host $hostname |grep "has address" done После повторного запуска скрипта результат выглядит намного лучше:
root@bt:~# ./findexample.sh
www.gwww.example.com has address xxx.xxx.xxx.xxx
a949.g.example.net has address xxx.xxx.xxx.xxx
a949.g.example.net has address xxx.xxx.xxx.xxx
www.gwww.example.com has address xxx.xxx.xxx.xxx
redirect.gredirect.example.com has address xxx.xxx.xxx.xxx

a1442.g.example.net has address xxx.xxx.xxx.xxx
www.gwww.example.com has address xxx.xxx.xxx.xxx
www.gwww.example.com has address xxx.xxx.xxx.xxx
www.gwww.example.com has address xxx.xxx.xxx.xxx
search.gsearch.example.com has address xxx.xxx.xxx.xxx
www.gwww.example.com has address xxx.xxx.xxx.xxx
root@bt:~#
Шаг 9: финальная задача в этом упражнении - получить IP-адреса снова используя BASH.
root@bt:~# ./findexample.sh &gt example-ips.txt
root@bt:~# cat example-ips.txt |cut -d" " -f4 |sort -u
xxx.xxx.xxx.xxx
xxx.xxx.xxx.xxx
xxx.xxx.xxx.xxx
xxx.xxx.xxx.xxx
xxx.xxx.xxx.xxx
xxx.xxx.xxx.xxx
xxx.xxx.xxx.xxx
xxx.xxx.xxx.xxx
xxx.xxx.xxx.xxx
root@bt:~#
Это все в этом туториале.

Комментариев нет:

Отправить комментарий