Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
Ferramentas/GitHubGitHub/lyrebirds/sagemcom-fast-3890-exploit
Segurança de Sistemas EmbarcadosExploraçãoEngenharia ReversaExploração de Aplicações WebSegurança de Hardware e IoTDesenvolvimento de PayloadsExploração de Binários
GitHub

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar
lyrebirds/sagemcom-fast-3890-exploit

sagemcom-fast-3890-exploit

Exploit para o modem a cabo Sagemcom F@ST 3890 que implementa a vulnerabilidade Cable Haunt para obter execução remota de código por meio de estouro de buffer baseado em WebSocket e cadeia ROP.

Ver Repositório
22348há 6 anosRevisado pelo Kitploit

Exploit do Sagemcom Fast 3890

Este exploit usa a vulnerabilidade Cable Haunt para obter um shell no modem a cabo Sagemcom F@ST 3890 (50.10.19*), a partir do acesso à rede local. A versão de firmware 50.10.21 ou superior deve ser segura contra o Cable Haunt. Esta prova de conceito foi especificamente projetada para funcionar apenas localmente, a fim de limitar o potencial de uso malicioso. Outro POC que cria um reverse shell para uma conexão externa no Technicolor TC7230 está disponível aqui.

Uma lista de modems vulneráveis conhecidos pode ser encontrada em https://cablehaunt.com/#faq-am-i-affected.

Como funciona

O exploit.py serve um site que, quando visitado, envia uma solicitação WebSocket maliciosa para o modem a cabo. Essa solicitação causa overflow no endereço de retorno e nos registradores correspondentes do Spectrum Analyzer do modem a cabo e usa uma ROP-chain para começar a escutar por uma conexão TCP na porta 1337. A ROP-chain é construída e comentada em static/exploitSagemcom.js. O servidor do exploit.py então envia o arquivo exploit.raw por essa conexão TCP, que será então executado pelo modem. O arquivo exploit.raw é o reverseshell.c compilado para a arquitetura MIPS (veja abaixo como). O Reverseshell.c é um shell escrito explicitamente para este modem. O shell escuta comandos para serem executados no shell eCos do modem a cabo e redireciona o STDOUT para a conexão TCP.

Você pode encontrar um vídeo explicando o exploit aqui: https://www.youtube.com/watch?v=5FM9mS5ck3Y

Executando o exploit

Nota: o Windows 10 não é suportado atualmente; você deve usar um sistema operacional baseado em Linux

Instale pwntools e flask para python3 e execute python exploit.py. Agora acesse http://127.0.0.1:8080 no seu navegador para explorar o modem. O Firefox não funcionará para isso, pois a versão do WebSocket usada não é compatível.

Agora, um shell interativo deve aparecer no seu terminal executando o script python. Se você sair do shell, o modem precisará ser reiniciado para iniciar um novo shell.

Construindo seu próprio payload

Se quiser compilar seu próprio payload, você pode obter a toolchain do aeolus e executar o seguinte comando:

root@kitploit:~
/<toolchain Path>/gnutools/mipsisa32-elf/bin/mipsisa32-elf-gcc -O3 -c ./reverseshell.c -o ./reverseshell.o && /<toolchain Path>/toolchains/gnutools/mipsisa32-elf/bin/mipsisa32-elf-objcopy -O binary reverseshell.o exploit.raw

Explorando outros modems

Você pode construir e explorar qualquer modem vulnerável ao Cable Haunt usando esta técnica. Recomendamos ler o relatório técnico antes de tentar escrever sua própria ROP-chain. Acesse Cable Haunt para obter uma lista de modems a cabo vulneráveis conhecidos.

Construindo a ROP chain

Primeiro, você precisará do firmware do modem a cabo que vai explorar. Em seguida, faça engenharia reversa do firmware para encontrar os endereços das funções relevantes para a construção do exploit, como socket(), bind(), accept(), listen(), recv() e connect() para um shell. Então, o Ropper pode ser usado para encontrar gadgets com o seguinte comando:

root@kitploit:~
python Ropper.py --type all --all --badbytes 00c0c1f5f6f7f8f9fafbfcfdfeff2c -r -a MIPSBE -I 0x80004000 --console -f <firmware path>

Gadgets inalcançáveis

Nem todos os gadgets podem ser alcançados, pois os gadgets são apenas endereços enviados como bytes brutos, e nem todos os bytes podem ser enviados em uma solicitação WebSocket com text frames. Por exemplo, o endereço 0x8080a864 não pode ser inserido diretamente em um WebSocket text frame, pois não é um caractere UTF-8 válido. O endereço 0xf28080a864, no entanto, pode ser inserido, pois 0xf2 significa iniciar um novo símbolo UTF-8 com 0x8080a864 como bytes finais. Os seguintes bytes não podem estar presentes em nenhum endereço usado, devido à especificação utf-8: 0x00, 0xc0,0xc1,0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff, 0x2c. Outras restrições também existem, que serão explicadas em mais detalhes em nosso relatório. Por enquanto, você pode ler e usar utf8TestScript.py para testar se um endereço é alcançável.

Payload personalizado

Você pode usar o processo descrito acima para compilar seu próprio payload para um novo modem a cabo, mas lembre-se de que o payload não deve retornar! Se ele retornar, o processo procurará um endereço de retorno na stack corrompida e irá travar.

Extraindo firmware de modems a cabo

Para a maioria dos modems, você precisará de uma forma de acessar o shell eCos para extrair o firmware, ou extraí-lo diretamente do chip de flash. Esses firmwares geralmente são empacotados em um formato chamado ProgramStore Se o console serial não estiver funcionando, tente executar: (pode funcionar apenas se o cabo coaxial estiver desconectado ou não provisionado)

root@kitploit:~
snmpset -v2c -c private 192.168.0.1 1.3.6.1.4.1.4413.2.2.2.1.9.1.2.1.0 i 2
snmpset -v2c -c private 192.168.0.1 1.3.6.1.4.1.4413.2.2.2.1.9.1.2.1.0 i 0
snmpset -v2c -c private 192.168.0.1 1.3.6.1.4.1.4413.2.2.2.1.9.1.2.1.0 i 2

Então o shell deve estar acessível, e o bcm2-utils pode facilitar a extração usando esse shell. Ao fazer engenharia reversa do firmware extraído, o endereço de carga/base é (até onde vimos) sempre 0x80004000.

Baixar ferramenta