
Модуль Python3 для помощи в фаззинге веб-приложений
Основанный на pywebfuzz, Py3webfuzz — это модуль Python3 для помощи в выявлении уязвимостей в веб-приложениях и веб-сервисах с помощью перебора, фаззинга и анализа. Модуль предоставляет типовые тестовые значения, генераторы и другие утилиты, полезные при фаззинге веб-приложений, API-интерфейсов и разработке веб-эксплойтов.
py3webfuzz включает fuzzdb и некоторые другие разрозненные источники, реализованные в виде классов, методов и функций Python для удобства использования. Проект fuzzdb — это просто набор значений для тестирования. Смысл в том, чтобы предоставить довольно хорошую подборку значений из проекта fuzzdb и некоторых других источников, очищенных и доступных через классы, методы и пространства имен Python3. Это упрощает и делает удобным использование этих значений в собственных эксплойтах и концептах (PoC).
Были предприняты усилия, чтобы названия соответствовали папкам и значениям из последней версии проекта fuzzdb. Иногда это приводило к довольно громоздким пространствам имен. Такой баланс был выбран, чтобы знакомство с проектом fuzzdb переносилось на код Python. Исключения касаются замены дефисов на подчеркивания.
Установку можно выполнить несколькими способами. Если вы хотите использовать виртуальное окружение,
$ git clone https://github.com/jangelesg/py3webfuzz.git
$ cd py3webfuzz/
Вы можете запустить прилагаемый setup.py с командой install
$ python setup.py install
Вы также можете использовать easy_install, если вы так управляете установленными пакетами
$ easy_install py3webfuzz_VERSION.tar.gz
Вы также можете указать местоположение tar.gz в интернете
$ easy_install URL_package
После этого всё должно работать.
# Accessing SQLi values and encode them for further use
# Import Library
from py3webfuzz import fuzzdb
from py3webfuzz import utils, encoderFuncs
# Instantiate a Class Object that give you access to a set of SQLi values
sqli_detect_payload = fuzzdb.Attack.AttackPayloads.SQLi.Detect()
# Getting Access to those values through a list
for index, payload in enumerate(sqli_detect_payload.Generic_SQLI):
print(f"Payload: {index} Value: {payload}")
# Using encoderFuncs you can get different handy encodings to develop exploits
print(f"SQLi Char Encode: {encoderFuncs.sqlchar_encode(payload)}")
# Send HTTP request to your target
# Import Library
from py3webfuzz import utils
# Custome your target and Headers
location = "http://127.0.0.1:8080/WebGoat/start.mvc#lesson/WebGoatIntroduction.lesson"
headers = {"Host": "ssl.scroogle.org", "User-Agent": \
"Mozilla/4.0 (compatible; MSIE 4.01; AOL 4.0; Mac_68K)",
"Content-Type": "application/x-www-form-urlencoded"}
# at this point you have a dic object with all the elements for your pentest
# "headers": response.headers, "content": response.content, "status_code": response.status_code,
# 'json': response.json, "text": response.text, "time": f"Total in seconds: {time}"
res = utils.make_request(location, headers=headers, method="get")
# print the response
print(res)
