
Il sistema di gestione dei contenuti Contensis, precedente alla versione 15.2.1.79, presenta una vulnerabilità nell'interfaccia 'Classic' che consente a un utente non autenticato di caricare e approvare file arbitrari. Caricando un file aspx, è possibile eseguire comandi nel contesto del server web.
Questa vulnerabilità è stata scoperta a marzo 2022 e corretta da Zengenti nella release dell'8 aprile 2022.
Passaggi per riprodurre:
1:
Il caricamento iniziale del file viene effettuato con una richiesta POST al seguente endpoint:
https://[example].cloud.contensis.com/REST/UI/Wizards/CreateContent/UploadFile?folderId=1&projectId=1&context=%7B%22UserID%22%3A1%2C%22LanguageID%22%3A1%2C%22SecurityToken%22%3A%22%22%7D
Il parametro context indica quale utente sta caricando il file; in questo caso UserId 1, Amministratore di sistema. Il parametro SecurityToken è obbligatorio ma può essere lasciato vuoto. Questa richiesta (screenshot 1) genera sul server un file temporaneo con un UUID. In questo esempio ho utilizzato una webshell disponibile all'indirizzo: https://github.com/tennc/webshell/blob/master/fuzzdb-webshell/asp/cmd.aspx

2:
Il file deve poi essere approvato con una richiesta POST al seguente endpoint:
https://[example].cloud.contensis.com/REST/UI/Wizards/CreateContent/CreateContent
Questa richiesta (screenshot 2) includerà il percorso del file temporaneo della richiesta iniziale e parametri per approvare la pubblicazione e modificare il tipo di contenuto per bypassare le restrizioni sui file. In questo caso, ContentTypeId è impostato a 43, per indicare che si tratta di un documento HTML piuttosto che ASPX. Il file è quindi disponibile sui domini 'preview' e 'live' riportati di seguito:
https://preview-[example].cloud.contensis.com/cmd2.aspx
https://iis-live-[example].cloud.contensis.com/cmd2.aspx

3:
Sii responsabile e testa solo su host autorizzati (screenshot 3)