Предлагаемая отправная точка/необходимое условие для моей серии: Проектирование, разработка и автоматизация распределенной системы, которая будет предназначена для программ 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

Источники:

Статьи Википедии:

«https://en.wikipedia.org/wiki/Thompson_shell»

«https://en.wikipedia.org/wiki/C_shell»

Программирование и информация 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»