
coisa de vulnerabilidade dlink em python e rust
porque não
a cve-2024-10914 é uma vulnerabilidade descoberta recentemente com pontuação crítica 9.8 que afeta alguns roteadores dlink. como esses roteadores atingiram o fim do suporte (eol), a dlink se recusa a corrigir essa vulnerabilidade porque "pare de ser pobre e apenas compre um roteador novo".
os dispositivos vulneráveis expõem um endpoint http, geralmente em /cgi-bin/account_mgr.cgi?cmd=cgi_user_add&name=<user_input>. devido à sanitização inadequada, em vez de limitar ou validar estritamente a entrada (permitindo apenas caracteres alfanuméricos), a aplicação permite que qualquer caractere seja injetado, o que inclui caracteres especiais usados para operações de linha de comando, permitindo assim a execução arbitrária de código.
ao inserir metacaracteres de shell (como ; | & ou $(command)) no campo name, qualquer pessoa pode executar comandos de shell com facilidade. por exemplo:
...name=admin'; echo 'get pwned bozo'; #
tudo o que esses scripts fazem é enviar uma requisição com o parâmetro name alterado para qualquer código que você queira executar.
há um vídeo muito bom do fireship que explica isso em mais detalhes: https://www.youtube.com/watch?v=52v6gKPA4TM
primeiro você precisa ter um dispositivo vulnerável, alguns modelos incluem:
eu recomendo fortemente que você não use este script contra outra pessoa sem o consentimento dela; por favor, só faça essas coisas se você for o dono do roteador ou se tiver o consentimento do dono.
cargo run -- -u http://<device ip address>
cargo run
pip install -r requirements.txt
python main.py -u http://<device ip address>
python main.py
depois siga as instruções
eu não criei o código original, quem criou foi o verylazytech. eu apenas o portei para rust e python porque por que diabos não. claro que todo o crédito vai para ele e para qualquer outra pessoa envolvida na descoberta deste exploit.