• XSS.stack #1 – первый литературный журнал от юзеров форума

Fuzzing Как использовать javascript фаззер Fuzzilli.

sploitem

HDD-drive
Пользователь
Регистрация
18.05.2020
Сообщения
23
Реакции
26
Здравствуйте.

В прошлом году я впервые решил попробовать этот фаззер, но он оказался сложным в сборке и настройке.
Поэтому решил написать данное руководство для начинающих ну и чтобы самому было где подглядеть.

Разжевывать не буду, только опишу шаги необходимые для достижения результата.
Я считаю в начале важнее получить положительный результат, а уж потом погружаться в детали и тонкости.

Ставим виртуалку, обновляем всё.
Я использовал xubuntu 20.04.
В качестве подопытного будет JavaScripCore, знаменитый javascript движок знаменитого WebKit.

Аннотация 2020-09-06 211510.png


Дальше ставим зависимости JSC.

Bash:
sudo apt install binutils  git  libc6-dev  libcurl4  libedit2 libgcc-10-dev libpython2.7 libsqlite3-0 libstdc++-10-dev  libxml2  pkg-config tzdata  zlib1g-dev -y

Аннотация 2020-09-06 212213.png


Далее ставим swift т.к. фаззер написан именно на этом языке программирования.
Сначала библиотеку от которой он зависит.
Bash:
 sudo apt-get install clang libicu-dev

1599417401222.png


Затем качаем непосредственно релиз для Ubuntu.

Bash:
wget https://swift.org/builds/swift-5.2.5-release/ubuntu2004/swift-5.2.5-RELEASE/swift-5.2.5-RELEASE-ubuntu20.04.tar.gz
1599416722768.png


Распаковываем и добавляем в переменную окружения путь до исполняемого файла.

Bash:
tar xzf swift-5.2.5-RELEASE-ubuntu20.04.tar.gz
sudo mv swift-5.2.5-RELEASE-ubuntu20.04 /usr/share/swift
echo "export PATH=/usr/share/swift/usr/bin:$PATH" >> ~/.bashrc
source ~/.bashrc

1599418254881.png


После этого перезапускаем терминал и проверяем.

1599417601545.png


Теперь клонируем репозиторий проекта WebKit.

Bash:
git clone git://git.webkit.org/WebKit.git && cd WebKit

1599418333294.png


1599418677905.png


Нужно переключиться на коммит к которому применяется патч.

Bash:
git checkout -b fuzzing 0bd996a2c1f84c40a4d8b07d396f9d90ef7f8cbd
git apply ../fuzzilli/Targets/JavaScriptCore/Patches/webkit.patch

1599421839342.png


Запускаем встроенный скрипт установки зависимостей.

Bash:
sudo Tools/gtk/install-dependencies

1599421859537.png


Всё готов к сборке движка JavaScriptCore.

Для этого нужен скрипт из папки фаззера. Клонируем репозиторий фаззера.

Bash:
cd ~ ; git clone https://github.com/googleprojectzero/fuzzilli.git

1599419001104.png


Запускаем сборку движка. Это займет какое-то время, поэтому можно пока продолжить выполнять следующие шаги.
Бинарник будет лежать по пути WebKit/FuzzBuild/Debug/bin/jsc.

Bash:
 cd WebKit ; ../fuzzilli/Targets/JavaScriptCore/fuzzbuild.sh

1599422153507.png

1599425841049.png



Собираем фаззер.

Bash:
 cd ~/fuzzilli && swift build

1599419095642.png

1599419217558.png


Обязательно прочитайте справку.

Bash:
swift run FuzzilliCli --help

1599419317563.png


Перед запуском нужно создать папку под хранилище.

Bash:
mkdir storage

1599419485480.png


Перед запуском нужно выполнить одну команду.

Bash:
 sudo sysctl -w 'kernel.core_pattern=|/bin/false'

1599419567246.png


Запускается фаззер следующей командой из папки fuzzilli.

Bash:
 swift run FuzzilliCli --profile=jsc --logLevel=info --storagePath=./storage/ --exportStatistics --exportState  ../WebKit/FuzzBuild/Debug/bin/jsc

--profile это профиль т.е. какой движок фаззить
--storagePath это путь, где хранить разную информацию
--exportStatistics нужен чтобы сохранялась статистика покрытия кода
--exportState сохранить текущее состояние для последующего возобновления
--importState путь откуда импортировать предыдущее состояние.
Т.е. фаззер может запоминать, где его прервали и начинать с того же места.

../WebKit/FuzzBuild/Debug/bin/jsc путь к цели, которую фаззим.

1599425993059.png


1599425961177.png


1599426016945.png


Повторный запуск отличается только указанием имени файла состояния: --importState=./storage/state.json

Fuzzilli Github

Специально для xss.pro
Автор: sploitem
 

Вложения

  • Аннотация 2020-09-06 212457.png
    Аннотация 2020-09-06 212457.png
    11.1 КБ · Просмотры: 6
  • 1599416989180.png
    1599416989180.png
    9.1 КБ · Просмотры: 7


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх