Skip to content

Commit ca4e98e

Browse files
authored
Merge branch 'blasthttp-integration-clean' into add-virtualhost-module
2 parents 64d3741 + a84d1b4 commit ca4e98e

File tree

12 files changed

+27
-67
lines changed

12 files changed

+27
-67
lines changed

bbot/core/shared_deps.py

Lines changed: 1 addition & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,3 @@
1-
DEP_FFUF = [
2-
{
3-
"name": "Download ffuf",
4-
"unarchive": {
5-
"src": "https://github.com/ffuf/ffuf/releases/download/v#{BBOT_DEPS_FFUF_VERSION}/ffuf_#{BBOT_DEPS_FFUF_VERSION}_#{BBOT_OS}_#{BBOT_CPU_ARCH_GOLANG}.tar.gz",
6-
"include": "ffuf",
7-
"dest": "#{BBOT_TOOLS}",
8-
"remote_src": True,
9-
},
10-
}
11-
]
12-
131
DEP_DOCKER = [
142
{
153
"name": "Check if Docker is already installed",
@@ -173,31 +161,6 @@
173161
},
174162
]
175163

176-
DEP_CURL = [
177-
{
178-
"name": "Download static curl binary (v8.11.0)",
179-
"get_url": {
180-
"url": "https://github.com/moparisthebest/static-curl/releases/download/v8.11.0/curl-amd64",
181-
"dest": "#{BBOT_TOOLS}/curl",
182-
"mode": "0755",
183-
"force": True,
184-
},
185-
},
186-
{
187-
"name": "Ensure curl binary is executable",
188-
"file": {
189-
"path": "#{BBOT_TOOLS}/curl",
190-
"mode": "0755",
191-
},
192-
},
193-
{
194-
"name": "Verify curl binary works",
195-
"command": "#{BBOT_TOOLS}/curl --version",
196-
"register": "curl_version_output",
197-
"changed_when": False,
198-
},
199-
]
200-
201164
DEP_MASSCAN = [
202165
{
203166
"name": "install os deps (Debian)",
@@ -269,7 +232,7 @@
269232
},
270233
]
271234

272-
# shared module dependencies -- ffuf, massdns, chromium, etc.
235+
# shared module dependencies -- massdns, chromium, etc.
273236
SHARED_DEPS = {}
274237
for var, val in list(locals().items()):
275238
if var.startswith("DEP_") and isinstance(val, list):

bbot/defaults.yml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -132,8 +132,6 @@ engine:
132132

133133
# Tool dependencies
134134
deps:
135-
ffuf:
136-
version: "2.1.0"
137135
# How to handle installation of module dependencies
138136
# Choices are:
139137
# - abort_on_failure (default) - if a module dependency fails to install, abort the scan

bbot/modules/telerik.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -156,7 +156,7 @@ class telerik(BaseModule):
156156
options = {"exploit_RAU_crypto": False, "include_subdirs": False}
157157
options_desc = {
158158
"exploit_RAU_crypto": "Attempt to confirm any RAU AXD detections are vulnerable",
159-
"include_subdirs": "Include subdirectories in the scan (off by default)", # will create many finding events if used in conjunction with web spider or ffuf
159+
"include_subdirs": "Include subdirectories in the scan (off by default)", # will create many finding events if used in conjunction with web spider or web_brute
160160
}
161161

162162
in_scope_only = True

bbot/presets/web/dirbust-heavy.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,16 +7,16 @@ flags:
77
- iis-shortnames
88

99
modules:
10-
- ffuf
10+
- web_brute
1111
- wayback
1212

1313
config:
1414
modules:
1515
iis_shortnames:
16-
# we exploit the shortnames vulnerability to produce URL_HINTs which are consumed by ffuf_shortnames
16+
# we exploit the shortnames vulnerability to produce URL_HINTs which are consumed by web_brute_shortnames
1717
detect_only: False
18-
ffuf:
19-
depth: 3
18+
web_brute:
19+
max_depth: 3
2020
lines: 5000
2121
extensions:
2222
- php

bbot/presets/web/dirbust-light.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@ include:
44
- iis-shortnames
55

66
modules:
7-
- ffuf
7+
- web_brute
88

99
config:
1010
modules:
11-
ffuf:
11+
web_brute:
1212
# wordlist size = 1000
1313
lines: 1000

bbot/presets/web/dotnet-audit.yml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,19 +7,19 @@ include:
77
modules:
88
- http
99
- badsecrets
10-
- ffuf_shortnames
11-
- ffuf
10+
- web_brute_shortnames
11+
- web_brute
1212
- telerik
1313
- ajaxpro
1414
- dotnetnuke
1515
- aspnet_bin_exposure
1616

1717
config:
1818
modules:
19-
ffuf:
19+
web_brute:
2020
extensions: asp,aspx,ashx,asmx,ascx
21-
extensions_ignore_case: True
22-
ffuf_shortnames:
21+
ignore_case: True
22+
web_brute_shortnames:
2323
find_subwords: True
2424
telerik:
2525
exploit_RAU_crypto: True

bbot/test/test_step_1/test_scan.py

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -227,8 +227,8 @@ def mock_event(type, module, parent=None):
227227

