added banner tests

This commit is contained in:
epi
2023-05-06 04:53:10 -05:00
parent 0965379b9a
commit f44f320a49
6 changed files with 193 additions and 1 deletions

View 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
View File

@@ -0,0 +1,52 @@
-----BEGIN PRIVATE KEY-----
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
0S+JA2o3sM6fCPguNTeGqT8P3ZyPVVc=
-----END PRIVATE KEY-----

View 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-----

View 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-----

View File

@@ -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

View File

@@ -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")