bbot 2.0.1.4720rc0__py3-none-any.whl → 2.3.0.5397rc0__py3-none-any.whl
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/__init__.py +1 -1
- bbot/cli.py +3 -7
- bbot/core/config/files.py +0 -1
- bbot/core/config/logger.py +34 -4
- bbot/core/core.py +21 -4
- bbot/core/engine.py +9 -8
- bbot/core/event/base.py +131 -52
- bbot/core/helpers/bloom.py +10 -3
- bbot/core/helpers/command.py +8 -7
- bbot/core/helpers/depsinstaller/installer.py +31 -13
- bbot/core/helpers/diff.py +10 -10
- bbot/core/helpers/dns/brute.py +7 -4
- bbot/core/helpers/dns/dns.py +1 -2
- bbot/core/helpers/dns/engine.py +4 -6
- bbot/core/helpers/dns/helpers.py +2 -2
- bbot/core/helpers/dns/mock.py +0 -1
- bbot/core/helpers/files.py +1 -1
- bbot/core/helpers/helper.py +7 -4
- bbot/core/helpers/interactsh.py +3 -3
- bbot/core/helpers/libmagic.py +65 -0
- bbot/core/helpers/misc.py +65 -22
- bbot/core/helpers/names_generator.py +17 -3
- bbot/core/helpers/process.py +0 -20
- bbot/core/helpers/regex.py +1 -1
- bbot/core/helpers/regexes.py +12 -6
- bbot/core/helpers/validators.py +1 -2
- bbot/core/helpers/web/client.py +1 -1
- bbot/core/helpers/web/engine.py +1 -2
- bbot/core/helpers/web/web.py +4 -114
- bbot/core/helpers/wordcloud.py +5 -5
- bbot/core/modules.py +36 -27
- bbot/core/multiprocess.py +58 -0
- bbot/core/shared_deps.py +46 -3
- bbot/db/sql/models.py +147 -0
- bbot/defaults.yml +11 -9
- bbot/modules/anubisdb.py +2 -2
- bbot/modules/apkpure.py +63 -0
- bbot/modules/azure_tenant.py +2 -2
- bbot/modules/baddns.py +35 -19
- bbot/modules/baddns_direct.py +92 -0
- bbot/modules/baddns_zone.py +3 -8
- bbot/modules/badsecrets.py +4 -3
- bbot/modules/base.py +195 -51
- bbot/modules/bevigil.py +7 -7
- bbot/modules/binaryedge.py +7 -4
- bbot/modules/bufferoverrun.py +47 -0
- bbot/modules/builtwith.py +6 -10
- bbot/modules/bypass403.py +5 -5
- bbot/modules/c99.py +10 -7
- bbot/modules/censys.py +9 -13
- bbot/modules/certspotter.py +5 -3
- bbot/modules/chaos.py +9 -7
- bbot/modules/code_repository.py +1 -0
- bbot/modules/columbus.py +3 -3
- bbot/modules/crt.py +5 -3
- bbot/modules/deadly/dastardly.py +1 -1
- bbot/modules/deadly/ffuf.py +9 -9
- bbot/modules/deadly/nuclei.py +3 -3
- bbot/modules/deadly/vhost.py +4 -3
- bbot/modules/dehashed.py +1 -1
- bbot/modules/digitorus.py +1 -1
- bbot/modules/dnsbimi.py +145 -0
- bbot/modules/dnscaa.py +3 -3
- bbot/modules/dnsdumpster.py +4 -4
- bbot/modules/dnstlsrpt.py +144 -0
- bbot/modules/docker_pull.py +7 -5
- bbot/modules/dockerhub.py +2 -2
- bbot/modules/dotnetnuke.py +18 -19
- bbot/modules/emailformat.py +1 -1
- bbot/modules/extractous.py +122 -0
- bbot/modules/filedownload.py +9 -7
- bbot/modules/fullhunt.py +7 -4
- bbot/modules/generic_ssrf.py +5 -5
- bbot/modules/github_codesearch.py +3 -2
- bbot/modules/github_org.py +4 -4
- bbot/modules/github_workflows.py +4 -4
- bbot/modules/gitlab.py +2 -5
- bbot/modules/google_playstore.py +93 -0
- bbot/modules/gowitness.py +48 -50
- bbot/modules/hackertarget.py +5 -3
- bbot/modules/host_header.py +5 -5
- bbot/modules/httpx.py +1 -4
- bbot/modules/hunterio.py +3 -9
- bbot/modules/iis_shortnames.py +19 -30
- bbot/modules/internal/cloudcheck.py +27 -12
- bbot/modules/internal/dnsresolve.py +22 -20
- bbot/modules/internal/excavate.py +85 -48
- bbot/modules/internal/speculate.py +41 -32
- bbot/modules/internetdb.py +4 -2
- bbot/modules/ip2location.py +3 -5
- bbot/modules/ipneighbor.py +1 -1
- bbot/modules/ipstack.py +3 -8
- bbot/modules/jadx.py +87 -0
- bbot/modules/leakix.py +11 -10
- bbot/modules/myssl.py +2 -2
- bbot/modules/newsletters.py +2 -2
- bbot/modules/otx.py +5 -3
- bbot/modules/output/asset_inventory.py +7 -7
- bbot/modules/output/base.py +1 -1
- bbot/modules/output/csv.py +1 -1
- bbot/modules/output/http.py +20 -14
- bbot/modules/output/mysql.py +51 -0
- bbot/modules/output/neo4j.py +7 -2
- bbot/modules/output/postgres.py +49 -0
- bbot/modules/output/slack.py +0 -1
- bbot/modules/output/sqlite.py +29 -0
- bbot/modules/output/stdout.py +2 -2
- bbot/modules/output/teams.py +107 -6
- bbot/modules/paramminer_headers.py +5 -8
- bbot/modules/passivetotal.py +13 -13
- bbot/modules/portscan.py +32 -6
- bbot/modules/postman.py +50 -126
- bbot/modules/postman_download.py +220 -0
- bbot/modules/rapiddns.py +3 -8
- bbot/modules/report/asn.py +11 -11
- bbot/modules/robots.py +3 -3
- bbot/modules/securitytrails.py +7 -10
- bbot/modules/securitytxt.py +1 -1
- bbot/modules/shodan_dns.py +7 -9
- bbot/modules/sitedossier.py +1 -1
- bbot/modules/skymem.py +2 -2
- bbot/modules/social.py +2 -1
- bbot/modules/subdomaincenter.py +1 -1
- bbot/modules/subdomainradar.py +160 -0
- bbot/modules/telerik.py +8 -8
- bbot/modules/templates/bucket.py +1 -1
- bbot/modules/templates/github.py +22 -14
- bbot/modules/templates/postman.py +21 -0
- bbot/modules/templates/shodan.py +14 -13
- bbot/modules/templates/sql.py +95 -0
- bbot/modules/templates/subdomain_enum.py +51 -16
- bbot/modules/templates/webhook.py +2 -4
- bbot/modules/trickest.py +8 -37
- bbot/modules/trufflehog.py +10 -12
- bbot/modules/url_manipulation.py +3 -3
- bbot/modules/urlscan.py +1 -1
- bbot/modules/viewdns.py +1 -1
- bbot/modules/virustotal.py +8 -30
- bbot/modules/wafw00f.py +1 -1
- bbot/modules/wayback.py +1 -1
- bbot/modules/wpscan.py +17 -11
- bbot/modules/zoomeye.py +11 -6
- bbot/presets/baddns-thorough.yml +12 -0
- bbot/presets/fast.yml +16 -0
- bbot/presets/kitchen-sink.yml +1 -0
- bbot/presets/spider.yml +4 -0
- bbot/presets/subdomain-enum.yml +7 -7
- bbot/scanner/manager.py +5 -16
- bbot/scanner/preset/args.py +44 -26
- bbot/scanner/preset/environ.py +7 -2
- bbot/scanner/preset/path.py +7 -4
- bbot/scanner/preset/preset.py +36 -23
- bbot/scanner/scanner.py +172 -62
- bbot/scanner/target.py +236 -434
- bbot/scripts/docs.py +1 -1
- bbot/test/bbot_fixtures.py +13 -3
- bbot/test/conftest.py +132 -100
- bbot/test/fastapi_test.py +17 -0
- bbot/test/owasp_mastg.apk +0 -0
- bbot/test/run_tests.sh +4 -4
- bbot/test/test.conf +2 -0
- bbot/test/test_step_1/test_bbot_fastapi.py +82 -0
- bbot/test/test_step_1/test_bloom_filter.py +2 -0
- bbot/test/test_step_1/test_cli.py +138 -64
- bbot/test/test_step_1/test_dns.py +62 -25
- bbot/test/test_step_1/test_engine.py +17 -17
- bbot/test/test_step_1/test_events.py +183 -28
- bbot/test/test_step_1/test_helpers.py +64 -28
- bbot/test/test_step_1/test_manager_deduplication.py +1 -1
- bbot/test/test_step_1/test_manager_scope_accuracy.py +333 -330
- bbot/test/test_step_1/test_modules_basic.py +68 -70
- bbot/test/test_step_1/test_presets.py +184 -96
- bbot/test/test_step_1/test_python_api.py +7 -2
- bbot/test/test_step_1/test_regexes.py +35 -5
- bbot/test/test_step_1/test_scan.py +39 -5
- bbot/test/test_step_1/test_scope.py +4 -3
- bbot/test/test_step_1/test_target.py +243 -145
- bbot/test/test_step_1/test_web.py +14 -8
- bbot/test/test_step_2/module_tests/base.py +15 -7
- bbot/test/test_step_2/module_tests/test_module_anubisdb.py +1 -1
- bbot/test/test_step_2/module_tests/test_module_apkpure.py +71 -0
- bbot/test/test_step_2/module_tests/test_module_asset_inventory.py +0 -1
- bbot/test/test_step_2/module_tests/test_module_azure_realm.py +1 -1
- bbot/test/test_step_2/module_tests/test_module_baddns.py +6 -6
- bbot/test/test_step_2/module_tests/test_module_baddns_direct.py +62 -0
- bbot/test/test_step_2/module_tests/test_module_bevigil.py +29 -2
- bbot/test/test_step_2/module_tests/test_module_binaryedge.py +4 -2
- bbot/test/test_step_2/module_tests/test_module_bucket_amazon.py +2 -2
- bbot/test/test_step_2/module_tests/test_module_bucket_azure.py +1 -1
- bbot/test/test_step_2/module_tests/test_module_bufferoverrun.py +35 -0
- bbot/test/test_step_2/module_tests/test_module_builtwith.py +2 -2
- bbot/test/test_step_2/module_tests/test_module_bypass403.py +1 -1
- bbot/test/test_step_2/module_tests/test_module_c99.py +126 -0
- bbot/test/test_step_2/module_tests/test_module_censys.py +4 -1
- bbot/test/test_step_2/module_tests/test_module_cloudcheck.py +4 -0
- bbot/test/test_step_2/module_tests/test_module_code_repository.py +11 -1
- bbot/test/test_step_2/module_tests/test_module_columbus.py +1 -1
- bbot/test/test_step_2/module_tests/test_module_credshed.py +3 -3
- bbot/test/test_step_2/module_tests/test_module_dastardly.py +2 -1
- bbot/test/test_step_2/module_tests/test_module_dehashed.py +2 -2
- bbot/test/test_step_2/module_tests/test_module_digitorus.py +1 -1
- bbot/test/test_step_2/module_tests/test_module_discord.py +1 -1
- bbot/test/test_step_2/module_tests/test_module_dnsbimi.py +103 -0
- bbot/test/test_step_2/module_tests/test_module_dnsbrute.py +9 -10
- bbot/test/test_step_2/module_tests/test_module_dnsbrute_mutations.py +1 -2
- bbot/test/test_step_2/module_tests/test_module_dnscommonsrv.py +1 -2
- bbot/test/test_step_2/module_tests/test_module_dnsdumpster.py +4 -4
- bbot/test/test_step_2/module_tests/test_module_dnstlsrpt.py +64 -0
- bbot/test/test_step_2/module_tests/test_module_dotnetnuke.py +0 -8
- bbot/test/test_step_2/module_tests/test_module_excavate.py +17 -37
- bbot/test/test_step_2/module_tests/test_module_extractous.py +54 -0
- bbot/test/test_step_2/module_tests/test_module_ffuf_shortnames.py +1 -1
- bbot/test/test_step_2/module_tests/test_module_filedownload.py +14 -14
- bbot/test/test_step_2/module_tests/test_module_git_clone.py +2 -2
- bbot/test/test_step_2/module_tests/test_module_github_org.py +19 -8
- bbot/test/test_step_2/module_tests/test_module_github_workflows.py +1 -1
- bbot/test/test_step_2/module_tests/test_module_gitlab.py +9 -4
- bbot/test/test_step_2/module_tests/test_module_google_playstore.py +83 -0
- bbot/test/test_step_2/module_tests/test_module_gowitness.py +4 -4
- bbot/test/test_step_2/module_tests/test_module_host_header.py +1 -1
- bbot/test/test_step_2/module_tests/test_module_http.py +4 -4
- bbot/test/test_step_2/module_tests/test_module_httpx.py +10 -8
- bbot/test/test_step_2/module_tests/test_module_hunterio.py +68 -4
- bbot/test/test_step_2/module_tests/test_module_jadx.py +55 -0
- bbot/test/test_step_2/module_tests/test_module_json.py +22 -9
- bbot/test/test_step_2/module_tests/test_module_leakix.py +7 -3
- bbot/test/test_step_2/module_tests/test_module_mysql.py +76 -0
- bbot/test/test_step_2/module_tests/test_module_myssl.py +1 -1
- bbot/test/test_step_2/module_tests/test_module_neo4j.py +1 -1
- bbot/test/test_step_2/module_tests/test_module_newsletters.py +6 -6
- bbot/test/test_step_2/module_tests/test_module_ntlm.py +7 -7
- bbot/test/test_step_2/module_tests/test_module_oauth.py +1 -1
- bbot/test/test_step_2/module_tests/test_module_otx.py +1 -1
- bbot/test/test_step_2/module_tests/test_module_paramminer_cookies.py +1 -2
- bbot/test/test_step_2/module_tests/test_module_paramminer_getparams.py +0 -6
- bbot/test/test_step_2/module_tests/test_module_paramminer_headers.py +2 -9
- bbot/test/test_step_2/module_tests/test_module_passivetotal.py +3 -1
- bbot/test/test_step_2/module_tests/test_module_portscan.py +9 -8
- bbot/test/test_step_2/module_tests/test_module_postgres.py +74 -0
- bbot/test/test_step_2/module_tests/test_module_postman.py +84 -253
- bbot/test/test_step_2/module_tests/test_module_postman_download.py +439 -0
- bbot/test/test_step_2/module_tests/test_module_rapiddns.py +93 -1
- bbot/test/test_step_2/module_tests/test_module_shodan_dns.py +20 -1
- bbot/test/test_step_2/module_tests/test_module_sitedossier.py +2 -2
- bbot/test/test_step_2/module_tests/test_module_smuggler.py +1 -1
- bbot/test/test_step_2/module_tests/test_module_social.py +11 -1
- bbot/test/test_step_2/module_tests/test_module_speculate.py +2 -6
- bbot/test/test_step_2/module_tests/test_module_splunk.py +4 -4
- bbot/test/test_step_2/module_tests/test_module_sqlite.py +18 -0
- bbot/test/test_step_2/module_tests/test_module_sslcert.py +1 -1
- bbot/test/test_step_2/module_tests/test_module_stdout.py +5 -3
- bbot/test/test_step_2/module_tests/test_module_subdomaincenter.py +1 -1
- bbot/test/test_step_2/module_tests/test_module_subdomainradar.py +208 -0
- bbot/test/test_step_2/module_tests/test_module_subdomains.py +1 -1
- bbot/test/test_step_2/module_tests/test_module_teams.py +8 -6
- bbot/test/test_step_2/module_tests/test_module_telerik.py +1 -1
- bbot/test/test_step_2/module_tests/test_module_trufflehog.py +317 -14
- bbot/test/test_step_2/module_tests/test_module_wayback.py +1 -1
- bbot/test/test_step_2/template_tests/test_template_subdomain_enum.py +2 -2
- {bbot-2.0.1.4720rc0.dist-info → bbot-2.3.0.5397rc0.dist-info}/METADATA +48 -18
- bbot-2.3.0.5397rc0.dist-info/RECORD +421 -0
- {bbot-2.0.1.4720rc0.dist-info → bbot-2.3.0.5397rc0.dist-info}/WHEEL +1 -1
- bbot/modules/unstructured.py +0 -163
- bbot/test/test_step_2/module_tests/test_module_unstructured.py +0 -102
- bbot-2.0.1.4720rc0.dist-info/RECORD +0 -387
- {bbot-2.0.1.4720rc0.dist-info → bbot-2.3.0.5397rc0.dist-info}/LICENSE +0 -0
- {bbot-2.0.1.4720rc0.dist-info → bbot-2.3.0.5397rc0.dist-info}/entry_points.txt +0 -0
|
@@ -9,14 +9,16 @@ from .base import ModuleTestBase
|
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
class TestTrufflehog(ModuleTestBase):
|
|
12
|
+
config_overrides = {"modules": {"postman_download": {"api_key": "asdf"}}}
|
|
12
13
|
modules_overrides = [
|
|
13
14
|
"github_org",
|
|
14
15
|
"speculate",
|
|
15
16
|
"git_clone",
|
|
16
|
-
"unstructured",
|
|
17
17
|
"github_workflows",
|
|
18
18
|
"dockerhub",
|
|
19
19
|
"docker_pull",
|
|
20
|
+
"postman",
|
|
21
|
+
"postman_download",
|
|
20
22
|
"trufflehog",
|
|
21
23
|
]
|
|
22
24
|
|
|
@@ -24,6 +26,37 @@ class TestTrufflehog(ModuleTestBase):
|
|
|
24
26
|
|
|
25
27
|
async def setup_before_prep(self, module_test):
|
|
26
28
|
module_test.httpx_mock.add_response(url="https://api.github.com/zen")
|
|
29
|
+
module_test.httpx_mock.add_response(
|
|
30
|
+
url="https://api.getpostman.com/me",
|
|
31
|
+
json={
|
|
32
|
+
"user": {
|
|
33
|
+
"id": 000000,
|
|
34
|
+
"username": "test_key",
|
|
35
|
+
"email": "blacklanternsecurity@test.com",
|
|
36
|
+
"fullName": "Test Key",
|
|
37
|
+
"avatar": "",
|
|
38
|
+
"isPublic": True,
|
|
39
|
+
"teamId": 0,
|
|
40
|
+
"teamDomain": "",
|
|
41
|
+
"roles": ["user"],
|
|
42
|
+
},
|
|
43
|
+
"operations": [
|
|
44
|
+
{"name": "api_object_usage", "limit": 3, "usage": 0, "overage": 0},
|
|
45
|
+
{"name": "collection_run_limit", "limit": 25, "usage": 0, "overage": 0},
|
|
46
|
+
{"name": "file_storage_limit", "limit": 20, "usage": 0, "overage": 0},
|
|
47
|
+
{"name": "flow_count", "limit": 5, "usage": 0, "overage": 0},
|
|
48
|
+
{"name": "flow_requests", "limit": 5000, "usage": 0, "overage": 0},
|
|
49
|
+
{"name": "performance_test_limit", "limit": 25, "usage": 0, "overage": 0},
|
|
50
|
+
{"name": "postbot_calls", "limit": 50, "usage": 0, "overage": 0},
|
|
51
|
+
{"name": "reusable_packages", "limit": 3, "usage": 0, "overage": 0},
|
|
52
|
+
{"name": "test_data_retrieval", "limit": 1000, "usage": 0, "overage": 0},
|
|
53
|
+
{"name": "test_data_storage", "limit": 10, "usage": 0, "overage": 0},
|
|
54
|
+
{"name": "mock_usage", "limit": 1000, "usage": 0, "overage": 0},
|
|
55
|
+
{"name": "monitor_request_runs", "limit": 1000, "usage": 0, "overage": 0},
|
|
56
|
+
{"name": "api_usage", "limit": 1000, "usage": 0, "overage": 0},
|
|
57
|
+
],
|
|
58
|
+
},
|
|
59
|
+
)
|
|
27
60
|
module_test.httpx_mock.add_response(
|
|
28
61
|
url="https://api.github.com/orgs/blacklanternsecurity",
|
|
29
62
|
json={
|
|
@@ -813,6 +846,248 @@ class TestTrufflehog(ModuleTestBase):
|
|
|
813
846
|
)
|
|
814
847
|
|
|
815
848
|
async def setup_after_prep(self, module_test):
|
|
849
|
+
module_test.httpx_mock.add_response(
|
|
850
|
+
url="https://www.postman.com/_api/ws/proxy",
|
|
851
|
+
match_content=b'{"service": "search", "method": "POST", "path": "/search-all", "body": {"queryIndices": ["collaboration.workspace"], "queryText": "blacklanternsecurity", "size": 100, "from": 0, "clientTraceId": "", "requestOrigin": "srp", "mergeEntities": "true", "nonNestedRequests": "true", "domain": "public"}}',
|
|
852
|
+
json={
|
|
853
|
+
"data": [
|
|
854
|
+
{
|
|
855
|
+
"score": 611.41156,
|
|
856
|
+
"normalizedScore": 23,
|
|
857
|
+
"document": {
|
|
858
|
+
"watcherCount": 6,
|
|
859
|
+
"apiCount": 0,
|
|
860
|
+
"forkCount": 0,
|
|
861
|
+
"isblacklisted": "false",
|
|
862
|
+
"createdAt": "2021-06-15T14:03:51",
|
|
863
|
+
"publishertype": "team",
|
|
864
|
+
"publisherHandle": "blacklanternsecurity",
|
|
865
|
+
"id": "11498add-357d-4bc5-a008-0a2d44fb8829",
|
|
866
|
+
"slug": "bbot-public",
|
|
867
|
+
"updatedAt": "2024-07-30T11:00:35",
|
|
868
|
+
"entityType": "workspace",
|
|
869
|
+
"visibilityStatus": "public",
|
|
870
|
+
"forkcount": "0",
|
|
871
|
+
"tags": [],
|
|
872
|
+
"createdat": "2021-06-15T14:03:51",
|
|
873
|
+
"forkLabel": "",
|
|
874
|
+
"publisherName": "blacklanternsecurity",
|
|
875
|
+
"name": "BlackLanternSecurity BBOT [Public]",
|
|
876
|
+
"dependencyCount": 7,
|
|
877
|
+
"collectionCount": 6,
|
|
878
|
+
"warehouse__updated_at": "2024-07-30 11:00:00",
|
|
879
|
+
"privateNetworkFolders": [],
|
|
880
|
+
"isPublisherVerified": False,
|
|
881
|
+
"publisherType": "team",
|
|
882
|
+
"curatedInList": [],
|
|
883
|
+
"creatorId": "6900157",
|
|
884
|
+
"description": "",
|
|
885
|
+
"forklabel": "",
|
|
886
|
+
"publisherId": "299401",
|
|
887
|
+
"publisherLogo": "",
|
|
888
|
+
"popularity": 5,
|
|
889
|
+
"isPublic": True,
|
|
890
|
+
"categories": [],
|
|
891
|
+
"universaltags": "",
|
|
892
|
+
"views": 5788,
|
|
893
|
+
"summary": "BLS public workspaces.",
|
|
894
|
+
"memberCount": 2,
|
|
895
|
+
"isBlacklisted": False,
|
|
896
|
+
"publisherid": "299401",
|
|
897
|
+
"isPrivateNetworkEntity": False,
|
|
898
|
+
"isDomainNonTrivial": True,
|
|
899
|
+
"privateNetworkMeta": "",
|
|
900
|
+
"updatedat": "2021-10-20T16:19:29",
|
|
901
|
+
"documentType": "workspace",
|
|
902
|
+
},
|
|
903
|
+
"highlight": {"summary": "<b>BLS</b> BBOT api test."},
|
|
904
|
+
},
|
|
905
|
+
],
|
|
906
|
+
"meta": {
|
|
907
|
+
"queryText": "blacklanternsecurity",
|
|
908
|
+
"total": {
|
|
909
|
+
"collection": 0,
|
|
910
|
+
"request": 0,
|
|
911
|
+
"workspace": 1,
|
|
912
|
+
"api": 0,
|
|
913
|
+
"team": 0,
|
|
914
|
+
"user": 0,
|
|
915
|
+
"flow": 0,
|
|
916
|
+
"apiDefinition": 0,
|
|
917
|
+
"privateNetworkFolder": 0,
|
|
918
|
+
},
|
|
919
|
+
"state": "AQ4",
|
|
920
|
+
"spellCorrection": {"count": {"all": 1, "workspace": 1}, "correctedQueryText": None},
|
|
921
|
+
"featureFlags": {
|
|
922
|
+
"enabledPublicResultCuration": True,
|
|
923
|
+
"boostByPopularity": True,
|
|
924
|
+
"reRankPostNormalization": True,
|
|
925
|
+
"enableUrlBarHostNameSearch": True,
|
|
926
|
+
},
|
|
927
|
+
},
|
|
928
|
+
},
|
|
929
|
+
)
|
|
930
|
+
module_test.httpx_mock.add_response(
|
|
931
|
+
url="https://www.postman.com/_api/ws/proxy",
|
|
932
|
+
match_content=b'{"service": "workspaces", "method": "GET", "path": "/workspaces?handle=blacklanternsecurity&slug=bbot-public"}',
|
|
933
|
+
json={
|
|
934
|
+
"meta": {"model": "workspace", "action": "find", "nextCursor": ""},
|
|
935
|
+
"data": [
|
|
936
|
+
{
|
|
937
|
+
"id": "3a7e4bdc-7ff7-4dd4-8eaa-61ddce1c3d1b",
|
|
938
|
+
"name": "BlackLanternSecurity BBOT [Public]",
|
|
939
|
+
"description": None,
|
|
940
|
+
"summary": "BLS public workspaces.",
|
|
941
|
+
"createdBy": "299401",
|
|
942
|
+
"updatedBy": "299401",
|
|
943
|
+
"team": None,
|
|
944
|
+
"createdAt": "2021-10-20T16:19:29",
|
|
945
|
+
"updatedAt": "2021-10-20T16:19:29",
|
|
946
|
+
"visibilityStatus": "public",
|
|
947
|
+
"profileInfo": {
|
|
948
|
+
"slug": "bbot-public",
|
|
949
|
+
"profileType": "team",
|
|
950
|
+
"profileId": "000000",
|
|
951
|
+
"publicHandle": "https://www.postman.com/blacklanternsecurity",
|
|
952
|
+
"publicImageURL": "",
|
|
953
|
+
"publicName": "BlackLanternSecurity",
|
|
954
|
+
"isVerified": False,
|
|
955
|
+
},
|
|
956
|
+
}
|
|
957
|
+
],
|
|
958
|
+
},
|
|
959
|
+
)
|
|
960
|
+
module_test.httpx_mock.add_response(
|
|
961
|
+
url="https://api.getpostman.com/workspaces/3a7e4bdc-7ff7-4dd4-8eaa-61ddce1c3d1b",
|
|
962
|
+
json={
|
|
963
|
+
"workspace": {
|
|
964
|
+
"id": "3a7e4bdc-7ff7-4dd4-8eaa-61ddce1c3d1b",
|
|
965
|
+
"name": "BlackLanternSecurity BBOT [Public]",
|
|
966
|
+
"type": "personal",
|
|
967
|
+
"description": None,
|
|
968
|
+
"visibility": "public",
|
|
969
|
+
"createdBy": "00000000",
|
|
970
|
+
"updatedBy": "00000000",
|
|
971
|
+
"createdAt": "2021-11-17T06:09:01.000Z",
|
|
972
|
+
"updatedAt": "2021-11-17T08:57:16.000Z",
|
|
973
|
+
"collections": [
|
|
974
|
+
{
|
|
975
|
+
"id": "2aab9fd0-3715-4abe-8bb0-8cb0264d023f",
|
|
976
|
+
"name": "BBOT Public",
|
|
977
|
+
"uid": "10197090-2aab9fd0-3715-4abe-8bb0-8cb0264d023f",
|
|
978
|
+
},
|
|
979
|
+
],
|
|
980
|
+
"environments": [
|
|
981
|
+
{
|
|
982
|
+
"id": "f770f816-9c6a-40f7-bde3-c0855d2a1089",
|
|
983
|
+
"name": "BBOT Test",
|
|
984
|
+
"uid": "10197090-f770f816-9c6a-40f7-bde3-c0855d2a1089",
|
|
985
|
+
}
|
|
986
|
+
],
|
|
987
|
+
"apis": [],
|
|
988
|
+
}
|
|
989
|
+
},
|
|
990
|
+
)
|
|
991
|
+
module_test.httpx_mock.add_response(
|
|
992
|
+
url="https://www.postman.com/_api/workspace/3a7e4bdc-7ff7-4dd4-8eaa-61ddce1c3d1b/globals",
|
|
993
|
+
json={
|
|
994
|
+
"model_id": "8be7574b-219f-49e0-8d25-da447a882e4e",
|
|
995
|
+
"meta": {"model": "globals", "action": "find"},
|
|
996
|
+
"data": {
|
|
997
|
+
"workspace": "3a7e4bdc-7ff7-4dd4-8eaa-61ddce1c3d1b",
|
|
998
|
+
"lastUpdatedBy": "00000000",
|
|
999
|
+
"lastRevision": 1637239113000,
|
|
1000
|
+
"id": "8be7574b-219f-49e0-8d25-da447a882e4e",
|
|
1001
|
+
"values": [
|
|
1002
|
+
{
|
|
1003
|
+
"key": "endpoint_url",
|
|
1004
|
+
"value": "https://api.blacklanternsecurity.com/",
|
|
1005
|
+
"enabled": True,
|
|
1006
|
+
},
|
|
1007
|
+
],
|
|
1008
|
+
"createdAt": "2021-11-17T06:09:01.000Z",
|
|
1009
|
+
"updatedAt": "2021-11-18T12:38:33.000Z",
|
|
1010
|
+
},
|
|
1011
|
+
},
|
|
1012
|
+
)
|
|
1013
|
+
module_test.httpx_mock.add_response(
|
|
1014
|
+
url="https://api.getpostman.com/environments/10197090-f770f816-9c6a-40f7-bde3-c0855d2a1089",
|
|
1015
|
+
json={
|
|
1016
|
+
"environment": {
|
|
1017
|
+
"id": "f770f816-9c6a-40f7-bde3-c0855d2a1089",
|
|
1018
|
+
"name": "BBOT Test",
|
|
1019
|
+
"owner": "00000000",
|
|
1020
|
+
"createdAt": "2021-11-17T06:29:54.000Z",
|
|
1021
|
+
"updatedAt": "2021-11-23T07:06:53.000Z",
|
|
1022
|
+
"values": [
|
|
1023
|
+
{
|
|
1024
|
+
"key": "temp_session_endpoint",
|
|
1025
|
+
"value": "https://api.blacklanternsecurity.com/",
|
|
1026
|
+
"enabled": True,
|
|
1027
|
+
},
|
|
1028
|
+
],
|
|
1029
|
+
"isPublic": True,
|
|
1030
|
+
}
|
|
1031
|
+
},
|
|
1032
|
+
)
|
|
1033
|
+
module_test.httpx_mock.add_response(
|
|
1034
|
+
url="https://api.getpostman.com/collections/10197090-2aab9fd0-3715-4abe-8bb0-8cb0264d023f",
|
|
1035
|
+
json={
|
|
1036
|
+
"collection": {
|
|
1037
|
+
"info": {
|
|
1038
|
+
"_postman_id": "62b91565-d2e2-4bcd-8248-4dba2e3452f0",
|
|
1039
|
+
"name": "BBOT Public",
|
|
1040
|
+
"schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json",
|
|
1041
|
+
"updatedAt": "2021-11-17T07:13:16.000Z",
|
|
1042
|
+
"createdAt": "2021-11-17T07:13:15.000Z",
|
|
1043
|
+
"lastUpdatedBy": "00000000",
|
|
1044
|
+
"uid": "172983-62b91565-d2e2-4bcd-8248-4dba2e3452f0",
|
|
1045
|
+
},
|
|
1046
|
+
"item": [
|
|
1047
|
+
{
|
|
1048
|
+
"name": "Generate API Session",
|
|
1049
|
+
"id": "c1bac38c-dfc9-4cc0-9c19-828cbc8543b1",
|
|
1050
|
+
"protocolProfileBehavior": {"disableBodyPruning": True},
|
|
1051
|
+
"request": {
|
|
1052
|
+
"method": "POST",
|
|
1053
|
+
"header": [{"key": "Content-Type", "value": "application/json"}],
|
|
1054
|
+
"body": {
|
|
1055
|
+
"mode": "raw",
|
|
1056
|
+
"raw": '{"username": "test", "password": "Test"}',
|
|
1057
|
+
},
|
|
1058
|
+
"url": {
|
|
1059
|
+
"raw": "https://admin:admin@the-internet.herokuapp.com/basic_auth",
|
|
1060
|
+
"host": ["https://admin:admin@the-internet.herokuapp.com/basic_auth"],
|
|
1061
|
+
},
|
|
1062
|
+
"description": "",
|
|
1063
|
+
},
|
|
1064
|
+
"response": [],
|
|
1065
|
+
"uid": "10197090-c1bac38c-dfc9-4cc0-9c19-828cbc8543b1",
|
|
1066
|
+
},
|
|
1067
|
+
{
|
|
1068
|
+
"name": "Generate API Session",
|
|
1069
|
+
"id": "c1bac38c-dfc9-4cc0-9c19-828cbc8543b1",
|
|
1070
|
+
"protocolProfileBehavior": {"disableBodyPruning": True},
|
|
1071
|
+
"request": {
|
|
1072
|
+
"method": "POST",
|
|
1073
|
+
"header": [{"key": "Content-Type", "value": "application/json"}],
|
|
1074
|
+
"body": {
|
|
1075
|
+
"mode": "raw",
|
|
1076
|
+
"raw": '{"username": "test", "password": "Test"}',
|
|
1077
|
+
},
|
|
1078
|
+
"url": {
|
|
1079
|
+
"raw": "https://admin:admin@internal.host.com",
|
|
1080
|
+
"host": ["https://admin:admin@internal.host.com"],
|
|
1081
|
+
},
|
|
1082
|
+
"description": "",
|
|
1083
|
+
},
|
|
1084
|
+
"response": [],
|
|
1085
|
+
"uid": "10197090-c1bac38c-dfc9-4cc0-9c19-828cbc8543b1",
|
|
1086
|
+
},
|
|
1087
|
+
],
|
|
1088
|
+
}
|
|
1089
|
+
},
|
|
1090
|
+
)
|
|
816
1091
|
temp_path = Path("/tmp/.bbot_test")
|
|
817
1092
|
temp_repo_path = temp_path / "test_keys"
|
|
818
1093
|
shutil.rmtree(temp_repo_path, ignore_errors=True)
|
|
@@ -850,22 +1125,26 @@ class TestTrufflehog(ModuleTestBase):
|
|
|
850
1125
|
e
|
|
851
1126
|
for e in events
|
|
852
1127
|
if e.type == "VULNERABILITY"
|
|
853
|
-
and (
|
|
1128
|
+
and (
|
|
1129
|
+
e.data["host"] == "hub.docker.com"
|
|
1130
|
+
or e.data["host"] == "github.com"
|
|
1131
|
+
or e.data["host"] == "www.postman.com"
|
|
1132
|
+
)
|
|
854
1133
|
and "Verified Secret Found." in e.data["description"]
|
|
855
1134
|
and "Raw result: [https://admin:admin@the-internet.herokuapp.com]" in e.data["description"]
|
|
856
1135
|
and "RawV2 result: [https://admin:admin@the-internet.herokuapp.com/basic_auth]" in e.data["description"]
|
|
857
1136
|
]
|
|
858
|
-
# Trufflehog should find
|
|
859
|
-
assert
|
|
1137
|
+
# Trufflehog should find 4 verifiable secrets, 1 from the github, 1 from the workflow log, 1 from the docker image and 1 from the postman.
|
|
1138
|
+
assert 4 == len(vuln_events), "Failed to find secret in events"
|
|
860
1139
|
github_repo_event = [e for e in vuln_events if "test_keys" in e.data["description"]][0].parent
|
|
861
1140
|
folder = Path(github_repo_event.data["path"])
|
|
862
1141
|
assert folder.is_dir(), "Destination folder doesn't exist"
|
|
863
1142
|
with open(folder / "keys.txt") as f:
|
|
864
1143
|
content = f.read()
|
|
865
1144
|
assert content == self.file_content, "File content doesn't match"
|
|
866
|
-
filesystem_events = [e.parent for e in vuln_events
|
|
867
|
-
assert len(filesystem_events) ==
|
|
868
|
-
assert all(
|
|
1145
|
+
filesystem_events = [e.parent for e in vuln_events]
|
|
1146
|
+
assert len(filesystem_events) == 4
|
|
1147
|
+
assert all(e.type == "FILESYSTEM" for e in filesystem_events)
|
|
869
1148
|
assert 1 == len(
|
|
870
1149
|
[
|
|
871
1150
|
e
|
|
@@ -889,31 +1168,45 @@ class TestTrufflehog(ModuleTestBase):
|
|
|
889
1168
|
and Path(e.data["path"]).is_file()
|
|
890
1169
|
]
|
|
891
1170
|
), "Docker image file does not exist"
|
|
1171
|
+
assert 1 == len(
|
|
1172
|
+
[
|
|
1173
|
+
e
|
|
1174
|
+
for e in filesystem_events
|
|
1175
|
+
if e.data["path"].endswith(
|
|
1176
|
+
"/postman_workspaces/BlackLanternSecurity BBOT [Public]/3a7e4bdc-7ff7-4dd4-8eaa-61ddce1c3d1b.zip"
|
|
1177
|
+
)
|
|
1178
|
+
and Path(e.data["path"]).is_file()
|
|
1179
|
+
]
|
|
1180
|
+
), "Failed to find blacklanternsecurity postman workspace"
|
|
892
1181
|
|
|
893
1182
|
|
|
894
1183
|
class TestTrufflehog_NonVerified(TestTrufflehog):
|
|
895
|
-
config_overrides = {"modules": {"trufflehog": {"only_verified": False}}}
|
|
1184
|
+
config_overrides = {"modules": {"trufflehog": {"only_verified": False}, "postman_download": {"api_key": "asdf"}}}
|
|
896
1185
|
|
|
897
1186
|
def check(self, module_test, events):
|
|
898
1187
|
finding_events = [
|
|
899
1188
|
e
|
|
900
1189
|
for e in events
|
|
901
1190
|
if e.type == e.type == "FINDING"
|
|
902
|
-
and (
|
|
1191
|
+
and (
|
|
1192
|
+
e.data["host"] == "hub.docker.com"
|
|
1193
|
+
or e.data["host"] == "github.com"
|
|
1194
|
+
or e.data["host"] == "www.postman.com"
|
|
1195
|
+
)
|
|
903
1196
|
and "Potential Secret Found." in e.data["description"]
|
|
904
1197
|
and "Raw result: [https://admin:admin@internal.host.com]" in e.data["description"]
|
|
905
1198
|
]
|
|
906
|
-
# Trufflehog should find
|
|
907
|
-
assert
|
|
1199
|
+
# Trufflehog should find 4 unverifiable secrets, 1 from the github, 1 from the workflow log, 1 from the docker image and 1 from the postman.
|
|
1200
|
+
assert 4 == len(finding_events), "Failed to find secret in events"
|
|
908
1201
|
github_repo_event = [e for e in finding_events if "test_keys" in e.data["description"]][0].parent
|
|
909
1202
|
folder = Path(github_repo_event.data["path"])
|
|
910
1203
|
assert folder.is_dir(), "Destination folder doesn't exist"
|
|
911
1204
|
with open(folder / "keys.txt") as f:
|
|
912
1205
|
content = f.read()
|
|
913
1206
|
assert content == self.file_content, "File content doesn't match"
|
|
914
|
-
filesystem_events = [e.parent for e in finding_events
|
|
915
|
-
assert len(filesystem_events) ==
|
|
916
|
-
assert all(
|
|
1207
|
+
filesystem_events = [e.parent for e in finding_events]
|
|
1208
|
+
assert len(filesystem_events) == 4
|
|
1209
|
+
assert all(e.type == "FILESYSTEM" for e in filesystem_events)
|
|
917
1210
|
assert 1 == len(
|
|
918
1211
|
[
|
|
919
1212
|
e
|
|
@@ -937,3 +1230,13 @@ class TestTrufflehog_NonVerified(TestTrufflehog):
|
|
|
937
1230
|
and Path(e.data["path"]).is_file()
|
|
938
1231
|
]
|
|
939
1232
|
), "Docker image file does not exist"
|
|
1233
|
+
assert 1 == len(
|
|
1234
|
+
[
|
|
1235
|
+
e
|
|
1236
|
+
for e in filesystem_events
|
|
1237
|
+
if e.data["path"].endswith(
|
|
1238
|
+
"/postman_workspaces/BlackLanternSecurity BBOT [Public]/3a7e4bdc-7ff7-4dd4-8eaa-61ddce1c3d1b.zip"
|
|
1239
|
+
)
|
|
1240
|
+
and Path(e.data["path"]).is_file()
|
|
1241
|
+
]
|
|
1242
|
+
), "Failed to find blacklanternsecurity postman workspace"
|
|
@@ -4,7 +4,7 @@ from .base import ModuleTestBase
|
|
|
4
4
|
class TestWayback(ModuleTestBase):
|
|
5
5
|
async def setup_after_prep(self, module_test):
|
|
6
6
|
module_test.httpx_mock.add_response(
|
|
7
|
-
url=
|
|
7
|
+
url="http://web.archive.org/cdx/search/cdx?url=blacklanternsecurity.com&matchType=domain&output=json&fl=original&collapse=original",
|
|
8
8
|
json=[["original"], ["http://asdf.blacklanternsecurity.com"]],
|
|
9
9
|
)
|
|
10
10
|
|
|
@@ -120,7 +120,7 @@ class TestSubdomainEnumWildcardBaseline(ModuleTestBase):
|
|
|
120
120
|
|
|
121
121
|
def check(self, module_test, events):
|
|
122
122
|
assert self.queries == ["walmart.cn"]
|
|
123
|
-
assert len(events) ==
|
|
123
|
+
assert len(events) == 7
|
|
124
124
|
assert 2 == len(
|
|
125
125
|
[
|
|
126
126
|
e
|
|
@@ -185,7 +185,7 @@ def custom_lookup(query, rdtype):
|
|
|
185
185
|
def check(self, module_test, events):
|
|
186
186
|
# no subdomain enum should happen on this domain!
|
|
187
187
|
assert self.queries == []
|
|
188
|
-
assert len(events) ==
|
|
188
|
+
assert len(events) == 7
|
|
189
189
|
assert 2 == len(
|
|
190
190
|
[e for e in events if e.type == "IP_ADDRESS" and str(e.module) == "A" and e.scope_distance == 1]
|
|
191
191
|
)
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: bbot
|
|
3
|
-
Version: 2.0.
|
|
3
|
+
Version: 2.3.0.5397rc0
|
|
4
4
|
Summary: OSINT automation for hackers.
|
|
5
5
|
Home-page: https://github.com/blacklanternsecurity/bbot
|
|
6
6
|
License: GPL-3.0
|
|
7
|
-
Keywords: python,cli,automation,osint,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
|
|
7
|
+
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
|
|
8
8
|
Author: TheTechromancer
|
|
9
9
|
Requires-Python: >=3.9,<4.0
|
|
10
10
|
Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
|
|
@@ -14,26 +14,28 @@ Classifier: Programming Language :: Python :: 3.9
|
|
|
14
14
|
Classifier: Programming Language :: Python :: 3.10
|
|
15
15
|
Classifier: Programming Language :: Python :: 3.11
|
|
16
16
|
Classifier: Programming Language :: Python :: 3.12
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
17
18
|
Classifier: Topic :: Security
|
|
18
19
|
Requires-Dist: ansible (>=7.3,<9.0)
|
|
19
20
|
Requires-Dist: ansible-runner (>=2.3.2,<3.0.0)
|
|
20
21
|
Requires-Dist: beautifulsoup4 (>=4.12.2,<5.0.0)
|
|
21
22
|
Requires-Dist: cachetools (>=5.3.2,<6.0.0)
|
|
22
|
-
Requires-Dist: cloudcheck (>=
|
|
23
|
+
Requires-Dist: cloudcheck (>=6.0.0.602,<7.0.0.0)
|
|
23
24
|
Requires-Dist: deepdiff (>=6.2.3,<8.0.0)
|
|
24
25
|
Requires-Dist: dnspython (>=2.4.2,<3.0.0)
|
|
25
26
|
Requires-Dist: httpx (>=0.27.0,<0.28.0)
|
|
26
27
|
Requires-Dist: idna (>=3.4,<4.0)
|
|
27
28
|
Requires-Dist: jinja2 (>=3.1.3,<4.0.0)
|
|
28
29
|
Requires-Dist: lxml (>=4.9.2,<6.0.0)
|
|
29
|
-
Requires-Dist: mmh3 (>=4.1
|
|
30
|
+
Requires-Dist: mmh3 (>=4.1,<6.0)
|
|
30
31
|
Requires-Dist: omegaconf (>=2.3.0,<3.0.0)
|
|
31
|
-
Requires-Dist: psutil (>=5.9.4,<
|
|
32
|
+
Requires-Dist: psutil (>=5.9.4,<7.0.0)
|
|
33
|
+
Requires-Dist: puremagic (>=1.28,<2.0)
|
|
32
34
|
Requires-Dist: pycryptodome (>=3.17,<4.0)
|
|
33
35
|
Requires-Dist: pydantic (>=2.4.2,<3.0.0)
|
|
34
36
|
Requires-Dist: pyjwt (>=2.7.0,<3.0.0)
|
|
35
37
|
Requires-Dist: pyzmq (>=26.0.3,<27.0.0)
|
|
36
|
-
Requires-Dist: radixtarget (>=
|
|
38
|
+
Requires-Dist: radixtarget (>=2.0.0.50,<3.0.0.0)
|
|
37
39
|
Requires-Dist: regex (>=2024.4.16,<2025.0.0)
|
|
38
40
|
Requires-Dist: setproctitle (>=1.3.3,<2.0.0)
|
|
39
41
|
Requires-Dist: socksio (>=1.0.0,<2.0.0)
|
|
@@ -52,7 +54,7 @@ Description-Content-Type: text/markdown
|
|
|
52
54
|
|
|
53
55
|
[](https://github.com/blacklanternsecurity/bbot)
|
|
54
56
|
|
|
55
|
-
[](https://www.python.org) [](https://github.com/blacklanternsecurity/bbot/blob/dev/LICENSE) [](https://www.reconvillage.org/talks) [](https://pepy.tech/project/bbot) [](https://www.python.org) [](https://github.com/blacklanternsecurity/bbot/blob/dev/LICENSE) [](https://www.reconvillage.org/talks) [](https://pepy.tech/project/bbot) [](https://github.com/astral-sh/ruff) [](https://github.com/blacklanternsecurity/bbot/actions?query=workflow%3A"tests") [](https://codecov.io/gh/blacklanternsecurity/bbot) [](https://discord.com/invite/PZqkgxu5SA)
|
|
56
58
|
|
|
57
59
|
### **BEE·bot** is a multipurpose scanner inspired by [Spiderfoot](https://github.com/smicallef/spiderfoot), built to automate your **Recon**, **Bug Bounties**, and **ASM**!
|
|
58
60
|
|
|
@@ -107,13 +109,13 @@ config:
|
|
|
107
109
|
threads: 25
|
|
108
110
|
brute_threads: 1000
|
|
109
111
|
# put your API keys here
|
|
110
|
-
modules:
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
112
|
+
# modules:
|
|
113
|
+
# github:
|
|
114
|
+
# api_key: ""
|
|
115
|
+
# chaos:
|
|
116
|
+
# api_key: ""
|
|
117
|
+
# securitytrails:
|
|
118
|
+
# api_key: ""
|
|
117
119
|
|
|
118
120
|
```
|
|
119
121
|
|
|
@@ -143,6 +145,10 @@ description: Recursive web spider
|
|
|
143
145
|
modules:
|
|
144
146
|
- httpx
|
|
145
147
|
|
|
148
|
+
blacklist:
|
|
149
|
+
# Prevent spider from invalidating sessions by logging out
|
|
150
|
+
- "RE:/.*(sign|log)[_-]?out"
|
|
151
|
+
|
|
146
152
|
config:
|
|
147
153
|
web:
|
|
148
154
|
# how many links to follow in a row
|
|
@@ -243,10 +249,10 @@ flags:
|
|
|
243
249
|
|
|
244
250
|
```bash
|
|
245
251
|
# everything everywhere all at once
|
|
246
|
-
bbot -t evilcorp.com -p kitchen-sink
|
|
252
|
+
bbot -t evilcorp.com -p kitchen-sink --allow-deadly
|
|
247
253
|
|
|
248
254
|
# roughly equivalent to:
|
|
249
|
-
bbot -t evilcorp.com -p subdomain-enum cloud-enum code-enum email-enum spider web-basic paramminer dirbust-light web-screenshots
|
|
255
|
+
bbot -t evilcorp.com -p subdomain-enum cloud-enum code-enum email-enum spider web-basic paramminer dirbust-light web-screenshots --allow-deadly
|
|
250
256
|
```
|
|
251
257
|
|
|
252
258
|
<!-- BBOT KITCHEN-SINK PRESET EXPANDABLE -->
|
|
@@ -267,6 +273,7 @@ include:
|
|
|
267
273
|
- paramminer
|
|
268
274
|
- dirbust-light
|
|
269
275
|
- web-screenshots
|
|
276
|
+
- baddns-thorough
|
|
270
277
|
|
|
271
278
|
config:
|
|
272
279
|
modules:
|
|
@@ -287,6 +294,24 @@ Click the graph below to explore the [inner workings](https://www.blacklanternse
|
|
|
287
294
|
|
|
288
295
|
[](https://www.blacklanternsecurity.com/bbot/Stable/how_it_works/)
|
|
289
296
|
|
|
297
|
+
## Output Modules
|
|
298
|
+
|
|
299
|
+
- [Neo4j](docs/scanning/output.md#neo4j)
|
|
300
|
+
- [Teams](docs/scanning/output.md#teams)
|
|
301
|
+
- [Discord](docs/scanning/output.md#discord)
|
|
302
|
+
- [Slack](docs/scanning/output.md#slack)
|
|
303
|
+
- [Postgres](docs/scanning/output.md#postgres)
|
|
304
|
+
- [MySQL](docs/scanning/output.md#mysql)
|
|
305
|
+
- [SQLite](docs/scanning/output.md#sqlite)
|
|
306
|
+
- [Splunk](docs/scanning/output.md#splunk)
|
|
307
|
+
- [Elasticsearch](docs/scanning/output.md#elasticsearch)
|
|
308
|
+
- [CSV](docs/scanning/output.md#csv)
|
|
309
|
+
- [JSON](docs/scanning/output.md#json)
|
|
310
|
+
- [HTTP](docs/scanning/output.md#http)
|
|
311
|
+
- [Websocket](docs/scanning/output.md#websocket)
|
|
312
|
+
|
|
313
|
+
...and [more](docs/scanning/output.md)!
|
|
314
|
+
|
|
290
315
|
## BBOT as a Python Library
|
|
291
316
|
|
|
292
317
|
#### Synchronous
|
|
@@ -355,13 +380,17 @@ For more information, see [Targets](https://www.blacklanternsecurity.com/bbot/St
|
|
|
355
380
|
|
|
356
381
|
Similar to Amass or Subfinder, BBOT supports API keys for various third-party services such as SecurityTrails, etc.
|
|
357
382
|
|
|
358
|
-
The standard way to do this is to enter your API keys in **`~/.config/bbot/bbot.yml
|
|
383
|
+
The standard way to do this is to enter your API keys in **`~/.config/bbot/bbot.yml`**. Note that multiple API keys are allowed:
|
|
359
384
|
```yaml
|
|
360
385
|
modules:
|
|
361
386
|
shodan_dns:
|
|
362
387
|
api_key: 4f41243847da693a4f356c0486114bc6
|
|
363
388
|
c99:
|
|
364
|
-
|
|
389
|
+
# multiple API keys
|
|
390
|
+
api_key:
|
|
391
|
+
- 21a270d5f59c9b05813a72bb41707266
|
|
392
|
+
- ea8f243d9885cf8ce9876a580224fd3c
|
|
393
|
+
- 5bc6ed268ab6488270e496d3183a1a27
|
|
365
394
|
virustotal:
|
|
366
395
|
api_key: dd5f0eee2e4a99b71a939bded450b246
|
|
367
396
|
securitytrails:
|
|
@@ -404,6 +433,7 @@ For details, see [Configuration](https://www.blacklanternsecurity.com/bbot/Stabl
|
|
|
404
433
|
- **Modules**
|
|
405
434
|
- [List of Modules](https://www.blacklanternsecurity.com/bbot/Stable/modules/list_of_modules)
|
|
406
435
|
- [Nuclei](https://www.blacklanternsecurity.com/bbot/Stable/modules/nuclei)
|
|
436
|
+
- [Custom YARA Rules](https://www.blacklanternsecurity.com/bbot/Stable/modules/custom_yara_rules)
|
|
407
437
|
- **Misc**
|
|
408
438
|
- [Contribution](https://www.blacklanternsecurity.com/bbot/Stable/contribution)
|
|
409
439
|
- [Release History](https://www.blacklanternsecurity.com/bbot/Stable/release_history)
|