mirror of
https://github.com/epi052/feroxbuster.git
synced 2026-05-28 01:01:12 -03:00
added banner tests
This commit is contained in:
24
tests/client-test-cert.pem
Normal file
24
tests/client-test-cert.pem
Normal file
@@ -0,0 +1,24 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIEEzCCAvsCFFl+iSi56LZsTqzz5Uo93MEr2VPsMA0GCSqGSIb3DQEBCwUAMEUx
|
||||
CzAJBgNVBAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRl
|
||||
cm5ldCBXaWRnaXRzIFB0eSBMdGQwIBcNMjMwNTAyMTA0ODQ1WhgPMjA1MDA5MTYx
|
||||
MDQ4NDVaMEUxCzAJBgNVBAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYD
|
||||
VQQKDBhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQwggIiMA0GCSqGSIb3DQEBAQUA
|
||||
A4ICDwAwggIKAoICAQCMcPcOliSzzcmRuJVEUsbtlk8x95+FC2y0m38XaayQk2am
|
||||
DNi/UxAzlUsmWiw7a8E5OPnDZ0Vomr6LbpyjxFYx7ip1FWqGgsN033E44pANo5/M
|
||||
pWx7hB+LLvhag3nRP2tvIST3rKfIEDmALMBwUPstwaAU9elYPWa21AiZsYu/JHxX
|
||||
1vXs0C9NgQe+xp5KySj0OS7uJl2zMvTUMLwrIv/mb/T2mDOjKBKEiySY2XzhZ5mt
|
||||
FWJoT746IPseD7XWsipubmzD6Pe0I8P718PgkRH2tcWAn99NNVeBgycSmv8sbPuJ
|
||||
bNmZtq3RFDC1OMdVUWGydePWzE4/RdC2IOvZ61HP1PbT1iUSDltjENI/mtF77LSO
|
||||
bW6yTxlPpHZIxdQ2p5hjBXywsffaeeAEBeZfZnQ+l5NWlOs+/sdaRMzjydK9m7mB
|
||||
KHBcBytGA7WhZRw6U+W3kYrHCAGQ2XT2G0Ic7NEtcnUOyo1X1YkyVqUsqnCKqky6
|
||||
k++r79lU7W7Pdh6kzN5QcTNiP1B/tHcVABRibZbSg037e979lHiFUEsYWRNfFRGt
|
||||
6yKuZbdOp70Xz+E80EjzgW2TgLRC7uDU+KuzzHqMeE/y8qrHDjhtP5JzWk75vNZf
|
||||
gBW1BZz2fUQTRx5kTXfAi5JlqS6qeyaWJ1kkBGb/7sfSaXIJ3X0t17ccEoDS/wID
|
||||
AQABMA0GCSqGSIb3DQEBCwUAA4IBAQACsWdZOXs96bfWwrVyJHLqe9zqNcO//4tB
|
||||
ZsP2bodjmJd6q6HDAZItb+PN6++FLyK5H3hLiH6ikn64zogvidB6F7Qyr4dKRAuc
|
||||
SaKb3QnmzC1gNImD37IIsNQdPswn8giPYT/koqJlvF8uPVFf0s7ml+nhzCwx4nTs
|
||||
yJvwzHrSDUVMfzt/MEh5TNfbCh9kCP6fdBcBUsDlK6jnMRmEEWk1603LgKTzE/tF
|
||||
HSxB1r29lvdJTjwvHuL5Du1ZrnG2adn/OfGi1PJr6Z7FncFqiPqozEqa3GqWZaos
|
||||
243yZaP5NPFUHNwAMmT1x76rQZj0cMrSSlSM8apoFLffJLXDQOrp
|
||||
-----END CERTIFICATE-----
|
||||
52
tests/client-test-key.pem
Normal file
52
tests/client-test-key.pem
Normal file
@@ -0,0 +1,52 @@
|
||||
-----BEGIN PRIVATE KEY-----
|
||||
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
|
||||
0S+JA2o3sM6fCPguNTeGqT8P3ZyPVVc=
|
||||
-----END PRIVATE KEY-----
|
||||
24
tests/server-test-cert-1.pem
Normal file
24
tests/server-test-cert-1.pem
Normal file
@@ -0,0 +1,24 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIEEzCCAvsCFBZ5XADLte+8KNDUrOSVlYr8EHIRMA0GCSqGSIb3DQEBCwUAMEUx
|
||||
CzAJBgNVBAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRl
|
||||
cm5ldCBXaWRnaXRzIFB0eSBMdGQwIBcNMjMwNTAyMTA0NzUyWhgPMjA1MDA5MTYx
|
||||
MDQ3NTJaMEUxCzAJBgNVBAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYD
|
||||
VQQKDBhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQwggIiMA0GCSqGSIb3DQEBAQUA
|
||||
A4ICDwAwggIKAoICAQDDId1K+ZtHmZr4+dn5ClZjY2S+2sIoP8vEdClCyLqpTbpZ
|
||||
bnZEr9zOGvBHHqhE9umS6cCglUY1BQ4t0xkuaHtggEqHZGHWGeuCqwTnWZ+oT6Ht
|
||||
U85GUrmdkQg2IsvBYsaJVbw8czfyalPCEf9/U8kZAfnHIdIf9HJoe4/JzvBL44ws
|
||||
20wNMJqZL4sicqjxPsZSoUgV8KMrOgUt/0OjpnpQdUElqv5H/cQVrwotqbU17hn9
|
||||
xRuys0Ffjn+uaSrmybVuD1cVcl6AD3k5cMArqrYeY/0FfmAszT/Tj+5abjAjcNSj
|
||||
uiOPTdy7JUT2QeoStCN4NYjemeFaTYTB6GaxfcDreGd0KR17wOttCzWMdKdd1IcF
|
||||
B0/R2x6CvAS/ySrEHN9KiW6y5Qc9KARBrKPciaxC95Ppe1xsK0gb3qCfMIDCo5Lr
|
||||
GbmpAUtpoT99ehrLlfIeBcHaHxvA2LNrot1Cgwe+dORy1vd7UMFBqMzC3DuARlzo
|
||||
h+dAMvPeVGKoafzz04DqNvgENso/v/aJ7Ull2hVgt0TLJOC4fA2alHTksflXs5yL
|
||||
zIk6BsIZ4vAJvO4uoGy0FGx4E0FiL8aroZOcaFYnyQxUbjT0MFK6nxPUsNpbFCMc
|
||||
1UMPNoMpKm8NfnMUxPLDU46aqLSdtxk8yYwa80Ju0tMLRYh1zV8EquEvj6qUBwID
|
||||
AQABMA0GCSqGSIb3DQEBCwUAA4IBAQBVvYDjooL41GhlyUVDYox0bR8WTLx8XxKG
|
||||
p0ByZ6j92DwKJXk6mHd85lZuHDq7hRF4g5gxdbmG847/Iqh4VPR6iQmtq7ROXwBU
|
||||
+kGBvRIHngilobn6TYHCKdiaWxIPJuth/ws/92JGxkBGqJtphcOwlOIEuh+5rIU8
|
||||
zZfLlJItICsZ4MMNpOhHJRKtTiltPorQnj/IiGnTRXa3jZapwPv70XdtgiOUCTeV
|
||||
scyOca3K3Xn84RQypLbPf2wZx8/rEi3F9+ppTXwSiA6PstkAK3nuZJZWKTUIVVRo
|
||||
6WAlycUHFbJhSJyk1BBUIw4ySUvjcwF3uFCQavIt+6RaPkKzV3qu
|
||||
-----END CERTIFICATE-----
|
||||
24
tests/server-test-cert-2.pem
Normal file
24
tests/server-test-cert-2.pem
Normal file
@@ -0,0 +1,24 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIEEzCCAvsCFBZ5XADLte+8KNDUrOSVlYr8EHIRMA0GCSqGSIb3DQEBCwUAMEUx
|
||||
CzAJBgNVBAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYDVQQKDBhJbnRl
|
||||
cm5ldCBXaWRnaXRzIFB0eSBMdGQwIBcNMjMwNTAyMTA0NzUyWhgPMjA1MDA5MTYx
|
||||
MDQ3NTJaMEUxCzAJBgNVBAYTAkFVMRMwEQYDVQQIDApTb21lLVN0YXRlMSEwHwYD
|
||||
VQQKDBhJbnRlcm5ldCBXaWRnaXRzIFB0eSBMdGQwggIiMA0GCSqGSIb3DQEBAQUA
|
||||
A4ICDwAwggIKAoICAQDDId1K+ZtHmZr4+dn5ClZjY2S+2sIoP8vEdClCyLqpTbpZ
|
||||
bnZEr9zOGvBHHqhE9umS6cCglUY1BQ4t0xkuaHtggEqHZGHWGeuCqwTnWZ+oT6Ht
|
||||
U85GUrmdkQg2IsvBYsaJVbw8czfyalPCEf9/U8kZAfnHIdIf9HJoe4/JzvBL44ws
|
||||
20wNMJqZL4sicqjxPsZSoUgV8KMrOgUt/0OjpnpQdUElqv5H/cQVrwotqbU17hn9
|
||||
xRuys0Ffjn+uaSrmybVuD1cVcl6AD3k5cMArqrYeY/0FfmAszT/Tj+5abjAjcNSj
|
||||
uiOPTdy7JUT2QeoStCN4NYjemeFaTYTB6GaxfcDreGd0KR17wOttCzWMdKdd1IcF
|
||||
B0/R2x6CvAS/ySrEHN9KiW6y5Qc9KARBrKPciaxC95Ppe1xsK0gb3qCfMIDCo5Lr
|
||||
GbmpAUtpoT99ehrLlfIeBcHaHxvA2LNrot1Cgwe+dORy1vd7UMFBqMzC3DuARlzo
|
||||
h+dAMvPeVGKoafzz04DqNvgENso/v/aJ7Ull2hVgt0TLJOC4fA2alHTksflXs5yL
|
||||
zIk6BsIZ4vAJvO4uoGy0FGx4E0FiL8aroZOcaFYnyQxUbjT0MFK6nxPUsNpbFCMc
|
||||
1UMPNoMpKm8NfnMUxPLDU46aqLSdtxk8yYwa80Ju0tMLRYh1zV8EquEvj6qUBwID
|
||||
AQABMA0GCSqGSIb3DQEBCwUAA4IBAQBVvYDjooL41GhlyUVDYox0bR8WTLx8XxKG
|
||||
p0ByZ6j92DwKJXk6mHd85lZuHDq7hRF4g5gxdbmG847/Iqh4VPR6iQmtq7ROXwBU
|
||||
+kGBvRIHngilobn6TYHCKdiaWxIPJuth/ws/92JGxkBGqJtphcOwlOIEuh+5rIU8
|
||||
zZfLlJItICsZ4MMNpOhHJRKtTiltPorQnj/IiGnTRXa3jZapwPv70XdtgiOUCTeV
|
||||
scyOca3K3Xn84RQypLbPf2wZx8/rEi3F9+ppTXwSiA6PstkAK3nuZJZWKTUIVVRo
|
||||
6WAlycUHFbJhSJyk1BBUIw4ySUvjcwF3uFCQavIt+6RaPkKzV3qu
|
||||
-----END CERTIFICATE-----
|
||||
@@ -661,6 +661,70 @@ fn banner_prints_recursion_depth() {
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
/// test allows non-existent wordlist to trigger the banner printing to stderr
|
||||
/// expect to see all mandatory prints + server certs
|
||||
fn banner_prints_server_certs() {
|
||||
Command::cargo_bin("feroxbuster")
|
||||
.unwrap()
|
||||
.arg("--url")
|
||||
.arg("http://localhost")
|
||||
.arg("--server-certs")
|
||||
.arg("tests/server-test-cert-1.pem")
|
||||
.arg("tests/server-test-cert-2.pem")
|
||||
.arg("--wordlist")
|
||||
.arg("/definitely/doesnt/exist/0cd7fed0-47f4-4b18-a1b0-ac39708c1676")
|
||||
.assert()
|
||||
.success()
|
||||
.stderr(
|
||||
predicate::str::contains("─┬─")
|
||||
.and(predicate::str::contains("Target Url"))
|
||||
.and(predicate::str::contains("http://localhost"))
|
||||
.and(predicate::str::contains("Threads"))
|
||||
.and(predicate::str::contains("Wordlist"))
|
||||
.and(predicate::str::contains("Status Codes"))
|
||||
.and(predicate::str::contains("Timeout (secs)"))
|
||||
.and(predicate::str::contains("User-Agent"))
|
||||
.and(predicate::str::contains("Server Certificates"))
|
||||
.and(predicate::str::contains("server-test-cert-1.pem"))
|
||||
.and(predicate::str::contains("server-test-cert-2.pem"))
|
||||
.and(predicate::str::contains("─┴─")),
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
/// test allows non-existent wordlist to trigger the banner printing to stderr
|
||||
/// expect to see all mandatory prints + server certs
|
||||
fn banner_prints_client_cert_and_key() {
|
||||
Command::cargo_bin("feroxbuster")
|
||||
.unwrap()
|
||||
.arg("--url")
|
||||
.arg("http://localhost")
|
||||
.arg("--client-cert")
|
||||
.arg("tests/client-test-cert.pem")
|
||||
.arg("--client-key")
|
||||
.arg("tests/client-test-key.pem")
|
||||
.arg("--wordlist")
|
||||
.arg("/definitely/doesnt/exist/0cd7fed0-47f4-4b18-a1b0-ac39708c1676")
|
||||
.assert()
|
||||
.success()
|
||||
.stderr(
|
||||
predicate::str::contains("─┬─")
|
||||
.and(predicate::str::contains("Target Url"))
|
||||
.and(predicate::str::contains("http://localhost"))
|
||||
.and(predicate::str::contains("Threads"))
|
||||
.and(predicate::str::contains("Wordlist"))
|
||||
.and(predicate::str::contains("Status Codes"))
|
||||
.and(predicate::str::contains("Timeout (secs)"))
|
||||
.and(predicate::str::contains("User-Agent"))
|
||||
.and(predicate::str::contains("Client Certificate"))
|
||||
.and(predicate::str::contains("Client Key"))
|
||||
.and(predicate::str::contains("client-test-cert.pem"))
|
||||
.and(predicate::str::contains("client-test-key.pem"))
|
||||
.and(predicate::str::contains("─┴─")),
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
/// test allows non-existent wordlist to trigger the banner printing to stderr
|
||||
/// expect to see all mandatory prints + no recursion
|
||||
@@ -1366,6 +1430,7 @@ fn banner_prints_all_composite_settings_burp() {
|
||||
.and(predicate::str::contains("─┴─")),
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
/// test allows non-existent wordlist to trigger the banner printing to stderr
|
||||
/// expect to see all mandatory prints + collect words
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
mod utils;
|
||||
use assert_cmd::prelude::*;
|
||||
use httpmock::MockServer;
|
||||
use predicates::prelude::*;
|
||||
use std::process::Command;
|
||||
use utils::{setup_tmp_directory, teardown_tmp_directory};
|
||||
@@ -7,13 +8,15 @@ use utils::{setup_tmp_directory, teardown_tmp_directory};
|
||||
#[test]
|
||||
/// send a single valid request, expect a 200 response
|
||||
fn read_in_config_file_for_settings() -> Result<(), Box<dyn std::error::Error>> {
|
||||
let srv = MockServer::start();
|
||||
|
||||
let (tmp_dir, file) = setup_tmp_directory(&["threads = 37".to_string()], "ferox-config.toml")?;
|
||||
|
||||
Command::cargo_bin("feroxbuster")
|
||||
.unwrap()
|
||||
.current_dir(&tmp_dir)
|
||||
.arg("--url")
|
||||
.arg("http://localhost")
|
||||
.arg(srv.url("/"))
|
||||
.arg("--wordlist")
|
||||
.arg(file.as_os_str())
|
||||
.arg("-vvvv")
|
||||
|
||||
Reference in New Issue
Block a user