
O 7-Zip até a versão 21.07 no Windows permite escalonamento de privilégios e execução de comandos quando um arquivo com a extensão .7z é arrastado para a área Ajuda > Conteúdo.
Não publiquei nenhum código PoC para ataque de escalada de privilégio em lugar nenhum. Os códigos PoC encontrados não têm nada a ver com escalada de privilégio. Para seu conhecimento.
7-Zip é um arquivador de arquivos livre e gratuito. A versão de Linha de Comando do 7-Zip foi pensada para sistemas Unix-like, incluindo até o AmigaOS. Também é compatível com DOS através do HX-DOS Extender ou pode ser executado no Prompt de Comando do Windows.
Vou escrever um pouco em turco para vocês aprenderem turco.
Primeiramente, quero mencionar minha história de descoberta da vulnerabilidade. Vi um payload que realizava a vulnerabilidade XXE no WinRAR. Ao mesmo tempo, usando o arquivo HTML Helper, ele permitia executar comandos via JavaScript com ActiveXObject e WScript.Shell. Isso não era diferente do HTA usado em lolbins; pensei em como poderia virar a situação a meu favor.
(https://www.exploit-db.com/exploits/47526)
Na verdade, meu objetivo era obter um reverse-shell no computador alvo após clicar duas vezes em extensões de tecnologias de compressão como 7z, zip, rar, etc., e para isso pensava em usar o arquivo HTML Helper. Após longos processos de fuzzing com WinAFL, descobri um heap-overflow no FzGM.exe, mas como após o heap overflow minha permissão ainda seria do mesmo usuário, não faria sentido. Por isso, não usei CreateRemoteThread, pois precisava chamar a API e, para acioná-la, precisava de um arquivo chm. Ao analisar o código-fonte, notei que havia operações incorretas ao chamar a Windows API em dois lugares, o que gerava um problema direto de autorização. Esse meu ponto de descoberta, como visto na imagem abaixo, cria um processo filho sob o FzGM.exe. Normalmente, esperaríamos que esse processo ocorresse sob o hh.exe.


Se a API não fosse incluída e houvesse uma configuração correta através da função, eu esperaria que o processo filho fosse criado sob hh.exe, mas o arquivo 7-zip.chm o chama por conta própria — um exemplo típico: se você editar o arquivo 7-zip.chm e aplicar uma operação de execução de comando, poderá ver isso. Após o heap overflow, o problema de autorização da API chamada me levou a aproveitar a configuração incorreta encontrada dentro do arquivo 7z.dll, algo com que venho lidando há muito tempo. Fazer CreateRemoteThread() não faz sentido. O que preciso executar e chamar dentro do meu payload não é a própria API HTML Helper, mas o ponto onde essa API é hookada através do 7-zip, e conseguir executar esse ponto — mas como esse payload só funciona com a integração do hh.exe, ele opera com funções como arrastar e soltar. Quando o arquivo 7-zip.chm é chamado pelo botão HELP no 7-zip, e o endereço chamado é redirecionado para o "base pointer" com problema de autorização dentro do payload, isso nos eleva a um usuário superior. Após isso, o próximo passo é a presença do psexec dentro do payload e a elevação para privilégios de sistema como nt authority/system com o comando psexec -s cmd.exe.

Vídeo PoC:
Muitas perguntas também foram sobre o aviso do ActiveX; esse problema pode ser resolvido basicamente assim. Antes de o payload ser executado, ele verifica:
<'HKCU:\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\0' -Name '1201' -Value '0' -PropertyType "DWord"> — se esse valor for 1, um popup aparece na tela; se for atribuído um novo valor como 0, é bypassado. Mas é importante notar que isso afeta apenas o usuário que está executando o payload naquele momento.
Eu informei os pontos necessários ao desenvolvedor, e isso foi aceito pelo CVE. Não entendo a atitude de pessoas que se acham autoridades e criam a percepção de que devo fornecer o exploit a elas. Eu já havia dito que publicaria após a atualização, mas essa falta de respeito antes mesmo do update, acredito, vem do fato de se considerarem autoridades. Posso não querer publicar o código PoC do ataque de escalada de privilégio nunca; isso é minha livre vontade, e não me importo nem um pouco com o que alguém pensa a respeito de questionar sua correção.
Primeiro método: Se a atualização do 7-zip não for aplicada, pode-se excluir o arquivo 7-zip.chm. Segundo método: Todos os usuários do programa devem ter acesso apenas com permissões de leitura e execução.
Regra Sigma correspondente: https://github.com/kagancapar/CVE-2022-29072/blob/main/7z_CVE-2022-29072.yml