Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Dev -> Stable 2.3.0 #1986

Merged
merged 561 commits into from
Jan 25, 2025
Merged
Show file tree
Hide file tree
Changes from 118 commits
Commits
Show all changes
561 commits
Select commit Hold shift + click to select a range
13ba0b0
Merge pull request #2111 from blacklanternsecurity/dependabot/pip/dev…
TheTechromancer Dec 23, 2024
25ad37b
Merge pull request #2112 from blacklanternsecurity/dependabot/pip/dev…
TheTechromancer Dec 23, 2024
04d5506
Merge pull request #2113 from blacklanternsecurity/dependabot/pip/dev…
TheTechromancer Dec 23, 2024
cf94b45
Merge pull request #2114 from blacklanternsecurity/dependabot/pip/dev…
TheTechromancer Dec 23, 2024
d3bbfce
delete columbus
invalid-email-address Dec 27, 2024
eaf4dfc
fix spider bug
invalid-email-address Dec 28, 2024
7fff085
merge dev
invalid-email-address Dec 28, 2024
23b651f
bump extractous
invalid-email-address Dec 28, 2024
00cf08c
fix tests?
invalid-email-address Dec 28, 2024
5a741ff
efficiency
invalid-email-address Dec 28, 2024
fd0df0d
fix tests
invalid-email-address Dec 28, 2024
53dada0
Merge pull request #2115 from blacklanternsecurity/delete-columbus
TheTechromancer Dec 29, 2024
556d026
Merge pull request #2117 from blacklanternsecurity/fix-web-spider
TheTechromancer Dec 29, 2024
d8ec8c2
[create-pull-request] automated change
TheTechromancer Dec 30, 2024
dc7d080
Bump mkdocstrings-python from 1.12.2 to 1.13.0
dependabot[bot] Dec 30, 2024
d650284
Bump orjson from 3.10.12 to 3.10.13
dependabot[bot] Dec 30, 2024
8b502d6
Bump cloudcheck from 7.0.33 to 7.0.47
dependabot[bot] Dec 30, 2024
607e283
Merge pull request #2121 from blacklanternsecurity/dependabot/pip/dev…
TheTechromancer Dec 30, 2024
d7511ee
Merge pull request #2123 from blacklanternsecurity/dependabot/pip/dev…
TheTechromancer Dec 30, 2024
7aeb1f7
Merge pull request #2122 from blacklanternsecurity/dependabot/pip/dev…
TheTechromancer Dec 30, 2024
6e9eef5
Merge pull request #2120 from blacklanternsecurity/update-docs
TheTechromancer Dec 30, 2024
b20bf53
Move the functions to get and validate the workspace into the postman…
domwhewell-sage Jan 1, 2025
3a19ce0
Add verbose message when validation fails
domwhewell-sage Jan 1, 2025
fdf5a76
Add to postman test to include 2 workspaces 1 in scope and 1 out of s…
domwhewell-sage Jan 1, 2025
866dc2b
Change postman download test to only include the 1 workspace
domwhewell-sage Jan 1, 2025
a4a3712
Remove rar install and move it to /test
domwhewell-sage Jan 1, 2025
f8ba41e
save reference to asyncio task
invalid-email-address Jan 2, 2025
28d91ea
ruffed
invalid-email-address Jan 3, 2025
86c4397
Merge pull request #2125 from blacklanternsecurity/heisenberg-async-t…
TheTechromancer Jan 4, 2025
760c4ea
adding url_hint word2vec prediction
liquidsec Jan 4, 2025
06dfe46
removing old ffuf_shortnames word list
liquidsec Jan 4, 2025
14108a3
Merge branch 'dev' into iis-shortnames-magic
liquidsec Jan 4, 2025
50e3295
Bump ruff from 0.8.4 to 0.8.6
dependabot[bot] Jan 6, 2025
35ef813
Bump poetry-dynamic-versioning from 1.4.1 to 1.5.0
dependabot[bot] Jan 6, 2025
1ef5ddb
Merge pull request #2128 from blacklanternsecurity/dependabot/pip/dev…
TheTechromancer Jan 6, 2025
e400a75
Update generic_ssrf.py
random-robbie Jan 6, 2025
f6dd3de
Merge pull request #2130 from blacklanternsecurity/dependabot/pip/dev…
TheTechromancer Jan 6, 2025
9391311
adding numpy module dep
liquidsec Jan 6, 2025
552a43b
Merge branch 'iis-shortnames-magic' of https://github.com/blacklanter…
liquidsec Jan 6, 2025
2a394c1
fix async bug in tests
invalid-email-address Jan 6, 2025
bd03c7d
fix dns extraction
invalid-email-address Jan 6, 2025
4a3d593
ruffed
invalid-email-address Jan 6, 2025
7f3f222
include the test.rar file in the python test
domwhewell-sage Jan 6, 2025
2e9c9e7
fix tests
invalid-email-address Jan 6, 2025
c99b9d5
fix yara bug
invalid-email-address Jan 6, 2025
553bb56
remove info statements
invalid-email-address Jan 6, 2025
0f86dab
debug --> verbose
invalid-email-address Jan 6, 2025
dca679d
fix wappalyzer
invalid-email-address Jan 6, 2025
18f7f38
portfilter
invalid-email-address Jan 6, 2025
1ab0f9a
fix yara rules
invalid-email-address Jan 6, 2025
59ffee2
Merge pull request #2133 from blacklanternsecurity/misc-bugfixes
TheTechromancer Jan 6, 2025
f2e8d35
merge dev
invalid-email-address Jan 6, 2025
19fc8d3
merge dev
invalid-email-address Jan 6, 2025
0b41933
fix tests
invalid-email-address Jan 6, 2025
29032c2
ruffed
invalid-email-address Jan 6, 2025
7cc5eb0
Update trufflehog
blsaccess Jan 7, 2025
7c755d8
Merge pull request #2136 from blacklanternsecurity/update-trufflehog
TheTechromancer Jan 7, 2025
aaa9f92
Update nuclei
blsaccess Jan 8, 2025
479427a
ajax pro vulnerability detection
liquidsec Jan 8, 2025
ee176c7
[create-pull-request] automated change
TheTechromancer Jan 8, 2025
931d731
Merge pull request #2139 from blacklanternsecurity/update-docs
TheTechromancer Jan 8, 2025
cda250b
Merge pull request #2138 from blacklanternsecurity/update-nuclei
TheTechromancer Jan 8, 2025
98967f5
adding tests for vuln detection, streamlining detection
liquidsec Jan 8, 2025
132cd7b
moved models to word predictor
liquidsec Jan 8, 2025
bf205f8
fixing parameter labeling + major refactor
liquidsec Jan 9, 2025
b3e443b
Merge pull request #2140 from blacklanternsecurity/ajaxpro-vuln
liquidsec Jan 9, 2025
137b3ed
restoring lowercase function
liquidsec Jan 9, 2025
d16f7d2
Merge branch 'dev' of https://github.com/blacklanternsecurity/bbot in…
liquidsec Jan 9, 2025
fc1eb86
fixing (hopefully) model download links
liquidsec Jan 9, 2025
3958428
Change Teams Output
domwhewell-sage Jan 9, 2025
4a42f93
Merge pull request #2131 from random-robbie/patch-1
liquidsec Jan 9, 2025
fe80da4
Merge pull request #2127 from blacklanternsecurity/iis-shortnames-magic
liquidsec Jan 9, 2025
cc2907b
Update trufflehog
blsaccess Jan 10, 2025
d383ec9
Merge pull request #2144 from blacklanternsecurity/update-trufflehog
TheTechromancer Jan 10, 2025
5803c51
baddns logic bug fix
liquidsec Jan 10, 2025
921582a
fixing iis-magic-url tag assignment
liquidsec Jan 10, 2025
a8a6dea
adding test to check for mis-assigned tag
liquidsec Jan 10, 2025
e1beb35
always upload debug logs
invalid-email-address Jan 10, 2025
1b0e7a8
add funding.yml
invalid-email-address Jan 10, 2025
5c167f2
wip postman fix
invalid-email-address Jan 10, 2025
eb6da55
break out json kwarg
invalid-email-address Jan 10, 2025
0a1df07
fix postman api?
invalid-email-address Jan 10, 2025
f31a648
ruffed
invalid-email-address Jan 10, 2025
5fc8bba
fix maybe?
invalid-email-address Jan 10, 2025
6ed9a3f
Add an internal property to the class so as not to error out the module
domwhewell-sage Jan 11, 2025
5589a02
Dont create the directory without checking the compression type first
domwhewell-sage Jan 11, 2025
9a78768
List out the files in the rar folder to see why ubuntu is failing in …
domwhewell-sage Jan 11, 2025
3340882
List the parent folder
domwhewell-sage Jan 11, 2025
a50a775
Dont accept files that are not compressed
domwhewell-sage Jan 11, 2025
cd30ec2
Format the raw response incase all attributes don't exist
domwhewell-sage Jan 11, 2025
3185b78
Tag jadx with code-enum
domwhewell-sage Jan 11, 2025
849924b
We dont want trufflehog re-scanning folders it has already done
domwhewell-sage Jan 11, 2025
5944efb
Add an `unarchived-folder` tag so the output does not get scanned by …
domwhewell-sage Jan 11, 2025
4c635b5
Merge pull request #2153 from domwhewell-sage/format_raw_response
TheTechromancer Jan 11, 2025
de458e7
Add --exclude-cdn CLI option
invalid-email-address Jan 11, 2025
160d798
Merge pull request #2155 from domwhewell-sage/jadx-tags
TheTechromancer Jan 11, 2025
03a5452
ruffed, add custom api response checker
invalid-email-address Jan 11, 2025
c0f518c
Merge pull request #2151 from domwhewell-sage/dont_error_github
TheTechromancer Jan 11, 2025
be86b78
fix gowitness
invalid-email-address Jan 11, 2025
9a8da0c
Merge pull request #4 from blacklanternsecurity/postman-fix-2
domwhewell-sage Jan 11, 2025
893dde1
update docs
invalid-email-address Jan 11, 2025
f0b0f5f
resolve conflict
invalid-email-address Jan 11, 2025
1b83690
show stderr
invalid-email-address Jan 11, 2025
9add23f
Merge pull request #2143 from domwhewell-sage/patch-2
TheTechromancer Jan 11, 2025
481a21a
chmod
invalid-email-address Jan 11, 2025
bb3dab8
upload debug logs for distro tests
invalid-email-address Jan 11, 2025
6f91d8b
fix?
invalid-email-address Jan 11, 2025
34c161d
[create-pull-request] automated change
TheTechromancer Jan 12, 2025
57a7eb4
chown
invalid-email-address Jan 12, 2025
88f4ab6
Merge pull request #2142 from blacklanternsecurity/update-docs
TheTechromancer Jan 12, 2025
8042495
fix vuln host bug
invalid-email-address Jan 12, 2025
f1af045
fix???
invalid-email-address Jan 12, 2025
05bf34b
Fix postman tests
domwhewell-sage Jan 12, 2025
223df30
Changed the github_org module to use the new validation helper
domwhewell-sage Jan 12, 2025
b33e384
Merge pull request #2147 from blacklanternsecurity/fix-gowitness-tests
TheTechromancer Jan 12, 2025
fa1bc25
Merge branch 'dev' into github_org_module_use_new_validation
domwhewell-sage Jan 12, 2025
3d5fd57
Merge branch 'dev' into validate_postman_workspaces
domwhewell-sage Jan 12, 2025
fe4f456
Merge branch 'dev' into extract_internal_module
domwhewell-sage Jan 12, 2025
a4572b0
Merge branch 'dev' into iis-shortnames-tag-fix
liquidsec Jan 12, 2025
bee0d74
Merge branch 'dev' into baddns-logic-fix
liquidsec Jan 12, 2025
5d201ef
Merge branch 'dev' into portfilter
liquidsec Jan 12, 2025
ae42cde
Merge branch 'dev' into fix-vuln-host-bug
liquidsec Jan 12, 2025
bc7bf13
Merge branch 'dev' into python-3.13
TheTechromancer Jan 12, 2025
533ee09
Merge pull request #2158 from domwhewell-sage/github_org_module_use_n…
TheTechromancer Jan 12, 2025
e132abf
improve chrome installation, ensure asyncio locks are created lazily
invalid-email-address Jan 12, 2025
886884f
github perf optimization
invalid-email-address Jan 12, 2025
b58288b
Remove failing line
domwhewell-sage Jan 12, 2025
dc2cdee
Merge pull request #2157 from blacklanternsecurity/fix-vuln-host-bug
TheTechromancer Jan 12, 2025
78511e6
update lxml
invalid-email-address Jan 12, 2025
91b71f5
Try with an older rar file created on ubuntu:22.04
domwhewell-sage Jan 12, 2025
31f5e9a
async help
invalid-email-address Jan 12, 2025
2548289
Use 7z instead to extract the rar file instead as ubuntu:22.04 has a …
domwhewell-sage Jan 12, 2025
9080a9e
fix tests
invalid-email-address Jan 12, 2025
696d9da
Merge pull request #2135 from blacklanternsecurity/portfilter
TheTechromancer Jan 12, 2025
117ce88
Merge pull request #2145 from blacklanternsecurity/baddns-logic-fix
liquidsec Jan 12, 2025
9b76d5d
Merge pull request #2146 from blacklanternsecurity/iis-shortnames-tag…
liquidsec Jan 12, 2025
44659d3
Merge pull request #2160 from blacklanternsecurity/misc-optimizations
TheTechromancer Jan 12, 2025
954ff9d
Merge branch 'dev' into python-3.13
TheTechromancer Jan 12, 2025
3253406
conflicts
invalid-email-address Jan 13, 2025
3768e2e
[create-pull-request] automated change
TheTechromancer Jan 13, 2025
93b6302
Bump orjson from 3.10.13 to 3.10.14
dependabot[bot] Jan 13, 2025
9925fbf
Bump pydantic from 2.10.4 to 2.10.5
dependabot[bot] Jan 13, 2025
e25cea4
Bump ruff from 0.8.6 to 0.9.1
dependabot[bot] Jan 13, 2025
308c90a
Merge pull request #2161 from blacklanternsecurity/async-stability-fixes
TheTechromancer Jan 13, 2025
82fc853
Merge pull request #2165 from blacklanternsecurity/dependabot/pip/dev…
TheTechromancer Jan 13, 2025
52f43db
Merge pull request #2164 from blacklanternsecurity/dependabot/pip/dev…
TheTechromancer Jan 13, 2025
2194acc
Merge pull request #2163 from blacklanternsecurity/dependabot/pip/dev…
TheTechromancer Jan 13, 2025
edcb3f0
Merge pull request #2162 from blacklanternsecurity/update-docs
TheTechromancer Jan 13, 2025
1ecbb23
postman auth required
invalid-email-address Jan 13, 2025
bad3a44
Adding 7zip plugins for fedora as without it uses 7za
domwhewell-sage Jan 13, 2025
b21ab37
Add p7zip-plugins on fedora
domwhewell-sage Jan 13, 2025
d971231
changing deepdiff calls to maintain compatibility with v7
liquidsec Jan 13, 2025
e54351e
update poetry.lock
liquidsec Jan 13, 2025
13e4b10
Merge pull request #2169 from blacklanternsecurity/deepdiff-preserve-…
liquidsec Jan 14, 2025
7bfb7b0
How did you fix the bug? I commented the code... !?
domwhewell-sage Jan 15, 2025
ef5a6ce
fixing paramminer bug
liquidsec Jan 15, 2025
12e8aee
Merge pull request #1918 from domwhewell-sage/extract_internal_module
TheTechromancer Jan 15, 2025
0bb13ea
merge dev
invalid-email-address Jan 15, 2025
61913bf
fix 3.13 namespace
invalid-email-address Jan 15, 2025
481fbe6
Merge branch 'dev' into paramminer-finish-bug-fix
liquidsec Jan 15, 2025
e65bf11
fixing bug with boring words check in paramminer
liquidsec Jan 15, 2025
22e224b
Merge branch 'paramminer-finish-bug-fix' of https://github.com/blackl…
liquidsec Jan 15, 2025
13b0096
removing unnecessary sort
liquidsec Jan 15, 2025
83d2a84
adding non dynamic extension list, using with paramminer
liquidsec Jan 15, 2025
2de841f
renaming config variable
liquidsec Jan 15, 2025
4d1bf2a
more renaming
liquidsec Jan 15, 2025
acdf3df
even more renaming
liquidsec Jan 15, 2025
f470724
final cleanup
liquidsec Jan 15, 2025
f14b5b4
Merge pull request #2177 from blacklanternsecurity/paramminer-finish-…
liquidsec Jan 15, 2025
04f0825
[create-pull-request] automated change
TheTechromancer Jan 16, 2025
8f0f8c3
Merge pull request #2178 from blacklanternsecurity/update-docs
TheTechromancer Jan 16, 2025
2444964
bumping upload-artifact to v4
liquidsec Jan 16, 2025
02637db
update upload-artifacts to v4 in distro tests
liquidsec Jan 16, 2025
a8a2ea2
different names for python versions
liquidsec Jan 16, 2025
41f14f2
changing log names per distro
liquidsec Jan 16, 2025
0d5035b
Merge pull request #2180 from blacklanternsecurity/upload-artifact-up…
liquidsec Jan 16, 2025
5b2a176
Merge pull request #2124 from domwhewell-sage/validate_postman_worksp…
TheTechromancer Jan 16, 2025
b7d12e9
Merge pull request #1861 from blacklanternsecurity/python-3.13
TheTechromancer Jan 16, 2025
b19a339
parameters output module initial
liquidsec Jan 17, 2025
3a3025c
add tests for parameters output module
liquidsec Jan 17, 2025
6b5e346
:/
liquidsec Jan 17, 2025
aaf6f5e
fixing tests
liquidsec Jan 17, 2025
9103acf
adding comments
liquidsec Jan 17, 2025
776d529
adding nuclei presets
liquidsec Jan 17, 2025
fe8d33a
update language
liquidsec Jan 17, 2025
cf909d2
updating presets
liquidsec Jan 17, 2025
2b7e540
adding -ua and -uas cli options
liquidsec Jan 17, 2025
fa1cc3d
Bump mkdocs-material from 9.5.49 to 9.5.50
dependabot[bot] Jan 20, 2025
a06b53e
Bump orjson from 3.10.14 to 3.10.15
dependabot[bot] Jan 20, 2025
9503bff
Bump websockets from 12.0 to 14.2
dependabot[bot] Jan 20, 2025
5808ab7
ensure event.host is stringified before passing to baddns
liquidsec Jan 20, 2025
1e17f20
fix test race condition?
liquidsec Jan 20, 2025
ad8c787
fix websocket
invalid-email-address Jan 21, 2025
3e6ffca
Merge pull request #2194 from blacklanternsecurity/dependabot/pip/dev…
TheTechromancer Jan 21, 2025
19846a9
Bump poetry-dynamic-versioning from 1.5.2 to 1.7.0
dependabot[bot] Jan 21, 2025
76fc588
Merge pull request #2192 from blacklanternsecurity/dependabot/pip/dev…
liquidsec Jan 21, 2025
800cc0c
removing unnecessary str() from format strings
liquidsec Jan 21, 2025
89191c7
Merge pull request #2198 from blacklanternsecurity/fix-genericssrf-test
liquidsec Jan 21, 2025
87724ca
switching to tabs
liquidsec Jan 21, 2025
407ad11
removing --user-agent-suffix from cli for now to keep clutter down
liquidsec Jan 21, 2025
67e6cf3
renaming to web_parameter
liquidsec Jan 21, 2025
ddb64c3
adding back in while supressing it from help
liquidsec Jan 21, 2025
3b0cdb9
Merge branch 'dev' into custom-ua
liquidsec Jan 21, 2025
b879231
adding new file back
liquidsec Jan 21, 2025
6714614
removing old file
liquidsec Jan 21, 2025
71b94d7
minimizing number of presets
liquidsec Jan 21, 2025
2529f9b
Merge pull request #2196 from blacklanternsecurity/baddns-ipevent-fix
liquidsec Jan 21, 2025
f36633f
adding urlscan
liquidsec Jan 21, 2025
85a2bca
adding doc for web_parameterse
liquidsec Jan 21, 2025
949aa7d
Merge pull request #2193 from blacklanternsecurity/dependabot/pip/dev…
liquidsec Jan 21, 2025
13cdc27
Merge branch 'dev' into custom-ua
liquidsec Jan 21, 2025
57792bb
Merge pull request #2186 from blacklanternsecurity/parameter-extracti…
liquidsec Jan 21, 2025
8e93242
[create-pull-request] automated change
TheTechromancer Jan 22, 2025
a3375c2
Merge pull request #2185 from blacklanternsecurity/update-docs
TheTechromancer Jan 22, 2025
203422a
tweaking preset settings
liquidsec Jan 23, 2025
a1b2edf
Change the teams output module to only retry sending requests a set n…
domwhewell-sage Jan 23, 2025
d32b699
Get Retry-After from the webhook response headers
domwhewell-sage Jan 23, 2025
1d28fcc
Reduce the teams retry and change to float
domwhewell-sage Jan 23, 2025
87115cf
adding spider warning to nuclei presets
liquidsec Jan 23, 2025
b3a0441
more preset tweaks
liquidsec Jan 23, 2025
695442e
inherit from spider
liquidsec Jan 23, 2025
1143110
Merge pull request #2205 from blacklanternsecurity/spider-presets
liquidsec Jan 23, 2025
5a5a755
Merge pull request #2190 from blacklanternsecurity/custom-ua
TheTechromancer Jan 23, 2025
958af4a
Merge pull request #2188 from blacklanternsecurity/nuclei-presets
TheTechromancer Jan 23, 2025
d19c09c
enforce ruff
invalid-email-address Jan 23, 2025
85863f0
ruffed
invalid-email-address Jan 23, 2025
a585091
better lint
invalid-email-address Jan 23, 2025
7a0211e
fixed test
invalid-email-address Jan 23, 2025
a34f93b
poetry run
invalid-email-address Jan 23, 2025
992f71a
wtf
invalid-email-address Jan 23, 2025
399fc14
poetry lock
invalid-email-address Jan 23, 2025
c3ad010
use builtin retry mechanism
invalid-email-address Jan 24, 2025
fe580ef
reintroduce retries option
invalid-email-address Jan 24, 2025
c2cb3e1
fix api retries
invalid-email-address Jan 24, 2025
db95a14
Merge pull request #2183 from blacklanternsecurity/dependabot/pip/dev…
TheTechromancer Jan 24, 2025
905da2c
Bump pytest-asyncio from 0.25.0 to 0.25.2
dependabot[bot] Jan 24, 2025
db4abe4
[create-pull-request] automated change
TheTechromancer Jan 24, 2025
7f93b09
support retries option on all webhook modules
invalid-email-address Jan 24, 2025
d8ad85a
fix setup issue
invalid-email-address Jan 24, 2025
23e9dc6
Merge pull request #2211 from blacklanternsecurity/update-docs
liquidsec Jan 24, 2025
5b03013
Merge pull request #5 from blacklanternsecurity/teams-use-builtin-ret…
domwhewell-sage Jan 24, 2025
049c11d
Merge pull request #2206 from domwhewell-sage/teams_output_module
TheTechromancer Jan 24, 2025
f889800
Merge pull request #2202 from blacklanternsecurity/dependabot/pip/dev…
TheTechromancer Jan 24, 2025
0c5d979
less duplicated code
invalid-email-address Jan 24, 2025
13669d2
fix tests
invalid-email-address Jan 25, 2025
be80d3b
blarghsldkgasldkfj
invalid-email-address Jan 25, 2025
1856460
[create-pull-request] automated change
TheTechromancer Jan 25, 2025
7b061aa
Merge pull request #2210 from blacklanternsecurity/fix-ruff
TheTechromancer Jan 25, 2025
800cd90
Merge pull request #2217 from blacklanternsecurity/fix-preset-load-or…
TheTechromancer Jan 25, 2025
1577958
Merge pull request #2218 from blacklanternsecurity/update-docs
TheTechromancer Jan 25, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,3 +6,11 @@ updates:
interval: "weekly"
target-branch: "dev"
open-pull-requests-limit: 10
- package-ecosystem: github-actions
directory: /
groups:
github-actions:
patterns:
- "*" # Group all Actions updates into a single larger pull request
schedule:
interval: weekly
10 changes: 5 additions & 5 deletions .github/workflows/distro_tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,17 +24,17 @@ jobs:
if [ "$ID" = "ubuntu" ] || [ "$ID" = "debian" ] || [ "$ID" = "kali" ] || [ "$ID" = "parrotsec" ]; then
export DEBIAN_FRONTEND=noninteractive
apt-get update
apt-get -y install curl git bash build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget llvm libncurses5-dev libncursesw5-dev xz-utils tk-dev libffi-dev liblzma-dev
apt-get -y install curl git bash build-essential docker.io libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget llvm libncurses5-dev libncursesw5-dev xz-utils tk-dev libffi-dev liblzma-dev
elif [ "$ID" = "alpine" ]; then
apk add --no-cache bash gcc g++ musl-dev libffi-dev curl git make openssl-dev bzip2-dev zlib-dev xz-dev sqlite-dev
apk add --no-cache bash gcc g++ musl-dev libffi-dev docker curl git make openssl-dev bzip2-dev zlib-dev xz-dev sqlite-dev
elif [ "$ID" = "arch" ]; then
pacman -Syu --noconfirm curl git bash base-devel
pacman -Syu --noconfirm curl docker git bash base-devel
elif [ "$ID" = "fedora" ]; then
dnf install -y curl git bash gcc make openssl-devel bzip2-devel libffi-devel zlib-devel xz-devel tk-devel gdbm-devel readline-devel sqlite-devel python3-libdnf5
dnf install -y curl docker git bash gcc make openssl-devel bzip2-devel libffi-devel zlib-devel xz-devel tk-devel gdbm-devel readline-devel sqlite-devel python3-libdnf5
elif [ "$ID" = "gentoo" ]; then
echo "media-libs/libglvnd X" >> /etc/portage/package.use/libglvnd
emerge-webrsync
emerge --update --newuse dev-vcs/git media-libs/mesa curl bash
emerge --update --newuse dev-vcs/git media-libs/mesa curl docker bash
fi
fi

Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/docs_updater.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,5 +30,5 @@ jobs:
token: ${{ secrets.BBOT_DOCS_UPDATER_PAT }}
branch: update-docs
base: dev
title: "Daily Docs Update"
title: "Automated Docs Update"
body: "This is an automated pull request to update the documentation."
2 changes: 1 addition & 1 deletion .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ jobs:
poetry install
- name: Run tests
run: |
poetry run pytest --exitfirst --reruns 2 -o timeout_func_only=true --timeout 1200 --disable-warnings --log-cli-level=INFO --cov-config=bbot/test/coverage.cfg --cov-report xml:cov.xml --cov=bbot .
poetry run pytest -vv --exitfirst --reruns 2 -o timeout_func_only=true --timeout 1200 --disable-warnings --log-cli-level=INFO --cov-config=bbot/test/coverage.cfg --cov-report xml:cov.xml --cov=bbot .
- name: Upload Debug Logs
uses: actions/upload-artifact@v3
with:
Expand Down
26 changes: 24 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,10 @@ description: Recursive web spider
modules:
- httpx