228228
http_mod = mock_module("http", ["URL", "HTTP_RESPONSE"])
229229
excavate_mod = mock_module("excavate", ["URL_UNVERIFIED", "WEB_PARAMETER"])
230-
ffuf_mod = mock_module("ffuf_shortnames", ["URL_UNVERIFIED"])
231-
ffuf2_mod = mock_module("ffuf", ["URL_UNVERIFIED"])
230+
web_brute_shortnames_mod = mock_module("web_brute_shortnames", ["URL_UNVERIFIED"])
231+
web_brute_mod = mock_module("web_brute", ["URL_UNVERIFIED"])
232232
speculate_mod = mock_module("speculate", ["DNS_NAME", "OPEN_TCP_PORT", "IP_ADDRESS", "FINDING", "ORG_STUB"])
233233
robots_mod = mock_module("robots", ["URL_UNVERIFIED"])
234234

@@ -237,13 +237,13 @@ def mock_event(type, module, parent=None):
237237
parent = mock_event("URL_UNVERIFIED", excavate_mod)
238238
stats.event_produced(mock_event("URL", http_mod, parent=parent))
239239

240-
# 2) ffuf_shortnames discovers URL_UNVERIFIED, http verifies → ffuf_shortnames gets credit
240+
# 2) web_brute_shortnames discovers URL_UNVERIFIED, http verifies → web_brute_shortnames gets credit
241241
for _ in range(3):
242-
parent = mock_event("URL_UNVERIFIED", ffuf_mod)
242+
parent = mock_event("URL_UNVERIFIED", web_brute_shortnames_mod)
243243
stats.event_produced(mock_event("URL", http_mod, parent=parent))
244244

245-
# 3) ffuf discovers URL_UNVERIFIED, http verifies → ffuf gets credit
246-
parent = mock_event("URL_UNVERIFIED", ffuf2_mod)
245+
# 3) web_brute discovers URL_UNVERIFIED, http verifies → web_brute gets credit
246+
parent = mock_event("URL_UNVERIFIED", web_brute_mod)
247247
stats.event_produced(mock_event("URL", http_mod, parent=parent))
248248

249249
# 4) speculate (internal module) creates URL_UNVERIFIED, http verifies → http keeps credit
@@ -267,8 +267,8 @@ def mock_event(type, module, parent=None):
267267

268268
# verify per-module produced counts
269269
assert stats.module_stats["excavate"].produced == {"URL": 5}
270-
assert stats.module_stats["ffuf_shortnames"].produced == {"URL": 3}
271-
assert stats.module_stats["ffuf"].produced == {"URL": 1}
270+
assert stats.module_stats["web_brute_shortnames"].produced == {"URL": 3}
271+
assert stats.module_stats["web_brute"].produced == {"URL": 1}
272272
assert stats.module_stats["robots"].produced == {"URL": 2}
273273
# http gets credit for speculate's 4 URLs + 2 from OPEN_TCP_PORT = 6
274274
assert stats.module_stats["http"].produced == {"URL": 6}
@@ -286,9 +286,9 @@ def mock_event(type, module, parent=None):
286286
table_dict = {row[0]: row[1] for row in rows}
287287
assert table_dict["http"] == "6 (6 URL)"
288288
assert table_dict["excavate"] == "5 (5 URL)"
289-
assert table_dict["ffuf_shortnames"] == "3 (3 URL)"
289+
assert table_dict["web_brute_shortnames"] == "3 (3 URL)"
290290
assert table_dict["robots"] == "2 (2 URL)"
291-
assert table_dict["ffuf"] == "1 (1 URL)"
291+
assert table_dict["web_brute"] == "1 (1 URL)"
292292
assert table_dict["CNAME"] == "1 (1 DNS_NAME)"
293293
assert table_dict["cloudcheck"] == "1 (1 STORAGE_BUCKET)"
294294
assert "speculate" not in table_dict

bbot/test/test_step_2/module_tests/test_module_github_org.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@
22

33

44
class TestGithub_Org(ModuleTestBase):
5-
config_overrides = {"modules": {"github_org": {"api_key": "asdf"}, "github": {"api_key": "asdf"}, "git_clone": {"api_key": ""}}}
5+
config_overrides = {
6+
"modules": {"github_org": {"api_key": "asdf"}, "github": {"api_key": "asdf"}, "git_clone": {"api_key": ""}}
7+
}
68
modules_overrides = ["github_org", "speculate"]
79

810
async def setup_before_prep(self, module_test):

bbot/test/test_step_2/module_tests/test_module_rabbitmq.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import json
22
import asyncio
3-
from contextlib import suppress
43

54
from .base import ModuleTestBase
65

bbot/test/test_step_2/module_tests/test_module_subdomainradar.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -204,6 +204,7 @@ async def setup_after_prep(self, module_test):
204204
"time_to_finish": 41,
205205
},
206206
)
207+
207208
def check(self, module_test, events):
208209
assert any(e.data == "www.blacklanternsecurity.com" for e in events), "Failed to detect subdomain #1"
209210
assert any(e.data == "asdf.blacklanternsecurity.com" for e in events), "Failed to detect subdomain #2"

0 commit comments

Comments
 (0)