Предлагаемая отправная точка/необходимое условие для моей серии: Проектирование, разработка и автоматизация распределенной системы, которая будет предназначена для программ Bug Bounty/Раскрытия уязвимостей
Что такое Баш?
Во-первых, я хотел бы провести различие, которое слишком часто упускают из виду: Bash или «Bourne Again Shell» — это, по сути, объединение Korn Shell, C-Shell и, конечно же, Bourne Shell. На данный момент стоит знать, что синтаксис Bash Shell является прямым подмножеством синтаксиса оболочки Bourne, выпущенного AT&T. Сама оболочка была разработана Брайаном Фоксом и выпущена для широкой публики в 1989 году.
Любой, кто работал с Linux, скажет вам, что в большинстве дистрибутивов Linux мало что можно сделать без использования оболочки bash. По сути, это швейцарский армейский нож, который вы будете использовать для взаимодействия с ядром Linux. Это, безусловно, самый полезный инструмент, с которым я когда-либо сталкивался в своей карьере исследователя безопасности и охотника за уязвимостями.
Помимо работы в качестве посредника между машиной и пользователем, он также позволяет вам писать сценарии, называемые «скриптами Bash». Эти сценарии позволяют запрограммировать ваше взаимодействие с системой и часто экономят ваше время, устраняя необходимость выполнять повторяющиеся задачи вручную.
Вроде как цель этой серии: автоматизация.
Понимание синтаксиса
Этимология синтаксиса восходит к греческому слову suntaxix, от sun- «вместе» + tassein «упорядочивать». Таким образом, это, по сути, означает «договориться вместе». Как охотник за ошибками, вы будете проводить анализ кода и, надеюсь, писать свой собственный код. Поэтому важно понимать синтаксис.
Глобальный синтаксис для всех команд Bash:
command [options] [arguments] [optional file location]
Легко… Верно? Итак, давайте выполним простую команду, с которой вы будете часто сталкиваться:
ls -al /etc
Эта команда отображает содержимое каталога /etc. Здесь важно отметить, что «a» и «l» называются флагами и представляют собой необязательные функции, которые может выполнять команда. Я вам сюда кину кость и скажу, что -a отображает все файлы, даже если они скрыты. Использование флага -l можно узнать с помощью этой команды:
man ls
Это извлекает страницы руководства (если они существуют) и печатает их на терминале. ПРИМЕЧАНИЕ. Руководство — ваш друг. Это сделает жизнь проще.
Несколько других важных навигационных команд:
«pwd» = печатает ваш текущий каталог
«cd» = вызывает каталог, который вы хотите вызвать
«mkdir {folderName}» = создать папку
«mv {путь/к/файлу} {новый/файл/путь/файл}» = переместить файл
rm {file} = удаляет файл, не работает с папками.
rm -r {каталог} = рекурсивно удалить каталог
Вот шпаргалка:
Переменные
Как и в любом другом языке, вы можете назначать переменные, управлять потоком с помощью условий и повторно использовать свой код с помощью функций. Если вы читаете эту статью, то вы, очевидно, умны, и я буду относиться к вам соответственно.
Переменные легко назначать, вы можете сделать это несколькими разными способами, мой любимый:
variable1=potato
Инструкции if
Оператор if может быть построен различными способами:
На основе файлов:
if [ -L symboliclink ]; then
На основе строки:
if [ -z "$emptystring" ]; then
Целое число:
if [ $num -lt 1 ]; then
Заключение
Я знаю. Иногда эти вещи могут показаться немного запутанными и все такое. Но конечный результат того стоит. Сегодня мы можем начать с небольшой части нашей более крупной цели и автоматизированной платформы разведки, создав скрипт структурирования файлов:
!#/bin/bash/ #start by building directories mkdir recon mkdir recon/HackerOne && mkdir recon/BugCrowd mkdir recon/scripts mkdir recon/tools mkdir recon/notes cd recon/tools && mkdir gitHubTools git clone https://github.com/guelfoweb/knock git clone https://github.com/danielmiessler/SecLists printf("Congratulations! Stay tuned for the next installment.")
Видишь ли… Совсем не так уж и сложно. Я устаю, поэтому, думаю, мы сократим эту статью.
Еще раз хлопайте, идите за мной, и я пойду за вами в ответ!
Спасибо и удачного взлома.
Ресурсы:
PDF-файл одной из первых книг, выпущенных в системе Unix:
https://files.catwell.info/misc/mirror/the-unix-programming-environment-kernighan-pike.pdf
Источники:
Статьи Википедии:
Программирование и информация Bourne Shell:
“https://www.ibm.com/docs/en/aix/7.1?topic=shells-bourne-shell”
Программирование C-Shell:
«https://www-cs.canisius.edu/ONLINESTUFF/UNIX/shellprogramming.html»