blacklist:
# Prevent spider from invalidating sessions by logging out
- "RE:/.*(sign|log)[_-]?out"

config:
web:
# how many links to follow in a row
Expand Down Expand Up @@ -191,10 +195,10 @@ flags:

```bash
# everything everywhere all at once
bbot -t evilcorp.com -p kitchen-sink
bbot -t evilcorp.com -p kitchen-sink --allow-deadly

# roughly equivalent to:
bbot -t evilcorp.com -p subdomain-enum cloud-enum code-enum email-enum spider web-basic paramminer dirbust-light web-screenshots
bbot -t evilcorp.com -p subdomain-enum cloud-enum code-enum email-enum spider web-basic paramminer dirbust-light web-screenshots --allow-deadly
```

<!-- BBOT KITCHEN-SINK PRESET EXPANDABLE -->
Expand Down Expand Up @@ -236,6 +240,24 @@ Click the graph below to explore the [inner workings](https://www.blacklanternse

[![image](https://github.com/blacklanternsecurity/bbot/assets/20261699/e55ba6bd-6d97-48a6-96f0-e122acc23513)](https://www.blacklanternsecurity.com/bbot/Stable/how_it_works/)

## Output Modules

- [Neo4j](docs/scanning/output.md#neo4j)
- [Teams](docs/scanning/output.md#teams)
- [Discord](docs/scanning/output.md#discord)
- [Slack](docs/scanning/output.md#slack)
- [Postgres](docs/scanning/output.md#postgres)
- [MySQL](docs/scanning/output.md#mysql)
- [SQLite](docs/scanning/output.md#sqlite)
- [Splunk](docs/scanning/output.md#splunk)
- [Elasticsearch](docs/scanning/output.md#elasticsearch)
- [CSV](docs/scanning/output.md#csv)
- [JSON](docs/scanning/output.md#json)
- [HTTP](docs/scanning/output.md#http)
- [Websocket](docs/scanning/output.md#websocket)

...and [more](docs/scanning/output.md)!

## BBOT as a Python Library

#### Synchronous
Expand Down
2 changes: 1 addition & 1 deletion bbot/cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -174,7 +174,7 @@ async def _main():
if sys.stdin.isatty():

# warn if any targets belong directly to a cloud provider
for event in scan.target.events:
for event in scan.target.seeds.events:
if event.type == "DNS_NAME":
cloudcheck_result = scan.helpers.cloudcheck(event.host)
if cloudcheck_result:
Expand Down
9 changes: 6 additions & 3 deletions bbot/core/config/logger.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import os
import sys
import atexit
import logging
Expand All @@ -9,6 +10,7 @@

from ..helpers.misc import mkdir, error_and_exit
from ...logger import colorize, loglevel_mapping
from ..multiprocess import SHARED_INTERPRETER_STATE


debug_format = logging.Formatter("%(asctime)s [%(levelname)s] %(name)s %(filename)s:%(lineno)s %(message)s")
Expand Down Expand Up @@ -65,8 +67,9 @@ def __init__(self, core):

self.listener = None

self.process_name = multiprocessing.current_process().name
if self.process_name == "MainProcess":
# if we haven't set up logging yet, do it now
if not "_BBOT_LOGGING_SETUP" in os.environ:
os.environ["_BBOT_LOGGING_SETUP"] = "1"
self.queue = multiprocessing.Queue()
self.setup_queue_handler()
# Start the QueueListener
Expand Down Expand Up @@ -113,7 +116,7 @@ def setup_queue_handler(self, logging_queue=None, log_level=logging.DEBUG):

self.core_logger.setLevel(log_level)
# disable asyncio logging for child processes
if self.process_name != "MainProcess":
if not SHARED_INTERPRETER_STATE.is_main_process:
logging.getLogger("asyncio").setLevel(logging.ERROR)

def addLoggingLevel(self, levelName, levelNum, methodName=None):
Expand Down
23 changes: 20 additions & 3 deletions bbot/core/core.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
from omegaconf import OmegaConf

from bbot.errors import BBOTError
from .multiprocess import SHARED_INTERPRETER_STATE


DEFAULT_CONFIG = None
Expand Down Expand Up @@ -41,9 +42,23 @@ def __init__(self):
self.logger
self.log = logging.getLogger("bbot.core")

self._prep_multiprocessing()

def _prep_multiprocessing(self):
import multiprocessing
from .helpers.process import BBOTProcess

if SHARED_INTERPRETER_STATE.is_main_process:
# if this is the main bbot process, set the logger and queue for the first time
from functools import partialmethod

self.process_name = multiprocessing.current_process().name
BBOTProcess.__init__ = partialmethod(
BBOTProcess.__init__, log_level=self.logger.log_level, log_queue=self.logger.queue
)

# this makes our process class the default for process pools, etc.
mp_context = multiprocessing.get_context("spawn")
mp_context.Process = BBOTProcess

@property
def home(self):
Expand Down Expand Up @@ -187,12 +202,14 @@ def create_process(self, *args, **kwargs):
if os.environ.get("BBOT_TESTING", "") == "True":
process = self.create_thread(*args, **kwargs)
else:
if self.process_name == "MainProcess":
if SHARED_INTERPRETER_STATE.is_scan_process:
from .helpers.process import BBOTProcess

process = BBOTProcess(*args, **kwargs)
else:
raise BBOTError(f"Tried to start server from process {self.process_name}")
import multiprocessing

raise BBOTError(f"Tried to start server from process {multiprocessing.current_process().name}")
process.daemon = True
return process

Expand Down
10 changes: 5 additions & 5 deletions bbot/core/engine.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,15 @@
import contextlib
import contextvars
import zmq.asyncio
import multiprocessing
from pathlib import Path
from concurrent.futures import CancelledError
from contextlib import asynccontextmanager, suppress

from bbot.core import CORE
from bbot.errors import BBOTEngineError
from bbot.core.helpers.async_helpers import get_event_loop
from bbot.core.multiprocess import SHARED_INTERPRETER_STATE
from bbot.core.helpers.misc import rand_string, in_exception_chain


Expand Down Expand Up @@ -264,10 +266,8 @@ def available_commands(self):
return [s for s in self.CMDS if isinstance(s, str)]

def start_server(self):
import multiprocessing

process_name = multiprocessing.current_process().name
if process_name == "MainProcess":
if SHARED_INTERPRETER_STATE.is_scan_process:
kwargs = dict(self.server_kwargs)
# if we're in tests, we use a single event loop to avoid weird race conditions
# this allows us to more easily mock http, etc.
Expand Down Expand Up @@ -641,7 +641,7 @@ async def finished_tasks(self, tasks, timeout=None):
except BaseException as e:
if isinstance(e, (TimeoutError, asyncio.exceptions.TimeoutError)):
self.log.warning(f"{self.name}: Timeout after {timeout:,} seconds in finished_tasks({tasks})")
for task in tasks:
for task in list(tasks):
task.cancel()
self._await_cancelled_task(task)
else:
Expand Down Expand Up @@ -683,5 +683,5 @@ async def cancel_all_tasks(self):
for client_id in list(self.tasks):
await self.cancel_task(client_id)
for client_id, tasks in self.child_tasks.items():
for task in tasks:
for task in list(tasks):
await self._await_cancelled_task(task)
53 changes: 39 additions & 14 deletions bbot/core/event/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -341,6 +341,21 @@ def host_original(self):
return self.host
return self._host_original

@property
def host_filterable(self):
"""
A string version of the event that's used for regex-based blacklisting.

For example, the user can specify "REGEX:.*.evilcorp.com" in their blacklist, and this regex
will be applied against this property.
"""
parsed_url = getattr(self, "parsed_url", None)
if parsed_url is not None:
return parsed_url.geturl()
if self.host is not None:
return str(self.host)
return ""

@property
def port(self):
self.host
Expand Down Expand Up @@ -1003,13 +1018,15 @@ def __init__(self, *args, **kwargs):
if parent_url is not None:
self.data["url"] = parent_url.geturl()
# inherit closest path
if not "path" in self.data and isinstance(parent.data, dict):
if not "path" in self.data and isinstance(parent.data, dict) and not parent.type == "HTTP_RESPONSE":
parent_path = parent.data.get("path", None)
if parent_path is not None:
self.data["path"] = parent_path
# inherit closest host
if parent.host:
self.data["host"] = str(parent.host)
# we do this to refresh the hash
self.data = self.data
break
# die if we still haven't found a host
if not self.host:
Expand Down Expand Up @@ -1112,8 +1129,7 @@ def __init__(self, *args, **kwargs):
class IP_RANGE(DnsEvent):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
net = ipaddress.ip_network(self.data, strict=False)
self.add_tag(f"ipv{net.version}")
self.add_tag(f"ipv{self.host.version}")

def sanitize_data(self, data):
return str(ipaddress.ip_network(str(data), strict=False))
Expand Down Expand Up @@ -1559,6 +1575,8 @@ def __init__(self, *args, **kwargs):
self.add_tag("compressed")
self.add_tag(f"{compression}-archive")
self.data["compression"] = compression
# refresh hash
self.data = self.data


class RAW_DNS_RECORD(DictHostEvent, DnsEvent):
Expand Down Expand Up @@ -1639,23 +1657,23 @@ def make_event(
tags = set(tags)

if is_event(data):
data = copy(data)
if scan is not None and not data.scan:
data.scan = scan
if scans is not None and not data.scans:
data.scans = scans
event = copy(data)
if scan is not None and not event.scan:
event.scan = scan
if scans is not None and not event.scans:
event.scans = scans
if module is not None:
data.module = module
event.module = module
if parent is not None:
data.parent = parent
event.parent = parent
if context is not None:
data.discovery_context = context
event.discovery_context = context
if internal == True:
data.internal = True
event.internal = True
if tags:
data.tags = tags.union(data.tags)
event.tags = tags.union(event.tags)
event_type = data.type
return data
return event
else:
if event_type is None:
event_type, data = get_event_type(data)
Expand Down Expand Up @@ -1685,6 +1703,13 @@ def make_event(
if event_type == "USERNAME" and validators.soft_validate(data, "email"):
event_type = "EMAIL_ADDRESS"
tags.add("affiliate")
# Convert single-host IP_RANGE to IP_ADDRESS
if event_type == "IP_RANGE":
with suppress(Exception):
net = ipaddress.ip_network(data, strict=False)
if net.prefixlen == net.max_prefixlen:
event_type = "IP_ADDRESS"
data = net.network_address

event_class = globals().get(event_type, DefaultEvent)

Expand Down
9 changes: 8 additions & 1 deletion bbot/core/helpers/bloom.py
Original file line number Diff line number Diff line change
Expand Up @@ -64,8 +64,15 @@ def _fnv1a_hash(self, data):
hash = (hash * 0x01000193) % 2**32 # 16777619
return hash

def __del__(self):
def close(self):
"""Explicitly close the memory-mapped file."""
self.mmap_file.close()

def __del__(self):
try:
self.close()
except Exception:
pass

def __contains__(self, item):
return self.check(item)
7 changes: 4 additions & 3 deletions bbot/core/helpers/command.py
Original file line number Diff line number Diff line change
Expand Up @@ -210,9 +210,10 @@ async def _write_proc_line(proc, chunk):
return True
except Exception as e:
proc_args = [str(s) for s in getattr(proc, "args", [])]
command = " ".join(proc_args)
log.warning(f"Error writing line to stdin for command: {command}: {e}")
log.trace(traceback.format_exc())
command = " ".join(proc_args).strip()
if command:
log.warning(f"Error writing line to stdin for command: {command}: {e}")
log.trace(traceback.format_exc())
return False


Expand Down
Loading
Loading