Преди да започнем, бих искал да изясня, че този урок е за тези, които искат да анализират статично своята кодова база ReactJS за пропуски в сигурността. За тези, които търсят общи инструменти за статичен анализ на JavaScript, бих препоръчал да потърсят „ESLint“ или „JSHint“. Бих искал също така да изясня, че както повечето неща, има множество начини да направим това, което ще направим. Последното нещо, което искам да направя, е да разроша перата на някой тестер на писалка с конска опашка (само се шегувам, Гари), който знае много повече от мен. Въпреки това чувствам, че е моя отговорност да предам това знание на онези, които са достатъчно достойни да го търсят. Нека да започнем.

Въведение

Ще използваме „Burp Suite“ като наш скенер, заедно с няколко разширения. Сега е важно да споменем, че ще ни трябва професионалното издание на Burp, за да видим резултатите от нашето сканиране. Ако цената от $349 е твърде висока, можете да се регистрирате и за безплатен 14-дневен пробен период. Мога да ви уверя обаче, че самият софтуер си заслужава цената. В допълнение към Burp ще ни трябва най-новата версия на Java, Node.js и Babel. Мисля, че е справедливо да приемем, че всички вече ги имате в системата си.

BurpBuddy

Следващото нещо, от което се нуждаем, е разширението burpbuddy (извикайте Том Стийл и неговото име). Това ще разкрие разширителния API на Burp Suite — който позволява разширенията да бъдат изтеглени и използвани — през нашата мрежа. Сега нашето тестване няма да бъде ограничено до виртуалната машина на Java. Изтеглете JAR файла и го съхранете на достъпно място.

BurpStaticScan

Последното нещо, от което ще се нуждаем, е „burpstaticscan“. Този изпълним файл ще ни позволи да сканираме JS код в нашата локална система и след това да изпратим резултатите на Burp. README описва как работи всичко и си струва да се разгледа. Изтеглете tarball и го разархивирайте някъде на достъпно място.

Изчерпателен процес на настройка

  1. Регистрирайте се и отворете Burp Suite
  2. Отидете в раздела „Разширител“ и щракнете върху бутона „Добавяне“.
  3. Щракнете върху „Избор на файл“ и отидете до изтегления JAR файл на burpbuddy
  4. За да потвърдите, че burpbuddy работи правилно, отворете терминала и изпълнете командата ‘$ curl -i http://127.0.0.1:8001/ping’
  5. Инсталирайте предварителни настройки на Babel, необходими за транспилиране на React код (ако все още ги нямате)
npm install babel-preset-react babel-preset-env

6. Добавете предварителни настройки към .babelrc

{ "presets": ["env","react"] }

7. Добавете скрипт за изграждане към package.json

{ scripts: { "build": "babel src -d lib" } }

Използване

След като сме готови, стартирането на скенера е тривиално. Първо, трябва да транспилираме целия си код във vanilla JS

npm run build

Конвертираният код вече ще бъде в нова директория, наречена /lib. След това можем да конфигурираме Burp Scanner според необходимата спецификация. Отидете до раздела „Скенер“ в Burp и щракнете върху „Опции“. Можете да конфигурирате персонализирани опции или просто да използвате настройките по подразбиране.

Последната стъпка е да стартирате конвертирания код чрез burpstaticscan. Тъй като няма никакви зависимости, можете просто да стартирате изпълнимия файл.

./burpstaticscan -dir ./lib 

Резултатите от сканирането ще се покажат в раздела „Скенер“ на Burp. И това е! Мисля, че също така си струва да споменем, че BurpBuddy разкрива цял куп „наистина полезни крайни точки на API“, ако сте заинтересовани от автоматизирането на вашите сканирания.

Благодаря за четенето!