
demonstração em vídeo: https://youtu.be/AMODp3iTnqY
O esquema de URI 'DCP://' é um protocolo interno usado pelo Real Player para recuperar URLs a serem exibidas na aba do navegador do Player. Ele significa 'Data Cache Protocol'. Ele recupera arquivos de '%appdata%\real\realplayer'. Esses arquivos são simples arquivos '.ini' com o seguinte código:
O atributo 'offlineurl' parece ser ignorado, porém é possível passar URLs arbitrárias, incluindo URLs para arquivos locais e URIs inseguras do tipo 'Javascript:'.
Exemplo: dcp://custom.ini
Isso potencialmente cria uma condição universal de cross site scripting (uXSS).
O Real Player usa funcionalidades do Microsoft Internet Explorer e expõe propriedades e métodos por um meio especial específico do aplicativo:
O objeto 'external' e ele expõe vários métodos e propriedades personalizados.
Não é possível recuperar arquivos remotos, mas é possível usar diretórios pais (..) para recuperar os arquivos. Para isso, podemos usar o método 'external::OpenURLInPlayerBrowser()'.
Ao combinar esse problema com um problema de plantio de arquivos com o método 'external::RecordClip()', somos capazes de plantar arquivos '.ini' válidos (embora sem extensão) em um local previsível:
'Videos\RealPlayer Downloads'.
Ao plantar 2 arquivos e, em seguida, referenciá-los por meio de uma URI 'DCP://', é possível referenciar uma URL pertencente a um domínio arbitrário ou "zona de segurança" (zonas de segurança do Windows) e então injetar código javascript personalizado.
O PoC usa código que faz com que o aviso para controles ActiveX inseguros seja "derrotado" e executa MSHTA apontando para o segundo arquivo que contém código para executar 'cmd.exe'. Ele poderia conter, por exemplo, um EXE embutido.
Para reproduzir esse problema, basta editar os arquivos e substituir '%server%' pelo nome do host ou IP real do servidor. Substitua também '%username%' pelo nome de usuário real do Windows do alvo nos arquivos 'dcp1.txt' e 'rp_dcp.htm'.
Nota: O nome de usuário do Windows pode ser obtido por meio de solicitações a um servidor SMB ou servidor WebDAV.
Versões afetadas: 16.0.3.51, Cloud 17.0.9.17, v.20.0.7.309 em qualquer versão do Windows (XP até 11).