souleyez 2.43.29__py3-none-any.whl → 3.0.0__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.
- souleyez/__init__.py +1 -2
- souleyez/ai/__init__.py +21 -15
- souleyez/ai/action_mapper.py +249 -150
- souleyez/ai/chain_advisor.py +116 -100
- souleyez/ai/claude_provider.py +29 -28
- souleyez/ai/context_builder.py +80 -62
- souleyez/ai/executor.py +158 -117
- souleyez/ai/feedback_handler.py +136 -121
- souleyez/ai/llm_factory.py +27 -20
- souleyez/ai/llm_provider.py +4 -2
- souleyez/ai/ollama_provider.py +6 -9
- souleyez/ai/ollama_service.py +44 -37
- souleyez/ai/path_scorer.py +91 -76
- souleyez/ai/recommender.py +176 -144
- souleyez/ai/report_context.py +74 -73
- souleyez/ai/report_service.py +84 -66
- souleyez/ai/result_parser.py +222 -229
- souleyez/ai/safety.py +67 -44
- souleyez/auth/__init__.py +23 -22
- souleyez/auth/audit.py +36 -26
- souleyez/auth/engagement_access.py +65 -48
- souleyez/auth/permissions.py +14 -3
- souleyez/auth/session_manager.py +54 -37
- souleyez/auth/user_manager.py +109 -64
- souleyez/commands/audit.py +40 -43
- souleyez/commands/auth.py +35 -15
- souleyez/commands/deliverables.py +55 -50
- souleyez/commands/engagement.py +47 -28
- souleyez/commands/license.py +32 -23
- souleyez/commands/screenshots.py +36 -32
- souleyez/commands/user.py +82 -36
- souleyez/config.py +52 -44
- souleyez/core/credential_tester.py +87 -81
- souleyez/core/cve_mappings.py +179 -192
- souleyez/core/cve_matcher.py +162 -148
- souleyez/core/msf_auto_mapper.py +100 -83
- souleyez/core/msf_chain_engine.py +294 -256
- souleyez/core/msf_database.py +153 -70
- souleyez/core/msf_integration.py +679 -673
- souleyez/core/msf_rpc_client.py +40 -42
- souleyez/core/msf_rpc_manager.py +77 -79
- souleyez/core/msf_sync_manager.py +241 -181
- souleyez/core/network_utils.py +22 -15
- souleyez/core/parser_handler.py +34 -25
- souleyez/core/pending_chains.py +114 -63
- souleyez/core/templates.py +158 -107
- souleyez/core/tool_chaining.py +9564 -2881
- souleyez/core/version_utils.py +79 -94
- souleyez/core/vuln_correlation.py +136 -89
- souleyez/core/web_utils.py +33 -32
- souleyez/data/wordlists/ad_users.txt +378 -0
- souleyez/data/wordlists/api_endpoints_large.txt +769 -0
- souleyez/data/wordlists/home_dir_sensitive.txt +39 -0
- souleyez/data/wordlists/lfi_payloads.txt +82 -0
- souleyez/data/wordlists/passwords_brute.txt +1548 -0
- souleyez/data/wordlists/passwords_crack.txt +2479 -0
- souleyez/data/wordlists/passwords_spray.txt +386 -0
- souleyez/data/wordlists/subdomains_large.txt +5057 -0
- souleyez/data/wordlists/usernames_common.txt +694 -0
- souleyez/data/wordlists/web_dirs_large.txt +4769 -0
- souleyez/detection/__init__.py +1 -1
- souleyez/detection/attack_signatures.py +12 -17
- souleyez/detection/mitre_mappings.py +61 -55
- souleyez/detection/validator.py +97 -86
- souleyez/devtools.py +23 -10
- souleyez/docs/README.md +4 -4
- souleyez/docs/api-reference/cli-commands.md +2 -2
- souleyez/docs/developer-guide/adding-new-tools.md +562 -0
- souleyez/docs/user-guide/auto-chaining.md +30 -8
- souleyez/docs/user-guide/getting-started.md +1 -1
- souleyez/docs/user-guide/installation.md +26 -3
- souleyez/docs/user-guide/metasploit-integration.md +2 -2
- souleyez/docs/user-guide/rbac.md +1 -1
- souleyez/docs/user-guide/scope-management.md +1 -1
- souleyez/docs/user-guide/siem-integration.md +1 -1
- souleyez/docs/user-guide/tools-reference.md +1 -8
- souleyez/docs/user-guide/worker-management.md +1 -1
- souleyez/engine/background.py +1239 -535
- souleyez/engine/base.py +4 -1
- souleyez/engine/job_status.py +17 -49
- souleyez/engine/log_sanitizer.py +103 -77
- souleyez/engine/manager.py +38 -7
- souleyez/engine/result_handler.py +2200 -1550
- souleyez/engine/worker_manager.py +50 -41
- souleyez/export/evidence_bundle.py +72 -62
- souleyez/feature_flags/features.py +16 -20
- souleyez/feature_flags.py +5 -9
- souleyez/handlers/__init__.py +11 -0
- souleyez/handlers/base.py +188 -0
- souleyez/handlers/bash_handler.py +277 -0
- souleyez/handlers/bloodhound_handler.py +243 -0
- souleyez/handlers/certipy_handler.py +311 -0
- souleyez/handlers/crackmapexec_handler.py +486 -0
- souleyez/handlers/dnsrecon_handler.py +344 -0
- souleyez/handlers/enum4linux_handler.py +400 -0
- souleyez/handlers/evil_winrm_handler.py +493 -0
- souleyez/handlers/ffuf_handler.py +815 -0
- souleyez/handlers/gobuster_handler.py +1114 -0
- souleyez/handlers/gpp_extract_handler.py +334 -0
- souleyez/handlers/hashcat_handler.py +444 -0
- souleyez/handlers/hydra_handler.py +564 -0
- souleyez/handlers/impacket_getuserspns_handler.py +343 -0
- souleyez/handlers/impacket_psexec_handler.py +222 -0
- souleyez/handlers/impacket_secretsdump_handler.py +426 -0
- souleyez/handlers/john_handler.py +286 -0
- souleyez/handlers/katana_handler.py +425 -0
- souleyez/handlers/kerbrute_handler.py +298 -0
- souleyez/handlers/ldapsearch_handler.py +636 -0
- souleyez/handlers/lfi_extract_handler.py +464 -0
- souleyez/handlers/msf_auxiliary_handler.py +409 -0
- souleyez/handlers/msf_exploit_handler.py +380 -0
- souleyez/handlers/nikto_handler.py +413 -0
- souleyez/handlers/nmap_handler.py +821 -0
- souleyez/handlers/nuclei_handler.py +359 -0
- souleyez/handlers/nxc_handler.py +417 -0
- souleyez/handlers/rdp_sec_check_handler.py +353 -0
- souleyez/handlers/registry.py +292 -0
- souleyez/handlers/responder_handler.py +232 -0
- souleyez/handlers/service_explorer_handler.py +434 -0
- souleyez/handlers/smbclient_handler.py +344 -0
- souleyez/handlers/smbmap_handler.py +510 -0
- souleyez/handlers/smbpasswd_handler.py +296 -0
- souleyez/handlers/sqlmap_handler.py +1116 -0
- souleyez/handlers/theharvester_handler.py +601 -0
- souleyez/handlers/web_login_test_handler.py +327 -0
- souleyez/handlers/whois_handler.py +277 -0
- souleyez/handlers/wpscan_handler.py +554 -0
- souleyez/history.py +32 -16
- souleyez/importers/msf_importer.py +106 -75
- souleyez/importers/smart_importer.py +208 -147
- souleyez/integrations/siem/__init__.py +10 -10
- souleyez/integrations/siem/base.py +17 -18
- souleyez/integrations/siem/elastic.py +108 -122
- souleyez/integrations/siem/factory.py +207 -80
- souleyez/integrations/siem/googlesecops.py +146 -154
- souleyez/integrations/siem/rule_mappings/__init__.py +1 -1
- souleyez/integrations/siem/rule_mappings/wazuh_rules.py +8 -5
- souleyez/integrations/siem/sentinel.py +107 -109
- souleyez/integrations/siem/splunk.py +246 -212
- souleyez/integrations/siem/wazuh.py +65 -71
- souleyez/integrations/wazuh/__init__.py +5 -5
- souleyez/integrations/wazuh/client.py +70 -93
- souleyez/integrations/wazuh/config.py +85 -57
- souleyez/integrations/wazuh/host_mapper.py +28 -36
- souleyez/integrations/wazuh/sync.py +78 -68
- souleyez/intelligence/__init__.py +4 -5
- souleyez/intelligence/correlation_analyzer.py +309 -295
- souleyez/intelligence/exploit_knowledge.py +661 -623
- souleyez/intelligence/exploit_suggestions.py +159 -139
- souleyez/intelligence/gap_analyzer.py +132 -97
- souleyez/intelligence/gap_detector.py +251 -214
- souleyez/intelligence/sensitive_tables.py +266 -129
- souleyez/intelligence/service_parser.py +137 -123
- souleyez/intelligence/surface_analyzer.py +407 -268
- souleyez/intelligence/target_parser.py +159 -162
- souleyez/licensing/__init__.py +6 -6
- souleyez/licensing/validator.py +17 -19
- souleyez/log_config.py +79 -54
- souleyez/main.py +1505 -687
- souleyez/migrations/fix_job_counter.py +16 -14
- souleyez/parsers/bloodhound_parser.py +41 -39
- souleyez/parsers/crackmapexec_parser.py +178 -111
- souleyez/parsers/dalfox_parser.py +72 -77
- souleyez/parsers/dnsrecon_parser.py +103 -91
- souleyez/parsers/enum4linux_parser.py +183 -153
- souleyez/parsers/ffuf_parser.py +29 -25
- souleyez/parsers/gobuster_parser.py +301 -41
- souleyez/parsers/hashcat_parser.py +324 -79
- souleyez/parsers/http_fingerprint_parser.py +350 -103
- souleyez/parsers/hydra_parser.py +131 -111
- souleyez/parsers/impacket_parser.py +231 -178
- souleyez/parsers/john_parser.py +98 -86
- souleyez/parsers/katana_parser.py +316 -0
- souleyez/parsers/msf_parser.py +943 -498
- souleyez/parsers/nikto_parser.py +346 -65
- souleyez/parsers/nmap_parser.py +262 -174
- souleyez/parsers/nuclei_parser.py +40 -44
- souleyez/parsers/responder_parser.py +26 -26
- souleyez/parsers/searchsploit_parser.py +74 -74
- souleyez/parsers/service_explorer_parser.py +279 -0
- souleyez/parsers/smbmap_parser.py +180 -124
- souleyez/parsers/sqlmap_parser.py +434 -308
- souleyez/parsers/theharvester_parser.py +75 -57
- souleyez/parsers/whois_parser.py +135 -94
- souleyez/parsers/wpscan_parser.py +278 -190
- souleyez/plugins/afp.py +44 -36
- souleyez/plugins/afp_brute.py +114 -46
- souleyez/plugins/ard.py +48 -37
- souleyez/plugins/bloodhound.py +95 -61
- souleyez/plugins/certipy.py +303 -0
- souleyez/plugins/crackmapexec.py +186 -85
- souleyez/plugins/dalfox.py +120 -59
- souleyez/plugins/dns_hijack.py +146 -41
- souleyez/plugins/dnsrecon.py +97 -61
- souleyez/plugins/enum4linux.py +91 -66
- souleyez/plugins/evil_winrm.py +291 -0
- souleyez/plugins/ffuf.py +166 -90
- souleyez/plugins/firmware_extract.py +133 -29
- souleyez/plugins/gobuster.py +387 -190
- souleyez/plugins/gpp_extract.py +393 -0
- souleyez/plugins/hashcat.py +100 -73
- souleyez/plugins/http_fingerprint.py +913 -267
- souleyez/plugins/hydra.py +566 -200
- souleyez/plugins/impacket_getnpusers.py +117 -69
- souleyez/plugins/impacket_psexec.py +84 -64
- souleyez/plugins/impacket_secretsdump.py +103 -69
- souleyez/plugins/impacket_smbclient.py +89 -75
- souleyez/plugins/john.py +86 -69
- souleyez/plugins/katana.py +313 -0
- souleyez/plugins/kerbrute.py +237 -0
- souleyez/plugins/lfi_extract.py +541 -0
- souleyez/plugins/macos_ssh.py +117 -48
- souleyez/plugins/mdns.py +35 -30
- souleyez/plugins/msf_auxiliary.py +253 -130
- souleyez/plugins/msf_exploit.py +239 -161
- souleyez/plugins/nikto.py +134 -78
- souleyez/plugins/nmap.py +275 -91
- souleyez/plugins/nuclei.py +180 -89
- souleyez/plugins/nxc.py +285 -0
- souleyez/plugins/plugin_base.py +35 -36
- souleyez/plugins/plugin_template.py +13 -5
- souleyez/plugins/rdp_sec_check.py +130 -0
- souleyez/plugins/responder.py +112 -71
- souleyez/plugins/router_http_brute.py +76 -65
- souleyez/plugins/router_ssh_brute.py +118 -41
- souleyez/plugins/router_telnet_brute.py +124 -42
- souleyez/plugins/routersploit.py +91 -59
- souleyez/plugins/routersploit_exploit.py +77 -55
- souleyez/plugins/searchsploit.py +91 -77
- souleyez/plugins/service_explorer.py +1160 -0
- souleyez/plugins/smbmap.py +122 -72
- souleyez/plugins/smbpasswd.py +215 -0
- souleyez/plugins/sqlmap.py +301 -113
- souleyez/plugins/theharvester.py +127 -75
- souleyez/plugins/tr069.py +79 -57
- souleyez/plugins/upnp.py +65 -47
- souleyez/plugins/upnp_abuse.py +73 -55
- souleyez/plugins/vnc_access.py +129 -42
- souleyez/plugins/vnc_brute.py +109 -38
- souleyez/plugins/web_login_test.py +417 -0
- souleyez/plugins/whois.py +77 -58
- souleyez/plugins/wpscan.py +219 -69
- souleyez/reporting/__init__.py +2 -1
- souleyez/reporting/attack_chain.py +411 -346
- souleyez/reporting/charts.py +436 -501
- souleyez/reporting/compliance_mappings.py +334 -201
- souleyez/reporting/detection_report.py +126 -125
- souleyez/reporting/formatters.py +828 -591
- souleyez/reporting/generator.py +386 -302
- souleyez/reporting/metrics.py +72 -75
- souleyez/scanner.py +35 -29
- souleyez/security/__init__.py +37 -11
- souleyez/security/scope_validator.py +175 -106
- souleyez/security/validation.py +237 -149
- souleyez/security.py +22 -6
- souleyez/storage/credentials.py +247 -186
- souleyez/storage/crypto.py +296 -129
- souleyez/storage/database.py +73 -50
- souleyez/storage/db.py +58 -36
- souleyez/storage/deliverable_evidence.py +177 -128
- souleyez/storage/deliverable_exporter.py +282 -246
- souleyez/storage/deliverable_templates.py +134 -116
- souleyez/storage/deliverables.py +135 -130
- souleyez/storage/engagements.py +109 -56
- souleyez/storage/evidence.py +181 -152
- souleyez/storage/execution_log.py +31 -17
- souleyez/storage/exploit_attempts.py +93 -57
- souleyez/storage/exploits.py +67 -36
- souleyez/storage/findings.py +48 -61
- souleyez/storage/hosts.py +176 -144
- souleyez/storage/migrate_to_engagements.py +43 -19
- souleyez/storage/migrations/_001_add_credential_enhancements.py +22 -12
- souleyez/storage/migrations/_002_add_status_tracking.py +10 -7
- souleyez/storage/migrations/_003_add_execution_log.py +14 -8
- souleyez/storage/migrations/_005_screenshots.py +13 -5
- souleyez/storage/migrations/_006_deliverables.py +13 -5
- souleyez/storage/migrations/_007_deliverable_templates.py +12 -7
- souleyez/storage/migrations/_008_add_nuclei_table.py +10 -4
- souleyez/storage/migrations/_010_evidence_linking.py +17 -10
- souleyez/storage/migrations/_011_timeline_tracking.py +20 -13
- souleyez/storage/migrations/_012_team_collaboration.py +34 -21
- souleyez/storage/migrations/_013_add_host_tags.py +12 -6
- souleyez/storage/migrations/_014_exploit_attempts.py +22 -10
- souleyez/storage/migrations/_015_add_mac_os_fields.py +15 -7
- souleyez/storage/migrations/_016_add_domain_field.py +10 -4
- souleyez/storage/migrations/_017_msf_sessions.py +16 -8
- souleyez/storage/migrations/_018_add_osint_target.py +10 -6
- souleyez/storage/migrations/_019_add_engagement_type.py +10 -6
- souleyez/storage/migrations/_020_add_rbac.py +36 -15
- souleyez/storage/migrations/_021_wazuh_integration.py +20 -8
- souleyez/storage/migrations/_022_wazuh_indexer_columns.py +6 -4
- souleyez/storage/migrations/_023_fix_detection_results_fk.py +16 -6
- souleyez/storage/migrations/_024_wazuh_vulnerabilities.py +26 -10
- souleyez/storage/migrations/_025_multi_siem_support.py +3 -5
- souleyez/storage/migrations/_026_add_engagement_scope.py +31 -12
- souleyez/storage/migrations/_027_multi_siem_persistence.py +32 -15
- souleyez/storage/migrations/__init__.py +26 -26
- souleyez/storage/migrations/migration_manager.py +19 -19
- souleyez/storage/msf_sessions.py +100 -65
- souleyez/storage/osint.py +17 -24
- souleyez/storage/recommendation_engine.py +269 -235
- souleyez/storage/screenshots.py +33 -32
- souleyez/storage/smb_shares.py +136 -92
- souleyez/storage/sqlmap_data.py +183 -128
- souleyez/storage/team_collaboration.py +135 -141
- souleyez/storage/timeline_tracker.py +122 -94
- souleyez/storage/wazuh_vulns.py +64 -66
- souleyez/storage/web_paths.py +33 -37
- souleyez/testing/credential_tester.py +221 -205
- souleyez/ui/__init__.py +1 -1
- souleyez/ui/ai_quotes.py +12 -12
- souleyez/ui/attack_surface.py +2439 -1516
- souleyez/ui/chain_rules_view.py +914 -382
- souleyez/ui/correlation_view.py +312 -230
- souleyez/ui/dashboard.py +2382 -1130
- souleyez/ui/deliverables_view.py +148 -62
- souleyez/ui/design_system.py +13 -13
- souleyez/ui/errors.py +49 -49
- souleyez/ui/evidence_linking_view.py +284 -179
- souleyez/ui/evidence_vault.py +393 -285
- souleyez/ui/exploit_suggestions_view.py +555 -349
- souleyez/ui/export_view.py +100 -66
- souleyez/ui/gap_analysis_view.py +315 -171
- souleyez/ui/help_system.py +105 -97
- souleyez/ui/intelligence_view.py +436 -293
- souleyez/ui/interactive.py +23034 -10679
- souleyez/ui/interactive_selector.py +75 -68
- souleyez/ui/log_formatter.py +47 -39
- souleyez/ui/menu_components.py +22 -13
- souleyez/ui/msf_auxiliary_menu.py +184 -133
- souleyez/ui/pending_chains_view.py +336 -172
- souleyez/ui/progress_indicators.py +5 -3
- souleyez/ui/recommendations_view.py +195 -137
- souleyez/ui/rule_builder.py +343 -225
- souleyez/ui/setup_wizard.py +678 -284
- souleyez/ui/shortcuts.py +217 -165
- souleyez/ui/splunk_gap_analysis_view.py +452 -270
- souleyez/ui/splunk_vulns_view.py +139 -86
- souleyez/ui/team_dashboard.py +498 -335
- souleyez/ui/template_selector.py +196 -105
- souleyez/ui/terminal.py +6 -6
- souleyez/ui/timeline_view.py +198 -127
- souleyez/ui/tool_setup.py +264 -164
- souleyez/ui/tutorial.py +202 -72
- souleyez/ui/tutorial_state.py +40 -40
- souleyez/ui/wazuh_vulns_view.py +235 -141
- souleyez/ui/wordlist_browser.py +260 -107
- souleyez/ui.py +464 -312
- souleyez/utils/tool_checker.py +427 -367
- souleyez/utils.py +33 -29
- souleyez/wordlists.py +134 -167
- {souleyez-2.43.29.dist-info → souleyez-3.0.0.dist-info}/METADATA +2 -2
- souleyez-3.0.0.dist-info/RECORD +443 -0
- {souleyez-2.43.29.dist-info → souleyez-3.0.0.dist-info}/WHEEL +1 -1
- souleyez-2.43.29.dist-info/RECORD +0 -379
- {souleyez-2.43.29.dist-info → souleyez-3.0.0.dist-info}/entry_points.txt +0 -0
- {souleyez-2.43.29.dist-info → souleyez-3.0.0.dist-info}/licenses/LICENSE +0 -0
- {souleyez-2.43.29.dist-info → souleyez-3.0.0.dist-info}/top_level.txt +0 -0
souleyez/plugins/searchsploit.py
CHANGED
|
@@ -28,84 +28,92 @@ HELP = {
|
|
|
28
28
|
),
|
|
29
29
|
"usage": "souleyez run searchsploit <search_term>",
|
|
30
30
|
"examples": [
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
31
|
+
'souleyez run searchsploit "Apache 2.4.49"',
|
|
32
|
+
'souleyez run searchsploit "CVE-2021-41773"',
|
|
33
|
+
'souleyez run searchsploit "Windows Server 2019" -e',
|
|
34
|
+
'souleyez run searchsploit "ProFTPD 1.3"',
|
|
35
35
|
],
|
|
36
36
|
"presets": [
|
|
37
37
|
{
|
|
38
38
|
"name": "Basic Search",
|
|
39
39
|
"desc": "Simple search - finds all matches",
|
|
40
|
-
"args": []
|
|
41
|
-
},
|
|
42
|
-
{
|
|
43
|
-
"name": "Exact Match",
|
|
44
|
-
"desc": "Only exact matches",
|
|
45
|
-
"args": ["-e"]
|
|
46
|
-
},
|
|
47
|
-
{
|
|
48
|
-
"name": "Title Search",
|
|
49
|
-
"desc": "Search titles only (faster)",
|
|
50
|
-
"args": ["-t"]
|
|
51
|
-
},
|
|
52
|
-
{
|
|
53
|
-
"name": "With URLs",
|
|
54
|
-
"desc": "Include Exploit-DB URLs",
|
|
55
|
-
"args": ["--www"]
|
|
40
|
+
"args": [],
|
|
56
41
|
},
|
|
42
|
+
{"name": "Exact Match", "desc": "Only exact matches", "args": ["-e"]},
|
|
43
|
+
{"name": "Title Search", "desc": "Search titles only (faster)", "args": ["-t"]},
|
|
44
|
+
{"name": "With URLs", "desc": "Include Exploit-DB URLs", "args": ["--www"]},
|
|
57
45
|
{
|
|
58
46
|
"name": "Exact + URLs",
|
|
59
47
|
"desc": "Exact matches with URLs",
|
|
60
|
-
"args": ["-e", "--www"]
|
|
61
|
-
}
|
|
48
|
+
"args": ["-e", "--www"],
|
|
49
|
+
},
|
|
62
50
|
],
|
|
63
51
|
"help_sections": [
|
|
64
52
|
{
|
|
65
53
|
"title": "What is SearchSploit?",
|
|
66
54
|
"color": "cyan",
|
|
67
55
|
"content": [
|
|
68
|
-
{
|
|
69
|
-
|
|
70
|
-
"
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
"
|
|
74
|
-
|
|
75
|
-
|
|
56
|
+
{
|
|
57
|
+
"title": "Overview",
|
|
58
|
+
"desc": "SearchSploit searches the offline Exploit-DB database for public exploits, shellcodes, and papers matching software versions or CVE IDs.",
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"title": "Use Cases",
|
|
62
|
+
"desc": "Find exploits for discovered services and vulnerabilities",
|
|
63
|
+
"tips": [
|
|
64
|
+
"Search by software version (Apache 2.4.49)",
|
|
65
|
+
"Search by CVE ID (CVE-2021-41773)",
|
|
66
|
+
"Find platform-specific exploits",
|
|
67
|
+
"Get direct Exploit-DB links",
|
|
68
|
+
],
|
|
69
|
+
},
|
|
70
|
+
],
|
|
76
71
|
},
|
|
77
72
|
{
|
|
78
73
|
"title": "How to Use",
|
|
79
74
|
"color": "green",
|
|
80
75
|
"content": [
|
|
81
|
-
{
|
|
82
|
-
|
|
83
|
-
"
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
"
|
|
87
|
-
|
|
88
|
-
|
|
76
|
+
{
|
|
77
|
+
"title": "Basic Workflow",
|
|
78
|
+
"desc": "1. Get service versions from Nmap or other scans\n 2. Search for exploits matching software/version\n 3. Use -e for exact matches to reduce noise\n 4. Review and test relevant exploits",
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
"title": "Search Tips",
|
|
82
|
+
"desc": "Effective searching strategies",
|
|
83
|
+
"tips": [
|
|
84
|
+
"Include version numbers for better results",
|
|
85
|
+
"Use CVE IDs from vulnerability scanners",
|
|
86
|
+
"Try -e for exact matches if too many results",
|
|
87
|
+
"Use --www to get Exploit-DB URLs",
|
|
88
|
+
],
|
|
89
|
+
},
|
|
90
|
+
],
|
|
89
91
|
},
|
|
90
92
|
{
|
|
91
93
|
"title": "Tips & Best Practices",
|
|
92
94
|
"color": "yellow",
|
|
93
95
|
"content": [
|
|
94
|
-
(
|
|
95
|
-
"
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
"
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
96
|
+
(
|
|
97
|
+
"Best Practices:",
|
|
98
|
+
[
|
|
99
|
+
"Always verify exploits match your exact target version",
|
|
100
|
+
"Read exploit code before running (safety check)",
|
|
101
|
+
"Use Nuclei/WPScan CVE IDs as search terms",
|
|
102
|
+
"Update Exploit-DB regularly (searchsploit -u)",
|
|
103
|
+
"Test exploits in controlled environment first",
|
|
104
|
+
],
|
|
105
|
+
),
|
|
106
|
+
(
|
|
107
|
+
"Common Issues:",
|
|
108
|
+
[
|
|
109
|
+
"Too many results: Use -e for exact matches or refine search",
|
|
110
|
+
"No results: Try broader search terms or different keywords",
|
|
111
|
+
"Outdated database: Run searchsploit -u to update",
|
|
112
|
+
"Wrong platform: Filter by platform (Linux, Windows, etc.)",
|
|
113
|
+
],
|
|
114
|
+
),
|
|
115
|
+
],
|
|
116
|
+
},
|
|
109
117
|
],
|
|
110
118
|
"flags": [
|
|
111
119
|
["--json", "JSON output (default for parsing)"],
|
|
@@ -113,7 +121,7 @@ HELP = {
|
|
|
113
121
|
["--cve <CVE-ID>", "Search by CVE ID"],
|
|
114
122
|
["-e", "Exact match only"],
|
|
115
123
|
["-t", "Search in exploit titles only"],
|
|
116
|
-
]
|
|
124
|
+
],
|
|
117
125
|
}
|
|
118
126
|
|
|
119
127
|
|
|
@@ -123,8 +131,9 @@ class SearchSploitPlugin(PluginBase):
|
|
|
123
131
|
category = "vulnerability_analysis"
|
|
124
132
|
HELP = HELP
|
|
125
133
|
|
|
126
|
-
|
|
127
|
-
|
|
134
|
+
def build_command(
|
|
135
|
+
self, target: str, args: List[str] = None, label: str = "", log_path: str = None
|
|
136
|
+
):
|
|
128
137
|
"""Build command for background execution with PID tracking."""
|
|
129
138
|
args = args or []
|
|
130
139
|
|
|
@@ -136,32 +145,35 @@ class SearchSploitPlugin(PluginBase):
|
|
|
136
145
|
|
|
137
146
|
# Determine search term: use args if they contain a non-flag search term,
|
|
138
147
|
# otherwise use target (but skip if target is a URL - not a valid search term)
|
|
139
|
-
non_flag_args = [a for a in args if not a.startswith(
|
|
148
|
+
non_flag_args = [a for a in args if not a.startswith("-")]
|
|
140
149
|
|
|
141
150
|
if non_flag_args:
|
|
142
151
|
# Args contain search term(s) - use those, ignore URL target
|
|
143
152
|
cmd.extend(non_flag_args)
|
|
144
|
-
elif target and not target.startswith((
|
|
153
|
+
elif target and not target.startswith(("http://", "https://")):
|
|
145
154
|
# Target is not a URL - use it as search term
|
|
146
155
|
cmd.append(target)
|
|
147
156
|
else:
|
|
148
|
-
raise ValueError(
|
|
157
|
+
raise ValueError(
|
|
158
|
+
"SearchSploit requires a search term. Usage: souleyez run searchsploit 'Apache 2.4.49'"
|
|
159
|
+
)
|
|
149
160
|
|
|
150
161
|
# Add remaining flag args (excluding --json which is already added)
|
|
151
|
-
flag_args = [a for a in args if a.startswith(
|
|
162
|
+
flag_args = [a for a in args if a.startswith("-") and a != "--json"]
|
|
152
163
|
cmd.extend(flag_args)
|
|
153
|
-
|
|
154
|
-
return {
|
|
155
|
-
'cmd': cmd,
|
|
156
|
-
'timeout': 300
|
|
157
|
-
}
|
|
158
164
|
|
|
159
|
-
|
|
165
|
+
return {"cmd": cmd, "timeout": 300}
|
|
166
|
+
|
|
167
|
+
def run(
|
|
168
|
+
self, target: str, args: List[str] = None, label: str = "", log_path: str = None
|
|
169
|
+
) -> int:
|
|
160
170
|
"""Execute searchsploit and write JSON output to log_path."""
|
|
161
|
-
|
|
171
|
+
|
|
162
172
|
# Validate target
|
|
163
|
-
if not target or target.lower() ==
|
|
164
|
-
raise ValueError(
|
|
173
|
+
if not target or target.lower() == "none":
|
|
174
|
+
raise ValueError(
|
|
175
|
+
"SearchSploit requires a search term. Usage: souleyez run searchsploit 'Apache 2.4.49'"
|
|
176
|
+
)
|
|
165
177
|
|
|
166
178
|
args = args or []
|
|
167
179
|
|
|
@@ -195,17 +207,17 @@ class SearchSploitPlugin(PluginBase):
|
|
|
195
207
|
fh.write(f"Target: {target}\n")
|
|
196
208
|
fh.write(f"Args: {args}\n")
|
|
197
209
|
fh.write(f"Label: {label}\n")
|
|
198
|
-
fh.write(
|
|
210
|
+
fh.write(
|
|
211
|
+
f"Started: {time.strftime('%Y-%m-%d %H:%M:%S UTC', time.gmtime())}\n"
|
|
212
|
+
)
|
|
199
213
|
fh.write(f"Command: {' '.join(cmd)}\n")
|
|
200
|
-
fh.write(
|
|
214
|
+
fh.write(
|
|
215
|
+
f"Started: {time.strftime('%Y-%m-%d %H:%M:%S UTC', time.gmtime())}\n\n"
|
|
216
|
+
)
|
|
201
217
|
|
|
202
218
|
# Run searchsploit
|
|
203
219
|
proc = subprocess.run(
|
|
204
|
-
cmd,
|
|
205
|
-
capture_output=True,
|
|
206
|
-
timeout=60,
|
|
207
|
-
check=False,
|
|
208
|
-
text=True
|
|
220
|
+
cmd, capture_output=True, timeout=60, check=False, text=True
|
|
209
221
|
)
|
|
210
222
|
|
|
211
223
|
# Write output
|
|
@@ -216,7 +228,9 @@ class SearchSploitPlugin(PluginBase):
|
|
|
216
228
|
if proc.stderr:
|
|
217
229
|
fh.write(f"\n\n# Error output:\n{proc.stderr}\n")
|
|
218
230
|
|
|
219
|
-
fh.write(
|
|
231
|
+
fh.write(
|
|
232
|
+
f"\nCompleted: {time.strftime('%Y-%m-%d %H:%M:%S UTC', time.gmtime())}\n"
|
|
233
|
+
)
|
|
220
234
|
fh.write(f"Exit Code: {proc.returncode}\n")
|
|
221
235
|
|
|
222
236
|
return proc.returncode
|