bbot 2.4.2.6590rc0__tar.gz → 2.4.2.6608rc0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of bbot might be problematic. Click here for more details.
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/PKG-INFO +1 -1
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/__init__.py +1 -1
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/internal/excavate.py +53 -43
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/lightfuzz/submodules/serial.py +1 -1
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/presets/web/lightfuzz-xss.yml +1 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/scanner/preset/path.py +12 -10
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/scanner/preset/preset.py +42 -37
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/scripts/docs.py +5 -5
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_excavate.py +14 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/pyproject.toml +1 -1
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/LICENSE +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/README.md +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/cli.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/core/__init__.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/core/config/__init__.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/core/config/files.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/core/config/logger.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/core/core.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/core/engine.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/core/event/__init__.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/core/event/base.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/core/event/helpers.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/core/flags.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/core/helpers/__init__.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/core/helpers/async_helpers.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/core/helpers/bloom.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/core/helpers/cache.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/core/helpers/command.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/core/helpers/depsinstaller/__init__.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/core/helpers/depsinstaller/installer.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/core/helpers/depsinstaller/sudo_askpass.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/core/helpers/diff.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/core/helpers/dns/__init__.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/core/helpers/dns/brute.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/core/helpers/dns/dns.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/core/helpers/dns/engine.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/core/helpers/dns/helpers.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/core/helpers/dns/mock.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/core/helpers/files.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/core/helpers/helper.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/core/helpers/interactsh.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/core/helpers/libmagic.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/core/helpers/misc.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/core/helpers/names_generator.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/core/helpers/ntlm.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/core/helpers/process.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/core/helpers/ratelimiter.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/core/helpers/regex.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/core/helpers/regexes.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/core/helpers/url.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/core/helpers/validators.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/core/helpers/web/__init__.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/core/helpers/web/client.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/core/helpers/web/engine.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/core/helpers/web/envelopes.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/core/helpers/web/ssl_context.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/core/helpers/web/web.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/core/helpers/wordcloud.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/core/helpers/yara_helper.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/core/modules.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/core/multiprocess.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/core/shared_deps.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/db/sql/models.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/defaults.yml +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/errors.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/logger.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/__init__.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/ajaxpro.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/anubisdb.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/apkpure.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/azure_realm.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/azure_tenant.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/baddns.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/baddns_direct.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/baddns_zone.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/badsecrets.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/base.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/bevigil.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/binaryedge.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/bucket_amazon.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/bucket_azure.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/bucket_digitalocean.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/bucket_file_enum.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/bucket_firebase.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/bucket_google.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/bufferoverrun.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/builtwith.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/bypass403.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/c99.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/censys.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/certspotter.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/chaos.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/code_repository.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/credshed.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/crt.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/crt_db.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/dastardly.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/dehashed.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/digitorus.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/dnsbimi.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/dnsbrute.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/dnsbrute_mutations.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/dnscaa.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/dnscommonsrv.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/dnsdumpster.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/dnstlsrpt.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/docker_pull.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/dockerhub.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/dotnetnuke.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/emailformat.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/extractous.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/ffuf.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/ffuf_shortnames.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/filedownload.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/fingerprintx.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/fullhunt.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/generic_ssrf.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/git.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/git_clone.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/gitdumper.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/github_codesearch.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/github_org.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/github_workflows.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/gitlab.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/google_playstore.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/gowitness.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/hackertarget.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/host_header.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/httpx.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/hunt.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/hunterio.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/iis_shortnames.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/internal/__init__.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/internal/aggregate.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/internal/base.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/internal/cloudcheck.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/internal/dnsresolve.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/internal/speculate.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/internal/unarchive.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/ip2location.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/ipneighbor.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/ipstack.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/jadx.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/leakix.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/lightfuzz/lightfuzz.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/lightfuzz/submodules/__init__.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/lightfuzz/submodules/base.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/lightfuzz/submodules/cmdi.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/lightfuzz/submodules/crypto.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/lightfuzz/submodules/nosqli.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/lightfuzz/submodules/path.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/lightfuzz/submodules/sqli.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/lightfuzz/submodules/ssti.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/lightfuzz/submodules/xss.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/myssl.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/newsletters.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/ntlm.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/nuclei.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/oauth.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/otx.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/output/__init__.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/output/asset_inventory.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/output/base.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/output/csv.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/output/discord.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/output/emails.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/output/http.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/output/json.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/output/mysql.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/output/neo4j.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/output/nmap_xml.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/output/postgres.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/output/python.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/output/slack.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/output/splunk.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/output/sqlite.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/output/stdout.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/output/subdomains.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/output/teams.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/output/txt.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/output/web_parameters.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/output/web_report.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/output/websocket.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/paramminer_cookies.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/paramminer_getparams.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/paramminer_headers.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/passivetotal.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/pgp.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/portfilter.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/portscan.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/postman.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/postman_download.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/rapiddns.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/reflected_parameters.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/report/affiliates.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/report/asn.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/report/base.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/robots.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/securitytrails.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/securitytxt.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/shodan_dns.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/shodan_idb.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/sitedossier.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/skymem.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/smuggler.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/social.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/sslcert.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/subdomaincenter.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/subdomainradar.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/telerik.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/templates/bucket.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/templates/github.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/templates/postman.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/templates/shodan.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/templates/sql.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/templates/subdomain_enum.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/templates/webhook.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/trickest.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/trufflehog.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/url_manipulation.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/urlscan.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/vhost.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/viewdns.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/virustotal.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/wafw00f.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/wappalyzer.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/wayback.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/wpscan.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/modules/zoomeye.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/presets/baddns-intense.yml +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/presets/cloud-enum.yml +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/presets/code-enum.yml +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/presets/email-enum.yml +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/presets/fast.yml +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/presets/kitchen-sink.yml +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/presets/nuclei/nuclei-budget.yml +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/presets/nuclei/nuclei-intense.yml +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/presets/nuclei/nuclei-technology.yml +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/presets/nuclei/nuclei.yml +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/presets/spider-intense.yml +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/presets/spider.yml +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/presets/subdomain-enum.yml +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/presets/tech-detect.yml +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/presets/web/dirbust-heavy.yml +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/presets/web/dirbust-light.yml +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/presets/web/dotnet-audit.yml +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/presets/web/iis-shortnames.yml +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/presets/web/lightfuzz-heavy.yml +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/presets/web/lightfuzz-light.yml +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/presets/web/lightfuzz-medium.yml +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/presets/web/lightfuzz-superheavy.yml +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/presets/web/paramminer.yml +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/presets/web-basic.yml +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/presets/web-screenshots.yml +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/presets/web-thorough.yml +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/scanner/__init__.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/scanner/dispatcher.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/scanner/manager.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/scanner/preset/__init__.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/scanner/preset/args.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/scanner/preset/conditions.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/scanner/preset/environ.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/scanner/scanner.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/scanner/stats.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/scanner/target.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/__init__.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/bbot_fixtures.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/conftest.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/coverage.cfg +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/fastapi_test.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/owasp_mastg.apk +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/run_tests.sh +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test.conf +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_output.ndjson +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_1/__init__.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_1/test__module__tests.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_1/test_bbot_fastapi.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_1/test_bloom_filter.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_1/test_cli.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_1/test_command.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_1/test_config.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_1/test_depsinstaller.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_1/test_dns.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_1/test_docs.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_1/test_engine.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_1/test_event_seeds.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_1/test_events.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_1/test_files.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_1/test_helpers.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_1/test_manager_deduplication.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_1/test_manager_scope_accuracy.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_1/test_modules_basic.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_1/test_presets.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_1/test_python_api.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_1/test_regexes.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_1/test_scan.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_1/test_scope.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_1/test_target.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_1/test_web.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_1/test_web_envelopes.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/__init__.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/__init__.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/base.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_affiliates.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_aggregate.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_ajaxpro.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_anubisdb.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_apkpure.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_asn.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_asset_inventory.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_azure_realm.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_azure_tenant.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_baddns.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_baddns_direct.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_baddns_zone.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_badsecrets.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_bevigil.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_binaryedge.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_bucket_amazon.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_bucket_azure.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_bucket_digitalocean.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_bucket_file_enum.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_bucket_firebase.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_bucket_google.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_bufferoverrun.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_builtwith.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_bypass403.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_c99.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_censys.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_certspotter.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_chaos.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_cloudcheck.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_code_repository.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_credshed.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_crt.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_crt_db.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_csv.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_dastardly.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_dehashed.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_digitorus.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_discord.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_dnsbimi.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_dnsbrute.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_dnsbrute_mutations.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_dnscaa.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_dnscommonsrv.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_dnsdumpster.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_dnsresolve.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_dnstlsrpt.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_docker_pull.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_dockerhub.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_dotnetnuke.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_emailformat.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_emails.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_extractous.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_ffuf.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_ffuf_shortnames.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_filedownload.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_fingerprintx.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_fullhunt.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_generic_ssrf.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_git.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_git_clone.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_gitdumper.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_github_codesearch.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_github_org.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_github_workflows.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_gitlab.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_google_playstore.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_gowitness.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_hackertarget.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_host_header.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_http.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_httpx.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_hunt.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_hunterio.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_iis_shortnames.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_ip2location.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_ipneighbor.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_ipstack.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_jadx.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_json.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_leakix.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_lightfuzz.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_mysql.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_myssl.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_neo4j.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_newsletters.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_nmap_xml.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_ntlm.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_nuclei.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_oauth.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_otx.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_paramminer_cookies.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_paramminer_getparams.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_paramminer_headers.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_passivetotal.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_pgp.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_portfilter.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_portscan.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_postgres.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_postman.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_postman_download.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_python.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_rapiddns.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_reflected_parameters.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_robots.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_securitytrails.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_securitytxt.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_shodan_dns.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_shodan_idb.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_sitedossier.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_skymem.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_slack.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_smuggler.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_social.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_speculate.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_splunk.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_sqlite.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_sslcert.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_stdout.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_subdomaincenter.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_subdomainradar.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_subdomains.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_teams.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_telerik.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_trickest.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_trufflehog.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_txt.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_unarchive.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_url_manipulation.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_urlscan.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_vhost.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_viewdns.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_virustotal.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_wafw00f.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_wappalyzer.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_wayback.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_web_parameters.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_web_report.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_websocket.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_wpscan.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_zoomeye.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/template_tests/__init__.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/template_tests/test_template_subdomain_enum.py +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/testsslcert.pem +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/testsslkey.pem +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/wordlists/devops_mutations.txt +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/wordlists/ms_on_prem_subdomains.txt +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/wordlists/nameservers.txt +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/wordlists/paramminer_headers.txt +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/wordlists/paramminer_parameters.txt +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/wordlists/raft-small-extensions-lowercase_CLEANED.txt +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/wordlists/top_open_ports_nmap.txt +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/wordlists/valid_url_schemes.txt +0 -0
- {bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/wordlists/wordninja_dns.txt.gz +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.3
|
|
2
2
|
Name: bbot
|
|
3
|
-
Version: 2.4.2.
|
|
3
|
+
Version: 2.4.2.6608rc0
|
|
4
4
|
Summary: OSINT automation for hackers.
|
|
5
5
|
License: GPL-3.0
|
|
6
6
|
Keywords: python,cli,automation,osint,threat-intel,intelligence,neo4j,scanner,python-library,hacking,recursion,pentesting,recon,command-line-tool,bugbounty,subdomains,security-tools,subdomain-scanner,osint-framework,attack-surface,subdomain-enumeration,osint-tool
|
|
@@ -5,7 +5,7 @@ import time
|
|
|
5
5
|
import inspect
|
|
6
6
|
import regex as re
|
|
7
7
|
from pathlib import Path
|
|
8
|
-
from bbot.errors import ExcavateError
|
|
8
|
+
from bbot.errors import ExcavateError, ValidationError
|
|
9
9
|
import bbot.core.helpers.regexes as bbot_regexes
|
|
10
10
|
from bbot.modules.base import BaseInterceptModule
|
|
11
11
|
from bbot.modules.internal.base import BaseInternalModule
|
|
@@ -622,14 +622,15 @@ class excavate(BaseInternalModule, BaseInterceptModule):
|
|
|
622
622
|
base_url += f"?{event.parsed_url.query}"
|
|
623
623
|
url = urljoin(base_url, endpoint)
|
|
624
624
|
|
|
625
|
+
try:
|
|
626
|
+
# Validate the URL before using it
|
|
627
|
+
parsed_url = self.excavate.helpers.validators.validate_url_parsed(url)
|
|
628
|
+
except (ValidationError, ValueError) as e:
|
|
629
|
+
self.excavate.debug(f"Invalid URL [{url}]: {e}")
|
|
630
|
+
continue
|
|
631
|
+
|
|
625
632
|
if self.excavate.helpers.validate_parameter(parameter_name, parameter_type):
|
|
626
633
|
if self.excavate.in_bl(parameter_name) is False:
|
|
627
|
-
parsed_url = urlparse(url)
|
|
628
|
-
if not parsed_url.hostname:
|
|
629
|
-
self.excavate.warning(
|
|
630
|
-
f"Error Parsing reconstructed URL [{url}] during parameter extraction, missing hostname"
|
|
631
|
-
)
|
|
632
|
-
continue
|
|
633
634
|
description = f"HTTP Extracted Parameter [{parameter_name}] ({parameterExtractorSubModule.name} Submodule)"
|
|
634
635
|
data = {
|
|
635
636
|
"host": parsed_url.hostname,
|
|
@@ -848,45 +849,51 @@ class excavate(BaseInternalModule, BaseInterceptModule):
|
|
|
848
849
|
urls_found = 0
|
|
849
850
|
final_url = ""
|
|
850
851
|
for url_str in results:
|
|
851
|
-
|
|
852
|
-
if
|
|
852
|
+
try:
|
|
853
|
+
if identifier == "url_full":
|
|
854
|
+
if not await self.helpers.re.search(self.full_url_regex, url_str):
|
|
855
|
+
self.excavate.debug(
|
|
856
|
+
f"Rejecting potential full URL [{url_str}] as did not match full_url_regex"
|
|
857
|
+
)
|
|
858
|
+
continue
|
|
859
|
+
final_url = url_str
|
|
860
|
+
self.excavate.debug(f"Discovered Full URL [{final_url}]")
|
|
861
|
+
|
|
862
|
+
elif identifier == "url_attr" and hasattr(event, "parsed_url"):
|
|
863
|
+
m = await self.helpers.re.search(self.tag_attribute_regex, url_str)
|
|
864
|
+
if not m:
|
|
865
|
+
self.excavate.debug(
|
|
866
|
+
f"Rejecting potential attribute URL [{url_str}] as did not match tag_attribute_regex"
|
|
867
|
+
)
|
|
868
|
+
continue
|
|
869
|
+
unescaped_url = html.unescape(m.group(1))
|
|
870
|
+
source_url = event.parsed_url.geturl()
|
|
871
|
+
final_url = urldefrag(urljoin(source_url, unescaped_url)).url
|
|
872
|
+
if not await self.helpers.re.search(self.full_url_regex_strict, final_url):
|
|
873
|
+
self.excavate.debug(
|
|
874
|
+
f"Rejecting reconstructed URL [{final_url}] as did not match full_url_regex_strict"
|
|
875
|
+
)
|
|
876
|
+
continue
|
|
853
877
|
self.excavate.debug(
|
|
854
|
-
f"
|
|
878
|
+
f"Reconstructed Full URL [{final_url}] from extracted relative URL [{unescaped_url}] "
|
|
855
879
|
)
|
|
856
|
-
continue
|
|
857
|
-
final_url = url_str
|
|
858
880
|
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
881
|
+
if final_url:
|
|
882
|
+
# Validate the URL before using it
|
|
883
|
+
self.excavate.helpers.validators.validate_url_parsed(final_url)
|
|
884
|
+
if self.excavate.scan.in_scope(final_url):
|
|
885
|
+
urls_found += 1
|
|
886
|
+
await self.report(
|
|
887
|
+
final_url,
|
|
888
|
+
event,
|
|
889
|
+
yara_rule_settings,
|
|
890
|
+
discovery_context,
|
|
891
|
+
event_type="URL_UNVERIFIED",
|
|
892
|
+
urls_found=urls_found,
|
|
865
893
|
)
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
final_url = urldefrag(urljoin(source_url, unescaped_url)).url
|
|
870
|
-
if not await self.helpers.re.search(self.full_url_regex_strict, final_url):
|
|
871
|
-
self.excavate.debug(
|
|
872
|
-
f"Rejecting reconstructed URL [{final_url}] as did not match full_url_regex_strict"
|
|
873
|
-
)
|
|
874
|
-
continue
|
|
875
|
-
self.excavate.debug(
|
|
876
|
-
f"Reconstructed Full URL [{final_url}] from extracted relative URL [{unescaped_url}] "
|
|
877
|
-
)
|
|
878
|
-
|
|
879
|
-
if final_url:
|
|
880
|
-
if self.excavate.scan.in_scope(final_url):
|
|
881
|
-
urls_found += 1
|
|
882
|
-
await self.report(
|
|
883
|
-
final_url,
|
|
884
|
-
event,
|
|
885
|
-
yara_rule_settings,
|
|
886
|
-
discovery_context,
|
|
887
|
-
event_type="URL_UNVERIFIED",
|
|
888
|
-
urls_found=urls_found,
|
|
889
|
-
)
|
|
894
|
+
except (ValidationError, ValueError) as e:
|
|
895
|
+
self.excavate.debug(f"Invalid URL [{url_str if not final_url else final_url}]: {e}")
|
|
896
|
+
continue
|
|
890
897
|
|
|
891
898
|
async def report_prep(self, event_data, event_type, event, tags, **kwargs):
|
|
892
899
|
event_draft = self.excavate.make_event(event_data, event_type, parent=event)
|
|
@@ -1114,7 +1121,10 @@ class excavate(BaseInternalModule, BaseInterceptModule):
|
|
|
1114
1121
|
|
|
1115
1122
|
# Check if rule processing function exists
|
|
1116
1123
|
if rule_name in self.yara_preprocess_dict:
|
|
1117
|
-
|
|
1124
|
+
try:
|
|
1125
|
+
await self.yara_preprocess_dict[rule_name](result, event, discovery_context)
|
|
1126
|
+
except ValidationError as e:
|
|
1127
|
+
self.debug(f"ValidationError in rule {rule_name} for result {result}: {e}")
|
|
1118
1128
|
else:
|
|
1119
1129
|
self.hugewarning(f"YARA Rule {rule_name} not found in pre-compiled rules")
|
|
1120
1130
|
|
|
@@ -22,7 +22,7 @@ class serial(BaseLightfuzz):
|
|
|
22
22
|
CONTROL_PAYLOAD_PHP_RAW = "z:0:{}"
|
|
23
23
|
|
|
24
24
|
BASE64_SERIALIZATION_PAYLOADS = {
|
|
25
|
-
"php_base64": "
|
|
25
|
+
"php_base64": "YToxOntpOjA7aToxO30=",
|
|
26
26
|
"java_base64": "rO0ABXNyABFqYXZhLmxhbmcuQm9vbGVhbs0gcoDVnPruAgABWgAFdmFsdWV4cAA=",
|
|
27
27
|
"java_base64_string_error": "rO0ABXQABHRlc3Q=",
|
|
28
28
|
"java_base64_OptionalDataException": "rO0ABXcEAAAAAAEAAAABc3IAEGphdmEudXRpbC5IYXNoTWFwAAAAAAAAAAECAAJMAARrZXkxYgABAAAAAAAAAAJ4cHcBAAAAB3QABHRlc3Q=",
|
|
@@ -6,6 +6,7 @@ from bbot.errors import *
|
|
|
6
6
|
log = logging.getLogger("bbot.presets.path")
|
|
7
7
|
|
|
8
8
|
DEFAULT_PRESET_PATH = Path(__file__).parent.parent.parent / "presets"
|
|
9
|
+
DEFAULT_PRESET_PATH = DEFAULT_PRESET_PATH.expanduser().resolve()
|
|
9
10
|
|
|
10
11
|
|
|
11
12
|
class PresetPath:
|
|
@@ -17,7 +18,7 @@ class PresetPath:
|
|
|
17
18
|
self.paths = [DEFAULT_PRESET_PATH]
|
|
18
19
|
|
|
19
20
|
def find(self, filename):
|
|
20
|
-
filename_path = Path(filename).resolve()
|
|
21
|
+
filename_path = Path(filename).expanduser().resolve()
|
|
21
22
|
extension = filename_path.suffix.lower()
|
|
22
23
|
file_candidates = set()
|
|
23
24
|
extension_candidates = {".yaml", ".yml"}
|
|
@@ -29,16 +30,12 @@ class PresetPath:
|
|
|
29
30
|
file_candidates.add(f"{filename_path.stem}{ext}")
|
|
30
31
|
file_candidates = sorted(file_candidates)
|
|
31
32
|
file_candidates_str = ",".join([str(s) for s in file_candidates])
|
|
32
|
-
paths_to_search = self.paths
|
|
33
33
|
if "/" in str(filename):
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
f"Searching for preset in {[str(p) for p in paths_to_search]}, file candidates: {file_candidates_str}"
|
|
38
|
-
)
|
|
39
|
-
for path in paths_to_search:
|
|
34
|
+
self.add_path(filename_path.parent)
|
|
35
|
+
log.debug(f"Searching for {file_candidates_str} in {[str(p) for p in self.paths]}")
|
|
36
|
+
for path in self.paths:
|
|
40
37
|
for candidate in file_candidates:
|
|
41
|
-
for file in path.rglob(candidate):
|
|
38
|
+
for file in path.rglob(f"**/{candidate}"):
|
|
42
39
|
if file.is_file():
|
|
43
40
|
log.verbose(f'Found preset matching "{filename}" at {file}')
|
|
44
41
|
self.add_path(file.parent)
|
|
@@ -51,14 +48,19 @@ class PresetPath:
|
|
|
51
48
|
return ":".join([str(s) for s in self.paths])
|
|
52
49
|
|
|
53
50
|
def add_path(self, path):
|
|
54
|
-
path = Path(path).resolve()
|
|
51
|
+
path = Path(path).expanduser().resolve()
|
|
52
|
+
# skip if already in paths
|
|
55
53
|
if path in self.paths:
|
|
56
54
|
return
|
|
55
|
+
# skip if path is a subdirectory of any path in paths
|
|
57
56
|
if any(path.is_relative_to(p) for p in self.paths):
|
|
58
57
|
return
|
|
58
|
+
# skip if path is not a directory
|
|
59
59
|
if not path.is_dir():
|
|
60
60
|
log.debug(f'Path "{path.resolve()}" is not a directory')
|
|
61
61
|
return
|
|
62
|
+
# preemptively remove any paths that are subdirectories of the new path
|
|
63
|
+
self.paths = [p for p in self.paths if not p.is_relative_to(path)]
|
|
62
64
|
self.paths.append(path)
|
|
63
65
|
|
|
64
66
|
def __iter__(self):
|
|
@@ -308,7 +308,7 @@ class Preset(metaclass=BasePreset):
|
|
|
308
308
|
|
|
309
309
|
@property
|
|
310
310
|
def preset_dir(self):
|
|
311
|
-
return self.bbot_home / "presets"
|
|
311
|
+
return (self.bbot_home / "presets").expanduser().resolve()
|
|
312
312
|
|
|
313
313
|
@property
|
|
314
314
|
def default_output_modules(self):
|
|
@@ -413,30 +413,32 @@ class Preset(metaclass=BasePreset):
|
|
|
413
413
|
self.log_debug("Getting baked")
|
|
414
414
|
# create a copy of self
|
|
415
415
|
baked_preset = copy(self)
|
|
416
|
-
|
|
416
|
+
|
|
417
417
|
# copy core
|
|
418
418
|
baked_preset.core = self.core.copy()
|
|
419
|
-
# copy module loader
|
|
420
|
-
baked_preset._module_loader = self.module_loader.copy()
|
|
421
|
-
# prepare os environment
|
|
422
|
-
os_environ = baked_preset.environ.prepare()
|
|
423
|
-
# find and replace preloaded modules with os environ
|
|
424
|
-
# this is different from the config variable substitution because it modifies
|
|
425
|
-
# the preloaded modules, i.e. their ansible playbooks
|
|
426
|
-
baked_preset.module_loader.find_and_replace(**os_environ)
|
|
427
|
-
# update os environ
|
|
428
|
-
os.environ.clear()
|
|
429
|
-
os.environ.update(os_environ)
|
|
430
419
|
|
|
431
|
-
|
|
432
|
-
|
|
420
|
+
if scan is not None:
|
|
421
|
+
baked_preset.scan = scan
|
|
422
|
+
# copy module loader
|
|
423
|
+
baked_preset._module_loader = self.module_loader.copy()
|
|
424
|
+
# prepare os environment
|
|
425
|
+
os_environ = baked_preset.environ.prepare()
|
|
426
|
+
# find and replace preloaded modules with os environ
|
|
427
|
+
# this is different from the config variable substitution because it modifies
|
|
428
|
+
# the preloaded modules, i.e. their ansible playbooks
|
|
429
|
+
baked_preset.module_loader.find_and_replace(**os_environ)
|
|
430
|
+
# update os environ
|
|
431
|
+
os.environ.clear()
|
|
432
|
+
os.environ.update(os_environ)
|
|
433
|
+
|
|
434
|
+
# assign baked preset to our scan
|
|
435
|
+
scan.preset = baked_preset
|
|
433
436
|
|
|
434
437
|
# validate log level options
|
|
435
438
|
baked_preset.apply_log_level(apply_core=scan is not None)
|
|
436
439
|
|
|
437
|
-
#
|
|
438
|
-
|
|
439
|
-
scan.preset = baked_preset
|
|
440
|
+
# validate flags, config options
|
|
441
|
+
baked_preset.validate()
|
|
440
442
|
|
|
441
443
|
# now that our requirements / exclusions are validated, we can start enabling modules
|
|
442
444
|
# enable scan modules
|
|
@@ -483,15 +485,19 @@ class Preset(metaclass=BasePreset):
|
|
|
483
485
|
from bbot.scanner.target import BBOTTarget
|
|
484
486
|
|
|
485
487
|
baked_preset._target = BBOTTarget(
|
|
486
|
-
*list(self._seeds),
|
|
488
|
+
*list(self._seeds),
|
|
489
|
+
whitelist=self._whitelist,
|
|
490
|
+
blacklist=self._blacklist,
|
|
491
|
+
strict_scope=self.strict_scope,
|
|
487
492
|
)
|
|
488
493
|
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
494
|
+
if scan is not None:
|
|
495
|
+
# evaluate conditions
|
|
496
|
+
if baked_preset.conditions:
|
|
497
|
+
from .conditions import ConditionEvaluator
|
|
492
498
|
|
|
493
|
-
|
|
494
|
-
|
|
499
|
+
evaluator = ConditionEvaluator(baked_preset)
|
|
500
|
+
evaluator.evaluate()
|
|
495
501
|
|
|
496
502
|
self._baked = True
|
|
497
503
|
return baked_preset
|
|
@@ -562,6 +568,12 @@ class Preset(metaclass=BasePreset):
|
|
|
562
568
|
return self.scope_config.get("strict", False)
|
|
563
569
|
|
|
564
570
|
def apply_log_level(self, apply_core=False):
|
|
571
|
+
"""
|
|
572
|
+
Apply the log level to the preset.
|
|
573
|
+
|
|
574
|
+
Args:
|
|
575
|
+
apply_core (bool, optional): If True, apply the log level to the core logger.
|
|
576
|
+
"""
|
|
565
577
|
# silent takes precedence
|
|
566
578
|
if self.silent:
|
|
567
579
|
self.verbose = False
|
|
@@ -920,20 +932,17 @@ class Preset(metaclass=BasePreset):
|
|
|
920
932
|
"""
|
|
921
933
|
Recursively find all the presets and return them as a dictionary
|
|
922
934
|
"""
|
|
923
|
-
preset_dir = self.preset_dir
|
|
924
|
-
home_dir = Path.home()
|
|
925
|
-
|
|
926
935
|
# first, add local preset dir to PRESET_PATH
|
|
927
936
|
PRESET_PATH.add_path(self.preset_dir)
|
|
928
937
|
|
|
929
938
|
# ensure local preset directory exists
|
|
930
|
-
mkdir(preset_dir)
|
|
939
|
+
mkdir(self.preset_dir)
|
|
931
940
|
|
|
932
941
|
global DEFAULT_PRESETS
|
|
933
942
|
if DEFAULT_PRESETS is None:
|
|
934
943
|
presets = {}
|
|
935
|
-
for
|
|
936
|
-
for
|
|
944
|
+
for preset_path in PRESET_PATH:
|
|
945
|
+
for ext in ("yml", "yaml"):
|
|
937
946
|
# for every yaml file
|
|
938
947
|
for original_filename in preset_path.rglob(f"**/*.{ext}"):
|
|
939
948
|
# not including symlinks
|
|
@@ -957,18 +966,14 @@ class Preset(metaclass=BasePreset):
|
|
|
957
966
|
|
|
958
967
|
local_preset = original_filename
|
|
959
968
|
# populate symlinks in local preset dir
|
|
960
|
-
if not original_filename.is_relative_to(preset_dir):
|
|
969
|
+
if not original_filename.is_relative_to(self.preset_dir):
|
|
961
970
|
relative_preset = original_filename.relative_to(preset_path)
|
|
962
|
-
local_preset = preset_dir / relative_preset
|
|
971
|
+
local_preset = self.preset_dir / relative_preset
|
|
963
972
|
mkdir(local_preset.parent, check_writable=False)
|
|
964
973
|
if not local_preset.exists():
|
|
965
974
|
local_preset.symlink_to(original_filename)
|
|
966
975
|
|
|
967
|
-
|
|
968
|
-
if local_preset.is_relative_to(home_dir):
|
|
969
|
-
local_preset = Path("~") / local_preset.relative_to(home_dir)
|
|
970
|
-
|
|
971
|
-
presets[local_preset] = (loaded_preset, category, preset_path, original_filename)
|
|
976
|
+
presets[local_preset.stem] = (loaded_preset, category, preset_path, original_filename)
|
|
972
977
|
|
|
973
978
|
# sort by name
|
|
974
979
|
DEFAULT_PRESETS = dict(sorted(presets.items(), key=lambda x: x[-1][0].name))
|
|
@@ -198,15 +198,15 @@ def update_docs():
|
|
|
198
198
|
update_md_files("BBOT PRESETS", bbot_presets_table)
|
|
199
199
|
|
|
200
200
|
# BBOT presets
|
|
201
|
-
for
|
|
201
|
+
for _, (loaded_preset, category, preset_path, original_filename) in DEFAULT_PRESET.all_presets.items():
|
|
202
202
|
preset_yaml = f"""
|
|
203
|
-
```yaml title={
|
|
203
|
+
```yaml title={preset_path.name}
|
|
204
204
|
{loaded_preset._yaml_str}
|
|
205
205
|
```
|
|
206
206
|
"""
|
|
207
207
|
preset_yaml_expandable = f"""
|
|
208
208
|
<details>
|
|
209
|
-
<summary><b><code>{
|
|
209
|
+
<summary><b><code>{preset_path.name}</code></b></summary>
|
|
210
210
|
|
|
211
211
|
```yaml
|
|
212
212
|
{loaded_preset._yaml_str}
|
|
@@ -218,11 +218,11 @@ def update_docs():
|
|
|
218
218
|
update_md_files(f"BBOT {loaded_preset.name.upper()} PRESET EXPANDABLE", preset_yaml_expandable)
|
|
219
219
|
|
|
220
220
|
content = []
|
|
221
|
-
for
|
|
221
|
+
for _, (loaded_preset, category, preset_path, original_filename) in DEFAULT_PRESET.all_presets.items():
|
|
222
222
|
yaml_str = loaded_preset._yaml_str
|
|
223
223
|
indent = " " * 4
|
|
224
224
|
yaml_str = f"\n{indent}".join(yaml_str.splitlines())
|
|
225
|
-
filename = homedir_collapseuser(
|
|
225
|
+
filename = homedir_collapseuser(preset_path)
|
|
226
226
|
|
|
227
227
|
num_modules = len(loaded_preset.scan_modules)
|
|
228
228
|
modules = ", ".join(sorted([f"`{m}`" for m in loaded_preset.scan_modules]))
|
{bbot-2.4.2.6590rc0 → bbot-2.4.2.6608rc0}/bbot/test/test_step_2/module_tests/test_module_excavate.py
RENAMED
|
@@ -1418,3 +1418,17 @@ class TestExcavateBadURLs(ModuleTestBase):
|
|
|
1418
1418
|
|
|
1419
1419
|
url_events = [e for e in events if e.type == "URL_UNVERIFIED"]
|
|
1420
1420
|
assert sorted([e.data for e in url_events]) == sorted(["https://ssl/", "http://127.0.0.1:8888/"])
|
|
1421
|
+
|
|
1422
|
+
|
|
1423
|
+
class TestExcavateURL_InvalidPort(TestExcavate):
|
|
1424
|
+
modules_overrides = ["excavate", "httpx", "hunt"]
|
|
1425
|
+
|
|
1426
|
+
async def setup_before_prep(self, module_test):
|
|
1427
|
+
# Test URL with invalid port (greater than 65535)
|
|
1428
|
+
module_test.httpserver.expect_request("/").respond_with_data(
|
|
1429
|
+
'<div><img loading="lazy" src="https://asdffoo.test.notreal:9212952841/whatever.jpg" width="576" height="382" alt="...." /></div>'
|
|
1430
|
+
)
|
|
1431
|
+
|
|
1432
|
+
def check(self, module_test, events):
|
|
1433
|
+
# Verify we got the hostname
|
|
1434
|
+
assert any(e.data == "asdffoo.test.notreal" for e in events)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|